How TVP Affect SQL Server Memory

之前有寫過一篇文章,其中的Root Cause就是TVP+SQL Profiler所造成的記憶體內存問題。原本以為tvp中的欄位如果沒有varchar(max)理應不會對SQL Server造成問題。但在測試結果下,如果Application沒有對字串限制長度,還是會造成上述的記憶體內存問題。同時也感謝Rock撥空測試幫助我驗證以下結論。

大概有幾個手段可以解決問題

  1. 限制Application 字串長度
  2. 升級CU Hotfix
//Sample Code for limit string length
DataSet dataSet = new DataSet();

DataTable customTable = new DataTable();
DataColumn dcName = new DataColumn("Name", typeof(string));
dcName.MaxLength= 500;
customTable.Columns.Add(dcName);

dataSet.Tables.Add(customTable);

至於原理跟測試,有興趣的可以看這篇文章

DataTable objects are most commonly used as TVP values. DataTables are easy to use and can serve as containers for data beyond just TVP usage. But unlike DbDataReader and IEnumerable objects, a big gotcha with a DataTable is that the default data type String with maximum length of -1 (2GB LOB). This is the .NET equivalent of the SQL Server nvarchar(MAX) data type and has many insidious and negative implications with a TVP.

SQL Server misaligned log IOs which required falling back to synchronous IO

There have been 27888384 misaligned log IOs which required falling back to synchronous IO.
某一次在Production換新機後,突然Secondary狂噴如標題的Error。
Google後發現可能是Disk sector不Align的問題。

使用下列語法查詢Disk的狀態。

fsutil fsinfo ntfsinfo
繼續閱讀 “SQL Server misaligned log IOs which required falling back to synchronous IO"

Cross-Database Access Permission Control – Certificate Signing

Cross Database 牽涉到Ownership Chaining,理論上只要Cross Database就會需要給予額外的權限設定,否則SQL Server會Return權限不足的Error,大致上可以利用以下幾種方法來給與權限:

  1. 直接給予物件權限
  2. 憑證授權 Certificate Signing to Store Procedure
  3. 啟用 Trustworthy On

這篇主要會探討如何利用憑證授權 Certificate Signing來達到Cross DB交易的目標。若是對Trustworthy不清楚,建議可以從上述連結了解。使用 Certificate Signing 有幾項優缺點

繼續閱讀 “Cross-Database Access Permission Control – Certificate Signing"

Lock Resource by METADATA DATABASE_PRINCIPAL

最近在Production Server上遇到了一個Case,Change dbowner的Action做過很多次,第一次遇到Block的問題,最後理解到是Resouce:METADATA.DATABASE_PRINCIPAL被Lock,但是卻找不到太多相關的資訊,最後要特別感謝Phil Liu的幫忙與指導,才能了解到底層如何去運作。

首先在問題發生後,我利用Whoisactive查看我當時蒐集的資訊:
2017-12-01_174735.png

繼續閱讀 “Lock Resource by METADATA DATABASE_PRINCIPAL"