Wednesday, October 17, 2007 - Posts

【茶包射手專橺】Reporting Service圖表無法顯示

同事回報一個問題,在測試台檢視Reporting Service報表時,應該顯示長條圖、圓餅圖的地方出現一個大叉叉,同一程式在正式台則一切正常。

首先出場的工具是Fiddler,很快就抓到在GET圖檔的Request有以下錯誤:
ERROR: Throwing Microsoft.ReportingServices.Diagnostics.Utilities.StreamNotFoundException: The stream cannot be found. The stream identifier that is provided to an operation cannot be located in the report server database. ; (找不到資料流。報表伺服器資料庫中找不到提供給作業的資料流識別項。)
 Info: Microsoft.ReportingServices.Diagnostics.Utilities.StreamNotFoundException: The stream cannot be found. The stream identifier that is provided to an operation cannot be located in the report server database. (找不到資料流。報表伺服器資料庫中找不到提供給作業的資料流識別項。)

用rsStreamNotFound當關鍵字,我Google到一篇文章,說明這可能與Cookie有關。我仔細看了一下,有問題的網頁是用ASPX在其中包含Frame指向Reporting Service報表所在的httq://192.168.1.1/ReportServer?... URL。

依我多年吃餅乾的經驗,這種情境很符合3rd Party Cookie被禁用的條件,Check了一下IE的工具列,果然有個被禁止的眼睛Icon(參見這篇文件關於Cookie Filtering的說明)。點開後確認一個來自httq://192.168.1.1/ReportServer的Cookie被Block掉了,在正式台上,Reporting Service報表主機的URL用的是Machine-Name所以沒問題,這印證了先前找到那篇文章所說的Cookie Issue。

為了進一步驗證真的是Cookie問題,我將httq://192.168.1.1設為IE的被信任網站,報表中的圖表就可順利顯示,宣布破案。

解決方式有二: 1) 將Reporting Service Server的IP加為IE的信任站台(Trusted  Sites)解決Cookie被阻擋的問題,2) 連至Reporting Service的URL不要用IP,改用機器名稱(當然,要確保名稱解析是OK的),利用Local Intranet安全區域避開Cookie阻擋問題。我個人建議使用後者。

TIPS-VBScript Intellisense In VS 2005

即使.NET 3.5推出在即,VBScript仍是許多管理用Script的主力Language(將來可能會被Powershell所取代)。過去我都用NotePad、EmEditor、UltraEdit之類的純文字工具編輯,心想VBScript屬於Late Binding,ActiveX Object的屬性、方法都得自己輸入,頂多文字編輯工具能將指令用不同顏色顯示就偷笑了。

今天無意間用Visual Studio 2005開啟了一個VBS檔編輯,才發現這個了不起的功能。瞧! VS 2005可以解析CreateObject要建的物件型別,接著就提供起Intellisense呢! 酷~~~

TIPS-Log Deadlock Event For SQL 2005

之前介紹過如何用Profiler抓到Deadlock事件,在實務上,Deadlock的發生時機不是很容易掌握,而且多發生在尖峰時刻,一直開著Profiler將是挺沈重的系統負擔。因此,我認為以錯誤事件的態度面對Deadlock, 要求其在發生時留下Log是比較有效率掌握Deadlock相關情報(尤其是導致Deadlock的T-SQL指令)的做法。查了一下,SQL Server上可以利用DBCC TRACEON開啟與Deadlock相關的幾個Flag: 1204, 1205, 3605,如要長期開啟,則可以加入-T1205等啟動參數,詳細說明可以參考這篇官方KB[Update @ 2007/10/23] SQL Server 2005 是開 1204 與 1222才對,前述的KB 832524 是針對 SQL Server 2000 的。細節可參考 http://msdn2.microsoft.com/en-us/library/ms178104.aspx,謝謝網友默默指正。

傳統做法似乎要另外開SQLDiag工具蒐集Log,但我發現從SQL 2005的Log Viewer就可以找到發生Deadlock的SQL指令囉!

Search

Go

<October 2007>
SunMonTueWedThuFriSat
30123456
78910111213
14151617181920
21222324252627
28293031123
45678910
 
RSS
【工商服務】


BlogLook Score and Rank

Syndication