如何使用 SQL Server Management Studio 中的链接服务器使用 INSERT INTO 子句创建 table

How to create a table using the INSERT INTO clause using linked servers in SQL Server Management Studio

我有一个名为 GreatPlains 的服务器,我想在本地服务器的报告数据库中使用 INSERT INTO 子句创建一个新的 table(尚未定义)。我们为 GreatPlains 服务器和我们的主要生产服务器设置了链接服务器。

当前查询的简化版本:

SELECT *
INTO [local].[Reporting].[dbo].[NewTable]
FROM [linked].[Main].[dbo].[Orders]

我也遇到了错误:

The object name 'local.Reporting.dbo.NewTable' contains more than the maximum number of prefixes. The maximum is 2.

我想你有一个额外的 insert:

SELECT *
INTO [local].[Reporting].[dbo].[NewTable]
FROM [linked].[Main].[dbo].[Orders];

如果 table 已经定义并且具有相同顺序的相同列,那么您可以这样做:

INSERT INTO [local].[Reporting].[dbo].[NewTable]
    SELECT *
    FROM [linked].[Main].[dbo].[Orders];

您的查询有两个错误

1.INTO 子句最多支持 2 个前缀。您不能包含 SERVER NAME

DATABASE_NAME.SCHEMA_NAME.TABLE_NAME

2.Unwanted INSERT 关键字

所以你的查询应该是

SELECT *
INTO [Reporting].[dbo].[NewTable]
FROM [linked].[Main].[dbo].[Orders];

如果您是运行本地服务器中的脚本并且table已经存在于数据库中,请使用以下脚本。

 USE [Reporting]
 GO

 INSERT INTO [dbo].[NewTable]
 SELECT *
 FROM [linked].[Main].[dbo].[Orders]

如果您的数据库中没有 table,请使用以下脚本。

USE [Reporting]
GO

 SELECT *
  INTO dbo.[NewTable]
 FROM [linked].[Main].[dbo].[Orders]