如果我想在SQL Server中运行此类查询,如何从一台连接到另一台服务器的服务器执行相同的查询?
我尝试添加“[ServerName1]”。在“[DatabaseName1]。[dbo] ...”和“[ServerName2]。”之前。在“[DatabaseName2]。[dbo] ...”之前,但这似乎不起作用。
INSERT INTO [DatabaseName1].[dbo].[TableName]
([FieldName])
SELECT [FieldName] FROM [DatabaseName2].[dbo].[TableName]
这可能吗?
答案 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]