Мне нужно изменить «задание» 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 и смог отредактировать его из большинства приведенных выше примеров.