Skip to content

Instantly share code, notes, and snippets.

View nanoDBA's full-sized avatar

nanoDBA nanoDBA

View GitHub Profile
@nanoDBA
nanoDBA / database_role_securables_query.sql
Created August 22, 2024 10:37
Retrieve securables and permissions for any specified database role. Uses a variable for the role name and prompts the user if the role name is not provided. Modeled after SSMS Securables page of Database Roles properties
-- database_role_securables_query.sql
-- modeled after SSMS Securables page of Database Roles properties
DECLARE @RoleName NVARCHAR(128);
SET @RoleName = ''; -- Replace with role name or leave empty for testing
IF @RoleName = ''
BEGIN
SELECT 'Please provide a valid role name to query securables' AS Message;
@nanoDBA
nanoDBA / Export-SQLTablesToFiles.ps1
Created August 13, 2024 03:29
Loops through an array of tables, and exports each one to its own neatly named SQL file
<# Table Export #>
$someTables = @"
TBL_A_FOO
TBL_B_BAR
TBL_C_BAZ
TBL_D_QUX
TBL_E_QUUX
TBL_F_CORGE
"@.split("`n").TrimEnd("`r")
@nanoDBA
nanoDBA / RemoveCommentsFromFiles.ps1
Created August 13, 2024 03:28
This script accesses files stored in a directory, reading the first 1024 bytes of each file. It includes a function that carefully removes comments marked by /* and */ from the content. After cleaning up the content, it converts it back into bytes and saves the changes to the original files.
$files = Get-ChildItem -Path "A:\Phoenix"
# Define the comment start and end markers
$commentStart = '/*'
$commentEnd = '*/'
foreach ($file in $files) {
# Open the file and read the first 1024 bytes
$maxBytes = 1024
$buffer = New-Object byte[] $maxBytes
@nanoDBA
nanoDBA / Get-EC2InstanceVolumes.ps1
Last active February 18, 2025 16:53
This function retrieves the volumes attached to the specified EC2 instances in the specified region. It returns a list of volume details including the instance ID, instance name, instance type, volume ID, device name, state, availability zone, volume type, IOPS, throughput, and size.
# 2023-06-29 version originally by nanoDBA, greatly enhanced by OpenAI's ChatGPT model
<#
.SYNOPSIS
Get the volumes attached to the EC2 instances.
.DESCRIPTION
This function retrieves the volumes attached to the specified EC2 instances in the specified region.
It returns a list of volume details including the instance ID, instance name, instance type, volume ID, device name, state, availability zone, volume type, IOPS, throughput, and size.
.PARAMETER InstanceNames
@nanoDBA
nanoDBA / Lock_and_power_off_display.ps1
Created June 11, 2024 14:07
Turn off the display and lock the workstation using the Windows API via PowerShell
# filename: Lock_and_power_off_display.ps1
#
# This script turns off the display and locks the workstation using the Windows API.
#
# Warning: This script will turn off the display and lock the workstation indefinitely until stopped manually.
#
# Import the necessary libraries for interacting with the Windows API
Add-Type @"
using System;
using System.Runtime.InteropServices;
@nanoDBA
nanoDBA / QueryStore Export to PivotTable using sp_QuickieStore.ps1
Created January 31, 2024 01:14
This PowerShell script allows users to export data from SQL Server Query Store to a PivotTable. The script utilizes the sp_QuickieStore stored procedure from Erik Darling ( https://erikdarling.com/sp_quickiestore/ ) to retrieve performance data from the Query Store and then formats it into a PivotTable for additional analysis and visualization.
# create an array of SQL Server instances
$allInstances = @('server1', 'server2', 'server3')
# Loop through each SQL server instance
foreach($sqlInstance in $allInstances) {
# Output the current SQL server instance
Write-Output "`$sqlInstance: $sqlInstance"
# Execute a query on the current SQL server instance and store the results
@nanoDBA
nanoDBA / Get-SqlAgentHistoryDetailsConsole.ps1
Created March 23, 2023 16:37
Console Output RED/GREEN failures for SQL Agent job history, multiple key property sorts. Attempting to imitate the output of the SQL Server Management Studio Job History window in a console.
# Console Output RED/GREEN failures for SQL Agent job history, multiple key property sorts
# attempting to imitate the output of the SQL Server Management Studio Job History window
$paramHash = @{
SqlInstance = 'YOURSERVER01','YOURSERVER02' # comma separated list of SQL Server instances
StartDate = "$(((Get-Date).AddDays(-.1) ))" # 0.1 days ago - ARE YOU SURE? This does not mean 1 day. It means 2.4 hours ago.
# StartDate = "$(((Get-Date).AddDays(-90) ))" # 90 days ago
EndDate = "$((Get-Date ))" # now
Job = 'Some SQL Agent Job Name goes here' # name of SQL Agent job goes here
ExcludeJobSteps = $false
@nanoDBA
nanoDBA / Proposed SQL Server Patching Approach.txt
Last active February 26, 2023 19:37
An approach I've been using for the last 4 years or so to deploy SQL Server Cumulative Updates
Proposed SQL Server Patching Approach
We do not patch to the absolute latest cumulative update(CU).
Rather, we strive to patch to the cumulative update(CU) that
was released without any intermediate releases(such as hotfixes)
between it and the most recent CU. Basically N-1 as long as
there aren't any hotfixes. If there were hotfixes then we'll wait
until two CU subsequent releases have occurred
without hotfixes in between the two to deploy the CU.
@nanoDBA
nanoDBA / Remove-SoundAndStillness.ps1
Last active August 13, 2024 07:40
FFmpeg Remove video frames without motion and remove audio track
$filename = "A:\Users\kilroy\Remove_lack_of_motion.mp4"
# Use ffprobe to extract the avg_frame_rate
$fpsFraction = ffprobe -v error -select_streams v:0 -show_entries stream=avg_frame_rate -of default=noprint_wrappers=1:nokey=1 "$filename"
$fps = Invoke-Expression "($fpsFraction)"
# Convert fractional fps to a numeric value if necessary
if ($fpsFraction -match "/") {
$fpsParts = $fpsFraction -split "/"
$fps = [double]$fpsParts[0] / [double]$fpsParts[1]
<#
.SYNOPSIS
BoxStarter script to configure Windows 10 development PC.
.DESCRIPTION
You might need to set:
Set-ExecutionPolicy RemoteSigned
Set-ExecutionPolicy Unrestricted
Set-ExecutionPolicy Bypass