Skip to content

Instantly share code, notes, and snippets.

View SQLvariant's full-sized avatar

Aaron Nelson SQLvariant

View GitHub Profile
@SQLvariant
SQLvariant / AdventureWorksDW2017_ExportExcel.ps1
Last active March 14, 2019 13:01
Export every table in the AdventureWorksDW2017 db to Excel
#Requires -Modules SqlServer
#Requires -Modules ImportExcel
<# The AdventureWorksDW2017 only has 29 tables and they're all under 1 million rows.#>
cd SQLSERVER:\SQL\LocalHost\SQL2017\Databases\AdventureWorksDW2017\Tables
<# Scenario #1 A) all Dimensions in a single file,
and B) each Fact table in their own file. #>
<# A) Every Dimension table in a worksheet named after the table, the same Excel file #>
dir | WHERE { $_.name -like 'dim*' } |
@SQLvariant
SQLvariant / Get-History2.ps1
Created March 19, 2019 17:28
Simple function to give you the duration of all command history in PowerShell
function Get-History2
{
Get-History |
SELECT Id, @{Label="TotalRunningTime";Expression={$_.EndExecutionTime - $_.StartExecutionTime}}, CommandLine, ExecutionStatus, StartExecutionTime, EndExecutionTime
}
@SQLvariant
SQLvariant / Get-MachineInfo.ps1
Created March 19, 2019 18:37
Simple PowerShell function to retrieve OS info from a Windows machine.
function Get-MachineInfo($ServerName="localhost")
{
Get-WmiObject win32_computersystem -ComputerName $ServerName |
SELECT DNSHostName,
Manufacturer,
Model,
SystemType,
@{Name="TotalPhysicalMemoryInMB";Expression={"{0:n2}" -f($_.TotalPhysicalMemory/1mb)}},
NumberOfLogicalProcessors,
NumberOfProcessors,
@SQLvariant
SQLvariant / Export-CSV-Append.ps1
Created March 19, 2019 18:41
PowerShell proxy cmdlet – function which wraps standard Export-CSV cmdlet but adds handling of the -Append parameter
#Requires -Version 2.0
<#
This Export-CSV behaves exactly like native Export-CSV
However it has one optional switch -Append
Which lets you append new data to existing CSV file: e.g.
Get-Process | Select ProcessName, CPU | Export-CSV processes.csv -Append
For details, see
http://dmitrysotnikov.wordpress.com/2010/01/19/export-csv-append/
@SQLvariant
SQLvariant / Find-MostRecentFullBackup.ps1
Created March 28, 2019 12:59
Find the file-name of the most recent Full Database Backup for a SQL Server database
function Find-MostRecentFullBackup([string]$ServerInstance, $database="master"){
#$db = "Adventureworks"
$rs = Invoke-Sqlcmd -ServerInstance $ServerInstance -Database msdb -Query "
WITH LatestBackupSet (database_name, BackupsAgo, backup_start_date, media_set_id)
AS
(
SELECT database_name
, ROW_NUMBER() OVER (PARTITION BY database_name ORDER BY backup_start_date DESC) AS 'BackupsAgo'
, backup_start_date
@SQLvariant
SQLvariant / DockerDesktop-with-SQL-PowerShell-1.ps1
Created April 1, 2019 21:37
Create a SQL-on-Linux Docker Container and Restore the AdventureWorks2016 Database
<# 0A) Before any of this can work, you must have Docker Destop running.
You must also have the latest SqlServer module installed from the PowerShell Gallery.#>
Install-Module SqlServer
<# 0B) Use this code to download the AdventureWorks2016.bak file from GitHub: #>
$BakURL = "https://github.com/Microsoft/sql-server-samples/releases/download/adventureworks/AdventureWorks2016.bak";
$BakFile = "$($Home)/Downloads/AdventureWorks2016.bak";
Invoke-WebRequest -Uri $BakURL -OutFile $BakFile;
<# 1) Create a SQL-on-Linux Docker Container with just the code below.
@SQLvariant
SQLvariant / DockerDesktop-with-SQL-PowerShell-2.ps1
Created April 9, 2019 00:47
Create a SQL-on-Linux Docker Container with a Host Mount and Restore the 5 AdventureWorks Databases
<# 0A) Before any of this can work, you must have Docker Destop running.
You must also have the latest SqlServer module installed from the PowerShell Gallery.#>
Install-Module SqlServer
<# 0B) Use this code to download the AdventureWorks2016.bak file from GitHub: #>
$BakURL = "https://github.com/Microsoft/sql-server-samples/releases/download/adventureworks/AdventureWorks2016.bak";
$BakFile = "$($Home)/Downloads/AdventureWorks2016.bak";
Invoke-WebRequest -Uri $BakURL -OutFile $BakFile;
<# 1) Create a SQL-on-Linux Docker Container with just the code below.
@SQLvariant
SQLvariant / Start-Pomodoro.ps1
Last active April 29, 2019 16:30
A PowerShell function to create Pomodoro timer. Defaults to 25 minute timer.
<# PLEASE NOTE: I am not the original author of this function.
I found it online years ago, and have been using it ever since.
If you are the original author, please ping me and let me know,
so I can give you proper credit.
Based on another function in the PowerShell Gallery, the orginial author might be Nathan.Run() http://nathanhoneycutt.net/blog/a-pomodoro-timer-in-powershell/
#>
Function Start-Pomodoro
{
Param (
@SQLvariant
SQLvariant / BuildContainer_FromImage.ps1
Last active April 30, 2019 17:50
simple dockerfile for building a SQL-on-Linux container. Place this file in your c:\temp directory
<# Step 0)
Put the dockerfile & AdventureWorks2016.bak into your c:\temp
#>
$dockerfileURL = "https://gist.githubusercontent.com/SQLvariant/ebe7fa49216badb6b53339818ca1eda9/raw/ded3e7f988309d311b6f389257e499cb66d5dd39/dockerfile";
$dockerfile = c:\temp\BuildContainer_FromImage.ps1;
Invoke-WebRequest -Uri $dockerfileURL -OutFile $dockerfile;
Copy-Item -Path "$($Home)\Downloads\AdventureWorks2016.bak" -Destination C:\temp
<# First, build the image #>
@SQLvariant
SQLvariant / ExtractISPAC_fromSSISDB.ps1
Created May 4, 2019 17:33
Extract an .ISPAC from an SSIS Catalog and write to disk via SSIS PowerShell Provider
<# This is the SSIS Project once it's deployed #>
$Proj = Get-Item 'SQLSERVER:\SSIS\localhost\SQL2017\Catalogs\SSISDB\Folders\ProviderSolution\Projects\TestSSISProject'
$Proj | Get-Member -MemberType Methods
<# This is the theory I have #>
[byte[]] $ProjBytes = $Proj.GetProjectBytes()
[System.IO.File]::WriteAllBytes('C:\temp\ASSISPrj.ispac',$ProjBytes)
<# Dont run this piece of code, you will hate me. #>
$Proj.GetProjectBytes()