为什么我的tempdb在服务器重启时重置权限?

Rac*_*hel 12 asp.net permissions sql-server-2005 session-state tempdb

过去两次我们重新启动了我们的sql server,我们的网站已经关闭了.原因似乎是因为tempdb正在重新创建,并且ASPState用户失去了对tempdb的读/写权限(它是一个ASP站点,会话数据存储在sql server中)

直到大约两周前,这不是问题.有谁知道如何阻止sql server重启后重置tempdb权限?或者为什么这最近才开始发生?我们正在使用MS SQL Server 2005.

Not*_*tMe 6

首先,您不应直接为tempdb分配权限.由于显而易见的原因,它会在每次重启时重新创建.

这实际上提出了一个问题:为什么你还需要拥有对这个数据库的直接权限?

除了能够连接到sql server以创建临时表之外,您不需要任何权限.但是,如果要在tempdb中创建实际表,那​​么我强烈建议您将其更改为使用专用数据库来实现此目的.

更新
基于马丁的评论我只能说哇.我甚至都不会认为这是一个选择.

好吧,既然我已经从震惊中恢复过来了.

在sql server中创建一个按计划执行的新作业.应将计划设置为"每当SQL Server代理启动时自动启动".该作业应重新创建必要的tempdb权限.

简而言之,当服务器重新启动时,SQL Server代理将重新启动(前提是服务是这样设置的).当它重新启动时,它将启动此作业,然后将修复您的权限.我希望该网站比SQL服务器完全重启只停留几秒钟.

  • 这不是OP的代码。这是AspState安装的选项,如http://forums.asp.net/p/1250011/2307815.aspx所述。就减少日志记录而言,将临时数据存储在tempdb中可能具有优势。 (2认同)