功能
語法
sp_adduser [ @loginame = ] 'login'
[ , [ @name_in_db = ] 'user' ]
參數
[ @loginame = ] 'login '
SQL Server 登錄或 Windows 登錄的名稱。login 的數據類型為 sysname,無默認值。login 必須是現有的 SQL Server 登錄名或 Windows 登錄名。
[ @name_in_db = ] 'user '
新資料庫用戶的名稱。user 的數據類型為 sysname,默認值為 NULL。如果未指定 user,則新資料庫用戶的名稱默認為 login 名稱。指定 user 將為資料庫中新用戶賦予一個不同於伺服器級別登錄名的名稱。
[ @grpname = ] 'role '
新用戶成為其成員的資料庫角色。role 的數據類型為 sysname,默認值為 NULL。role 必須是當前資料庫中的有效資料庫角色。
返回代碼值
0(成功)或 1(失敗)
注釋
sp_adduser 還將創建一個具有該用戶名的架構。
在添加完用戶之後,可以使用 GRANT、DENY 和 REVOKE 等語句來定義控制用戶所執行的活動的許可權。
使用 sys.server_principals 可顯示有效登錄名的列表。
使用 sp_helprole 可顯示有效角色名的列表。當指定一個角色時,用戶會自動地獲得那些為該角色定義的許可權。如果未指定角色,則用戶獲得的許可權將是授予默認 public 角色的許可權。若要將用戶添加到角色,必須提供 user name 的值。((username 可與 login_id 相同。)
用戶 guest 已經存在於每個資料庫中。如果此前禁用了用戶,則添加用戶 guest 可啟用該用戶。默認情況下,會在新資料庫中禁用用戶 guest。
不能在用戶定義事務內執行 sp_adduser。
您不能添加 guest 用戶,因為 guest 用戶已經存在於每個資料庫內。若要啟用 guest 用戶,請按如下方式授予 guest CONNECT 許可權:
GRANT CONNECT TO guest;
GO
許可權
要求具有資料庫的所有權。
示例
添加資料庫用戶
以下示例使用現有的 SQL Server 登錄名 Vidur,將資料庫用戶 Vidur 添加到當前資料庫中的現有 Recruiting 角色。
EXEC sp_adduser 'Vidur', 'Vidur', 'Recruiting'
添加資料庫用戶(使用相同的登錄 ID)
以下示例將用戶 Arvind 添加到 SQL Server 登錄名 Arvind 的當前資料庫。該用戶屬於默認的 public 角色。
EXEC sp_adduser 'Arvind'
添加資料庫用戶
(使用不同於其伺服器級別登錄的名稱)
以下示例將 SQL Server 登錄名 BjornR 添加到具有用戶名 Bjorn 的當前資料庫,並將資料庫用戶 Bjorn 添加到Production 資料庫角色。
EXEC sp_adduser 'BjornR', 'Bjorn', 'Production'
