SQL Server clustered columnstore Tuple Mover
The updateable clustered columnstore indexes introduced with SQL Server 2014 rely on a background task called the Tuple Mover to periodically compress deltastores into the more efficient columnar...
View ArticleHow to analyse SQL Server performance
So you have this SQL Server database that your application uses and it somehow seems to be slow. How do you troubleshoot this problem? Where do you look? What do you measure? I hope this article will...
View ArticleHow to read and interpret the SQL Server log
The SQL Server transaction log contains the history of every action that modified anything in the database. Reading the log is often the last resort when investigating how certain changes occurred. It...
View ArticleHow to prevent conversation endpoint leaks
One of the most common complains about using Service Broker in production is when administrators discover, usually after some months of usage, that sys.conversations_endpoints grows out of control with...
View ArticleWindowsXRay is made public as Media eXperience Analyzer
One of the most useful performance tools I used internally at Microsoft was the WindowsXRay. I’m pleased to find that it was released the new name of Media eXperience Analyzer. The tool was internally...
View ArticleSQL Server 2014 updateable columnstores Q and A
Are INSERTs serialized because of row group locks? No. If a trickle INSERT requires an OPEN row group and it cannot place a lock on it it will create a new one. any number of INSERT statements can...
View ArticleThe cost of a transactions that has only applocks
I recently seen a discussion on the merits of using SQL Server as an application lock manager. Application would start a transaction and acquire app locks, using sp_getapplock. No actual data would be...
View ArticleIntroducing DBHistory.com
After 145 months of employment with Microsoft, at the beginning of March 2016 I quit the SQL Server team to pursue my dream of creating a better solution for SQL Server performance monitoring and...
View ArticleUnderstanding SQL Server Query Store
Query Store was introduced in SQL Server 2016 and on Azure SQL DB v12 as a way to track query execution statistics. When Query Store is enabled it will save the query SQL text, the execution plan and...
View ArticleIdentifying SqlConnection objects in a dump
I recently had to troubleshoot an ADO.Net connection pool exhaust issue. This problem may indicate a connection leak, but it can also be caused by an undersized connection pool. For analysis I used...
View ArticleSQL Injection: casting can introduce additional single quotes
declare @inject nvarchar(4000) = NCHAR(0x02bc) + N'; select 1/0; select ' + nchar(0x02bc); declare @safe nvarchar(4000) = REPLACE(@inject, N'''', N''''''); declare @sql varchar(4000) = N'SELECT ''' +...
View Article