語法
sp_addrolemember [ @rolename = ] 'role' ,
[ @membername= ] 'security_account'
參數
[@rolename=] 'role'
當前資料庫中 SQL Server 角色的名稱。role 的數據類型為 sysname,沒有默認值。
[@membername =] 'security_account'
添加到角色的安全帳戶。security_account 的數據類型為 sysname,沒有默認值。security_account 可以是所有有效的 SQL Server 用戶、SQL Server 角色或是所有已授權訪問當前資料庫的 Microsoft Windows NT? 用戶或組。當添加 Windows NT 用戶或組時,請指定在資料庫中用來識別該 Windows NT 用戶或組的名稱(使用 sp_grantdbaccess 添加)。
返回代碼值
0(成功)或 1(失敗)
注釋
當使用 sp_addrolemember 將安全帳戶添加到角色時,新成員將繼承所有套用到角色的許可權。
在添加 SQL Server 角色,使其成為另一個 SQL Server 角色的成員時,不能創建循環角色。例如,如果 YourRole 已經是 MyRole 的成員,就不能將 MyRole 添加成為 YourRole 的成員。此外,也不能將固定資料庫或固定伺服器角色,或者DBO 添加到其他角色。例如,不能將 db_owner 固定資料庫角色添加成為用戶定義的角色 YourRole 的成員。
只能使用 sp_addrolemember 將成員添加到 SQL Server 角色。使用 sp_addsrvrolemember 將成員添加到固定伺服器角色。在 SQL Server 中,將成員添加到 Windows NT? 組是不可能的。
在用戶定義的事務中不能使用 sp_addrolemember。
許可權
只有 sysadmin 固定伺服器角色和 db_owner 固定資料庫角色中的成員可以執行 sp_addrolemember,以將成員添加到固定資料庫角色。角色所有者可以執行 sp_addrolemember,將成員添加到自己所擁有的任何 SQL Server 角色。db_securityadmin 固定資料庫角色的成員可以將用戶添加到任何用戶定義的角色。
示例
A. 添加 Windows NT 用戶下面的示例將 Windows NT 用戶 Corporate\JeffL 添加到 Sales 資料庫,使其成為用戶 Jeff。然後,再將 Jeff 添加到 Sales 資料庫的 Sales_Managers 角色中。
說明?
由於 Corporate\JeffL 在 Sales 資料庫中被當作是用戶 Jeff,所以必須使用 sp_addrolemember 來指定用戶名 Jeff。
USE SalesGOEXEC sp_grantdbaccess 'Corporate\JeffL', 'Jeff'GOEXEC sp_addrolemember 'Sales_Managers', 'Jeff'B. 添加 SQL Server 用戶下面的示例將 SQL Server 用戶 Michael 添加到當前資料庫中的 Engineering 角色。
EXEC sp_addrolemember 'Engineering', 'Michael'