将数据从一个服务器插入到另一个服

时间:2010-07-19 21:52:14

标签: sql sql-server linked-server

如果我想在SQL Server中运行此类查询,如何从一台连接到另一台服务器的服务器执行相同的查询?

我尝试添加“[ServerName1]”。在“[DatabaseName1]。[dbo] ...”和“[ServerName2]。”之前。在“[DatabaseName2]。[dbo] ...”之前,但这似乎不起作用。

INSERT INTO [DatabaseName1].[dbo].[TableName]
           ([FieldName])
     SELECT [FieldName] FROM [DatabaseName2].[dbo].[TableName]

这可能吗?

4 个答案:

答案 0 :(得分:10)

是的,您将在整个对象名称之前使用server-name,如:

myserver.mydatabase.dbo.mytable

但是,首先必须设置链接服务器。在BOL中查找链接的服务器。

答案 1 :(得分:8)

如果您启用了adhoc distributed queries,则可以使用OPENDATASOURCE。设置链接服务器是另一种选择。不确定每种方法的优缺点。

INSERT INTO [DatabaseName1].[dbo].[TableName]
SELECT FieldName
FROM OPENDATASOURCE('SQLNCLI',
    'Data Source=Server\InstanceName;Integrated Security=SSPI')
    .DatabaseName2.dbo.TableName

答案 2 :(得分:2)

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

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

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

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

答案 3 :(得分: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]