从一个服务器向另一个服务器插入数据?

10
如果我想在SQL Server中运行这种查询,该如何从一个我连接到的服务器查询到另一个服务器的数据?
我尝试在"[DatabaseName1].[dbo]..."前添加"[ServerName1].",在"[DatabaseName2].[dbo]..."前添加"[ServerName2].",但似乎没有起作用。
INSERT INTO [DatabaseName1].[dbo].[TableName]
           ([FieldName])
     SELECT [FieldName] FROM [DatabaseName2].[dbo].[TableName]

这可能吗?
4个回答

15

是的,您需要在对象名称的所有其余部分之前使用服务器名称,例如:

myserver.mydatabase.dbo.mytable

不过,您首先需要设置链接服务器。在BOL中查找链接服务器。


什么是“BOL”? - Jeff Puckett
1
图书在线 - SQL Server帮助文件。 - HLGEM

8
如果启用了自适应分布式查询,则可以使用OPENDATASOURCE。建立链接服务器是另一种选择。不确定每种方法的优缺点。
INSERT INTO [DatabaseName1].[dbo].[TableName]
SELECT FieldName
FROM OPENDATASOURCE('SQLNCLI',
    'Data Source=Server\InstanceName;Integrated Security=SSPI')
    .DatabaseName2.dbo.TableName

请注意,必须启用此功能:https://dev59.com/42Uq5IYBdhLWcg3wYvZ6 - VoteCoffee

2

最好的方法是在两个之间创建一个“链接服务器”。您需要适当的权限才能执行此操作。

然后,只需使用您的链接服务器名称访问数据库即可。

例如:[linkedserver].databasename.dbo.tablename

要创建链接服务器,请转到服务器对象->右键单击链接服务器->单击“新建链接服务器”。


0

在 SSMS 中,转到查询 -> 'SQLCMD 模式'

DECLARE @VERSION VARCHAR(1000)
:CONNECT Soruce_Server_Name
SELECT @@VERSION AS [SQL_VERSION]
INTO 
:CONNECT Destination_Server_Name
[MSSQLTips].[dbo].[TEST]

现在在目标服务器上执行您的选择命令以检查输出。例如:

SELECT * FROM [CloverInfotech_DB].[dbo].[TEST]

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接