Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/31.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何切换到会话的SQL server状态。。。。我犯了一个错误_C#_Asp.net_Sql Server - Fatal编程技术网

C# 如何切换到会话的SQL server状态。。。。我犯了一个错误

C# 如何切换到会话的SQL server状态。。。。我犯了一个错误,c#,asp.net,sql-server,C#,Asp.net,Sql Server,由于一些进程内问题,我尝试切换到SQL状态会话 我检查了我的CMS数据库,发现像aspnet_XXX这样的表已经存在。为了确保这一点,我还创建了默认数据库“aspnetdb”,并比较了表aspnet\u xxx,检查它们是否已经存在于我的CMS\u DB\u DEV中。。。它们都已经存在了 然后我转到web.config并通过IIS配置sessionstate connectionstring,它如下所示: <system.web> <sessionState

由于一些进程内问题,我尝试切换到SQL状态会话

我检查了我的CMS数据库,发现像aspnet_XXX这样的表已经存在。为了确保这一点,我还创建了默认数据库“aspnetdb”,并比较了表aspnet\u xxx,检查它们是否已经存在于我的CMS\u DB\u DEV中。。。它们都已经存在了

然后我转到web.config并通过IIS配置sessionstate connectionstring,它如下所示:

  <system.web>
      <sessionState allowCustomSqlDatabase="true" 
                    cookieless="UseCookies" mode="SQLServer"   
                    sqlConnectionString="Server=localhost;Database=cms_db_dev;User ID=sa;Password=xxxx" 
                    timeout="20" />

现在,当我运行我的应用程序时,我得到一个错误:

无法使用SQL Server,因为ASP.NET 2.0版会话状态为 未安装在SQL server上。请安装ASP.NET会话状态 SQL Server 2.0或更高版本

我使用W7 pro,安装了IIS 7.5

我查看了这两个链接,其中提到了问题,但没有希望:

在我的本地主机上完成这项工作后,我将在生产机器上执行同样的操作。表似乎已经存在,所以我只需要配置web.config

我可能不会删除现有的表(比如aspnet_xxx),因为它是由Dotnetnuke CMS系统使用的。。。但我可以在本地主机上测试


那么我错过了什么

听起来生产环境可能只有您需要的1.1版本的DB结构。您可以使用-ssadd标志和适当的参数运行2.0 aspnet_regsql.exe以创建新版本

有几点:

  • SQL会话表的名称以
    ASPState
    开头,而不是
    aspnet
    ——这些名称用于各种提供者存储(成员资格、角色、配置文件等)
  • 如果使用-ssadd命令运行aspnet_regsql,默认情况下,它将创建一个名为“ASPState”的数据库,其中包含一些存储过程,并使用TempDB实现实际的持久性
  • 要使用现有数据库,您需要运行:

    aspnet_regsql -ssadd -sstype c -s LocalHost -d cms_db_dev -u sa -P XXXXX
    
    这将:

    • -ssadd
      向使用
      -s
      选项指定的Sql Server添加对SQLServer模式会话状态的支持
    • -sstype c
      创建一个自定义的持久化会话状态数据库,其中数据和存储的进程都存储在同一个数据库中(与将所有数据存储在名为
      ASPState
      的数据库中的
      p
      相反,或与将在
      ASPState
      数据库中创建存储过程但将数据存储在TempDB中的
      t
      相反)
    • -s Localhost
      (或
      -s.\
      )使用本地数据库实例,根据需要进行更新
    • d cms\u db\u dev
      要添加表和存储过程的自定义数据库的名称
    • -u sa-P XXXXX
      创建数据库的有效凭据,如果在本地主机上,则可能使用
      -E
      来使用windows凭据

    我运行了“aspnet\u regsql-ssadd-E”并开始添加会话…完成…但仍然遇到相同的问题。同意-aspnet_regsql应该可以解决您的问题。-E表示当前登录的用户将用于创建db资产-可能您需要确保您的web应用的标识或连接字符串用户有权访问新创建的表…为什么“AllowCustomSqlDatabase=true”?运行regsql_iis.exe时,是否通过-S标志指定要在其上安装的SQL server?或者,您可能希望签出InstallSqlState.SQL脚本和/或InstallPersistSqlState.SQL脚本。您可能需要在连接字符串中指定“初始目录”或删除”AllowCustomSqlDatabase=true”。当我运行“InstallSqlState”时,它会显示运行aspnet_regsql,而不是手动运行此脚本。我有specy AllowCustomSqlDatabase,因为我没有使用默认数据库“aspnetdb”。这是我在我的问题中在上面发送的链接中读到的内容。