1and1托管和会话数据库

时间:2014-02-22 11:58:19

标签: sql-server session-state shared-hosting

我在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'。

有人有类似的经历吗?

1 个答案:

答案 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代理作业

(如果你无法弄清楚SQL脚本的哪一部分创建数据库以及哪个部分创建了作业,你需要在这里发布脚本或者给我一个链接,如果它可用的话在线某处)


如果您无法通过管理屏幕创建SQL Server代理作业(或者如果您使用的是SQL Server Express,which doesn't have SQL Server Agent!),那么您就出局了好运。

也许你可以在没有工作的情况下离开,这取决于他们在做什么:
如果他们只对数据库进行维护,也许你可以自己定期执行必要的SQL (作业应该执行)