这样做的最佳方法是什么?我发现了一些INSERT
语句,但它们似乎只适用于内部数据库复制。
我的演绎:
INSERT INTO [PROGRAM003].[dbo].[faq]
([id], [category], [question], [answer], [tags])
SELECT ([id], [category], [question], [answer], [tags])
FROM [SQL2005_552664_gsow].[dbo].[faq]
我对MSSQL还不是很流利,所以我们非常感谢所有的帮助。
答案 0 :(得分:2)
我们说“远程”怎么样?如果它是同一服务器上的另一个数据库,您可以只添加数据库名称,如初始示例所示:
INSERT INTO [mytable] SELECT * FROM [database].dbo.[table]
如果它位于完全不同的服务器上,则需要将它们设置为链接服务器。然后你可以这样做:
INSERT INTO [mytable] SELECT * FROM [server].[database].dbo.[table]
当然, 必须完全具体说明该服务器中的数据库和架构,并期望性能受到影响,因为它需要通过网络移动数据。
答案 1 :(得分:1)
您可以使用OPENDATASOURCE或OPENROWSET访问其他服务器上的表。您需要在查询中提供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]