我有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消息是:EXECUTE permissio n被拒绝了 对象'sp_delete_job',数据库'msdb',架构'dbo'。如果工作的话 不存在,msdb.dbo.sp_delete_job会出现错误。 SQL 服务器:mydb.rds.amazonaws.com数据库:aspnetdb加载的SQL文件: InstallSqlState.sql
命令失败:
/ *删除所有表,启动过程,存储过程和类型。 * /
/ *删除DeleteExpiredSessions_Job * /
DECLARE @jobname nvarchar(200)SET @jobname = N'ASPState'+ '_Job_DeleteExpiredSessions'
- 删除[本地]作业 - 如果作业不存在,我们预计会收到错误。 PRINT'如果作业不存在,则会出现msdb.dbo.sp_delete_job的错误 编'。
EXECUTE msdb.dbo.sp_delete_job @job_name = @jobname
SQL异常:System.Data.SqlClient.SqlException(0x80131904):. 对象'sp_delete_job',数据库上的EXECUTE权限已被删除 'msdb',架构'dbo'。如果作业不存在,则发生错误 msdb.dbo.sp_delete_job是预期的。在 System.Data.SqlClient.SqlConnection.OnError(SqlException异常, Boolea n breakConnection) System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning()at System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior, SqlCommand cm dHandler,SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler,Tds ParserStateObject stateObj)at System.Data.SqlClient.SqlCommand.RunExecuteNonQueryTds(字符串 methodName,Boolean async)at System.Data.SqlClient.SqlCommand.InternalExecuteNonQuery(DbAsyncResult res ult,String methodName,Boolean sendToPipe)at System.Data.SqlClient.SqlCommand.ExecuteNonQuery()at System.Web.Management.SqlServices.ExecuteFile(String file,String server,String database,String dbFileName,SqlConnection连接, Boolean sessionSta te,Boolean isInstall,SessionStateType sessionStatetype)
有人知道解决这个问题的方法吗?这会创建一个数据库,但它不完整。
答案 0 :(得分: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。
答案 1 :(得分:1)
我已经解决了我在Amazon RDS上创建会话数据库的问题。