SQL Server 如何在链接服务器表中插入行?

chhkpiq4  于 2022-11-21  发布在  其他
关注(0)|答案(5)|浏览(158)

我有一个连接到的服务器SourceServer,它有一个链接服务器TargetServer。
插入语句应该是什么样子的(我需要引用链接服务器、数据库、命名空间、表):

//Connected to [SourceServer]

USE [SourceDatabase]

DECLARE @HelloWorld NVARCHAR(255)

SELECT @HelloWorld = Name From dbo.Names where Id = 1

INSERT INTO [TargetServer].[TestDatabase].dbo.TestTable (Name)   VALUES (@HelloWorld)

此语句执行时出现异常:

Too many prefixes.

更新:上面的语法工作正常,问题是用于连接到链接服务器的SQL用户的密码过期:)

qc6wkl3g

qc6wkl3g1#

INSERT INTO [TargetServer].[TestDatabase].[dbo].TestTable (Name)
SELECT Name From [SourceServer].[SourceDatabase].[dbo].[Names] where Id = 1
iyr7buue

iyr7buue2#

对于使用openquery的用户,以下是具体操作:

INSERT INTO OPENQUERY ([LINKEDSERVERNAME], 'SELECT idjob, salarylocal, salarydollars, calification FROM employee')
SELECT 1, 666, 668, 10
n3ipq98p

n3ipq98p3#

select * into [TargetServer].[TestDatabase].[dbo].TestTable
 From [SourceServer].[SourceDatabase].[dbo].[Names]
6jygbczu

6jygbczu4#

如果目标中已存在目标表架构,请使用以下代码

INSERT INTO [TargetLinkedServerName].[TestDatabase].[dbo].[TargetTestTable] 
SELECT * From [SourceLinkedServerName].[SourceDatabase].[dbo].[SourceTestTable]

如果目标中已不存在目标表架构,请使用以下代码(此代码将在目标中创建与源表类似的新表)

select * into [TargetLinkedServerName].[TestDatabase].[dbo].[TargetTestTable] 
 From [SourceLinkedServerName].[SourceDatabase].[dbo].[SourceTestTable]
2sbarzqh

2sbarzqh5#

如果要在链接服务器上插入数据,则需要存在该表

--step 1 on TargetLinkedServerName: 

create table [TestDatabase].[dbo].[TargetTestTable]

--step 2 on SourceLinkedServerName:

INSERT INTO [TargetLinkedServerName].[TestDatabase].[dbo].[TargetTestTable] 
SELECT * From [SourceDatabase].[dbo].[SourceTestTable]

相关问题