2022年4月13日 星期三

openrowset 卡住問題

對openrowset又愛又恨.........

愛的是讀外部資料檔很方便...恨的是不預期的卡住永世不得翻身....

終於找到一個可以解決卡住的方法...但為什麼會不預期卡住仍待努力。

參考這篇

SQL Server 2016 Linked Server OPENQUERY Hangs

 去https://docs.microsoft.com/en-us/sysinternals/downloads/sysinternals-suite

下載Sysinternals Suite,裡面真的好物...

找到Process Explorer(procexp64.exe)工具打開後,刪除dllhost.exe 是OLE DB Core Services的,且CPU狀態是Suspend的(但有遇到狀態沒有Suspend也是卡住的狀況)。

之前為了測試如何刪除openrowset session,已將連結的伺服器linked server中的microsoft.ACE.OLEDB.16.0 的允許InProcess停用,所以不確定是否得要這麼設才有dllhost.exe可刪。


借用截圖

enter image description here

 

2022/10/02 今天測試了一會,由事件檢視器訊息來看,

失敗的應用程式名稱: DllHost.exe,版本: 10.0.17763.1,時間戳記: 0x5d3b6f40
失敗的模組名稱: mso20win32client.dll,版本: 16.0.5254.1001,時間戳記: 0x61aca05e
例外狀況代碼: 0xc0000005
錯誤位移: 0x00000000000c57f2
失敗的處理程序識別碼: 0x920c
失敗的應用程式開始時間: 0x01d8d5b4a1a5e9b1
失敗的應用程式路徑: C:\Windows\system32\DllHost.exe
失敗的模組路徑: C:\Program Files\Common Files\Microsoft Shared\Office16\mso20win32client.dll
報告識別碼: a950796e-1eb0-49b8-b76b-4145e6c8b4c9
失敗的套件完整名稱:
失敗的套件相關應用程式識別碼: 

今天剛好測到一次讀三個外部檔,終於遇到了客戶常發生的狀況,openrowset的查詢又hang住了。

反覆測了好幾回,分別在WEB AP 及SSMS環境測試,發現在SSMS成功機率較高,在AP沒有一次查詢成功? 同樣的SQL在連線的DB,唯一的差別就是執行環境了。

瞎測一番後,好像在每個openrowset查詢間加了waitfor delay '00:00:10' 停個10秒再執行下一段openrowset,結果執行了幾次,竟然都可正常回傳結果。

怪哉~~~~~ 

2022/11/24 

這個問題看來無解 

https://blog.sqlauthority.com/2017/03/08/sql-server-queries-killedrollback-state-wait-preemptive_oledb_release/

唯一能做的是重啟SQL SERVER服務釋放SPID。

所以設成 InProcess停用後,就直接執行exec xp_cmdshell 'taskkill /f /im dllhost.exe'

把卡住的dllhosrt kill掉,通常再執行一次openrowset又可正常回傳資料了。

 

2022年4月2日 星期六

SSAS 定義自訂成員公式Custom Member Formulas


BI Wizard - Custom Member Formulas for Attributes in a Dimension

在Dimension 資料表中預先開好二個欄位MemeberFormula、MemberOperand (名字自已隨便取)

其中MemeberFormula可做為Custom Member Formulas 自訂成員公式,即member的值將隨著該欄指定的公式計算顯示。

使用的情境是,在某一段時間想要將幾個機關合併起來查看其彙總值,但又不想每次重寫 MDX 中的custom member,就可以透過這個公式值來建立。

 

 

 將MemberFormula公式值依所需彙總計算的member撰寫運算式,如下...

 

 

MemberOperand 可做為Specify a unary operator來源,依運算子進行彙總運算。



參考Parent-Child Dimension Attributes - Unary Operators

設計時階段可以先預先設好公式欄位或運算子欄位,二個欄位無運算式也無影響。

publish error allowDefinition='MachineToApplication'

一個老舊的aspx web form專案,調了一些功能建置成功,但進行部署時顯示以下錯誤。 在應用程式層級之外使用註冊為 allowDefinition='MachineToApplication' 的區段發生錯誤。錯誤的原因可能是虛擬目錄尚未在 IIS 中設定為...