从一个sql服务器到另一个sql服务器的传递查询,在源服务器上删除表

slwdgvem  于 2021-07-29  发布在  Java
关注(0)|答案(1)|浏览(375)

我在西班牙有一个sql server,在美国有一个sql server,两个服务器之间有一个域信任,每个服务器上都有链接的服务器,可以访问另一个服务器。
我希望能够在ussqlserver上运行下面的查询,而不必在usserver上维护存储过程来运行它。有没有一种方法可以从西班牙的sql server创建passthrough查询?我已经尝试过使用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
bqjvbblv

bqjvbblv1#

如果要在链接服务器上用 openquery 您可以使用以下技巧:

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

这个 SELECT @@RowCount 返回结果集。所以呢 OPENQUERY 作品。这个技巧适用于所有ddl操作,如create、alter、drop。或者如果要执行不返回结果集的插入/更新/删除。
同样的技巧也适用于这里,他们有一个虚拟的选择foobar。
如果你想执行 into 政府的声明 openquery 你可以这样做:

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')

相关问题