在SQL Server启动时添加tempdb项
问题描述:
如何在SQL Server启动时将某些项添加到tempdb?在SQL Server启动时添加tempdb项
我不是这方面的专家,但我们的ASP SessionState存储在数据库中,出于某种原因,用于会话状态的tempdb项在服务器重新启动时被丢弃。我不仅需要重新创建项目,而且还必须重新创建用户映射到tempdb。我有一个脚本,这样做,但我无法弄清楚如何在SQL启动
-- Use TempDB
use tempdb
go
-- Create Temp tables if they don't exist
IF NOT EXISTS(
SELECT 1 FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_TYPE='BASE TABLE'
AND TABLE_NAME = 'ASPStateTempSessions')
BEGIN
EXECUTE [ASPState].[dbo].[CreateTempTables]
END
-- If ASPSessionState user isn't mapped to temp db, map it
IF IS_MEMBER('ASPSessionState') IS NULL
create user ASPSessionState from login ASPSessionState
-- Give ASPSessionState user read/write permissions to tempdb
exec sp_addrolemember db_datareader, ASPSessionState
go
exec sp_addrolemember db_datawriter , ASPSessionState
go
答
庵运行它,如果你已经使用了标准设置,以使在tempdb ASP.Net会话状态时,系统应该在主数据库中生成一个存储过程(ASPState_Startup
),如下所示。这个存储过程被配置为在SQL Server启动时自动运行:
USE master
GO
DECLARE @sstype nvarchar(128)
SET @sstype = N'sstype_temp'
IF UPPER(@sstype) = 'SSTYPE_TEMP' BEGIN
DECLARE @cmd nchar(4000)
SET @cmd = N'
/* Create the startup procedure */
CREATE PROCEDURE dbo.ASPState_Startup
AS
EXECUTE ASPState.dbo.CreateTempTables
RETURN 0'
EXEC(@cmd)
EXECUTE sp_procoption @ProcName='dbo.ASPState_Startup', @OptionName='startup', @OptionValue='true'
END
因此,临时表应该被重新无论如何,除非事情已经安装以来改变。
如果需要额外的权限,我希望扩展现有的CreateTempTables
程序ASPState
。
如果工作不正常,你可以尝试使用aspnet_regsql
命令(%Windir%\Microsoft.Net\Framework\<framework version
下找到 - 删除然后重新添加会话状态支持的服务器你想使用-ssremove
然后-ssadd
,但我建议首先通过/?
看到所有适用的选项
谢谢,SP实际上存在,我没有意识到它,我不是谁设置了这一点,我从来没有设置ASPSessionState之前我只是想解决一个存在的问题。 – Rachel 2011-06-01 13:47:50