W tym miejscu będę aktualizował zbiór artykułów dostępnych w necie, których znajomość pomogła mi znacznie w zrozumieniu/zapoznaniu się z wiedzą dotyczącą SQL Server. GENERAL Biblioteka wielu przydatnych linków do stron, blogów, whitepapers itp. [akt. #2 (12.10.2017)] Jeszcze jedna biblioteka, tym razem utrzymywana na githubie, pełna narzędzi, skryptów, kodu i słodyczy!Czytaj dalej / Read more
Kategoria: Przydatne skrypty
Dział z mniejszymi/większymi skryptami przydatnymi w codziennej pracy z SQL Server
SPID query plan
SELECT EQP.query_plan, ER.session_id, ER.request_id, ER.start_time, ER.status, ER.command, ER.sql_handle, ER.statement_start_offset, ER.statement_end_offset, ER.plan_handle, ER.database_id, ER.user_id, ER.connection_id, ER.blocking_session_id, ER.wait_type, ER.wait_time, ER.last_wait_type, ER.wait_resource, ER.open_transaction_count, ER.open_resultset_count, ER.transaction_id, ER.context_info, ER.percent_complete, ER.estimated_completion_time, ER.cpu_time, ER.total_elapsed_time, ER.scheduler_id, ER.task_address, ER.reads, ER.writes, ER.logical_reads, ER.text_size, ER.language, ER.date_format, ER.date_first, ER.quoted_identifier, ER.arithabort, ER.ansi_null_dflt_on, ER.ansi_defaults, ER.ansi_warnings, ER.ansi_padding, ER.ansi_nulls, ER.concat_null_yields_null, ER.transaction_isolation_level, ER.lock_timeout, ER.deadlock_priority, ER.row_count, ER.prev_error, ER.nest_level,Czytaj dalej / Read more
Historia jobów (job history)
Źródło: https://www.sqlmatters.com/Articles/Checking%20the%20status%20of%20SQL%20Server%20Agent%20jobs.aspx USE msdb; SELECT SJ.name AS [Job Name], CONVERT( VARCHAR, DATEADD( S, (SJH.run_time / 10000) * 60 * 60 /* hours */ + ((SJH.run_time – (SJH.run_time / 10000) * 10000) / 100) * 60 /* mins */ + (SJH.run_time – (SJH.run_time / 100) * 100), /* secs */Czytaj dalej / Read more
SSAS info o bazach (wielkość bazy, partycji, statusu procesowania etc.)
Źródło: http://www.ssas-info.com/analysis-services-scripts/1197-powershell-script-to-list-info-about-ssas-databases lekko zmodyfikowany param($ServerName = „localhost”, $dbname = „db_name”) ## Add the AMO namespace $loadInfo = [Reflection.Assembly]::LoadWithPartialName(„Microsoft.AnalysisServices”) $server = New-Object Microsoft.AnalysisServices.Server $server.connect($ServerName) if ($server.name -eq $null) { Write-Output („Server '{0}’ not found” -f $ServerName) break } foreach ($d in $server.Databases ) { if ($d.Name -ne $dbname) { continue;Czytaj dalej / Read more
Rozrost tempdb – Extended Events + podgląd via TSQL
Skrypt dzięki uprzejmości Igora Yaremenko 🙂 — create event session CREATE EVENT SESSION [Database_Growth_Watchdog] ON SERVER ADD EVENT sqlserver.database_file_size_change ( ACTION ( sqlserver.client_app_name , sqlserver.client_hostname , sqlserver.database_name , sqlserver.session_nt_username , sqlserver.sql_text , sqlserver.username ) WHERE ( [database_id] = ( 2 ))) ADD TARGET package0.event_file ( SET filename = N’D:\Temp\Database_Growth_Wathdog.xel’, max_file_size =Czytaj dalej / Read more
Konkatenacja napisów w SQL < 2017 - wersja z użyciem XML PATH bez podmiany znaków specjalnych np. & na & amp;
DECLARE @M TABLE ( ParameterName NVARCHAR(20), ParameterValue NVARCHAR(MAX) ); INSERT INTO @M VALUES (’1′, 'Napis1 &<’), (’1′, 'Napis2 &’), (’1′, 'Napis3′), (’2′, 'aaa’), (’2′, 'bbb’), (’3′, 'a’); SELECT * FROM @M SELECT DISTINCT ParameterName, RemappedValues = STUFF( ( SELECT ’;’ + ParameterValue FROM @M AS M2 WHERE M2.ParameterName = M1.ParameterNameCzytaj dalej / Read more
Partycje i ich granice
Thanks to https://sqlity.net/en/1031/partitions-boundaries-filgroups/ SELECT f.NAME AS file_group_name, SCHEMA_NAME(t.schema_id) AS table_schema, t.name AS table_name, p.partition_number, ISNULL(CAST(left_prv.value AS VARCHAR(MAX))+ CASE WHEN pf.boundary_value_on_right = 0 THEN ’ < ’ ELSE ’ <= ’ END , ’-INF < ’) + 'X’ + ISNULL(CASE WHEN pf.boundary_value_on_right = 0 THEN ’ <= ’ ELSECzytaj dalej / Read more
Zaokrąglanie daty do najbliższych 30 minut
–w górę SELECT CONVERT(smalldatetime, ROUND(CAST([columnname] AS float) * 48.0,0,1)/48.0) FROM [tableName] –w dół SELECT CONVERT(smalldatetime, ROUND(CAST([columnname] AS float) * 48.0,0)/48.0) FROM [tableName]
Monitorowanie free space na dyskach, z których korzystają wszystkie bazy
WITH CTE AS (SELECT DISTINCT Drive = s.volume_mount_point, [Free(MB)] = CAST(s.available_bytes / 1048576.0 AS DECIMAL(32, 2)) FROM sys.master_files f CROSS APPLY sys.dm_os_volume_stats(f.database_id, f.[file_id]) s ) SELECT * FROM CTE;
Autogrowth events – skrypt na detale rozrostu MDF / NDF i LDF z default trace’a
Znalezione na stronie The SQL Guy by Norm Enger USE [master]; GO BEGIN TRY IF ( SELECT CONVERT(INT, value_in_use) FROM sys.configurations WHERE name = 'default trace enabled’ ) = 1 BEGIN DECLARE @curr_tracefilename VARCHAR(500); DECLARE @base_tracefilename VARCHAR(500); DECLARE @indx INT; SELECT @curr_tracefilename = path FROM sys.traces WHERE is_default = 1;Czytaj dalej / Read more