MS SQL "SELECT INTO" проблемы создания таблицы - PullRequest
1 голос
/ 20 июня 2019

Мне нужно изменить «задание» MS SQL и добавить шаг. Я создаю шаг в SSMS, чтобы проверить, что я делаю. Я нахожусь на сервере DEV.

Мне нужно сделать SELECT INTO, чтобы создать или заполнить таблицу. Единственное осложнение заключается в том, что в предложении FROM упоминается «связанный сервер», то есть Oracle. Основной запрос:

SELECT *
INTO MyDatabase.MySchema.MyTable
FROM LinkedServer..RemoteSchema.RemoteTable

В SSMS сообщается о двух ошибках:

  • Независимо от того, что я называю «новой» локальной таблицей, SSMS сообщает, что это недопустимый объект.

  • Мне сказали, что синтаксическая ошибка рядом с FROM

В существующем задании БД есть несколько примеров такого рода использования. Я просто не уверен, почему это терпит неудачу здесь.

Что я пробовал? Я попробовал следующее в SSMS на своем рабочем столе и перешел на сервер DEV в качестве пользователя с правами администратора, чтобы использовать SSMS там.

SELECT *
INTO MyDatabase.MySchema.MyTable
FROM LinkedServer..RemoteSchema.RemoteTable

--

USE MyDatabase;

SELECT *
INTO MySchema.MyTable
FROM LinkedServer..RemoteSchema.RemoteTable

--

SELECT *
INSERT INTO  MyDatabase.MySchema.MyTable
FROM OPENQUERY(LinkedServer, '
    select * from RemoteSchema.RemoteTable
');

--

SELECT *
INTO MyDatabase.MySchema.foo
FROM MyDatabase.MySchema.ExistingTable

В последнем примере я проверяю, существует ли исходная таблица, а целевой - нет. Я думаю Я следую правилам ЗДЕСЬ

Что мне не хватает?

EDIT

Мне не хватало гигантской опечатки. На самом деле я использовал неправильный синтаксис, как в третьем примере выше: select * INSERT into.... Я не видел слово «ВСТАВИТЬ» в моем окне запросов SSMS и смог отредактировать его из большинства приведенных выше примеров.

1 Ответ

1 голос
/ 20 июня 2019

Вам следует создать пустую таблицу, а затем вставить в нее строки со связанного сервера.

Create table  #MyTable (
col1
, col2 ...
);

INSERT INTO #MyTable (col1, col2 ...)
SELECT col1, col2
FROM LinkedServer..RemoteSchema.RemoteTable
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...