---------------------------------------
-- SQL Server 2005 Guest 用户
---------------------------------------
在SQL Server 2005 中的每个数据库安全性的
用户下面均有一个 guest 用户,默认该用户只在
master 和 tempdb 数据库下是开启的,其他数据
库均为禁用的。该用户在SQL Server 2005中是不
允许删除的。
一个登录者若在该数据库中没有对应的用户,则
启用guest则可以进行对该数据库的访问,否则访
问被拒,开启和禁用Guest用户只能用语句来实现,
SSMS暂没发现怎么实现。
启用Guest:
GRANT Connect TO Guest;
禁用Guest
REVOKE Connect FROM Guest;
例:
--在SQL Server 2005中新增一个登录名 Mary
SELECT SUSER_SNAME(),USER_NAME();--SYSTEM9\Administrator dbo
--CREATE LOGIN [Mary] WITH PASSWORD=N'Û!¿2ÕoT22y_þ§criÊêmW£Í/ÏÍ@q', DEFAULT_DATABASE=[master], DEFAULT_LANGUAGE=[简体中文], CHECK_EXPIRATION=OFF, CHECK_POLICY=OFF
CREATE LOGIN [Mary] WITH PASSWORD=N'P@ssw0rd',DEFAULT_DATABASE=[master]
--模拟Mary登录
EXECUTE AS Login='Mary'
SELECT SUSER_SNAME(),USER_NAME(); --Mary guest]
--模拟登录Adventureworks数据库,Adventureworks的guest未开启
USE ADventureworks
GO
--消息 916,级别 14,状态 1,第 1 行
--服务器主体 "Mary" 无法在当前安全上下文下访问数据库 "AdventureWorks"。
--退出Mary模拟,开启Guest用户
REVERT;
SELECT SUSER_SNAME(),USER_NAME();--SYSTEM9\Administrator dbo
--转向 Adventureworks 开启Guest
USE Adventureworks
GO
GRANT CONNECT TO Guest; --开启Guest
--在模拟Mary
EXECUTE AS LOGIN='Mary'
USE Adventureworks
GO
SELECT SUSER_SNAME(),USER_NAME();--Mary guest
--退出模拟,禁用Guest
REVERT
REVOKE CONNECT FROM Guest;
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/15042150/viewspace-616671/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/15042150/viewspace-616671/