Skip to content

Instantly share code, notes, and snippets.

View Otterpohl's full-sized avatar
🐌

Tristan Otterpohl Otterpohl

🐌
  • London
  • 10:07 (UTC +01:00)
View GitHub Profile
@Otterpohl
Otterpohl / Get-IndexDetail
Created May 13, 2022 15:53
Get details of indexes
SELECT T.DatabaseName,
T.ObjectId,
T.ObjectName,
T.IndexId,
T.IndexDescription,
CONVERT(DECIMAL(16, 1), (SUM(T.avg_record_size_in_bytes * T.record_count) / (1024.0 * 1024))) AS [IndexSize(MB)],
T.lastupdated AS [StatisticLastUpdated],
T.AvgFragmentationInPercent
FROM
(
@Otterpohl
Otterpohl / Get-ParamterisedPlans.sql
Created May 13, 2022 16:01
Get queries which have many plans per query
WITH RedundantQueries
AS (SELECT TOP 10
query_hash,
COUNT(query_hash) AS PlansCached,
COUNT(DISTINCT (query_hash)) AS DistinctPlansCached,
MIN(creation_time) AS FirstPlanCreationTime,
MAX(creation_time) AS LastPlanCreationTime,
SUM(total_worker_time) AS Total_CPU_ms,
SUM(total_elapsed_time) AS Total_Duration_ms,
SUM(total_logical_reads) AS Total_Reads,
@Otterpohl
Otterpohl / Get-SSRSReportUsage
Created May 13, 2022 16:02
Get usage details of SSRS reports
SELECT c.Name,
c.[Path],
COUNT(*) AS TimesRun,
MAX(l.TimeStart) AS [LastRun],
(
SELECT SUBSTRING(
(
SELECT CAST(', ' AS VARCHAR(MAX))+CAST(c1.Name AS VARCHAR(MAX))
FROM [ReportServer].[dbo].[Catalog] AS c
INNER JOIN [ReportServer].[dbo].[DataSource] AS d ON c.ItemID = d.ItemID
@Otterpohl
Otterpohl / Script-Indexes.sql
Created May 13, 2022 16:04
Generates script to create indexes
DECLARE @SchemaName VARCHAR(100);
DECLARE @TableName VARCHAR(256);
DECLARE @IndexName VARCHAR(256);
DECLARE @ColumnName VARCHAR(100);
DECLARE @is_unique VARCHAR(100);
DECLARE @IndexTypeDesc VARCHAR(100);
DECLARE @FileGroupName VARCHAR(100);
DECLARE @is_disabled VARCHAR(100);
DECLARE @IndexOptions VARCHAR(MAX);
DECLARE @IndexColumnId INT;
@Otterpohl
Otterpohl / Strip-HTMLTags
Created May 13, 2022 16:04
Function to strip html tags from data
CREATE FUNCTION [dbo].[fn_StripHTML] (@HTMLText VARCHAR(MAX))
RETURNS VARCHAR(MAX) AS
BEGIN
DECLARE @Start INT = CHARINDEX('<',@HTMLText)
DECLARE @End INT = CHARINDEX('>',@HTMLText,CHARINDEX('<',@HTMLText))
DECLARE @Length INT = (@End - @Start) + 1
WHILE @Start > 0 AND @End > 0 AND @Length > 0
BEGIN
SET @HTMLText = STUFF(@HTMLText,@Start,@Length,'')
@Otterpohl
Otterpohl / Script-DropSchemaObjects
Created May 13, 2022 16:06
Generate script to drop all schema objects
SET NOCOUNT ON
DECLARE @SchemaName NVARCHAR(100) = 'mipl'
SELECT 'DROP ' +
CASE WHEN type IN ('P','PC') THEN 'PROCEDURE'
WHEN type = 'U' THEN 'TABLE'
WHEN type IN ('IF','TF','FN') THEN 'FUNCTION'
WHEN type = 'V' THEN 'VIEW'
END +
' ' + QUOTENAME(SCHEMA_NAME(schema_id))+'.'+QUOTENAME(name) as DropStatement
@Otterpohl
Otterpohl / Set-AgentJobOwnerToSA
Created May 13, 2022 16:17
Sets all agent jobs owner to sa account
SELECT 'EXEC msdb.dbo.sp_update_job @job_id=N''' + CAST(j.job_id AS VARCHAR(150)) + ''', @owner_login_name=N''sa'' '
FROM msdb.dbo.sysjobs AS j
INNER JOIN master.sys.syslogins AS L
ON j.owner_sid = L.sid
INNER JOIN msdb.dbo.syscategories AS C
ON C.category_id = j.category_id
WHERE msdb.dbo.SQLAGENT_SUSER_SNAME(j.owner_sid) <> 'sa';
@Otterpohl
Otterpohl / Set-AutoShrinkOff
Created May 13, 2022 16:18
Set AutoShrink to disabled for all databases where it is enabled
SELECT 'ALTER DATABASE ' + QUOTENAME(name) + ' SET AUTO_SHRINK OFF WITH NO_WAIT;' AS [To Execute]
FROM sys.databases
WHERE is_auto_shrink_on = 1;
@Otterpohl
Otterpohl / Set-DatabaseOwnerToSA.sql
Created May 13, 2022 16:22
Set the database owner to sa
SELECT 'ALTER AUTHORIZATION ON DATABASE::' + QUOTENAME(d.[name]) + ' to sa'
FROM [sys].[databases] d
INNER JOIN [sys].[server_principals] s ON s.sid = d.owner_sid
WHERE d.[name] NOT IN ('master','msdb','model','tempdb')
AND s.[name] <> 'sa'
@Otterpohl
Otterpohl / Set-MaxDOP
Created May 13, 2022 16:23
Set MaxDOP to match number of cores
EXEC sys.sp_configure N'show advanced options', 1
GO
RECONFIGURE WITH OVERRIDE
GO
DECLARE @DOP INT
SELECT @DOP = CASE
WHEN cpu_count > 16 THEN 8
else cpu_count / 2