sp_addlogin (Transact-SQL)
適用于:SQL Server
建立新的SQL Server登入,讓使用者能夠使用SQL Server驗證連線到SQL Server的實例。
重要
未來的 Microsoft SQL Server 版本將移除這項功能。 請避免在新的開發工作中使用這項功能,並規劃修改目前使用這項功能的應用程式。 請改用 CREATE LOGIN 。
重要
儘可能使用 Windows 驗證。
語法
sp_addlogin [ @loginame = ] 'login'
[ , [ @passwd = ] 'password' ]
[ , [ @defdb = ] 'database' ]
[ , [ @deflanguage = ] 'language' ]
[ , [ @sid = ] sid ]
[ , [ @encryptopt = ] 'encryption_option' ]
[;]
引數
[ @loginame= ] 'login'
這是登入的名稱。 login 是 sysname,沒有預設值。
[ @passwd= ] 'password'
這是登入密碼。 password 為 sysname,預設值為 Null。
重要
請勿使用空白密碼。 請使用增強式密碼。
[ @defdb= ] 'database'
這是登入的預設資料庫 (在登入之後,登入第一次連接的資料庫)。 資料庫 為 sysname,預設值為 master。
[ @deflanguage= ] 'language'
這是登入的預設語言。 語言 為 sysname,預設值為 Null。 如果未指定 語言 ,新登入的預設 語言 會設定為伺服器目前的預設語言。
[ @sid= ] 'sid'
這是安全性識別碼 (SID)。 sid 是 Varbinary (16) ,預設值為 Null。 如果 sid 為 Null,系統會為新的登入產生 SID。 雖然使用 Varbinary 資料類型,但 Null 以外的值長度必須剛好是 16 個位元組,而且不能已經存在。 例如,當您撰寫腳本或將SQL Server登入從一部伺服器移至另一部伺服器,而且您希望登入在不同的伺服器上具有相同的 SID 時,指定sid會很有用。
[ @encryptopt= ] 'encryption_option'
指定以明碼方式傳遞密碼,或以純文字密碼的雜湊來傳遞密碼。 請注意,這裡並不進行任何加密。 這項討論用到 "encrypt" 一字,是為了與舊版相容。 如果傳入純文字密碼,就會雜湊這個密碼。 這項雜湊會儲存起來。 encryption_option 是 Varchar (20) ,而且可以是下列其中一個值。
值 | 描述 |
---|---|
NULL | 傳遞純文字密碼。 此為預設值。 |
skip_encryption | 密碼已雜湊。 Database Engine 應該儲存值,而不需重新雜湊。 |
skip_encryption_old | 提供的密碼已由舊版SQL Server雜湊。 Database Engine 應該儲存值,而不需重新雜湊。 這個選項專用來升級。 |
傳回碼值
0 (成功) 或 1 (失敗)
備註
SQL Server登入可以包含 1 到 128 個字元,包括字母、符號和數位。 登入不能包含反斜線 (\) ;是保留的登入名稱,例如 sa 或 public,或已經存在;或 為 Null 或空字串, (''
) 。
如果提供了預設資料庫的名稱,您可以直接連接到指定的資料庫,不需要執行 USE 陳述式。 不過,除非資料庫擁有者使用sp_adduser或sp_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
,以及 的 0x0123456789ABCDEF0123456789ABCDEF
SID。
EXEC sp_addlogin 'Michael', 'B548bmM%f6', 'AdventureWorks2012', 'us_english', 0x0123456789ABCDEF0123456789ABCDEF
另請參閱
CREATE LOGIN (Transact-SQL)
sp_droplogin (Transact-SQL)
sp_helpuser (Transact-SQL)
sp_revokelogin (Transact-SQL)
xp_logininfo (Transact-SQL)