Skip to content

Instantly share code, notes, and snippets.

View nanoDBA's full-sized avatar

nanoDBA nanoDBA

View GitHub Profile
@nanoDBA
nanoDBA / Improved-Fill-TestLogVolume.sql
Created May 22, 2025 14:57
🚀 Rapidly fills a SQL Server test database log file to simulate disk full and alerting scenarios. Useful for testing error handling, monitoring, and DBA/ops automation. 😎
/*
| File: Improved-Fill-TestLogVolume.sql
| Description: 🚀 Rapidly fills a SQL Server test database log file to simulate
| disk full and alerting scenarios. Useful for testing error
| handling, monitoring, and DBA/ops automation. 😎
| Purpose: Quickly consume log file space to test SQL Server's response to
| log growth, disk full, and alerting. Designed for use in
| dev/test environments only! Not for prod! ⚠️
| The script can optionally reserve a buffer of free space on the
| log drive, or attempt to fill the drive completely. See below.
@nanoDBA
nanoDBA / Get-DiskSpaceWithFreeGoal.ps1
Last active April 19, 2025 13:20
Checks disk space, shows extra space needed to meet target free %
<#
.SYNOPSIS
Retrieves disk space info from remote computers and computes the
extra free space needed to meet target free space percentages.
.DESCRIPTION
This function serves as a wrapper around the dbatools.io Get-DbaDiskSpace cmdlet,
extending its functionality with additional calculations.
It queries remote systems for disk space details, filters the output by specified
@nanoDBA
nanoDBA / Edit-EBSVolumes.ps1
Created April 12, 2025 14:07
Modifies AWS EBS volumes with enhanced validation and confirmation 🚀
function Edit-EBSVolumes {
<#
.SYNOPSIS
Modifies AWS EBS volumes with enhanced validation and confirmation 🔧🚀
.DESCRIPTION
This function lets you change multiple AWS EBS volumes in one go!
It supports modifications to volume type, size, IOPS, and throughput
with safety confirmations and detailed feedback.
@nanoDBA
nanoDBA / monitor_active_sessions.sql
Created March 12, 2025 15:06
Dump sp_WhoIsActive to a table
-- ████████ FILE: monitor_active_sessions.sql ████████
-- 🎯 MISSION OBJECTIVE: Real-time monitoring of active SQL Server sessions.
-- - If the table **does not exist**, create it.
-- - If the table **exists**, append new data.
-- - If you need a **hard reset**, uncomment the DROP TABLE line.
--
-- 🔧 USAGE:
-- 🎮 Execute in SSMS or a SQL Agent job for continuous ops.
-- 🔬 Uncomment DROP TABLE if you want to refresh the dataset.
@nanoDBA
nanoDBA / Get-EC2VolumeModificationDetails.ps1
Created February 13, 2025 22:22
Retrieves AWS EC2 volume modification records (size, IOPS, volume type changes, etc) and appends the associated instance name. Uses AWS Tools for PowerShell
<#
.SYNOPSIS
Retrieves AWS EC2 volume modification records and useful metadata.
🚀 Because sometimes we need speedy volume modifications!
.DESCRIPTION
The Get-EC2VolumeModificationDetails function retrieves modification details
for a list of specified EC2 volumes such as size, IOPS, volume type changes,
etc. It uses AWS SDK for .NET to interact with AWS EC2 services.
🤖 This function fetches the modification details and the associated instance
@nanoDBA
nanoDBA / Get-RecommendedSqlCU.ps1
Last active November 21, 2024 13:57
Finds the recommended N-1 cumulative update for SQL Server based on patching strategy that avoids intermediate releases
<#
.SYNOPSIS
Finds the recommended N-1 cumulative update for SQL Server based on patching strategy that avoids intermediate releases
.DESCRIPTION
This script queries a Google Sheets document containing SQL Server cumulative update information
and determines the recommended N-1 cumulative update based on a patching strategy that avoids
intermediate releases (e.g., hotfixes, security updates) between cumulative updates.
The script outputs the recommended cumulative update, its release date, and a link to more details.
The patching strategy is defined as follows:
@nanoDBA
nanoDBA / ServiceBrokerLogNoiseReductionEndpoint.sql
Last active May 22, 2025 18:22
Creates SQL Server Service Broker endpoint on port 4022 to reduce noise in the SQL Server error log (ERRORLOG). Includes port availability checks, conditional creation, logging, and optional code to stop and drop endpoint if needed.
/*
| File: ServiceBrokerLogNoiseReductionEndpoint.sql
| Description: 🚦 Creates a Service Broker endpoint to reduce SQL Server log noise.
| Purpose: Sets up a dedicated endpoint for Service Broker on a user-chosen
| port (default 4022), with checks for port conflicts and robust
| logging. Useful for DBAs who want to keep error logs clean and
| avoid noisy Service Broker errors. Includes optional code to drop
| the endpoint. For test/dev use or advanced troubleshooting. 😎
| Created: 2024-05-21
| Modified: 2025-05-22
@nanoDBA
nanoDBA / Get-ExplicitLogonEvents.ps1
Created October 4, 2024 20:03
Gets 4648 Explicit Logon Events from Windows Event Log Author: Lee Christensen (@tifkin_)
function Get-ExplicitLogonEvents {
<#
.SYNOPSIS
Gets 4648 Explicit Logon Events from Windows Event Log
Author: Lee Christensen (@tifkin_)
# https://github.com/threatexpress/red-team-scripts/blob/3121db5d53a25d66afa01afb3bf0487d919d1846/HostEnum.ps1#L1552
#>
@nanoDBA
nanoDBA / Reboot.ps1
Created October 4, 2024 19:24
Reboots machine with a warning message to logged on users after specified number of minutes - defaults to 15 minute delay Reboot.ps1 -DelayMinutes 20
#requires -version 5.0
#Requires -RunAsAdministrator
<# DANGER REBOOTING!
This is meant for a local machine in a scheduled task
and is not handling remoting or remote credentials
#>
[CmdletBinding()]
param (
[Parameter()][int]$DelayMinutes = 15 #default to 15 minute delay if this parameter is not supplied
)
@nanoDBA
nanoDBA / Start-Sleep Magenta.ps1
Created September 6, 2024 20:16
Sleep 5 hours in console/script
# Store TimeSpan object in variable $timespan
$timespan = New-TimeSpan -Start (Get-Date) -End (Get-Date).AddHours(5) #(Get-Date).AddDays(1).Date.AddHours(5) #careful with this - syntax is weird
# Print a message to the console in magenta color indicating the time the script will resume execution
Write-Host -ForegroundColor magenta "Sleeping until $((Get-date).AddSeconds($timespan.TotalSeconds)) ..."
# Pause the execution of the script for a number of seconds equal to the total seconds of the $timespan
Start-Sleep -Seconds $timespan.TotalSeconds