簡體   English   中英

從一個 SQL 服務器到另一個在源上刪除表的直通查詢

[英]Passthrough Query from one SQL Server to another that drops a table on the source

我在西班牙有一個 SQL 服務器,在美國有一個服務器,兩者之間存在域信任,每個服務器上都有鏈接服務器,可以訪問另一個服務器。

我希望能夠在美國 SQL 服務器上運行以下查詢,而無需在美國服務器上維護存儲過程以運行它。 有沒有辦法從西班牙的 SQL 服務器創建直通查詢? 我已經嘗試過使用 OPENQUERY 和 OPENROWSET ,但它不起作用,因為它們似乎只適用於返回結果的 select 語句:

DROP TABLE IF EXISTS [Global].[dbo].[WW_Customer_Receivables]

SELECT * 

INTO [global].[dbo].[ww_customer_receivables]

FROM 
    [LinkedServerObject-Spain].[global].dbo.ww_customer_receivables

如果您想使用openquery在鏈接服務器上執行 DDL 語句,您可以使用以下技巧:

SELECT *
FROM OPENQUERY(linkedserver, '
DROP TABLE IF EXISTS [Global].[dbo].[WW_Customer_Receivables]
SELECT @@RowCount')

SELECT @@RowCount返回一個結果集。 所以OPENQUERY有效。 這個技巧適用於所有 DDL 操作,如創建、更改、刪除。 或者,如果您想執行不返回結果集的插入/更新/刪除。

同樣的技巧在這里應用他們有一個虛擬 select foobar。

如果你想從openquery執行into語句,你可以這樣做:

DROP TABLE IF EXISTS [Global].[dbo].[WW_Customer_Receivables]

SELECT *
INTO [global].[dbo].[ww_customer_receivables]
FROM OPENQUERY([LinkerServerObject-US], '
    SELECT *
    FROM [global].dbo.ww_customer_receivables')

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM