Контекст: Мне нужно изменить хранимую процедуру в моем локальном экземпляре SQL Сервер 2019, чтобы удаленно подключиться к связанному серверу для усечения и повторного заполнения таблицы.
Я создаю и проверяю связанный сервер с нижеуказанным, успешно запускается:
EXEC sp_addlinkedserver @server='PROD01'
EXEC sp_linkedservers
Я запускаю тестовую вставку со следующим, который успешно выполняется:
INSERT OPENQUERY([PROD01],'SELECT Purchase_Order,PO_Line_Number,
Buyer_ID,
Requisition_ID,
Item_ID,
Item_Revision_ID,
PO_Line_Description,
Order_Quantity,
RECV_Qty,
Due_Date,
Original_Due_Date,
Todays_Status,
Delivery_Status,
Vendor_Name,
Requisitioner,
Level_1_Project_Name,
Inventory_Abbreviation_Code,
[Acknowledgment_Required_Flag YN],
Acknowledgment_Date,
REL_TO_VEND_DT,
Order_Date,
Purchase_Order_Line_Type,
Last_Update
FROM [ORT].[dbo].[po_masterlist_report]')
--Local server instance below
SELECT Purchase_Order,
PO_Line_Number,
Buyer_ID,
Requisition_ID,
Item_ID,
Item_Revision_ID,
PO_Line_Description,
Order_Quantity,
RECV_Qty,
Due_Date,
Original_Due_Date,
Todays_Status,
Delivery_Status,
Vendor_Name,
Requisitioner,
Level_1_Project_Name,
Inventory_Abbreviation_Code,
[Acknowledgment_Required_Flag YN],
Acknowledgment_Date,
REL_TO_VEND_DT,
Order_Date,
Purchase_Order_Line_Type,
[Last_Update]
FROM [20Z2\SQLEXPRESS].[co_sb].[dbo].[po_masterlist_report]
Вопрос: Когда я пытаюсь выполнить усеченное выражение, я выдаю следующие ошибки:
SELECT * FROM OPENQUERY ([PROD01], 'TRUNCATE TABLE [ORT].[dbo].[po_masterlist_report] SELECT "OK"' )
Поставщик OLE DB "SQLNCLI10" для связанного сервера "MSS-ISD-PROD01" вернул сообщение «Отложенная подготовка не может быть завершена».
Сообщение 8180, уровень 16, состояние 1, строка 1 Не удалось подготовить оператор (ы).
Msg 102, Уровень 15, Состояние 1, Строка 1 Неверный синтаксис рядом с 'OK'.
Как предложил комментатор, я заменил двойные кавычки одинарными кавычками, и запрос делает выполнить без ошибок, но базовая таблица не была усечена .... поэтому запрос явно не выполняется должным образом. Может кто-нибудь, пожалуйста, помогите мне исправить этот синтаксис, чтобы он обрезал таблицу связанных серверов, как предполагалось?
SELECT * FROM OPENQUERY ([PROD01], 'TRUNCATE TABLE [ORT].[dbo].[po_masterlist_report] SELECT ''OK''' )