0

我遇到了一个反复出现的问题,即用户在 TEMPDB 中的 CREATE SYNONYM 权限正在丢失。这些权限似乎不是永久持久的,有什么原因吗?

我得到的错误:

> System.Data.SqlClient.SqlException (0x80131904): CREATE SYNONYM
> permission denied in database 'tempdb'
4

2 回答 2

1

我给你留下了评论,但你可以做的是以下

在主数据库中创建一个 proc,在该 proc 中授予 tempdb 的权限(如果您使用动态 sql,则可以在 proc 中使用 USE tempdb)

然后将 proc 标记为在启动时运行

exec sp_procoption N'MyProcName', 'startup', 'on'

现在每次重新启动 sql server 时,此 proc 都会运行并授予权限

另请参阅此处列出在 SQL Server 中启动时运行的所有存储过程

于 2012-06-13T18:23:21.673 回答
0

每次重新启动服务器时,都会创建 tempdb 作为模型数据库的副本。我的猜测是,在您向用户授予权限和收到此错误消息之间会发生服务器重启。也就是说,您可以在模型中授予权限,并且当服务器重新启动时它将在 tempdb 中,或者您可以执行诸如创建启动存储过程以在 tempdb 中授予权限之类的操作。

于 2012-06-13T17:42:50.887 回答