我在 hosetd sql 2008 服务器上有一个数据库。
我对开发中的模式做了一些更改,但不想上传它,因为我想保留服务器上的数据。
是否有一个脚本可以运行来备份我的表中的数据,最好也有一种方法可以保存 shema。
然后我希望能够从开发中上传架构更改并从我的备份中恢复所有数据。
我正在寻找一种免费的方法来做到这一点,这样我就无需购买任何工具。
答案1
各位,SQL Server 2008 Management Studio做允许您编写架构和数据的脚本 - 这是新增的功能,但并不为人所知。
在脚本向导的表选项下,将脚本数据设置更改为 True(默认情况下为 False),它将生成包含所有数据以及表模式的 INSERT T-SQL 语句。
这个问题在 SF 上也有讨论过这里我刚刚在博客上发布了这个截图 - 参见在 SQL 2008 中使用 SSMS 编写脚本架构和数据。
希望这可以帮助!
答案2
假设您拥有数据库的所有者权限,您可以右键单击数据库名称并选择“生成脚本”来创建脚本。这将启动一个向导,允许您选择要编写脚本的对象并将该脚本转储到文件、查询窗口或剪贴板。
Management Studio 中没有自动转储所有数据的方法,但您不需要仅为了进行架构更改而恢复数据 - 更改表的定义通常不会删除或更改数据,并且没有其他对象直接接触数据。我只会在对生产服务器进行更改之前使用 Management Studio 中的标准备份命令进行备份。
答案3
“生成脚本”很好,但如果您希望能够“区分”一个架构的两个版本,我建议使用 ScriptDB(http://www.codeplex.com/ScriptDB)。它输出的脚本实际上与“生成脚本”相同(它使用 SQL Server 管理对象,就像管理工作室一样),但将输出放入包含文件的目录中,就像管理工作室中的视图一样。它对于在架构的不同版本之间运行差异非常方便。我发现,在尝试比较“生成脚本”的输出时,有时大块代码会在版本之间移动,但除此之外没有任何变化(特别是当它来自独立开发人员一直在使用的两个不同数据库时)。
答案4
您是否考虑过在“开发”环境旁边的“staging”或“qa”环境中实施这些更改?
备份您的生产数据库。将其恢复到您托管“dev”的同一环境中的新数据库中。这将使您有机会将这些更新脚本运行到实时数据的镜像中。然后您就会知道您的更改脚本有多成功。