我在1and1(https://www.1and1.com)服务器(共享主机)上托管了我的ASP.NET 4.5应用程序,并使用SQL Server会话状态作为loadbalancer / webFarm。但是当我尝试在其数据库服务器上安装会话数据库时,我遇到了问题。作为共享主机,我对Web服务器的访问权限有限。
我尝试在1and1数据库服务器上执行 InstallSqlStateTemplate.sql / InstallSqlState.sql (从我的机器上复制),但它失败了。
我没有权限通过脚本在那里创建新数据库,所以我尝试使用 InstallSqlStateTemplate.sql 修改现有数据库 - 它引发了以下错误:
对象'sp_delete_job'上的EXECUTE权限被拒绝, 数据库'msdb',架构'dbo'。
有人有类似的经历吗?
答案 0 :(得分:2)
共享主机很常见,因为您没有足够的权限通过SQL创建数据库。
通常的解决方案(您已经尝试过)将在您的主机提供给您的管理屏幕中创建数据库,然后执行其余的SQL脚本,当然省略CREATE DATABASE
部分在开头。
错误消息表明您没有足够的权限来执行sp_delete_job
数据库which deletes SQL Server Agent jobs中的存储过程msdb
。
显然,ASP.NET的SQL Server会话状态包括一些SQL Server代理作业,可能用于常规数据库维护或类似(我熟悉SQL Server,但不熟悉ASP.NET会话状态) 。
如果作业已经存在(然后重新创建),脚本可能会首先尝试删除作业,因此使用sp_delete_job
。
如果您能够通过提供商的管理界面创建SQL Server代理作业,则需要执行以下操作:
(如果你无法弄清楚SQL脚本的哪一部分创建数据库以及哪个部分创建了作业,你需要在这里发布脚本或者给我一个链接,如果它可用的话在线某处)
如果您无法通过管理屏幕创建SQL Server代理作业(或者如果您使用的是SQL Server Express,which doesn't have SQL Server Agent!),那么您就出局了好运。
也许你可以在没有工作的情况下离开,这取决于他们在做什么:
如果他们只对数据库进行维护,也许你可以自己定期执行必要的SQL (作业应该执行)。