У меня есть сервер базы данных SQL Azure с двумя базами данных, и мне нужно вставить записи из таблицы первой базы данных в другую таблицу другой базы данных. Обе базы данных находятся на одном сервере с одинаковыми настройками безопасности / логином.

Я пытался:

INSERT INTO DatabaseB.dbo.TableB (ColumnA, ColumnB)
SELECT TableA.ColumnA, TableA.ColumnB
FROM DatabaseA.dbo.TableA

Когда я запускаю SQL с SSMS, я получаю:

Msg 40515, Level 15, State 1, Line 16
Reference to database and/or server name in 'DatabaseB.dbo.TableB ' is not supported in this version of SQL Server.
1
Manu 19 Июл 2017 в 18:06

1 ответ

Лучший ответ

Запросы между базами данных, такие как тот, который вы пытаетесь выполнить, не поддерживаются базой данных SQL, за исключением эластичных запросов только для чтения. Вам нужно будет выполнить две отдельные операции.

Отличия круглого T-SQL между SQL Server и базой данных SQL: здесь.

Информация об эластичных запросах: здесь .

3
David Makogon 19 Июл 2017 в 18:10
Что вы подразумеваете под «двумя отдельными операциями»?
 – 
Manu
19 Июл 2017 в 18:15
2
Это означает, что вам нужно сначала выполнить запрос к базе данных A. Затем выполнить вставку в базу данных B. Независимо. Использование отдельных строк подключения / контекстов базы данных. Как уже говорилось, вы не можете соединить две базы данных в одном запросе (независимо от того, что учетные данные одинаковы).
 – 
David Makogon
19 Июл 2017 в 18:17
Сначала запросите базу данных A, временно сохраните результат «где-нибудь» (?), А затем скопируйте результаты в таблицу в базе данных B. Верно?
 – 
Manu
19 Июл 2017 в 18:22
1
Да, точно. Довольно просто. Всего два вызова базы данных, передающие данные от одного к другому через уровень вашего приложения.
 – 
David Makogon
19 Июл 2017 в 18:24