【问题标题】:Adding tempdb items on startup in SQL Server在 SQL Server 中启动时添加 tempdb 项
【发布时间】:2011-09-06 07:39:31
【问题描述】:

如何在 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

【问题讨论】:

    标签: asp.net sql-server-2005 session-state


    【解决方案1】:

    嗯,如果您使用标准设置在 tempdb 中启用 ASP.Net 会话状态,则系统应该在 master 数据库中生成如下存储过程 (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    
    

    因此,无论如何都应该重新创建临时表,除非在安装后进行了更改。

    如果需要额外的权限,我希望在ASPState 中扩展现有的CreateTempTables 过程。


    如果这不能正常工作,您可以尝试使用aspnet_regsql 命令(在%Windir%\Microsoft.Net\Framework\<framework version 下找到 - 删除然后重新添加对服务器的会话状态支持。然后您想使用-ssremove -ssadd,但我建议先通过 /? 以查看所有适用的选项。

    【讨论】:

    • 谢谢,SP 确实存在,我没有意识到。我不是设置它的人,而且我以前从未设置过 ASPSessionState。我只是想解决一个现有的问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-11
    相关资源
    最近更新 更多