sp_addlogin (Transact-SQL)

適用範圍: 是SQL Server (所有支援的版本)

建立一項新的 SQL Server 登入,讓使用者利用 SQL Server 驗證來連接 SQL Server 的執行個體。

重要

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

重要

儘可能使用 Windows 驗證。

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

語法

  
sp_addlogin [ @loginame = ] 'login'   
    [ , [ @passwd = ] 'password' ]   
    [ , [ @defdb = ] 'database' ]   
    [ , [ @deflanguage = ] 'language' ]   
    [ , [ @sid = ] sid ]   
    [ , [ @encryptopt = ] 'encryption_option' ]   
[;]  

引數

[ @loginame =] 'login'
這是登入的名稱。 loginsysname,沒有預設值。

[ @passwd =] 'password'
這是登入密碼。 passwordsysname,預設值是 Null。

重要

請勿使用空白密碼。 請使用增強式密碼。

[ @defdb =] '資料庫'
這是登入的預設資料庫 (在登入之後,登入第一次連接的資料庫)。 資料庫sysname,預設值是 master

[ @deflanguage =] 'language'
這是登入的預設語言。 languagesysname,預設值是 Null。 如果未指定 language ,新登入的預設 語言 會設為伺服器的目前預設語言。

[ @sid =] 'sid'
這是安全性識別碼 (SID)。 sidVarbinary (16),預設值是 Null。 如果 sid 為 Null,系統會產生新登入的 sid。 儘管使用 Varbinary 資料類型,Null 以外的值的長度必須剛好為16個位元組,且不能已經存在。 例如 ,當您撰寫腳本或將登入 SQL Server 從某個伺服器移至另一部伺服器,而且您想要讓登入在不同的伺服器上具有相同的 sid 時,指定 sid 會很有用。

[ @encryptopt =] 'encryption_option'
指定以明碼方式傳遞密碼,或以純文字密碼的雜湊來傳遞密碼。 請注意,這裡並不進行任何加密。 這項討論用到 "encrypt" 一字,是為了與舊版相容。 如果傳入純文字密碼,就會雜湊這個密碼。 這項雜湊會儲存起來。 encryption_optionVarchar (20),它可以是下列值之一。

描述
NULL 傳遞純文字密碼。 此為預設值。
skip_encryption 密碼已雜湊。 Database Engine 應該直接儲存這個值,不需要重新雜湊。
skip_encryption_old 提供的密碼是由舊版的 SQL Server 所雜湊的。 Database Engine 應該直接儲存這個值,不需要重新雜湊。 這個選項專用來升級。

傳回碼值

0 (成功) 或 1 (失敗)

備註

SQL Server 登入可以包含 1 到 128 個字元,其中包括字母、符號和數字。 登入不能包含反斜線 (\) ; 必須是保留的登入名稱(例如 sa 或 public)或已存在; 或者為 Null 或 () 的空字串 ''

如果提供了預設資料庫的名稱,您可以直接連接到指定的資料庫,不需要執行 USE 陳述式。 不過,在您使用 sp_addusersp_addrolemember) 或 sp_addrole取得資料庫擁有者 (存取該資料庫之前,您無法使用預設資料庫。

SID 號碼是在伺服器中用來唯一識別登入的 GUID。

變更伺服器的預設語言並不會變更現有登入的預設語言。 若要變更伺服器的預設語言,請使用 sp_configure

如果在將登入加入至時,密碼已雜湊,則使用 skip_encryption 隱藏密碼雜湊會很有用 SQL Server 。 如果已使用舊版來雜湊密碼 SQL Server ,請使用 skip_encryption_old

sp_addlogin 無法在使用者自訂交易內執行。

下表顯示搭配 sp_addlogin 使用的數個預存程序。

預存程序 描述
sp_grantlogin 加入 Windows 使用者或群組。
sp_password 變更使用者的密碼。
sp_defaultdb 變更使用者的預設資料庫。
sp_defaultlanguage 變更使用者的預設語言。

權限

需要 ALTER ANY LOGIN 權限。

範例

A. 建立 SQL Server 登入

下列範例會建立 Victoria 使用者的 SQL Server 登入,密碼是 B1r12-36,不指定預設資料庫。

EXEC sp_addlogin 'Victoria', 'B1r12-36';  
GO  

B. 建立有預設資料庫的 SQL Server 登入

下列範例會建立 Albert 使用者的 SQL Server 登入,密碼是 B5432-3M6,預設資料庫是 corporate

EXEC sp_addlogin 'Albert', 'B5432-3M6', 'corporate';  
GO  

C. 建立有不同預設語言的 SQL Server 登入

下列範例會建立 TzTodorov 使用者的 SQL Server 登入,密碼是 709hLKH7chjfwv,預設資料庫是 AdventureWorks2012,預設語言是 Bulgarian

EXEC sp_addlogin 'TzTodorov', '709hLKH7chjfwv', 'AdventureWorks2012', N'български'  

D. 建立有特定 SID 的 SQL Server 登入

下列範例會建立 Michael 使用者的 SQL Server 登入,密碼是 B548bmM%f6,預設資料庫是 AdventureWorks2012,預設語言是 us_english,SID 是 0x0123456789ABCDEF0123456789ABCDEF

EXEC sp_addlogin 'Michael', 'B548bmM%f6', 'AdventureWorks2012', 'us_english', 0x0123456789ABCDEF0123456789ABCDEF  

另請參閱

CREATE LOGIN (Transact-SQL)
sp_droplogin (Transact-SQL)
sp_helpuser (SQL transact-sql)
sp_revokelogin (Transact-SQL)
xp_logininfo (SQL transact-sql)