今日一新系統上線,30分鐘後AP同仁傳了系統錯誤訊息給我,如下圖所示。從字面上來看就是系統的資料庫發生了DeadLock。我先開始錄SQL的Trace來抓DeadLock事件,但似乎只有系統開始運作的前30分鐘有發生,後來就沒再發生DeadLock事件。於是乎我就透過預設的Extented Event來檢視之前DeadLock事件是那些資源互咬,並檢視當下時間所執行的語法。但我怎麼看當時執行的語法都覺得不至於產生DeadLock啊。
Linked Server Insert Into With Exec 發生無法分散式交易的錯誤
- 1225
- 0
- [SQL]TroubleShooting
- 2023-02-13
某日有同仁表示自己撰寫的一張報表有時執行成功,但有時候又會失敗,然而他將該TSQL語法直接在SSMS執行時卻都不會失敗。
TVP導致SQL記憶體暴漲
- 1934
- 0
- [SQL]TroubleShooting
單純記錄一下,有用到Table Value Parameter來當參數傳的話,記得程式裡要明確宣告一下String的長度
可怕錯誤訊息 The operating system returned the error '21(裝置未就緒。)
- 1706
- 0
- [SQL]TroubleShooting
今天一早例行性檢查前一天的Error Log,赫然發現一個沒看過的錯誤訊息,訊息如下The operating system returned the error '21(裝置未就緒。)' while attempting 'GetDiskFreeSpace' on 'A:\'.
使用 T-SQL 建立 RSExecRole 角色和權限
今天嘗試移轉SQL2008R2的SSRS到SQL2019上,然而SQL2019的RS得另外下載安裝,裝完RS後該系統會自動去SQL內的master及msdb中建立RSExecRole這一個角色並授權一些SP及Table給RS,讓RS有權限去維護SQL Agent的作業或排程等...
還原msdb時發生資料庫中未啟用 Service Broker 的錯誤訊息
- 760
- 0
- [SQL]TroubleShooting
- 2020-04-20
日前在災難復原演練過程中,將msdb資料庫備份還原到另一台新建立的測試主機時發生
訊息 14650,層級 16,狀態 1,程序 msdb.dbo.sp_send_dbmail,行 73 [批次開始行 0]
在此資料庫中未啟用 Service Broker 訊息傳遞。請使用 ALTER DATABASE 陳述式來啟用 Service Broker 訊息傳遞。
DBCC SHRINKDATABASE無法壓縮資料庫
- 5532
- 0
- [SQL]TroubleShooting
- 2020-02-18
日前將一個正式資料庫還原至測試機上,但因為測試機不需要實際資料,因此我就Truncate所有Table後再壓縮資料庫來減少測試機器的硬碟佔用空間。
Linked Server查詢動態資料遮罩(Dynamic Data Masking)資料表時發生DBCC SHOW_STATISTICS權限不足的2557錯誤
- 781
- 0
- [SQL]TroubleShooting
- 2020-02-24
日前幫同仁建了一張View去Select Linked Server中的一張資料表,建立完成後我就試著去查詢該View,此時SQL卻報出2557的錯誤訊息。該訊息內容就是我沒有DBCC SHOW_STATISTICS該資料表的權限。
AlwaysOn的可用性群組在設定複寫時會產生Cannot promote the transaction to a distributed transaction because there is an active save point in this transaction錯誤
- 560
- 0
- [SQL]TroubleShooting
- 2019-11-27
前一陣子研究AG搭配複寫時會產生Cannot promote the transaction to a distributed transaction because there is an active save point in this transaction錯誤訊息
利用計畫指南來重用執行計畫降低CPU壓力
很久以前就聽聞過SQL的計畫指南功能,但我一直沒有用過。可以從字面上初步了解就是針對某些查詢我們可以干涉最佳化引擎,讓SQL根據我們的需求來跑執行計畫。一些官方文件的舉例就是在不異動查詢語句的狀況下讓管理者可以針對語句下hint(如MAXDOP設定及OPTIMIZE FOR或Recompile等)。
索引ALLOW_PAGE_LOCKS設成OFF導致無法REORGANIZE
- 1131
- 0
- [SQL]TroubleShooting
- 2018-10-26
今日收到一個錯誤告警,顯示因為頁面層級鎖定已經停用導致REORGANIZE索引發生失敗。
字串相加時因型態轉換而導致截斷問題
- 1049
- 0
- [SQL]TSQL語法技巧
今天同仁問了一個問題,他用字串動態組了一個超長的語法,但該字串列出來時發現中間少了一些語法,似乎是字串相加時被截掉了。
Constraints在資料含有NULL時的隱憂
- 1675
- 0
- [SQL]TroubleShooting
NULL在資料庫中一直以來常會被拿出來警世,也看過一些書籍或聽一些演講都會提到盡量不要讓欄位是可以允許NULL的。
SQL Server 2016 SP1 CU1的BUG導致database mail功能無法運作
- 415
- 0
- [SQL]TroubleShooting
- 2017-07-04
上周一部SQL2016的Server做完Windows Update後,Database Mail的功能就不正常。所有的信件都unsent
MS SQL CDC(Change Data Capture)功能初體驗之有雷勿踩
前情提要MS SQL CDC(Change Data Capture)功能初體驗 ,這一篇是要介紹一個CDC須注意的問題, 讓我稍微模擬一下並分享給大家。
將Database相容性層級調升後造成datetime欄位比對錯誤造成異常(二)
- 1226
- 0
- [SQL]TroubleShooting
這一篇比較詳細比對ODBC及OLE DB建立Linked Servers對於資料欄位變動的差異
將Database相容性層級由90調升後造成DateTime欄位比對異常
- 556
- 0
- [SQL]TroubleShooting
- 2016-11-03
之前有過將SQL2000直升SQL2014的經驗後,因此對於SQL2008R2中部分相容性層級為90的資料庫也起了調升的意念。
SQL2014 SP2新功能 DBCC CLONEDATABASE 複製資料庫
日前在FB看見楊老師分享SQL2014 SP2後新功能DBCC CLONEDATABASE,可以快速複製一個Database ( 只複製Schema和Statistics資料,不含實體資料 )。
Blocking讓Max Worker Threads爆了,造成SQL Server無法正常的提供服務
- 5777
- 0
- [SQL]TroubleShooting
- 2016-04-23
日前228連假第一天,帶著一家人去烤肉玩漆彈。卻在此時手機收到告警,系統偵測不到一台SQL Server。當下連接一台AP看看,果然發生網頁錯誤。Orz…..連假第一天就得救火,馬上殺回公司看看狀況。
利用備份檔搭配Restore Page的方式來修復有損毀的資料庫
在這一篇 DBCC CHECKDB搭配REPAIR_ALLOW_DATA_LOSS修復資料庫的資料遺失風險 中我們有提到資料庫損壞時盡量不要用DBCC CHECKDB的方式修復資料庫,這一篇我們就來介紹如何使用備份檔並搭配Restore Page修復已損毀的資料庫。
- 1
- 2