2009-02-02 71 views
5

我有一个TSQL脚本,用于设置数据库作为我产品安装的一部分。它需要几个步骤,总共需要五分钟左右的时间。有时候这个脚本在最后一步失败,因为运行脚本的用户没有足够的数据库权限。在这种情况下,我希望剧本能够将海峡瘫痪。要做到这一点,我希望脚本能够测试它有什么权利。任何人都可以通过一种通用的测试方式指出脚本是否正在运行特定的安全权限?SQL Sever TSQL脚本如何知道它具有哪些安全权限?

编辑:在特定情况下,我正在考虑它正在试图做一个备份,但我有其他事情出错了,并希望有一个通用的解决方案。

回答

4
select * from fn_my_permissions(NULL, 'SERVER') 

这给你的权限列表当前会话具有服务器

select * from fn_my_permissions(NULL, 'DATABASE') 

这给了你当前数据库上当前会话的权限列表上。

See here for more information

0

我认为这是一个更新失败或插入一长串选择后。

只需尝试一个简单更新或插入事务内部。硬编码的行ID,或任何使它简单和快速。

不要提交交易 - 而是将其回滚。

如果您无权执行插入或更新操作,则应该失败。如果你这样做,它会回滚,不会导致永久性的变化。

+0

在特定的情况下,我正在考虑它正在尝试做备份,但我有其他事情出错,并希望有一个通用的解决方案。 – 2009-02-02 16:07:35

+0

啊....嗯。那会更棘手一些。 – BradC 2009-02-02 16:17:07

0

尝试最后插入/更新了前面一些地方条件像

insert/update 
where 1=2 

if (@@error <> 0) 
    raise error 6666 'no permissions' 

这不会造成任何伤害,但会提高前期对缺乏权利的标志。

相关问题