sp_adduser (Transact-SQL)

將新的使用者加入目前資料庫中。

重要事項重要事項

未來的 Microsoft SQL Server 版本將移除這項功能。請避免在新的開發工作中使用這項功能,並規劃修改目前使用這項功能的應用程式。請改用 CREATE USER

主題連結圖示 Transact-SQL 語法慣例

語法

sp_adduser [ @loginame = ] 'login'  
    [ , [ @name_in_db = ] 'user' ] 
    [ , [ @grpname = ] 'role' ] 

引數

  • [ @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

權限

需要資料庫的擁有權。

範例

A.加入資料庫使用者

下列範例會利用現有的 SQL Server 登入 Vidur,將資料庫使用者 Vidur 加入目前資料庫現有的 Recruiting 角色中。

EXEC sp_adduser 'Vidur', 'Vidur', 'Recruiting'

B.以相同的登入識別碼,加入資料庫使用者

下列範例會針對 SQL Server 登入 Arvind,將使用者 Arvind 加入目前資料庫中。 這位使用者屬於預設的 public 角色。

EXEC sp_adduser 'Arvind'

C.以不同於伺服器層級登入的名稱,加入資料庫使用者

下列範例會將 SQL Server 登入 BjornR 加入具有使用者名稱 Bjorn 的目前資料庫中,並且將資料庫使用者 Bjorn 加入 Production 資料庫角色中。

EXEC sp_adduser 'BjornR', 'Bjorn', 'Production'

請參閱

參考

安全性預存程序 (Transact-SQL)

sys.server_principals (Transact-SQL)

sp_addrole (Transact-SQL)

CREATE USER (Transact-SQL)

sp_dropuser (Transact-SQL)

sp_grantdbaccess (Transact-SQL)

sp_grantlogin (Transact-SQL)

系統預存程序 (Transact-SQL)