sp_addlogin (Transact-SQL)
適用於:SQL Server
建立新的 SQL Server 登入,讓用戶能夠使用 SQL Server 驗證連線到 SQL Server 的實例。
重要
SQL Server 的未來版本將移除此功能。 請避免在新的開發工作中使用這項功能,並規劃修改目前使用這項功能的應用程式。 請改用 CREATE LOGIN 。
重要
儘可能使用 Windows 驗證。
語法
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
。 如果 @sid 為 NULL
,系統會為新的登入產生 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 個字元,包括字母、符號和數位。 登入不能包含反斜杠 (\
; 是保留的登入名稱,例如 sa 或 public,或已經存在;或為 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
為 ,以及的 0x0123456789ABCDEF0123456789ABCDEF
SID。
EXEC sp_addlogin 'Michael', 'B548bmM%f6', 'AdventureWorks2022', 'us_english', 0x0123456789ABCDEF0123456789ABCDEF