TRUNCATE TABLE при сбое связанного сервера - PullRequest
0 голосов
/ 11 марта 2020

Контекст: Мне нужно изменить хранимую процедуру в моем локальном экземпляре 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''' )
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...