#sql-server #rollback #linked-server
Вопрос:
У меня есть база данных SQL Server, и у меня есть подключение к серверу, связанному с базой данных Oracle.
На моем SQL-сервере был запущен следующий запрос:
INSERT INTO dbo.my_table_on_sql_server
SELECT *
FROM OPENQUERY (linkedservername, ‘SELECT * FROM target_table’)
В таблице target_table 50 миллионов строк, и я знаю, что выполнение запроса требует времени, но он был успешно завершен ранее.
На этот раз, однако, у моего компьютера был автоматический перезапуск в середине запроса. SSMS 2017 автоматически открылся, как только компьютер снова заработал, но я больше не мог видеть, как выполняется запрос. my_table_on_sql_server
не имеет данных.
Я хотел бы понять, что происходит в SQL Server в случае такой ситуации. Правильно ли я предполагаю, что запрос был убит / откатан? Есть ли какой-либо запрос, выполняемый в фоновом режиме? Я видел некоторые связанные ответы на этом форуме, но хотел конкретно понять это для связанных серверов, так как я часто использую их для извлечения данных из других баз данных для своей работы.
Меня больше беспокоит база данных Oracle, так как я не хочу, чтобы мой запрос влиял на производительность в восходящем потоке. У меня есть разрешение на доступ только для чтения к базе данных Oracle.
Спасибо!
Ответ №1:
При завершении работы запрос будет прерван, и ВСТАВКА будет откатана. Откат может произойти во время выключения или после перезапуска, и для его завершения может потребоваться некоторое время.
Нет автоматической повторной попытки или чего-либо, что позволит получить доступ к связанному серверу Oracle после завершения работы.
Комментарии:
1. Спасибо, Дэвид, за оперативный ответ, очень признателен!