sqlserver通過儲存過程新增登陸使用者
▲▲一、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 應該儲存值而且不用重新對其加密。此選項只供升級使用。
▲▲二、SP_GRANTDBACCESS
為 Microsoft SQL Server 登入或 Microsoft Windows NT 使用者或組在當前資料庫中新增一個安全帳戶,並使其能夠被授予在資料庫中執行活動的許可權。
語法:
sp_grantdbaccess [@loginame =] 'login'
[,[@name_in_db =] 'name_in_db' [OUTPUT]]
引數:
[@loginame =] 'login'
當前資料庫中新安全帳戶的登入名稱。Windows NT 組和使用者必須用 Windows NT 域名限定,格式為"域/使用者",例如 LONDON/Joeb。登入不能使用資料庫中已有的帳戶作為別名。login 的資料型別為 sysname,沒有預設值。
[@name_in_db =] 'name_in_db' [OUTPUT]
資料庫中帳戶的名稱。name_in_db 是 sysname 型別的 OUTPUT 變數,預設值為 NULL。如果沒有指定,則使用 login。如果將其指定為 NULL 值的 OUTPUT 變數,則設定 @name_in_db 為 login。當前資料庫不必存在 name_in_db。
▲▲三、SP_DROPLOGIN
刪除 Microsoft SQL Server 登入,以阻止使用該登入名訪問 SQL Server。
語法
sp_droplogin [ @loginame = ] 'login'
引數
[@loginame =] 'login'
將被刪除的登入。login 的資料型別為 sysname,沒有預設值。login 必須已經存在於 SQL Server 中。
▲▲四、SP_REVOKEDBACCESS
從當前資料庫中刪除安全帳戶。
語法
sp_revokedbaccess [ @name_in_db = ] 'name'
引數
[@name_in_db =] 'name'
是要刪除的帳戶名。name 的資料型別為 sysname,無預設值。name 可以是 Microsoft? SQL Server? 使用者名稱或 Microsoft Windows NT? 使用者名稱或組名,而且必須存在於當前資料庫中。當指定 Windows NT 使用者或組時,請指定該 Windows NT 使用者或組在資料庫中可被識別的名稱(即用 sp_grantdbaccess 新增的名稱)。
▲▲五、GRANT
在安全系統中建立專案,使當前資料庫中的使用者得以處理當前資料庫中的資料或執行特定的 Transact-SQL 語句。
語法
語句許可權:
GRANT { ALL | statement [ ,...n ] }
TO security_account [ ,...n ]
物件許可權:
GRANT
{ ALL [ PRIVILEGES ] | permission [ ,...n ] }
{
[ ( column [ ,...n ] ) ] ON { table | view }
| ON { table | view } [ ( column [ ,...n ] ) ]
| ON { stored_procedure | extended_procedure }
| ON { user_defined_function }
}
TO security_account [ ,...n ]
[ WITH GRANT OPTION ]
[ AS { group | role } ]
▲▲六、REVOKE
刪除以前在當前資料庫內的使用者上授予或拒絕的許可權。
語法
語句許可權:
REVOKE { ALL | statement [ ,...n ] }
FROM security_account [ ,...n ]
物件許可權:
REVOKE [ GRANT OPTION FOR ]
{ ALL [ PRIVILEGES ] | permission [ ,...n ] }
{
[ ( column [ ,...n ] ) ] ON { table | view }
| ON { table | view } [ ( column [ ,...n ] ) ]
| ON { stored_procedure | extended_procedure }
| ON { user_defined_function }
}
{ TO | FROM }
security_account [ ,...n ]
[ CASCADE ]
[ AS { group | role } ]
▲▲SP_PASSWORD
新增或更改 Microsoft? SQL Server? 登入的密碼。
語法
sp_password [ [ @old = ] 'old_password' , ]
{ [ @new =] 'new_password' }
[ , [ @loginame = ] 'login' ]
引數
[@old =] 'old_password'
是舊密碼。old_password 為 sysname 型別,其預設值為 NULL。
[@new =] 'new_password'
是新密碼。new_password 為 sysname 型別,無預設值。如果沒有使用命名引數,就必須指定 old_password。
[@loginame =] 'login'
是受密碼更改影響的登入名。login 為 sysname 型別,其預設值為 NULL。login 必須已經存在,並且只能由 sysadmin 固定伺服器角色的成員指定。
=============================================================================
應用例項:
--新增
--新增使用者:
exec sp_addlogin '使用者名稱','密碼','預設資料庫名'
--新增到資料庫
exec sp_grantdbaccess '使用者名稱','資料庫名'
--分本許可權
grant insert,select,update,delete on table1 to public
--刪除
--刪除許可權
revoke insert,delete on table1 from public
--刪除資料庫中的使用者
exec sp_revokedbaccess '使用者名稱'
--刪除使用者
exec sp_droplogin '使用者名稱'