我有一个带有MS SQL后端的VB.net应用程序。我希望能够获取远程数据库的“快照”,以便可以将数据库克隆到另一个位置。我想通过构建类似于SQL Management Studio创建的SQL生成脚本来实现此目的。我找到了这段代码:
How to generate create script of tables with their constraints using SQL query in SQL Server 2008
将脚本打印到SQL Studio Express中的Messages窗口,但是我需要将其作为结果返回,因此我可以从我的.Net应用程序调用它并获取脚本,这样我就可以将它们保存到文本文件中,准备好在别处重新创建数据库。有人可以帮忙吗?
此任务的下一个阶段是编写脚本,然后插入“实时”数据库中的所有数据。我知道我可以使用SQL Studio中的脚本工具完成所有这些操作,但我需要将它内置到我的应用程序中,因此我的用户可以在本地克隆其网络数据库以便远离网络使用。
答案 0 :(得分:0)
如果您不想同步服务器版本,请选择
您仍然希望使用压缩数据库备份,然后可以将数据库还原到占用空间较小的最终用户。还有其他选项,如日志传送,数据库镜像和设置可用性组。这些都需要比采用压缩备份更多的工作。
BACKUP DATABASE [Gigabits] TO DISK = N'C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\Backup\Gigabits.bak' WITH NOFORMAT, NOINIT, NAME = N'Gigabits-Full Database Backup', SKIP, NOREWIND, NOUNLOAD, COMPRESSION, STATS = 10
GO
您无法将SQL Server的较新版本(SQL Server 2008 R2 - 10.50.1600)中的数据库附加/分离或备份/还原到较旧版本(2008 - v10.00.1600) - 内部文件结构太不相同,无法支持向后兼容性。
您可以通过
解决此问题在所有计算机上使用相同版本的SQL Server - 然后您可以轻松地在实例之间备份/恢复数据库
否则,您可以在SQL Server Management Studio(任务>生成脚本)或使用中为结构(表,视图,存储过程等)和内容(表中包含的实际数据)创建数据库脚本第三方工具
或者您可以使用Red-Gate的SQL Compare和SQL Data Compare之类的第三方工具在源和目标之间进行“区分”,根据这些差异生成更新脚本,然后在目标平台上执行这些脚本;这适用于不同的SQL Server版本。