發生 OLE DB 提供者 'MSOLEDBSQL' 傳回與資料行應有資料長度不符的資料 錯誤訊息

今天同仁系統發生錯誤訊息,該段語法是透過Linked Server去另一台Server抓取一張Table的資料。結果發生了 

訊息 7347,層級 16,狀態 1,行 20
連結伺服器 '127.0.0.1' 的 OLE DB 提供者 'MSOLEDBSQL' 傳回與資料行 '[127.0.0.1].[dbtemp].[dbo].[vwtb1].cname' 應有資料長度不符的資料。(最大) 資料長度應該為 10,而傳回的資料長度為 13。

的錯誤。

...繼續閱讀 »

SSMS UI 無法正常顯示連結伺服器(Linked Server)的資料庫清單

日前幫同仁建立Linked Server的介接權限,設定完成後,同仁透過SSMS來展開該Linked Server,想檢視一下該Server的資料庫清單,但詭異的是她展開後發現SSMS UI沒有顯示任何的資料庫。

但用TSQL去抓取該Linked Server資料的確是OK的。這狀況不太符合以前經驗法則,印象中SSMS會列出該Linked Server中你有權限檢視的資料庫,故花了一點時間研究一下,終於可以重現該狀況,在此簡單紀錄一下。

...繼續閱讀 »

轉移資料表LOB(Image/Text)資料到其他File Group

當資料表中有nvarchar(max)這種大型欄位時,該資料表資料存放就會有兩個部分,一個是Row Data一個是LOB,當單一筆資料進來時該大型欄位資料內容過大無法在單一Page存放時,就會被SQL放到LOB區域去。

而LOB在建立資料表時不指定存放區則預設會放到Primary這一個File Group中。但如果我們事後想調整更換時該怎麼做呢?

...繼續閱讀 »

[有趣]只發生在系統運作初期的DeadLock事件

今日一新系統上線,30分鐘後AP同仁傳了系統錯誤訊息給我,如下圖所示。從字面上來看就是系統的資料庫發生了DeadLock。我先開始錄SQL的Trace來抓DeadLock事件,但似乎只有系統開始運作的前30分鐘有發生,後來就沒再發生DeadLock事件。於是乎我就透過預設的Extented Event來檢視之前DeadLock事件是那些資源互咬,並檢視當下時間所執行的語法。但我怎麼看當時執行的語法都覺得不至於產生DeadLock啊。

...繼續閱讀 »