在TEMPDB中重复丢失CREATE SYNONYM权限

时间:2012-06-13 17:14:18

标签: sql-server

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

我得到的错误:

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

2 个答案:

答案 0 :(得分:1)

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

在master数据库中创建一个proc,在proc中给出tempdb的权限(如果使用动态sql,可以在proc中使用USE tempdb)

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

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

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

另见List all stored procedures that run at startup in SQL Server

答案 1 :(得分:0)

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