【发布时间】:2011-01-11 19:16:11
【问题描述】:
如果我有一组 SQL(即包含任意 SQL 语句的脚本),有没有办法找出执行 SQL 所需的最低权限?
(在查看 WinForms 应用程序的项目属性页面上的“安全”选项卡时,我正在考虑类似于 Visual Studio 中的“应用程序所需的权限”区域。)
一点背景:
作为应用程序的一部分,我有一组升级脚本(用于更改表中的数据以及更改架构),这些脚本将在客户的数据库中运行。我想在部署这些升级脚本之前分析它们是否存在任何潜在的权限问题,因为运行它们的客户可能对 SQL Server 的登录有限制。这些脚本中发生的事情类型通常是添加/删除/更改表/列/索引,但我也会从信息模式视图和系统表中进行选择。
编辑:
当用户没有正确的升级权限时,我有适当的错误处理来应对这些情况。我目前也在检查运行升级的用户是db_owner,但我更关心正在升级的数据库之外的东西。例如,脚本经常使用系统表来获取有关数据库模式的信息,以决定是否执行特定操作 - 我想知道访问这些表需要哪些权限。另一个例子是打开页面压缩——用户是否需要特定的权限才能做到这一点?
我想在部署升级脚本之前对其进行检查,因为事先知道您需要某些权限,而不是升级失败并出现错误,这是一种更好的用户体验。
【问题讨论】:
-
+1 我们的 dba (mcdba an mct) 没有帮助我做同样的事情,我前段时间完成了事务并检查特殊错误号
-
我确实在此 SQL 执行位置周围有错误捕获,但我希望能够事先知道需要什么权限,而不是让它失败然后发现它是由于一个不足- 特权用户尝试运行它。
-
至少你可以检查 sysdba 或 dbowner :(
标签: sql sql-server sql-server-2005 sql-server-2008 permissions