0

上下文:我需要修改本地 SQL Server 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"' )

链接服务器“MSS-ISD-PROD01”的 OLE DB 提供程序“SQLNCLI10”返回消息“延迟准备无法完成。”。

Msg 8180,Level 16, State 1, Line 1 Statement(s) 无法准备。

消息 102,级别 15,状态 1,第 1 行 'OK' 附近的语法不正确。

正如评论者所建议的那样,我用单引号替换了双引号,查询执行时没有错误,但基础表没有被截断......所以查询显然没有正确执行。有人可以帮我更正这个语法,以便它按预期截断链接服务器表吗?

SELECT * FROM OPENQUERY ([PROD01], 'TRUNCATE TABLE [ORT].[dbo].[po_masterlist_report] SELECT ''OK''' )
4

0 回答 0