創(chuàng)建新的 Microsoft® SQL Server™ 登錄,使用戶得以連接使用 SQL Server 身份驗證的 SQL Server 實例。
sp_addlogin [ @loginame = ] 'login'
[ , [ @passwd = ] 'password' ]
[ , [ @defdb = ] 'database' ]
[ , [ @deflanguage = ] 'language' ]
[ , [ @sid = ] sid ]
[ , [ @encryptopt = ] 'encryption_option' ]
[@loginame =] 'login'
登錄的名稱。login 的數(shù)據(jù)類型為 sysname,沒有默認設置。
[@passwd =] 'password'
登錄密碼。password 的數(shù)據(jù)類型為 sysname,默認設置為 NULL。sp_addlogin 執(zhí)行后,password 被加密并存儲在系統(tǒng)表中。
[@defdb =] 'database'
登錄的默認數(shù)據(jù)庫(登錄后登錄所連接到的數(shù)據(jù)庫)。database 的數(shù)據(jù)類型為 sysname,默認設置為 master。
[@deflanguage =] 'language'
用戶登錄到 SQL Server 時系統(tǒng)指派的默認語言。language 的數(shù)據(jù)類型為 sysname,默認設置為 NULL。如果沒有指定 language,那么 language 被設置為服務器當前的默認語言(由 sp_configure 配置變量 default language 定義)。更改服務器的默認語言不會更改現(xiàn)有登錄的默認語言。language 保持與添加登錄時所使用的默認語言相同。
[@sid =] sid
安全標識號 (SID)。sid 的數(shù)據(jù)類型為 varbinary(16),默認設置為 NULL。如果 sid 為 NULL,則系統(tǒng)為新登錄生成 SID。盡管使用 varbinary 數(shù)據(jù)類型,非 NULL 的值也必須正好為 16 個字節(jié)長度,且不能事先存在。SID 很有用,例如,如果要編寫 SQL Server 登錄腳本,或要將 SQL Server 登錄從一臺服務器移動到另一臺,并且希望登錄在服務器間具有相同的 SID 時。
[@encryptopt =] 'encryption_option'
指定當密碼存儲在系統(tǒng)表中時,密碼是否要加密。encryption_option 的數(shù)據(jù)類型為 varchar(20),可以是下列值之一。
| 值 | 描述 |
|---|---|
| NULL | 加密密碼。這是默認設置。 |
| skip_encryption | 密碼已加密。SQL Server 應該存儲值而且不用重新對其加密。 |
| skip_encryption_old | 已提供的密碼由 SQL Server 較早版本加密。SQL Server 應該存儲值而且不用重新對其加密。此選項只供升級使用。 |
0(成功)或 1(失敗)
SQL Server 登錄和密碼可包含 1 到 128 個字符,包括任何字母、符號和數(shù)字。但是,登錄不能:
如果提供默認數(shù)據(jù)庫的名稱,則不用執(zhí)行 USE 語句就可以連接到指定的數(shù)據(jù)庫。但是,不能使用默認的數(shù)據(jù)庫,直到數(shù)據(jù)庫所有者(使用 sp_adduser 或 sp_addrolemember)或 sp_addrole 授予對該數(shù)據(jù)庫的訪問權限為止。
SID 號是唯一的 Microsoft Windows NT® 用戶標識號。必須保證每個用戶的 SID 號在 Windows NT 域中的唯一性。SQL Server 自動使用 Windows NT SID 標識 Windows NT 用戶和組,并為 SQL Server 登錄生成一個 SID。
將登錄添加到 SQL Server 時,如果密碼已經(jīng)是加密的形式,則使用 skip_encryption 取消密碼加密是有用的。如果此密碼由以前的 SQL Server 版本加密,則使用 skip_encryption_old。
不能從用戶定義的事務中執(zhí)行 sp_addlogin。
下表顯示了幾個與 sp_addlogin 一起使用的存儲過程。
| 存儲過程 | 描述 |
|---|---|
| sp_grantlogin | 添加 Windows NT 用戶或組。 |
| sp_password | 更改用戶密碼。 |
| sp_defaultdb | 更改用戶的默認數(shù)據(jù)庫。 |
| sp_defaultlanguage | 更改用戶的默認語言。 |
只有 sysadmin 和 securityadmin 固定服務器角色的成員才可以執(zhí)行 sp_addlogin。
下面的示例為用戶 Victoria 創(chuàng)建一個 SQL Server 登錄名,沒有指定密碼或默認數(shù)據(jù)庫。
EXEC sp_addlogin 'Victoria'
此示例為用戶 Albert 創(chuàng)建一個 SQL Server 登錄,并指定密碼 food 以及名為 corporate 的默認數(shù)據(jù)庫。
EXEC sp_addlogin 'Albert', 'food', 'corporate'
下面的示例為用戶 Claire Picard 創(chuàng)建一個 SQL Server 登錄名,密碼為"caniche",默認數(shù)據(jù)庫為 public_db,默認語言為 French。
EXEC sp_addlogin 'Claire Picard', 'caniche', 'public_db', 'french'
下面的示例為用戶 Michael 創(chuàng)建一個 SQL Server 登錄名,密碼為"chocolate",默認數(shù)據(jù)庫為 pubs,默認語言為 us_english,SID 為 0x0123456789ABCDEF0123456789ABCDEF。
EXEC sp_addlogin 'Michael', 'chocolate', 'pubs', 'us_english', 0x0123456789ABCDEF0123456789ABCDEF
下例在 Server1 上為用戶 Margaret 創(chuàng)建了一個密碼為"Rose"的 SQL Server 登錄,再析取此加密密碼,然后使用前面加密的密碼將用戶登錄 Margaret 添加到 Server2,但不對此密碼進一步加密。之后,用戶 Margaret 即可使用密碼"Rose"登錄到 Server2。
-- Server1
EXEC sp_addlogin Margaret, Rose
--Results
New login created.
-- Extract encrypted password for Margaret
SELECT CONVERT(VARBINARY(32), password)
FROM syslogins
WHERE name = 'Margaret'
--Results
------------------------------------------------------------------
0x2131214A212B57304F5A552A3D513453
(1 row(s) affected)
-- Server2
EXEC sp_addlogin 'Margaret', 0x2131214A212B57304F5A552A3D513453,
@encryptopt = 'skip_encryption'
相關文章