下面是我在網上找的這兩個保留字的說明:
sp_addlogin與ap_adduser兩個存儲過程的使用,以前沒用到過,看書時也沒有注意,今天去給一個同事建數據庫和用戶,一下子用不起來了,汗!
在使用mysql時,grant命令同時就創建了login與user,而在sybase等其它大型數據庫中卻不是這樣。要通過sp_addlogin和sp_adduser來增加用戶登錄及授權信息。
sp_addlogin:
功能:
將新的用戶帳號添加到Adaptive Server;在創建時指定特定登錄的口令有效期、最小口令長度和所允許的最大失敗登錄次數。
語法:
sp_addlogin loginname,passwd[,defdb][,deflanguage][,fullname][,passwdexp][,minpwdlen][,maxfieldlogins],各個參數分別表示:登錄名,用戶口令,缺省數據庫名稱,缺省語言,全名,口令有效期,最小口令長度,允許登錄失敗次數;
sp_adduser:
功能:
將新的用戶添加到當前數據庫;
語法:
sp_adduser loginname[,name in db[,grpname]],各個參數分別表示:master.dbo.syslogins中的用戶名,也就是sp_addlogin加的loginname、在當前數據庫中的用戶名、將用戶添加到數據庫中的現有組。
簡言之:
addlogin:增加登陸用戶,使你能通過isql登陸
adduser:增加數據庫用戶,使你能use database
sp_addlogin
創建新的 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' ] |
備注
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 一起使用的存儲過程。
存儲過程 說明
添加 Windows 用戶或組。 |
|
更改用戶密碼。 |
|
更改用戶的默認數據庫。 |
|
更改用戶的默認語言。 |
參數
登錄的名稱。login 的數據類型為 sysname,無默認值。
登錄的密碼。password 的數據類型為 sysname,默認值為 NULL。
不要使用空密碼。請使用強密碼。 |
登錄的默認數據庫(在登錄后登錄首先連接到該數據庫)。database 的數據類型為 sysname,默認值為 master。
登錄的默認語言。language 的數據類型為 sysname,默認值為 NULL。如果未指定 language,則新登錄的默認 language 將設置為服務器的當前默認語言。
安全標識號 (SID)。sid 的數據類型為 varbinary(16),默認值為 NULL。如果 sid 為 NULL,則系統將為新登錄生成 SID。不管是否使用 varbinary 數據類型,NULL 以外的值的長度都必須正好是 16 個字節,并且一定不能已經存在。指定 sid 非常有用,例如,如果您要編寫腳本,或將 SQL Server 登錄從一臺服務器移動到另一臺服務器,并且想讓登錄在不同服務器上使用相同的 SID,都需要指定它。
指定是以明文形式,還是以明文密碼的哈希運算結果來傳遞密碼。注意,不進行加密。在本討論中使用“加密”一詞是為了向后兼容。如果傳入明文密碼,將對它進行哈希運算。哈希值將存儲起來。encryption_option 的數據類型為 varchar(20),可以是下列值之一。
值 說明
NULL |
以明文形式傳遞密碼。這是默認值。 |
skip_encryption |
密碼已經過哈希運算。數據庫引擎應存儲值,且不對其重新進行哈希運算。 |
skip_encryption_old |
所提供的密碼由 SQL Server 的早期版本進行哈希運算。數據庫引擎應存儲值,且不對其重新進行哈希運算。提供該選項只是為了升級。 |
返回代碼值
0(成功)或 1(失敗)
權限
要求具有 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
,默認數據庫為
AdventureWorks
,默認語言為
Bulgarian
。
EXEC sp_addlogin 'TzTodorov', '709hLKH7chjfwv', 'AdventureWorks', N'?????????' |
D. 創建具有特定 SID 的 SQL Server 登錄
以下示例為用戶
Michael
創建 SQL Server 登錄,密碼為
B548bmM%f6
,默認數據庫為
AdventureWorks
,默認語言為
us_english
,SID 為
0x0123456789ABCDEF0123456789ABCDEF
。
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
