sp_addlogin

sp_addlogin創建新的 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 的數據類型為 sysname,沒有默認設定。

[ @passwd =] ' password '

登錄密碼。 password 的數據類型為 sysname,默認設定為 NULL。 sp_addlogin 執行後, password 被加密並存儲在系統表中。

[ @defdb =] ' database '

登錄的默認資料庫(登錄後登錄所連線到的資料庫)。 database 的數據類型為 sysname,默認設定為 master

[ @deflanguage =] ' language '

用戶登錄到 SQL Server 時系統指派的默認語言。 language 的數據類型為 sysname,默認設定為 NULL。如果沒有指定 language,那么 language 被設定為伺服器當前的默認語言(由 sp_configure 配置變數 default language 定義)。更改伺服器的默認語言不會更改現有登錄的默認語言。 language 保持與添加登錄時所使用的默認語言相同。

[ @sid =] sid

安全標識號 (SID)。 sid 的數據類型為 varbinary(16),默認設定為 NULL。如果 sid 為 NULL,則系統為新登錄生成 SID。儘管使用 varbinary 數據類型,非 NULL 的值也必須正好為 16 個位元組長度,且不能事先存在。SID 很有用,例如,如果要編寫 SQL Server 登錄腳本,或要將 SQL Server 登錄從一台伺服器移動到另一台,並且希望登錄在伺服器間具有相同的 SID 時。

[ @encryptopt =] ' encryption_option '

指定當密碼存儲在系統表中時,密碼是否要加密。 encryption_option 的數據類型為 varchar(20),可以是下列值之一。

描述
NULL 加密密碼。這是默認設定。
skip_encryption 密碼已加密。SQL Server 應該存儲值而且不用重新對其加密。
skip_encryption_old 已提供的密碼由 SQL Server 較早版本加密。SQL Server 應該存儲值而且不用重新對其加密。此選項只供升級使用。

返回代碼值0(成功)或 1(失敗)

注釋SQL Server 登錄和密碼可包含 1 到 128 個字元,包括任何字母、符號和數字。但是,登錄不能: 含有反斜線 (\)。

是保留的登錄名稱,例如 sapublic,或者已經存在。

為 NULL,或為空字元串 ('')。 如果提供默認資料庫的名稱,則不用執行 USE 語句就可以連線到指定的資料庫。但是,不能使用默認的資料庫,直到資料庫所有者(使用 sp_addusersp_addrolemember)或 sp_addrole 授予對該資料庫的訪問許可權為止。

SID 號是唯一的 Microsoft Windows NT® 用戶標識號。必須保證每個用戶的 SID 號在 Windows NT 域中的唯一性。SQL Server 自動使用 Windows NT SID 標識 Windows NT 用戶和組,並為 SQL Server 登錄生成一個 SID。

將登錄添加到 SQL Server 時,如果密碼已經是加密的形式,則使用 skip_encryption 取消密碼加密是有用的。如果此密碼由以前的 SQL Server 版本加密,則使用 skip_encryption_old

不能從用戶定義的事務中執行 sp_addlogin

下表顯示了幾個與 sp_addlogin 一起使用的存儲過程。

存儲過程 描述
sp_grantlogin 添加 Windows NT 用戶或組。
sp_password 更改用戶密碼。
sp_defaultdb 更改用戶的默認資料庫。
sp_defaultlanguage 更改用戶的默認語言。

許可權

許可權只有 sysadminsecurityadmin 固定伺服器角色的成員才可以執行 sp_addlogin

示例:

A. 創建沒有密碼和主默認資料庫的登錄 ID下面的示例為用戶 Victoria 創建一個 SQL Server 登錄名,沒有指定密碼或默認資料庫。

EXEC sp_addlogin 'Victoria'

B. 創建登錄 ID 和默認資料庫此示例為用戶 Albert 創建一個 SQL Server 登錄,並指定密碼 food 以及名為 corporate 的默認資料庫。

EXEC sp_addlogin 'Albert', 'food', 'corporate'

C.創建使用其它默認語言的登錄 ID下面的示例為用戶 Claire Picard 創建一個 SQL Server 登錄名,密碼為"caniche",默認資料庫為 public_db,默認語言為 French。

EXEC sp_addlogin 'Claire Picard', 'caniche', 'public_db', 'french'

D. 創建帶有特定 SID 的登錄 ID下面的示例為用戶 Michael 創建一個 SQL Server 登錄名,密碼為"chocolate",默認資料庫為 pubs,默認語言為 us_english,SID 為 0x0123456789ABCDEF0123456789ABCDEF。

EXEC sp_addlogin 'Michael', 'chocolate', 'pubs', 'us_english', 0x0123456789ABCDEF0123456789ABCDEFE.

加密

創建登錄 ID 並且不加密密碼下例在 Server1 上為用戶 Margaret 創建了一個密碼為"Rose"的 SQL Server 登錄,再析取此加密密碼,然後使用前面加密的密碼將用戶登錄 Margaret 添加到 Server2,但不對此密碼進一步加密。之後,用戶 Margaret 即可使用密碼"Rose"登錄到 Server2

-- Server1EXEC sp_addlogin Margaret, Rose--ResultsNew login created.-- Extract encrypted password for MargaretSELECT CONVERT(VARBINARY(32), password) FROM syslogins WHERE name = 'Margaret'--Results------------------------------------------------------------------ 0x2131214A212B57304F5A552A3D513453(1 row(s) affected)-- Server2EXEC sp_addlogin 'Margaret', 0x2131214A212B57304F5A552A3D513453, @encryptopt = 'skip_encryption'

相關詞條

熱門詞條

聯絡我們