我有 2 个 MSSQL 服务器在运行,数据集大致相同。这实际上是一个生产/开发设置。
现在,我的工作流程是这样的。每天备份生产服务器上的每个数据库。我通过互联网将备份(数十 GB)传输到开发服务器。我使用生产服务器的备份“恢复”开发服务器上的数据库,这样我就有了一个最新的数据集。
我的问题是:
是否有一种简单快捷的方法可以从 MSSQL 服务器数据库中“导出”单个表并将其导入到不同 MSSQL 服务器的数据库中?
我对于“最佳实践”类型的操作比一些临时拼凑的 POS 技巧更感兴趣。
更新
经过一番 Google 搜索后,我发现 MSSQL Server 的一个功能可以生成一个脚本,该脚本可以在运行时导出表并导入表。我无法使用这个功能,因为我需要在另一个服务器中导入表。
答案1
您还可以通过目标服务器上的 SQL 直接获取数据。如果您有网络访问权限:
SELECT a.*
INTO <YOUR TARGET TABLE>
FROM OPENROWSET('SQLNCLI', 'Server=<IP/SERVERNAME>;Trusted_Connection=yes;',
'SELECT *
FROM <YOUR TABLE>
') AS a;
但您必须自己创建索引。
或者使用 INSERT:
INSERT INTO
<YOUR TARGET TABLE>
FROM OPENROWSET('SQLNCLI', 'Server=<IP/SERVERNAME>;Trusted_Connection=yes;',
'SELECT *
FROM <YOUR TABLE>
') AS a;
答案2
导出部分已在 DBA 处得到解答:
https://dba.stackexchange.com/questions/25755/taking-a-backup-of-a-single-table-in-the-sql-server
如何导出 SQL 服务器上的单个表在 Stackoverflow 上也已多次得到解答:
https://stackoverflow.com/questions/680552/table-level-backup
谷歌给出了另外多种方法:
一旦您导出了单个表,就可以通过任何方式传输它(例如 rsync、SFTP、scp),然后导入它。