1

我有 asp.net 应用程序,我将把我的会话存储在 SQL Server 中。我正在使用 Amazon RDS(Microsoft SQL Server Express Edition)。我正在使用本地数据库进行测试,它在那里运行良好。

所以我尝试用下一行创建会话数据库

aspnet_regsql.exe -ssadd -sstype p -S mydb.rds.amazonaws.com -U myuser-P mypass

所以我的意思是它适用于本地数据库。但对于 Amazon RDS,我收到了下一个例外:

开始添加会话状态。

.. 执行 SQL 文件“InstallSqlState.sql”时出错。SQL 错误号为 229,SqlException 消息为:对象“sp_delete_job”、数据库“msdb”、模式“dbo”的执行权限被拒绝。如果作业不存在,则预计 msdb.dbo.sp_delete_job 会出错。SQL Server:mydb.rds.amazonaws.com 数据库:aspnetdb 加载的 SQL 文件:InstallSqlState.sql

命令失败:

/* 删除所有表、启动过程、存储过程和类型。*/

/* 删除 DeleteExpiredSessions_Job */

DECLARE @jobname nvarchar(200) SET @jobname = N'ASPState' + '_Job_DeleteExpiredSessions'

-- 删除 [local] 作业 -- 如果作业不存在,我们预计会收到错误消息。' PRINT '如果作业不存在,则 msdb.dbo.sp_delete_job 会出现错误。

执行 msdb.dbo.sp_delete_job @job_name = @jobname

SQL 异常:System.Data.SqlClient.SqlException (0x80131904):对象“sp_delete_job”、数据库“msdb”、架构“dbo”的执行权限被拒绝。如果作业不存在,则预计 msdb.dbo.sp_delete_job 会出错。在 System.Data.SqlClient.SqlConnection.OnError(SqlException 异常,Boolean breakConnection) 在 System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning() 在 System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior,SqlCommand cm dHandler,SqlDataReader dataStream , BulkCopySimpleResultSet bulkCopyHandler, Tds ParserStateObject stateObj) 在 System.Data.SqlClient.SqlCommand.RunExecuteNonQueryTds(String methodName, Boolean async) 在 System.Data.SqlClient.SqlCommand.InternalExecuteNonQuery(DbAsyncResult 结果, String methodName,

有人知道解决这个问题的方法吗?这会创建一个数据库,但它是不完整的。

4

2 回答 2

2

可以在 SQL RDS 上使用 sql server 会话状态。

您只需注释掉与创建 SQL Server 代理作业有关的 InstallSqlState.sql 部分。该脚本在运行 aspnet_regsql.exe 命令时使用。它位于该 exe 旁边的框架文件夹中。它不会优雅地处理未能创建作业的问题,因此它不会执行任何其他步骤来安装会话状态。

这是我的 InstallSqlState.sql 最终的样子: http: //pastebin.com/QJDXC093

或者,您可以在您有权创建作业的数据库上运行 aspnet_regsql.exe 命令,然后使用 Management Studio 中的导入/导出功能将生成的数据库架构从您的数据库移动到 RDS。

于 2013-01-11T06:18:57.290 回答
2

我已经解决了我在 Amazon RDS 上创建会话数据库的问题。

  1. 使用以下工具 SQLAzureMW v5.15.6 Release Binary for SQL Server 2014 在 AWS RDS 和数据库和架构迁移上创建 ASPState DB。
  2. 在 sessionState mode="SQLServer" allowCustomSqlDatabase="true" sqlConnectionString="data source=amazon-server-name;initial catalog=ASPState;persist security info=True;user id=userid;password=password" cookieless="假"超时="100">
于 2017-01-03T16:30:40.457 回答