2013-08-01 30 views
3

是否可以在OPENQUERY中執行'use'語句?OPENQUERY語句中的'use'

這工作:

SELECT * 
FROM OPENQUERY(
    server_name, 
    'select * from AdventureWorks.Person.Address' 
) 

這不:

SELECT * 
FROM OPENQUERY(
    server_name, 
    'use AdventureWorks; select * from Person.Address' 
) 
+0

我覺得 - 沒有。爲什麼你需要直接指定數據庫? – Devart

+0

感謝格式devart! – Fidel

+0

我有一個查詢,我想執行生產和UAT(兩個不同的架構,相同的查詢) – Fidel

回答

0

嘗試這一個 -

DECLARE 
     @SQL NVARCHAR(500) 
    , @ServerName NVARCHAR(100) = 'server_name' 
    , @DbName NVARCHAR(100) = DB_NAME() -- current db_name 

SELECT @SQL = ' 
SELECT * 
FROM OPENQUERY(
    '+ @ServerName + ', 
    ''SELECT * FROM [' + @DbName + '].Person.Address'' 
)' 

PRINT @SQL 
EXEC sys.sp_executesql @SQL 
+0

謝謝開發,不錯!不幸的是,我對執行的查詢沒有太多的控制權。我所知道的是它的工作模式。 – Fidel