durch einen Hinweis in einem im CU4 (2019) bzw. CU19 (SQL 2017) enthaltenen KBhttps://support.microsoft.com/en-us/help/4538497/kb4538497-fix-slow-query-performance-when-using-query-predicates-withbin ich über das Flag QUERY_OPTIMIZER_HOTFIXES gestolpert.Wir haben die geänderte Config bislang nur einen Tag getestet, aber subjektiv scheint das System performanter und stabiler zu laufen – es kommt auf einen Versuch an. Das CU19 sollte bereits installiert sein – dann die […]
SQL Speicherplatzbedarf von Tabellen anzeigen
CREATE PROCEDURE SP_GetTableSpace AS SET NOCOUNT ON CREATE TABLE #TableSpace ( Rows int, DataSpaceUsed int, IndexSpaceUsed int ) DECLARE @TableSpace table ( TableName varchar(255), Rows int, DataSpaceUsed int, IndexSpaceUsed int ) DECLARE @Rows int, @DataSpaceUsed int, @IndexSpaceUsed int, @TableName varchar(255) DECLARE Table_Cursor CURSOR FOR SELECT user_name(o.uid) + ‚.‘ + o.name AS table_name FROM dbo.sysobjects o, […]
SQL Tabelle (CAS Changelogbook) schnell verkleinern
Das löschen mehrerer Zeilen aus großen SQL Tabellen kann schnell zum Geduldsspiel werden. Wenn z.B. aus dem CAS Changelogbook alle alten Einträge entfernt werden sollen, würde folgende Anweisung schnell ein paar Stunden laufen ( und im Zweifelsfall in einen Timeout laufen: DELETE FROM dbo.Changelogbook Where updatetimestamp < getdate()-365 Die DELETE-Anweisung läuft extrem lange und auch das DB-Protokoll […]
Alle Spalten einer SQL Datenbank nach einem Textinhalt durchsuchen
ALTER PROCEDURE SP_FindStringInDataBase AS SET NOCOUNT ON CREATE TABLE #TableSpace ( Inhalt int ) DECLARE @TableSpace Table ( T varchar(255), C varchar(255), Inhalt int ) DECLARE @Rows int, @TableName varchar(255), @COLUMNNAME varchar(255), @Inhalt int; DECLARE Table_Cursor CURSOR FOR SELECT Top 100 Percent TABLE_NAME, COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE (data_type=’varchar‘ or data_type=’nvarchar‘) And Column_Name!=’Notes2′ And Column_Name!=’Name‘ And […]
SQL Server Backup, Integrity Check, and Index and Statistics Maintenance
Sehr gute Skripte sind bei Ola Hallengren zu finden: https://ola.hallengren.com/ Extern lässt sich dies z.B. auf einem SQL Express ohne Agent per Batch aufrufen sqlcmd -E -S $(ESCAPE_SQUOTE(SRVR)) -d master -Q „EXECUTE [dbo].[IndexOptimize] @Databases = ‚NAME‘,@FragmentationLow = NULL, @FragmentationMedium = ‚INDEX_REORGANIZE,INDEX_REBUILD_ONLINE,INDEX_REBUILD_OFFLINE‘, @FragmentationHigh = ‚INDEX_REBUILD_ONLINE,INDEX_REBUILD_OFFLINE‘, @FragmentationLevel1 = 5, @FragmentationLevel2 = 30, @UpdateStatistics = ‚ALL‘, @OnlyModifiedStatistics = […]
Serverkonfigurationsoptionen für den Serverarbeitsspeicher per TSQL
sp_configure ’show advanced options‘, 1; GO RECONFIGURE; GO sp_configure ‚max server memory‘, 4096; GO RECONFIGURE; GO
SQL Index Neuaufbau über Transact SQL
–Rebuild all indexes online with keeping the default fill factor for each index USE [DATABASE_NAME] EXEC sp_MSforeachtable @command1=“print ‚?'“, @command2=“ALTER INDEX ALL ON ? REBUILD WITH (ONLINE=ON)“ –Rebuild all indexes offline with keeping the default fill factor for each index USE [DATABASE_NAME] EXEC sp_MSforeachtable @command1=“print ‚?'“, @command2=“ALTER INDEX ALL ON ? REBUILD WITH (ONLINE=OFF)“ –Rebuild […]