iT邦幫忙

DAY 19
2

我努力當個報表達人:一招半式闖江湖的經驗分享系列 第 16

報表開發過程中曾經遇到過的問題分享-log應用2

  • 分享至 

  • xImage
  •  

電腦裡頭很多地方都有LOG資訊,通常都是以文字檔的格式來儲存,像是FTP、WEBSERVER有其對應的LOG資訊,像微軟的IIS LOG資訊是記錄在%SystemDrive%\inetpub\logs\LogFiles,作業系統的防火牆也有LOG,硬體式防火牆、DNS SERVER、流量SERVER也有它們對應的LOG,SQL SERVER或Reporting Service也有另外對應的LOG資訊,那麼多LOG資訊,當然一開始要知道要去那裡看,再來研究怎麼解讀LOG,最後再來作後續的判斷,這一篇文章,主要在介紹SQL SERVER的LOG應用,就讓我們繼續看下去
SQL Server的LOG是在c:\program files\Microsoft SQL Server\MSSQL10.5\SQLEXPRESS\MSSQL\Log資料匣下(此路徑會依所安裝的SQL版本與路徑而有所不一樣),也就是如果SQL SERVER資料庫發生什麼問題,通訊在這裡頭可以看出一些端倪

例如下列一段範例
2013-08-20 08:56:23.37 登入 錯誤: 18456,嚴重性: 14,狀態: 38。
2013-08-20 08:56:23.37 登入 Login failed for user 'NT AUTHORITY\NETWORK SERVICE'. 原因: 無法開啟明確指定的資料庫。 [CLIENT: <named pipe>]

我們隱約可以知道是因為登入失敗,導致資料庫無法開啟的方向,再由這個方向找出可能的問題點。

而報表伺服器Reporting Service也一樣有LOG,它的位置跟SQL SERVER類似,但它是以文字檔的格式來儲存,也就是如果報表伺服器有問題的話,通常在這些文字檔是可以看出一些原因的

而以下的文字結取自其中的一段LOG資訊
Microsoft.ReportingServices.Diagnostics.Utilities.ReportServerDatabaseUnavailableException: 報表伺服器無法開啟到報表伺服器資料庫的連接。所有要求和處理都需要與資料庫連接。 ---> System.Data.SqlClient.SqlException: 無法開啟登入所要求的資料庫 "ReportServer"。登入失敗。
使用者 'NT AUTHORITY\NETWORK SERVICE' 的登入失敗

這代表著可能因為登入失敗,導致無法開啟報表伺服器資料庫,而我們也因為有了這一段資訊,約略可以知道可能的問題點在那裡,而這也告訴我們LOG資訊的重要性

我用下列我曾經發生過的報表伺服器問題為例,這是發生在要把矩陣型報表發佈到網頁上所出現的錯誤訊息,訊息如下所示
報表定義無效。詳細資料: 報表定義具有無效的目標命名空間 'http://schemas.microsoft.com/sqlserver/reporting/2008/01/reportdefinition',此命名空間無法升級

而在確認一些LOG資訊,如下所示
報表處理期間發生錯誤。 (rsProcessingAborted)
無法與資料來源 'DataSource1' 建立連接。 (rsErrorOpeningConnection)
此 Reporting Services 版本不支援功能: "您正在使用的 Reporting Services 版本,對於報表資料來源和報表伺服器資料庫,需要使用本機 SQL Server 關聯資料庫。"。 (rsOperationNotSupported)

結果發現我的sql server2005 express版本不支援矩陣型報表,也因此我後來把資料庫升級到Sql 2008 express版,後來我就可以發佈矩陣型報表到伺服器上面了

同樣的我曾經試著用URL ACCESS的方式,要把資料轉出成CSV格式,如下語法所示
Dim script As String = String.Format("<script>window.open('http://192.168.1.11/ReportServer/Pages/ReportViewer.aspx?%2f%e5%a0%b1%e8%a1%a8%e5%b0%88%e6%a1%881%2fReport3&rs:Command=Render&rc:Parameters=false&rs:Format=CSV');</script>")

If Not ClientScript.IsClientScriptBlockRegistered(GetType, "test") Then
ClientScript.RegisterClientScriptBlock(GetType, "test", script, False)
End If

但最後出現下列的訊息
Reporting Services錯誤
嘗試使用未為此報表伺服器註冊的轉譯延伸模組(rsRenderingExtensionNotFound)

最後發現到,一樣是版本的問題,我的express版本不支援把報表匯出成CSV檔,而我想不管是系統管理者或是程式開發人員,對於LOG的分析與了解,都要多少會一些,如此可以快速知道可能的問題點,而所謂的凡走過必留下痕跡,LOG資訊通常是系統管理者解讀問題的依據,也就是透過LOG資訊,可以比較有方向的找出可能的問題點,再提供可能的解決方式,來進行後續的問題排除


上一篇
報表開發過程中曾經遇到過的問題分享-log應用
下一篇
報表開發過程中曾經遇到過的問題分享-log應用3
系列文
我努力當個報表達人:一招半式闖江湖的經驗分享27
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言