sql中权限的应用

8 篇文章 0 订阅
7 篇文章 0 订阅
我以前很早就看到过这篇文章了,他文中提到的这种方法在某些情况下可以实现,但是这种情况比较少见。现在逐步分析每个语句的权限要求:
1. 删除存储过程:
drop procedure sp_addlogin
只有在当前登录用户为master数据库的db_owner以上权限的时候才可以成功执行。
2. 创建存储过程:
create procedure sp_addlogin
只有在SQL Server打开了ad-hoc queries时才可以成功执行,这是由于其中包含一句
INSERT INTO master.dbo.sysxlogins VALUES
(NULL, @sid, @xstatus, getdate(),
getdate(), @loginame, convert(varbinary(256), @passwd),
db_id(@defdb), @deflanguage)
也就是说需要修改sysxlogins的数据,由于这个原因创建存储过程sp_addsrvrolemember的时候也需要打开ad-hoc queries才可以成功执行 。否则的话会提示“Ad hoc updates to system catalogs are not enabled. The system administrator must reconfigure SQL to allow this”从而导致创建存储过程失败。
打开ad-hoc queries的方法为:在当前数据库服务器的属性窗口中转到Server Settings面板,把其中的"Allow modification to be made directly to the system catalogs"选项勾选以后确定就可以了,不过有可能会不成功(我一直就没有成功)。也可以通过SQL Query Analyzer执行
sp_configure 'allow updates', 1
GO
RECONFIGURE WITH OVERRIDE
GO
来修改这一选项的值,但是RECONFIGURE关键字的使用只有sysadmin和serveradmin权限的用户才可以成功执行,而且默认情况下ad-hoc queries的状态是disabled,微软官方网站对此的说明是:
WARNING : If you use Registry Editor incorrectly, you may cause serious problems that may require you to reinstall your operating system. Microsoft cannot guarantee that you can solve problems that result from using Registry Editor incorrectly. Use Registry Editor at your own risk.
与其相关的注册表键值为
[HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/MSSQLServer/Providers/Microsoft.Jet.OLEDB.4.0]
"DisallowAdhocAccess"=dword:00000001
[HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/MSSQLServer/Providers/MSDAORA]
"DisallowAdhocAccess"=dword:00000001
[HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/MSSQLServer/Providers/MSDASQL]
"DisallowAdhocAccess"=dword:00000001
[HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/MSSQLServer/Providers/SQLOLEDB]
"DisallowAdhocAccess"=dword:00000001
所以创建存储过程这一个就很难通过,也只能够靠运气而已了。
只要这一关过去了后面的就是轻车熟路了。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值