適用於: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。
重要
請勿使用空白密碼。 請使用增強式密碼。
[ @defdb = ] N'defdb'
登入的預設資料庫(登入后第一次連接登入的資料庫)。
@defdb為 sysname,預設值為 master。
[ @deflanguage = ] N'deflanguage'
登入的默認語言。
@deflanguage為 sysname 預設值為 NULL。 如果未 指定@deflanguage ,新登入的預設 @deflanguage 會設定為伺服器目前的默認語言。
[ @sid = ] 西德
安全性識別碼 (SID)。
@sid為 varbinary(16),預設值為 NULL。 如果 @sid 為 NULL,系統會為新的登入產生 SID。 儘管使用 varbinary 數據類型,但 以外的 NULL 值長度必須剛好是 16 個字節,而且還不存在。
例如,當您編寫腳本或將 SQL Server 登入從一部伺服器移至另一部伺服器,而且您希望登入在不同伺服器上具有相同的 SID 時,指定@sid很有用。
[ @encryptopt = ] 「encryptopt」
指定密碼是以純文字或純文字密碼的哈希的形式傳入。 不會進行加密。 為了回溯相容性,此討論中會使用 “encrypt” 一詞。 如果傳入純文本密碼,則會進行哈希處理。 哈希會儲存。 @encryptopt為 varchar(20),而且可以是下列其中一個值。
| 值 | 說明 |
|---|---|
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 登入,而不指定預設資料庫。 以強密碼取代 <password> 。
EXECUTE sp_addlogin 'Victoria', '<password>';
GO
B. 建立具有預設資料庫的 SQL Server 登入
下列範例會為 使用者 Albert建立 SQL Server 登入,以及的預設資料庫 corporate。 以強密碼取代 <password> 。
EXECUTE sp_addlogin 'Albert', '<password>', 'corporate';
GO
C. 建立具有不同預設語言的 SQL Server 登入
下列範例會為使用者 TzTodorov建立 SQL Server 登入、的預設資料庫 AdventureWorks2025,以及的默認語言 Bulgarian。 以強密碼取代 <password> 。
EXECUTE sp_addlogin 'TzTodorov', '<password>', 'AdventureWorks2022', N'български';
D. 建立具有特定 SID 的 SQL Server 登入
下列範例會為使用者建立 SQL Server 登入、的預設 Michael資料庫 AdventureWorks2025、的預設語言 us_english,以及的 0x0123456789ABCDEF0123456789ABCDEFSID。 以強密碼取代 <password> 。
EXECUTE sp_addlogin 'Michael', '<password>', 'AdventureWorks2022', 'us_english', 0x0123456789ABCDEF0123456789ABCDEF;