是否可以将远程MSSQL表中的数据复制到本地表?

时间:2009-03-03 17:48:37

标签: sql-server linked-server

这样做的最佳方法是什么?我发现了一些INSERT语句,但它们似乎只适用于内部数据库复制。

我的演绎:

INSERT INTO [PROGRAM003].[dbo].[faq]
    ([id], [category], [question], [answer], [tags])
SELECT ([id], [category], [question], [answer], [tags])
FROM [SQL2005_552664_gsow].[dbo].[faq]

我对MSSQL还不是很流利,所以我们非常感谢所有的帮助。

4 个答案:

答案 0 :(得分:2)

我们说“远程”怎么样?如果它是同一服务器上的另一个数据库,您可以只添加数据库名称,如初始示例所示:

INSERT INTO [mytable] SELECT * FROM [database].dbo.[table]

如果它位于完全不同的服务器上,则需要将它们设置为链接服务器。然后你可以这样做:

INSERT INTO [mytable] SELECT * FROM [server].[database].dbo.[table]

当然, 必须完全具体说明该服务器中的数据库和架构,并期望性能受到影响,因为它需要通过网络移动数据。

答案 1 :(得分:1)

您可以使用OPENDATASOURCEOPENROWSET访问其他服务器上的表。您需要在查询中提供SQL凭据,或者设置两个数据库以允许访问您的Windows ID以使其正常工作。您还可以使用SQL Server Management Studio中的导入/导出向导 - 右键单击​​数据库并选择“任务” - >“导入”或“任务” - >“导出”。

答案 2 :(得分:0)

您可能希望了解DTS或(2005+)Integration Services。这两个都将从一个DB(表)中获取数据并将数据复制到另一个DB(表)中。

指向Integration Services的链接:http://msdn.microsoft.com/en-us/library/ms141091.aspx

答案 3 :(得分:0)

USE大师

GO

EXEC sp_addlinkedserver    @server ='RemoteSer',    @srvproduct ='',    @provider ='MSDASQL',    @provstr ='DRIVER = {SQL Server}; SERVER = 000.000.000.000 \ SQLEXPRESS;' GO

SELECT * INTO bnkWeb.dbo.test1 FROM [RemoteSer]。[bnk]。[dbo]。[test1]