【问题标题】:Best method to copying multiple tables from one database to another database on a seperate SQL Server using VB.net使用 VB.net 将多个表从一个数据库复制到另一个 SQL Server 上的另一个数据库的最佳方法
【发布时间】:2014-10-15 15:52:22
【问题描述】:

我将简要介绍一下我在这里尝试的内容。
所以我有两台服务器,一台在场外,另一台在现场。

我的目标是在 VB 中创建一个应用程序,允许用户选择他们需要复制到对面服务器的数据库。关于是使用SqlBulkCopy 方法还是Transact-SQL 语句,我一直在思考一些想法,但到目前为止,任何一个都比预期的要困难得多。

到目前为止,我所拥有的是一条 SQL 语句,它在对面服务器上创建了一个空白数据库,但是在尝试将该特定数据库中的所有表复制到新创建的数据库到异地服务器上时,我遇到了困难。

记住:我正在尝试复制指定数据库中的所有表,并且需要保留相同的表架构以及这些表中的所有记录。

表的数量和表的名称因数据库而异,所以我不能简单地使用 SQL 语句创建表。

我的问题是:实现这一目标的最佳方法是什么?
有没有一种方法可以使用SqlBulkCopy 来复制指定数据库中的所有表,或者还有另一种我没有提到的方法会更好吗?

非常感谢您的回答!谢谢!!

【问题讨论】:

  • 为什么不做一个 SQL 备份并在另一台服务器上恢复它?
  • 你考虑过SSIS吗?
  • 您可以使用 RedGate 工具、SQL 比较和 SQL 数据比较
  • 我需要为此创建自己的应用程序,因为我们的员工无法使用大量工具,我只是想创建一个只允许他们使用的界面将此数据库复制到另一台服务器,供我们其他办公室使用。我已经有了这个程序,它运行良好,但需要非常有限地访问这些数据库。

标签: sql .net vb.net


【解决方案1】:

更新

根据您的最新评论,您始终可以使用 SqlCommand 对象并使用类似于

的命令
MySQLCommand.CommandText = String.Format("BACKUP DATABASE {0} TO DISK='{1}'", dbName, location)

restore 命令类似:

MySQLCommand.CommandText = String.Format("RESTORE DATABASE {0} FROM DISK='{1}'", dbName, location)

原始答案

如果它不需要是 VB.Net 应用程序(即不要重新发明轮子),有一个名为SQL Server Management Studio Express 的免费工具,您可以在每台服务器上下载安装。只需连接到您的源服务器,选择您想要的数据库并选择备份到文件。然后,您可以将其复制到 USB 记忆棒或您喜欢的任何东西上,然后将其带到目标服务器并使用相同的工具运行恢复。我经常这样做,对于一个大小合适的数据库只需要很少的时间(压缩备份大约需要 1 GB,备份大约需要 1 分钟,恢复需要大约 1 分钟)。

注意:该链接指向 SQL Server 2012 Management Studio Express。根据您的 SQL Server 版本,您可能需要不同的版本。

我有 2012 的完整版,但这里是基本思想的截图(通过右键单击的简单上下文菜单和对话框驱动整个过程)。

这当然也可以通过脚本来完成(如果你决定编写一个 VB.NET 应用程序,你可以简单地通过 .Net Process 调用脚本)。

【讨论】:

  • 不幸的是我需要重新发明轮子,出于安全原因,我们不希望我们的员工能够使用这个程序,我们只需要一个界面,只允许他们使用该数据库并将其复制到另一台服务器以供我们其他办公室使用。我已经有了这个程序,它运行良好,但需要非常有限地访问这些数据库。
  • 好的,根据该信息,您可能只使用 sqlcommand 对象并使用BACKUP DATABASEcommand。已经有一个关于这个的问题(在 C# 中,但你应该明白它的要点):stackoverflow.com/questions/11326874/…
  • 不用担心。祝你好运。
【解决方案2】:
  1. 下载SQL compare的试用版,
  2. 将远程数据库与本地数据库同步
  3. 下载SQL Data Compare的试用版
  4. 将数据从本地同步到远程。

这些工具有 14 天的免费试用期。

【讨论】:

    【解决方案3】:

    如果您是 MS Access,则可以连接到“外部数据库”并从一个表/数据库中简单地选择到另一个数据库中的另一个表中

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-03-10
      • 1970-01-01
      • 2010-09-16
      • 1970-01-01
      • 2012-08-27
      相关资源
      最近更新 更多