日前幫同仁建立Linked Server的介接權限,設定完成後,同仁透過SSMS來展開該Linked Server,想檢視一下該Server的資料庫清單,但詭異的是她展開後發現SSMS UI沒有顯示任何的資料庫。
但用TSQL去抓取該Linked Server資料的確是OK的。這狀況不太符合以前經驗法則,印象中SSMS會列出該Linked Server中你有權限檢視的資料庫,故花了一點時間研究一下,終於可以重現該狀況,在此簡單紀錄一下。
日前幫同仁建立Linked Server的介接權限,設定完成後,同仁透過SSMS來展開該Linked Server,想檢視一下該Server的資料庫清單,但詭異的是她展開後發現SSMS UI沒有顯示任何的資料庫。
但用TSQL去抓取該Linked Server資料的確是OK的。這狀況不太符合以前經驗法則,印象中SSMS會列出該Linked Server中你有權限檢視的資料庫,故花了一點時間研究一下,終於可以重現該狀況,在此簡單紀錄一下。
我們在撰寫TSQL時常常會需要建立跟實體資料表一樣資料欄位的暫存表來暫存及處理資料。最常用的方法就是Select Into來做,省去撰寫一堆Create的語法。
有時候基於效能問題會使用Index View來提升查詢效能,但常常建立完成後SQL引擎卻不賞臉,死都不使用Index View的資料,硬是去掃Base Table。
當資料表中有nvarchar(max)這種大型欄位時,該資料表資料存放就會有兩個部分,一個是Row Data一個是LOB,當單一筆資料進來時該大型欄位資料內容過大無法在單一Page存放時,就會被SQL放到LOB區域去。
而LOB在建立資料表時不指定存放區則預設會放到Primary這一個File Group中。但如果我們事後想調整更換時該怎麼做呢?
很多情境會使用CTE來跑遞迴,最常的情境應該就是用CTE跑出階層效果。
而要順利使用遞迴會有一些限制,其中官方文件有寫到一個限制就是 -->
以下是因為該限制而發生錯誤的Demo Code
今日一新系統上線,30分鐘後AP同仁傳了系統錯誤訊息給我,如下圖所示。從字面上來看就是系統的資料庫發生了DeadLock。我先開始錄SQL的Trace來抓DeadLock事件,但似乎只有系統開始運作的前30分鐘有發生,後來就沒再發生DeadLock事件。於是乎我就透過預設的Extented Event來檢視之前DeadLock事件是那些資源互咬,並檢視當下時間所執行的語法。但我怎麼看當時執行的語法都覺得不至於產生DeadLock啊。
在系統需求中常常會有利用舊年度資料源來預先產出新年度資料,由於資料表正規化規則,因此往往PK都是流水碼或GUID,因此產出新舊碼的對照表是關鍵中的關鍵,以下簡單模擬我遇見的需求。
SQL2022有幾個TSQL的新增或加強舊有函式功能,以下簡易筆記一下
某日有同仁表示自己撰寫的一張報表有時執行成功,但有時候又會失敗,然而他將該TSQL語法直接在SSMS執行時卻都不會失敗。
日前撰寫TSQL時利用CTE搭配Delete來刪除資料,但刪除後的結果是錯誤的,經一番測試後才發現問題點
簡單筆記一下如何透過Linked Server來刪除資料表
本次參加PASS Taiwan Summit 2022時和朋友討論到多檔案的File Group是如何分散存放資料,其分散的最小單位為何呢?
今天一位同事用Case When去比對欄位時發生錯誤,該欄位是ntext型態,以下記錄一下
近日在檢視索引時對幾個重複索引做完整併後欲將多餘的索引刪除時發生3723錯誤,並且無法順利刪除索引。
這是一個網友在PASS社團問的問題,個人筆記一下
以往用SSMS要建立dacpac時都會檢查是否有關連外部資料庫物件,一旦有關聯就會告警並匯出dacpac失敗
今天收到一個需求得修改資料表值參數類型的欄位長度,但使用者定義資料表值參數類型無法使用Alter來異動,只能Drop後Create來異動。一旦該Table Type有被Stored Procedure參照的話,我們還無法Drop掉…….
日前在Tunning一句語法時,在SSMS的視窗下撰寫TSQL測試。當時發現我用變數當參數來查跟直接用數字來當參數查時會跑不同的執行計畫,Code的範例如下
今天在Super SQL Server社團看見有人問了一個問題,他有一個每日銷售金額統計表,他想每日都往前加5天,產生一個view叫做sumof5days,應該如何寫這個查詢呢?
單純記錄一下,有用到Table Value Parameter來當參數傳的話,記得程式裡要明確宣告一下String的長度