【问题标题】:SQL Server 2012: Copy table structure with data from one DB server to other using Linked ServerSQL Server 2012:使用链接服务器将包含数据的表结构从一台数据库服务器复制到另一台数据库服务器
【发布时间】:2016-03-08 07:04:22
【问题描述】:

我正在尝试将包含数据的表结构从一台服务器复制到另一台服务器。我的源服务器中已经有一个链接服务器。当我尝试执行以下查询时,出现错误。

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.

我不确定我在哪里失踪。请建议我如何执行此操作。

【问题讨论】:

    标签: sql-server sql-server-2008 sql-server-2012 sql-server-2008-r2


    【解决方案1】:

    来自INTO clause上的文档:

    您不能在远程服务器上创建 new_table;但是,您可以从远程数据源填充 new_table。 [...]

    因此,您将不得不反转您的语句(即从远程服务器执行它),或者以其他方式执行。

    【讨论】:

      【解决方案2】:

      您可以使用这种类型的代码样式 [190.28.111.187].[WH_AC].[dbo].[ApptDet] 检索数据。在操作活动的情况下,SQL 不支持。我会推荐使用 openrowset 来实现这个概念。

      OPENROWSET('SQLNCLI', 'Server=YourServername;Trusted_Connection=yes;',
      

      要识别服务器名称,运行代码

      Select @@servername.
      

      【讨论】:

        【解决方案3】:

        我会为此使用集成服务 (SSIS)。

        【讨论】:

          【解决方案4】:

          如果你需要这样做(我接下来会这样做,这是个好问题)。

          只需先创建表(在远程服务器上)

          CREATE TABLE  dbo.[TEST](
              [id] [int] NOT NULL,
              [description] [varchar](50) NULL,
              )
          

          然后

          insert into [server].[db].dbo.[TEST]
          select * from [TEST]
          

          我需要将数据移动到下周我没有权利的链接服务器,所以你让我担心。我当然可以在远程创建一个表,但不能创建一个链接服务器。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2014-11-04
            • 1970-01-01
            • 2016-09-13
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多