iT邦幫忙

0

[SQL]用OPENQUERY,跟直接QUERY有何不同

透由OPENQUERY

   SELECT * FROM OPENQUERY([192.168.1.1]
  ,'SELECT * from databse.dbo.table ')

直接QUERY
SELECT * from [192.168.1.1].databse.dbo.[table]

為什麼要用OPENQUERY呢.
直接不QUERY呢?select 放在''裡,除錯不太方便啊
速度比較快?

感謝石頭大大的回答
Ans :
1.速度比較快
2.感謝石頭大大的回答
如果是MSSQL連MSSQL 使用OPENQUERY和一般QUERY就沒差
但如果是MSSQL連oracle 且需要使用oracle特殊語法
你就必須使用OPENQUERY 用一般QUERY無法執行

--------------------後記
ref https://blog.poychang.net/sql-server-open-query/
好棒的用法!!
DECLARE @SQL NVARCHAR(1000)
DECLARE @EmplID NVARCHAR(10)
SET @EmplID = '12258'
SET @SQL = 'SELECT * FROM dual WHERE EmplID = ' + @EmplID
SET @SQL = 'SELECT * FROM OpenQuery(PROD, ''' + REPLACE(@SQL, '''', '''''') + ''')'
EXEC(@SQL)

1 個回答

1
石頭
iT邦研究生 2 級 ‧ 2018-01-08 13:37:00
最佳解答

QUERY 語法只限本台主機
OPENQUERY 語法可以跨主機 (在DB linkServer可設置)

https://docs.microsoft.com/zh-tw/sql/t-sql/functions/openquery-transact-sql

看更多先前的回應...收起先前的回應...
圓頭人 iT邦新手 1 級 ‧ 2018-01-08 17:33:03 檢舉

但也可以寫成這樣SELECT * from [192.168.1.1].databse.dbo.[table]
用OPENQUERY的主要用意是什麼呢?

小魚 iT邦大師 1 級 ‧ 2018-01-08 19:36:00 檢舉

原來可以用Open Query啊,我都是用上面這個方式...

石頭 iT邦研究生 2 級 ‧ 2018-01-18 11:28:12 檢舉

如果是MSSQL連MSSQL 使用OPENQUERY和一般QUERY就沒差
但如果是MSSQL連oracle 且需要使用oracle特殊語法
你就必須使用OPENQUERY 用一般QUERY無法執行

圓頭人 iT邦新手 1 級 ‧ 2018-01-22 08:57:43 檢舉

原來如此,謝謝^^dog830228

我要發表回答

立即登入回答