2014-10-18 40 views
0

我有一个带有MS SQL后端的VB.net应用程序。我希望能够获取远程数据库的“快照”,以便将数据库克隆到其他位置。我想通过构建类似于SQL Management Studio创建的SQL生成脚本来完成此操作。我发现这个代码:通过构建SQL备份远程SQL数据库生成脚本

How to generate create script of tables with their constraints using SQL query in SQL Server 2008

打印出脚本,在SQL Studio中的消息窗口表达,但我需要它返回的结果,所以我可以从我的.NET应用程序调用它并获得脚本回来,我可以将它们保存到一个文本文件中,准备在其他地方重新创建数据库。谁能帮忙?

该任务的下一个阶段是脚本编写,然后插入“Live”数据库中的所有数据。我知道我可以在SQL Studio中使用脚本工具来完成所有这些工作,但我需要将它嵌入到我的应用程序中,这样我的用户就可以在本地克隆他们的网络数据库以便远离网络。

+0

“我希望能够获取远程数据库的”快照“,以便将数据库克隆到其他位置” - 备份? – 2014-10-18 00:33:25

+0

这是一种备份。我无法创建实际的SQl备份(.bak),因为数据库将位于与执行“备份”的软件不同的计算机上。我认为我唯一的选择是建立一个“生成脚本”来重建数据库,而不是恢复备份 – 2014-10-18 00:37:54

回答

0

选项如果您不想同步服务器版本。

  • 将旧版本的SQL Server升级到与较新的SQL Server处于同一级别。
  • 将新对象从新数据库中编出来,然后使用bcp进程从新数据库中提取数据并将其导入旧数据库。
  • 使用SQL Server导入和导出向导构建SSIS包来移动数据(它只会移动数据)。
  • 构建自定义SSIS包来执行数据移动。
  • 使用复制将数据从较新的数据库移动到较旧的数据库。
  • 使用其他形式的脚本(例如PowerShell)来保持数据库同步。

你应该还是想用压缩数据库备份,那么你可以将数据库恢复到结束与一个较小的足迹用户。还有其他选项,如日志传送,数据库镜像和设置可用性组。这些都需要比采取压缩备份更多的工作。

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 

enter image description here

enter image description here

不能安装/拆卸或备份/从一个较新的版本(SQL Server 2008 R2中 - 10.50.1600)恢复数据库的SQL Server下来的旧版本(2008 - v10.00.1600) - 内部文件结构太不同了,不支持向后兼容性。

您可以围绕由

这个问题得到使用的所有计算机的SQL Server版本相同 - 那么你就可以轻松备份/恢复情况

否则,你可以创建数据库脚本之间的数据库结构(表格,视图,存储过程等)。)和SQL Server Management Studio(任务>生成脚本)中的内容(表中包含的实际数据)或使用第三方工具

,或者您可以使用第三方工具,如Red-Gate的SQL比较和SQL数据比较可以在源和目标之间进行“差异化”,根据这些差异生成更新脚本,然后在目标平台上执行这些脚本;这适用于不同的SQL Server版本。

相关问题