台灣最大程式設計社群網站
線上人數
3300
 
會員總數:246575
討論主題:190032
歡迎您免費加入會員
討論區列表 >> Blog精華文章 >> select view long running!
[]  
[我要回覆]
回應主題 加入我的關注話題 檢舉此篇討論 將提問者加入個人黑名單
select view long running!
價值 : 0 QP  點閱數:787 回應數:0
樓主

花旗蔘 版主
高級專家
10938 129
4319 516
發送站內信

/*同事問了個問題,case 是用SYNONYM 定義個四段語法(含linked server)的物件,再在view 去使用它,若有人 重建該linked server,下次使用該view 時會造成long running,結果跑不出來*/

------RDBMS :MS SQL 2008 R2 EE (RTM)

-----先模擬case

CREATE SYNONYM vt
for [172.31.1.114].ABCPRD.dbo.HSP_ALIAS
go

create view abc
as
select * from vt
go

select * from abc -->ok

----> 之後drop and create the same Linked Server,再去select 那view

select * from abc ---long running 結果出不來 

---->此時觀察該session,waittype:OLEDB  waitsource:EXTERNALRESOURCE=MSQL_DQ

--------solution1:alter 該view
alter view abc
as
select * from vt
go

select * from abc -->ok

--------solution2:判斷可能是舊的plan cache 造成的
--找出該VIEW的plan cache
SELECT plan_handle, st.text
FROM sys.dm_exec_cached_plans
CROSS APPLY sys.dm_exec_sql_text(plan_handle) AS st
WHERE text LIKE N'create view abc%';

--結果
plan_handle,text
0x05000800CB354901B880F526000000000000000000000000 , CREATE view abc   as   select * from vt 
---
--Remove the specific plan from the cache.
DBCC FREEPROCCACHE (0x05000800CB354901B880F526000000000000000000000000);

select * from abc--OK!

-----嫌一個個找 ,麻煩的話,可以直接全清

DBCC FREEPROCCACHE

ps:對user 的第一次use 會有稍微的效能影嚮,第二次後(含),因已在cache裡,就沒影嚮了!

ps2:這應該算是個bug吧,這次為模擬相同case 所以也是用2008R2 EE RTM的,2008R2 sp1 已經release了,也許這問題 在SP1 已被修正!!


本篇文章發表於2012-01-05 20:19
== 簽名檔 ==
Oracle/EBS/MS SQL DBA
--My BLOG
http://itgroup.blueshop.com.tw/benchenBEN/blog
目前尚無任何回覆
   

回覆
如要回應,請先登入.