有一張報表需求會同時用到sql 2000和informix 的table.
採用linked server的方式,分散式查詢最好要組好完成sql語句,再送到遠端伺服器進行查詢後傳回結果.
之前使用者為了方便,把openquery的語法建成view, 像這樣
create view vTest as
select * from openquery (linkedsvr, 'select * from remoteTable")
想當然耳, 雖然查詢時 select * from vTest where condiditon.... 有指定條件,
但以openquery 來說, 可是會先把remote table所有的資料下傳回sql server後再進行處理的.
造成整個resource都被吃光了.
所以改寫成以sp_executesql的方法組出sql字串送到 remote db去查詢完成後送回結果
declare @sql as nvarchar(4000)
set @sql = N'select * into #tmpTest from openquery (linkedsvr, ''select * from remoteTabl where condition'') ;
select * from #tmpTest inner join tableInSQLServer ......'
exec sp_executesql @sql
這樣就可以利用tmp table, 一次包在同一個transaction與sql server 的table做join查詢了
雖然很不方便 ,但拿sql server當跳板做事總要犧牲一點吧.
2010年1月5日 星期二
訂閱:
張貼留言 (Atom)
publish error allowDefinition='MachineToApplication'
一個老舊的aspx web form專案,調了一些功能建置成功,但進行部署時顯示以下錯誤。 在應用程式層級之外使用註冊為 allowDefinition='MachineToApplication' 的區段發生錯誤。錯誤的原因可能是虛擬目錄尚未在 IIS 中設定為...
-
上網找了免費的白箱檢測工具,找到了 puma scan 因為支援OWASP TOP 10的檢測,所以這是一個符合客戶需求又能與Visual studio結合的工具(白話說...交差了事矣....) 更重要的是這不用錢....檢測工具都貴森森的,尤其是源碼檢測工具。 ht...
-
在一台windows 2016的主機上,某一天,用遠端登入後,出現了以下的訊息.... 遠端工作階段中斷,因為沒有提供授權的遠端桌面授權伺服器可以使用。請連伺服器系統管理員。 這啥啊........... 想不到,在MOBILE01找到了解決...........哈哈...
-
SQL Server 2005 後,提供EXCEP 和INTERSECT, 功能和ORACLE的MINUS, INTERSECT相同 EXCEP 找出存在於第一個子集,但不存在於第二個子集的筆數 INTERSECT 找出皆存在於二個子集中的筆數 這二個方法很方便查找有多...
沒有留言:
張貼留言