我在共享托管服务器上有一个实时数据库。我正在对我的网站代码进行一些重大更改,我想解决一些我在最初设计数据库时犯下的愚蠢错误。这些更改涉及更改大量字段的大小,并正确地强制表之间的引用完整性。我想在可能的情况下在本地测试服务器和远程服务器上进行更改。
我应该注意到,虽然我很乐意编写复杂的查询来处理数据,但是在没有图形界面的情况下修改数据库结构的经验很少。
我可以访问visual studio数据库资源管理器中的远程数据库,但除了数据操作之外我不能使用它。我昨晚安装了Sql Management Studio Express,经过40多次崩溃后我放弃了 - 我甚至无法修补该死的东西。
远程服务器是SQL 2005 / MyLittleAdmin Web界面可用。 所以我的问题是实现这些变化的最佳方法是什么。我可以在远程服务器上使用图形界面吗?如果没有,有一种简单的方法将数据库复制到我的本地机器,修复它,然后重新上传?最后,如果以上都不可行,那么是否有人通过查询获得了关于修复参照完整性的正确信息的链接?
对于这个有点笼统的问题感到抱歉 - 我觉得我要做的比实际要困难得多但是在搜索/尝试整晚之后我还没有到达任何地方。在此先感谢您的帮助。对此,我真的非常感激。
...也有人有时间机器我可以借用 - 我需要为此过去踢我自己的屁股。
答案 0 :(得分:2)
通常托管服务提供商允许您备份和恢复数据库,因此完成迁移的最简单方法是备份您的实时数据库,下载备份文件,在本地恢复,执行所有更改,备份本地db,上传它,然后在实时服务中恢复它。在此期间,您的站点应处于管理关闭状态,因此在您执行此操作时不会继续更新数据。您必须确保您的本地SQL实例与托管提供程序完全处于相同的构建版本(@@ version),否则您的本地SQL可能会升级数据库结构,并且您将无法将其还原到托管提供程序上(或者,如果您的版本早于主机版本,您将无法在本地服务器上恢复。 MSDN BOL详细介绍了如何Copy Databases using Backup/Restore。
备份/恢复的替代方法是detach / attach数据库,但我不建议这样做,因为你需要同时移动MDF和LDF,它们也是尺寸大于备份。
这假设您可以以向导方式对本地副本执行所有架构更改,即。快速而正确。当然,这并不容易。建议的方法是及时准备一个脚本,该脚本应用到达新架构所需的所有转换。有SQL Diff,SQL Compare,SQL Delta等工具可以生成这样的脚本。 Visual Studio Database Edition也可以这样做。
我将如何做到这一点:
在我的项目中,我总是依赖脚本来部署和升级数据库。事实上,我使用数据库扩展属性来存储我的应用程序部署模式的“版本”,在我的代码中,我只是简单地推出了将模式带到我上一个版本的所有脚本。我的博客上有一篇文章描述了这种技术:Version Control and your Database。