1

我们有几个SQL Server 2008 R2环境(开发、QA、生产),其中包含用于ASP.NET应用程序的数据库。

此应用程序使用ASP.NET 成员资格SQL Server 会话提供程序,因此我们有一个ASPState 数据库

这些提供程序的功能被扩展为限制每次登录一个活动会话。我们的实现将表添加到TempDB中,一个存储proc ASPState.dbo.CreateTempTables来创建这些表,另一个存储proc Master.dbo.ASPState_Startup调用ASPState中的SP

在我的开发机器和生产环境中,当SQL Server启动时Master.dbo.ASPState_Startup执行并创建表。

我正在设置一个新的QA 环境,但无法弄清楚这是如何发生的(因此在QA中,表在启动时未添加到TempDB中)。我通过Red Gate 的比较工具手动比较了架构和权限,并没有发现任何差异。

我检查了作业,但没有人调用这些存储过程中的任何一个。

关于魔法隐藏在哪里的任何想法?

谢谢,斯科特

4

1 回答 1

1

sp_procoption是“魔法”:

设置或清除自动执行的存储过程。每次启动 SQL Server 实例时,都会运行一个设置为自动执行的存储过程。

EXEC sp_procoption @ProcName = 'ASPState_Startup' 
, @OptionName = 'startup' 
, @OptionValue = 'on'; 
于 2012-05-02T14:42:21.010 回答