我正在尝试将数据从一个服务器复制到另一个服务器。我的源服务器中已经有一个链接服务器。当我尝试执行以下查询时,我收到一个错误。
SELECT Appt.C1 AS AppointmentId
,Appt.C2
INTO [190.28.111.187].[WH_AC].[dbo].[ApptDet]
FROM [whse].[Vw_ApptDet] Appt
INNER JOIN #DealerList DL ON DL.DealerId = Appt.DealerId
错误:
Msg 117, Level 15, State 1, Line 4
The object name '190.28.111.187.WH_AC.dbo.ApptDet' contains more than the maximum number of prefixes. The maximum is 2.
我不确定我失踪的地方。请建议我如何执行此操作。
答案 0 :(得分:0)
您可以使用此类代码样式[190.28.111.187]。[WH_AC]。[dbo]。[ApptDet]来检索数据。在操作活动的情况下,SQL不支持。我建议使用openrowset来实现这个概念。
OPENROWSET('SQLNCLI', 'Server=YourServername;Trusted_Connection=yes;',
识别服务器名称运行代码
Select @@servername.
答案 1 :(得分:0)
来自INTO clause的文档:
您无法在远程服务器上创建new_table;但是,您可以从远程数据源填充new_table。 [...]
所以你必须撤销你的陈述(即从远程服务器执行它),或者用另一种方式。
答案 2 :(得分:0)
我会为此目的使用Integration Services(SSIS)。
答案 3 :(得分:0)
如果你需要这样做(我接下来会做,那么好的问题)。
首先创建表(在远程服务器上)
CREATE TABLE dbo.[TEST](
[id] [int] NOT NULL,
[description] [varchar](50) NULL,
)
然后
insert into [server].[db].dbo.[TEST]
select * from [TEST]
我需要将数据移动到链接服务器上,我下周没有权利,所以你让我担心。我当然可以在遥控器上创建一个表而不是链接服务器。