Skip to content

Instantly share code, notes, and snippets.

View dhmacher's full-sized avatar

Daniel Hutmacher dhmacher

View GitHub Profile
@dhmacher
dhmacher / Create_Agent_proxy_procedures.sql
Last active October 20, 2023 08:28
Create abstraction procedures for SQL Server Agent jobs
USE msdb;
GO
CREATE USER Agent_job_abstraction
WITHOUT LOGIN WITH DEFAULT_SCHEMA=dbo;
GO
ALTER ROLE SQLAgentOperatorRole
ADD MEMBER Agent_job_abstraction;
GO
CREATE OR ALTER PROCEDURE dbo.Create_Agent_proxy_procedures
@Principal_name sysname=N'Agent_job_abstraction',
@dhmacher
dhmacher / script-server-principals.sql
Created September 13, 2023 12:15
Script out server-level principals and their memberships in fixed server roles.
DECLARE @principals TABLE (
seq int IDENTITY(1, 1) NOT NULL,
principal_id int NOT NULL,
[sql] nvarchar(max) NOT NULL,
PRIMARY KEY CLUSTERED (seq)
);
--- Windows logins and groups:
INSERT INTO @principals (principal_id, [sql])
SELECT sp.principal_id,
@dhmacher
dhmacher / make-sa-database-owner.sql
Last active September 7, 2023 08:42
Make sa the owner of all databases (and add the former owner to the db_owner role)
DECLARE @sql nvarchar(max)=N'';
SELECT @sql=@sql+N'
USE '+QUOTENAME(db.[name])+N';
IF (USER_ID('+QUOTENAME(sp.[name], N'''')+N') IS NULL)
CREATE USER '+QUOTENAME(sp.[name])+N' FOR LOGIN '+QUOTENAME(sp.[name])+N';
ALTER ROLE [db_owner] ADD MEMBER '+QUOTENAME(sp.[name])+N';
@dhmacher
dhmacher / New-MastodonPost.ps1
Created December 19, 2022 07:01
Powershell function to post a simple, plaintext status to a Mastodon instance
<#
To create an access token,
* go to settings -> Development
* Click "New Application"
* Enter a name
* Allow "write:statuses"
* Click Submit
* Click on the new application to review the keys
* The "Access token" is the one you need
@dhmacher
dhmacher / New-PasswordLink.ps1
Created December 16, 2022 13:53
Powershell code to generate a password pusher URL (using pw.strd.co)
/*
Copyright Daniel Hutmacher under Creative Commons 4.0 license with attribution.
http://creativecommons.org/licenses/by/4.0/
Source: https://github.com/sqlsunday/sp_ctrl3
DISCLAIMER: This script may not be suitable to run in a production
environment. I cannot assume any responsibility regarding
the accuracy of the output information, performance
-- Source: https://sqlsunday.com/2017/02/21/finding-primary-key-candidates/
IF (OBJECT_ID('dbo.FindPrimaryKey') IS NULL)
EXEC('CREATE PROCEDURE dbo.FindPrimaryKey AS --');
GO
/*
This stored procedure is used to identify primary key candidates.
Copyright Daniel Hutmacher under Creative Commons 4.0 license with attribution.
@dhmacher
dhmacher / Agent job visualization.sql
Created October 22, 2021 08:37
Visualize agent jobs as a gannt chart
--- Read more: https://sqlsunday.com/2016/11/17/visual-representation-of-sql-server-agent-jobs/
/*
Copyright Daniel Hutmacher under Creative Commons 4.0 license with attribution.
http://creativecommons.org/licenses/by/4.0/
Source: http://sqlsunday.com/downloads/
DISCLAIMER: This script may not be suitable to run in a production
@dhmacher
dhmacher / LoadTableBlobs.sql
Created October 22, 2021 08:34
Imports an XML blob into a set of relational tables.
--- Read this first: https://sqlsunday.com/2016/06/16/copying-data-with-foreign-keys-and-identity-columns/
IF (OBJECT_ID('dbo.LoadTableBlobs') IS NULL) EXEC('CREATE PROCEDURE dbo.LoadTableBlobs AS --')
GO
/*
Copyright Daniel Hutmacher under Creative Commons 4.0 license with attribution.
http://creativecommons.org/licenses/by/4.0/
Source: http://sqlsunday.com/downloads/
-- More information: https://sqlsunday.com/2013/03/24/decrypting-sql-objects/
SET NOCOUNT ON
DECLARE @owner sysname='dbo', @name sysname='sp_someprocedure';
-----------------------------------------------------------
--- Declarations:
DECLARE @offset int=1;
DECLARE @datalength int;