Sql server 2005 在共享主机上修改SQL数据库

Sql server 2005 在共享主机上修改SQL数据库,sql-server-2005,shared-hosting,visual-studio-express,visual-web-developer,Sql Server 2005,Shared Hosting,Visual Studio Express,Visual Web Developer,我在共享主机服务器上有一个实时数据库。我正在对我的站点代码进行一些重大更改,我想修复我在最初设计数据库时犯的一些愚蠢错误。这些更改涉及更改大量字段的大小,并适当地强制表之间的引用完整性。如果可能,我想在本地测试服务器和远程服务器上进行更改 我应该注意到,虽然我对编写复杂的查询来处理数据相当熟悉,但在没有图形界面的情况下修改数据库结构的经验很少 我可以在VisualStudio数据库资源管理器中访问远程数据库,但除了数据操作之外,我不能将其用于任何其他用途。昨晚我安装了Sql Management

我在共享主机服务器上有一个实时数据库。我正在对我的站点代码进行一些重大更改,我想修复我在最初设计数据库时犯的一些愚蠢错误。这些更改涉及更改大量字段的大小,并适当地强制表之间的引用完整性。如果可能,我想在本地测试服务器和远程服务器上进行更改

我应该注意到,虽然我对编写复杂的查询来处理数据相当熟悉,但在没有图形界面的情况下修改数据库结构的经验很少

我可以在VisualStudio数据库资源管理器中访问远程数据库,但除了数据操作之外,我不能将其用于任何其他用途。昨晚我安装了Sql Management Studio express,在40多个崩溃后我放弃了——我甚至无法修补这该死的东西

远程服务器为SQL 2005/MyLittleAdmin web界面可用。 因此,我的问题是,实现这些变化的最佳方式是什么。我是否可以在远程服务器上使用图形界面?如果没有,是否有一种简单的方法可以将数据库复制到我的本地计算机,修复它,然后重新上传?最后,如果上述任何一项都不可行,那么是否有人通过查询链接到修复引用完整性的适当信息

对不起,这个问题有点笼统——我觉得我把这件事弄得比应该的难多了,但在搜索/尝试了一整晚之后,我什么也没得到。提前谢谢你的帮助。我真的很感激


…还有谁有我可以借用的时间机器吗?我需要好好教训一下过去的自己。

通常托管提供商允许您备份和还原数据库,所以完成移动的最简单方法是备份实时数据库,下载备份文件,在本地还原,进行所有更改,备份本地数据库,上传,然后在live服务中还原。在此期间,您的站点应处于管理关闭状态,以便在您执行此操作时不会继续更新数据。您必须确保您的本地SQL实例与宿主提供程序完全相同的生成版本(@@version),否则您的本地SQL可能会升级数据库结构,并且您将无法在宿主提供程序上恢复它(或者,如果您的版本早于宿主的版本,您将无法在本地服务器上恢复)。MSDN BOL有一个关于如何使用的详细guid

备份/恢复的另一种方法是对数据库进行备份/恢复,但我不建议这样做,因为您需要同步移动MDF和LDF,而且它们的大小也比备份大

这假设您可以以一种神奇的方式对本地副本进行所有架构更改,即快速且正确。当然,这并不容易。建议的方法是及时准备一个脚本,该脚本应用了到达新模式所需的所有转换。有一些工具可以生成这样的脚本,比如,和其他工具。VisualStudioDatabaseEdition也可以做到这一点

我会这样做:

  • 确保我的开发计算机上的架构与实时主机上的架构完全相同。如果不确定,我可以备份live server并在本地进行恢复。这将是我的参考,v1。模式
  • 保留v1的备份。供参考
  • 开始开发一个脚本,将模式更改为我的目标。有时我需要自己刷新脚本语法的内存,我要做的是转到SQL Server Management Studio向导以执行我要执行的操作,选择UI中的所有选项,然后选择“显示脚本选项”,这将准确地显示脚本SSMS正在运行以完成所需更改
  • 对于我添加到脚本中的每个更改,我都可以通过恢复v1来测试它。参考步骤1中的备份并运行脚本
  • 继续迭代脚本,每次添加一个更改,直到完成所有需要的模式更改。在每次更改之后,我可以像步骤4一样再次测试它
  • 您的脚本不仅应该对模式进行DDL更改,还应该进行所需的任何DML更改(修改引用数据、更改值、在选项卡之间移动列等)
  • 脚本准备好后,我可以下载更新的备份,应用脚本,上传更新的备份,并将其恢复到实时主机上。或者,您可以简单地在实时主机上运行脚本(当然,在备份脚本之后,以防出现严重错误)

  • 在我的项目中,我总是依赖脚本来部署和升级数据库。事实上,我使用数据库扩展属性来存储我的应用程序部署模式的“版本”,在我的代码中,我只需将所有将该模式前滚到上一版本的脚本。我的博客上有一篇文章描述了这种技术:。

    嗯,克隆当前数据库,并首先单独测试任何更改可能是个好主意。至于时间机器,总是有链接指向已删除的维基百科页面。非常感谢您提供的所有信息!这正是我需要的。