【问题标题】:1and1 hosting and Session database1and1 托管和会话数据库
【发布时间】:2014-03-24 02:56:17
【问题描述】:

我在 1and1 (https://www.1and1.com) 服务器(共享主机)上托管了我的 ASP.NET 4.5 应用程序,并且我使用 SQL Server 会话状态作为负载平衡器/webFarm。但是当我尝试在他们的数据库服务器上安装会话数据库时遇到了问题。作为共享主机,我对 Web 服务器的访问权限有限。

我尝试在 1and1 db 服务器上执行 InstallSqlStateTemplate.sql/InstallSqlState.sql(从我的机器复制)但失败了。

我无权在那里通过脚本创建新数据库,因此我尝试使用 InstallSqlStateTemplate.sql 修改现有数据库 - 它会引发以下错误:

对象“sp_delete_job”的执行权限被拒绝, 数据库“msdb”,架构“dbo”。

有人有类似经历吗?

【问题讨论】:

  • 在共享主机中,您需要向主机商询问权限。从上面的错误消息中,可以清楚地表明权限不足以运行您的脚本。因此,我建议您就这个问题联系您的托管服务提供商。

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


【解决方案1】:

对于共享主机来说,您没有足够的权限通过 SQL 创建数据库是很常见的。

通常的解决方案(您已经尝试过) 是在您的主机提供给您的管理屏幕中创建数据库,然后执行其余的 SQL 脚本,当然省略CREATE DATABASE 开头部分。

问题是脚本除了创建数据库之外还做了一些额外的事情,而你没有足够的权限来做这些额外的事情。

错误信息说你没有足够的权限来执行msdb数据库which deletes SQL Server Agent jobs中的存储过程sp_delete_job

显然 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(作业应该执行)

【讨论】:

  • 感谢您的回答。是的,这就是我们使用共享主机所能做的一切。但幸运的是 1&1 可以选择上传备份并恢复到现有数据库 - 所以我可以在我的本地数据库上运行脚本,使用 1&1 将其备份并恢复到数据库 - 这很完美,并且具有所有必需的表、SP 和作业.
猜你喜欢
  • 1970-01-01
  • 2010-12-27
  • 2011-02-22
  • 2020-12-22
  • 2013-02-17
  • 1970-01-01
  • 2015-04-27
  • 2015-08-27
  • 1970-01-01
相关资源
最近更新 更多