sp_addlogin (Transact-SQL)

適用於:SQL Server

建立新的 SQL Server 登入,讓用戶能夠使用 SQL Server 驗證連線到 SQL Server 的實例。

重要

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

重要

儘可能使用 Windows 驗證。

Transact-SQL 語法慣例

語法

sp_addlogin
    [ @loginame = ] N'loginame'
    [ , [ @passwd = ] N'passwd' ]
    [ , [ @defdb = ] N'defdb' ]
    [ , [ @deflanguage = ] N'deflanguage' ]
    [ , [ @sid = ] sid ]
    [ , [ @encryptopt = ] 'encryptopt' ]
[ ; ]

引數

[ @loginame = ] N'loginame'

登入的名稱。 @loginame為 sysname,沒有預設值。

[ @passwd = ] N'passwd'

登入密碼。 @passwd為 sysname,預設值為 NULL

重要

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

[ @defdb = ] N'defdb'

登入的預設資料庫(登入后第一次連接登入的資料庫)。 @defdb為 sysname,預設值為 master

[ @deflanguage = ] N'deflanguage'

登入的默認語言。 @deflanguage為 sysname 預設值為 NULL。 如果未 指定@deflanguage ,新登入的預設 @deflanguage 會設定為伺服器目前的默認語言。

[ @sid = ] sid

安全性識別碼 (SID)。 @sid為 varbinary(16),預設值為 NULL。 如果 @sidNULL,系統會為新的登入產生 SID。 儘管使用 varbinary 數據類型,但 以外的 NULL 值長度必須剛好是 16 個字節,而且還不存在。 例如,當您編寫腳本或將 SQL Server 登入從一部伺服器移至另一部伺服器,而且您希望登入在不同伺服器上具有相同的 SID 時,指定@sid很有用。

[ @encryptopt = ] 'encryptopt'

指定密碼是以純文字或純文字密碼的哈希的形式傳入。 不會進行加密。 為了回溯相容性,此討論中會使用 “encrypt” 一詞。 如果傳入純文本密碼,則會進行哈希處理。 哈希會儲存。 @encryptopt為 varchar(20),而且可以是下列其中一個值。

Description
NULL (預設值) 密碼會以清除的方式傳遞。
skip_encryption 密碼已哈希。 資料庫引擎 應該儲存值,而不重新混搭。
skip_encryption_old 提供的密碼已由舊版 SQL Server 哈希。 資料庫引擎 應該儲存值,而不重新混搭該值。 此選項僅供升級之用。

傳回碼值

0 (成功) 或 1 (失敗)。

備註

SQL Server 登入可以包含 1 到 128 個字元,包括字母、符號和數位。 登入不能包含反斜杠 (\; 是保留的登入名稱,例如 sapublic,或已經存在;或為 NULL 或空字串。

如果提供預設資料庫的名稱,您可以連線到指定的資料庫,而不需要執行 USE 語句。 不過,在資料庫擁有者(使用sp_adduser、sp_addrolemember)或sp_addrole存取該資料庫之前,您無法使用預設資料庫。

SID 號碼是 GUID,可唯一識別伺服器中的登入。

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

如果在將登入新增至 SQL Server 時,使用 skip_encryption 隱藏密碼哈希會很有用。 如果密碼已由舊版 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為 、預設資料庫 AdventureWorks2022,以及的默認語言 Bulgarian

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

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

下列範例會為使用者 Michael建立 SQL Server 登入,其密碼 B548bmM%f6為 、預設資料庫 AdventureWorks2022、預設語言 us_english為 ,以及的 0x0123456789ABCDEF0123456789ABCDEFSID。

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