我遇到了一个反复出现的问题,即用户在TEMPDB中的CREATE SYNONYM权限正在丢失。为什么这些权限似乎不是永久持久的,有什么原因吗?
我得到的错误是:
> System.Data.SqlClient.SqlException (0x80131904): CREATE SYNONYM
> permission denied in database 'tempdb'发布于 2012-06-14 02:23:22
我给你留下了评论,但你能做的如下
在master数据库中创建一个proc,在该proc中为tempdb提供权限(如果使用动态sql,则可以在proc中使用use tempdb )
然后将proc标记为在启动时运行
exec sp_procoption N'MyProcName', 'startup', 'on'现在,每次重新启动sql server时,此过程都会运行并授予权限。
另请参阅此处List all stored procedures that run at startup in SQL Server
发布于 2012-06-14 01:42:51
每次重新启动服务器时,都会将tempdb创建为model数据库的副本。我的猜测是,当您向用户授予权限时和收到此错误消息时之间会发生服务器重启。也就是说,您可以在model中授予权限,它将在服务器重新启动时位于tempdb中,或者您可以执行诸如创建启动存储过程之类的操作来授予tempdb中的权限。
https://stackoverflow.com/questions/11019971
复制相似问题