Sql 截断链接服务器上的表失败

Sql 截断链接服务器上的表失败,sql,sql-server,tsql,oledb,azure-data-studio,Sql,Sql Server,Tsql,Oledb,Azure Data Studio,上下文:我需要修改本地SQL Server 2019实例上的存储过程,以远程连接到链接服务器,截断并重新填充表 我使用以下命令创建并验证链接服务器,并成功运行: EXEC sp_addlinkedserver @server='PROD01' EXEC sp_linkedservers INSERT OPENQUERY([PROD01],'SELECT Purchase_Order,PO_Line_Number, Buyer_ID, Requisition_I

上下文:我需要修改本地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]
我运行了一个测试插入,成功执行了以下操作:

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]
问题:当我尝试运行truncate语句时,会出现以下错误:

SELECT * FROM OPENQUERY ([PROD01], 'TRUNCATE TABLE [ORT].[dbo].[po_masterlist_report] SELECT "OK"' )
链接服务器“MSS-ISD-PROD01”的OLE DB提供程序“SQLNCLI10” 返回消息“无法完成延迟的准备”

无法准备Msg 8180,级别16,状态1,第1行语句

Msg 102,15级,状态1,第1行“OK”附近语法不正确

正如一位评论员所建议的,我用单引号替换了双引号,并且查询执行时没有出现错误,但是底层表没有被截断……因此查询显然没有正确执行。有人能帮我纠正这个语法吗?这样它就可以按预期截断链接的服务器表了

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

更新文本中的问题“OK”在查询的中间做什么??我读到某个地方,需要从链接服务器查询返回任何列或一些文本…当然这可能是错误的。但请看最后的select语句。选择“确定”是无效的语法。如果您有两个单引号,而不是双引号,则需要使用select“OK”。@Sean Lange,使用两个单引号确实允许查询在没有错误的情况下运行,但当我检查基础表时,它没有被截断,因此查询在某种程度上没有正确执行:select*FROM OPENQUERY([PROD01],“TRUNCATE table[ORT].[dbo]。[采购订单主列表报告]选择“确定”)