Der*_*sar 27 sql-server ssms linked-server sql-server-2012
我有数百个(目前为 466 个,但在不断增加)表,我必须从一台服务器复制到另一台服务器。
我以前从未这样做过,所以我完全不确定如何处理它。所有表的格式相同:Cart<Eight character customer number>
这是一个更大项目的一部分,我正在将所有这些Cart<Number>表合并到一个Carts表中,但这完全是一个完全不同的问题。
有没有人有我可以用来复制所有这些表的最佳实践方法?如果有帮助,两台服务器上的数据库名称相同。正如我之前所说,我有这个sa帐户,所以我可以做任何必要的事情来将数据从 A 获取到 B。两台服务器也位于同一个服务器群中。
Aar*_*and 24
这是一种快速而肮脏的方法,它只需要一个链接服务器,在每个方向上,具有足够的权限、排序规则兼容性和启用数据访问。您在源链接服务器上运行它以生成将在目标链接服务器上执行的动态 SQL。
DECLARE @sql NVARCHAR(MAX) = N'';
SELECT @sql += N'SELECT * INTO [database].dbo.' + QUOTENAME(name)
+ N' FROM [source_linked_server].[database].dbo.' + QUOTENAME(name) + N';'
FROM sys.tables
WHERE name LIKE N'Cart[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]';
PRINT @sql; -- this will only print 8K, enough to spot check
--EXEC [destination_linked_server].master.sys.sp_executesql @sql;
Run Code Online (Sandbox Code Playgroud)
Ale*_*lex 21
您可以使用 SQL Server Management Studio 的“导出数据”任务。右键单击 SSMS 中的数据库,选择任务,然后选择“导出数据”。它将启动一个交互式向导,允许将表从一台服务器复制到另一台服务器,但您必须自己重新创建索引。该向导会创建一个临时 SSIS 包(尽管您也可以选择保存它)并且速度相对较快。
Sol*_*zky 19
如果您希望可以在测试时轻松重新运行脚本并进行细微更改,请在此处查看我的答案:
该答案描述了使用 SQLCLR 存储过程,该过程利用SqlBulkCopy.NET中的类。可以在遍历表的游标中使用该存储过程。这允许轻松编辑过程以及考虑新表,或通过WHERE游标查询中的条件轻松排除一个或多个表。
| 归档时间: |
|
| 查看次数: |
7950 次 |
| 最近记录: |