編程管理SQLSERVER的帳號(hào)

字號(hào):

每個(gè)人都關(guān)心數(shù)據(jù)安全。如果不關(guān)心的話,可能沒(méi)有意識(shí)到訪問(wèn)服務(wù)器中的敏感數(shù)據(jù)是非常容易的。因?yàn)镾QL SERVER在這方面已經(jīng)替我們考慮過(guò)了,所以在我們開發(fā)應(yīng)用程序就可以直接使用SQL SERVER的安全策略。
    在SQL SERVER中,我們可以在ENTERPRISE MANAGER中創(chuàng)建一個(gè)登錄帳號(hào),并且賦予一定的權(quán)限,如果要做到我們的應(yīng)用程序中呢?
    SQL SERVER提供了如下系統(tǒng)過(guò)程
    一、SP_ADDLOGIN 添加登錄帳號(hào)
    SP_ADDLOGIN login_id[,password[,defaultdb[,defaultlanguage]]]
    login_id 帳號(hào)名
    password 口令
    defaultdb 缺省數(shù)據(jù)庫(kù),默認(rèn)為MASTER數(shù)據(jù)庫(kù)。
    defaultlanguage 缺省語(yǔ)言
    二、SP_ADDUSER 添加用戶
    SP_ADDUSER login_id[,username[,rolename]]
    username 登錄數(shù)據(jù)庫(kù)的別名
    rolename 用戶隸屬的組名
    三、SP_DROPLOGIN 刪除帳號(hào)
    SP_DROPLOGIN login_id
    四、SP_DROPUSER 刪除用戶
    SP_DROPUSER username
    五、GRANT 授予用戶或組許可權(quán)限
    GRANT permission_list ON object_name TO name_list
    permission_list 授予的權(quán)限的清單
    object_name 被授予權(quán)限的表、視圖或存儲(chǔ)過(guò)程
    name_list 被授予權(quán)限的用戶或組的清單
    六、REVOKE 收回用戶或組許可權(quán)限
    REVOKE permission_list ON object_name FROM name_list
    七、SP_PASSWORD 修改口令
    SP_PASSWORD [old_password,]new_password[,login_id]
    前六個(gè)過(guò)程只能SA或被SA授予Security Administrators權(quán)限的人才可使用,第七個(gè)過(guò)程普通用戶可能使用,但不能使用login_id項(xiàng),只有上述權(quán)限的人才可使用此項(xiàng)
    應(yīng)用實(shí)例:
    添加
    declare @login varchar(6),@pass varchar(11)
    exec sp_addlogin @login,@pass,databasename
    exec sp_adduser @login,@login,public
    grant insert,select,update,delete on table1 to public
    刪除
    revoke insert,delete on table1 from public
    exec sp_dropuser @login
    exec sp_droplogin @login
    本文代碼在NT4+SQL7和WIN98+SQL7和NT4+SQL6.5中測(cè)試通過(guò)