Uh oh!
There was an error while loading.Please reload this page.
- Notifications
You must be signed in to change notification settings - Fork847
🚀 SQL Server automation and instance migrations have never been safer, faster or freer
License
dataplat/dbatools
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
Migrate SQL Server instances in minutes instead of days. Test hundreds of backups automatically. Find that one database across 50 servers. dbatools is a PowerShell module with nearly 700 commands that replace manual SQL Server administration with powerful and fun automation.
Performance at Scale: Migrate terabyte databases in under an hour. Test 1000+ backups per hour. Manage 100+ SQL instances from a single console.
- Why dbatools?
- Quick Start
- System Requirements
- Common Use Cases
- Installation
- Getting Help
- Advanced Usage
- Troubleshooting
- Community & Support
- Contributing
Traditional Methods | dbatools |
---|---|
SSMS: Click through 50 servers manually | PowerShell: Query all 50 servers in one command |
Migration: Days of planning and execution | Migration: Minutes with automated best practices |
Backup Testing: Manual restores, hope for the best | Backup Testing: Automated verification of all backups |
Documentation: Hours of manual collection | Documentation: Instant HTML/Excel reports |
Scripting: Complex T-SQL across versions | Scripting: Consistent commands for SQL 2000-2022 |
# Check your PowerShell version (v3+ required for Windows, Core 7.4+ for Linux/macOS)$PSVersionTable.PSVersion# Install (Windows/Linux/macOS)Install-Module dbatools-Scope CurrentUser# See your databasesGet-DbaDatabase-SqlInstance localhost# Check your backupsGet-DbaLastBackup-SqlInstance localhost|Format-Table# Test your last backup (yes, really!)Test-DbaLastBackup-SqlInstance localhost
Version | Commands Supported |
---|---|
SQL Server 2000 | 75% |
SQL Server 2005 | 90% |
SQL Server 2008/R2 | 93% |
SQL Server 2012+ | 100% |
Azure SQL VM | As per version above |
Azure SQL Database | 40% |
Azure SQL Managed Instance | 60% |
Containers/Kubernetes | 75% |
OS | Commands Supported | PowerShell Required |
---|---|---|
Windows 7/8/10/11 | 100% | v3+ |
Windows Server 2008 R2+ | 100% | v3+ |
Linux (Intel/ARM64) | 78% | Core 7.4.0+ |
macOS (Intel/M1) | 78% | Core 7.4.0+ |
💡Note: Commands requiring SQL WMI or-ComputerName
parameter typically don't work on Linux/macOS.
For remote SQL Server management, ensure these ports are accessible:
Protocol | Default Port | Used By | Required For | Firewall Note |
---|---|---|---|---|
SQL Database Engine | 1433 | Get-DbaDatabase | 62% of commands | Allow inbound on SQL Server |
WS-Management | 5985/5986 | New-DbaClientAlias | 25% of commands | Windows Remote Management |
SQL WMI | 135 | Enable-DbaAgHadr | 4% of commands | DCOM/RPC endpoint mapper |
SMB | 445 | Backup-DbaDatabase | 4% of commands | File sharing for backups |
Firewall Tip: Create a dedicated Windows Firewall rule group for dbatools management traffic.
# Backup all databasesGet-DbaDatabase-SqlInstance sql01|Backup-DbaDatabase# Simple restoreRestore-DbaDatabase-SqlInstance sql01-Path"C:\temp\mydb.bak"# Test ALL your backups on a different serverTest-DbaLastBackup-SqlInstance sql01-Destination sql02|Out-GridView
# Migrate entire SQL instance with one command$params=@{Source='sql01'Destination='sql02'BackupRestore=$trueSharedPath='\\nas\temp'}Start-DbaMigration@params-Force# Copy jobs between serversCopy-DbaAgentJob-Source sql01-Destination sql02
# Find databases without recent backupsGet-DbaLastBackup-SqlInstance sql01|Where-Object LastFullBackup-lt (Get-Date).AddDays(-7)# Check for corruptionGet-DbaLastGoodCheckDb-SqlInstance sql01|Out-GridView# Monitor currently running queriesInstall-DbaWhoIsActive-SqlInstance sql01-Database masterInvoke-DbaWhoIsActive-SqlInstance sql01
# Find databases across multiple serversFind-DbaDatabase-SqlInstance sql01, sql02, sql03-Pattern"Production"# Find stored procedures containing specific textFind-DbaStoredProcedure-SqlInstance sql01-Pattern"INSERT INTO Audit"# Discover SQL instances on networkFind-DbaInstance-ComputerName server01, server02
# Check your PowerShell version$PSVersionTable.PSVersion# Set execution policy (one-time setup)Set-ExecutionPolicy-ExecutionPolicy RemoteSigned-Scope CurrentUser# Trust PowerShell Gallery (one-time setup)Set-PSRepository-Name PSGallery-InstallationPolicy Trusted
Install-Module dbatools-Scope CurrentUser
Install-Module dbatools
# On internet-connected machine:Save-Module-Name dbatools-Path C:\temp# Copy to target machine and place in:# - All users: C:\Program Files\WindowsPowerShell\Modules# - Current user: $HOME\Documents\WindowsPowerShell\Modules# Import the module after copyingImport-Module dbatools
Starting with v2.5.5, dbatools uses Microsoft Azure Trusted Signing. When upgrading from older versions:
Install-Module dbatools-Force-SkipPublisherCheck
# Detailed help for any commandGet-HelpTest-DbaLastBackup-Full# Find commandsGet-Command-Module dbatools*backup*Find-DbaCommand-Tag Migration# Online helpGet-HelpTest-DbaLastBackup-Online
Resources:
$cred=Get-Credential sqladminGet-DbaDatabase-SqlInstance sql01-SqlCredential$cred
$cred=Get-Credential ad\winadminGet-DbaDiskSpace-ComputerName sql01-Credential$cred
# Using colon or comma for non-default portsGet-DbaDatabase-SqlInstance'sql01:55559'Get-DbaDatabase-SqlInstance'sql01,55559'# Note: quotes required
# Import module before starting transcript (PS 5.1 requirement)Import-Module dbatoolsStart-TranscriptGet-DbaDatabase-SqlInstance sql01Stop-Transcript
Issue: "Could not connect to SqlInstance"
# Test connectivityTest-DbaConnection-SqlInstance sql01# Check if SQL Browser service is running for named instancesGet-DbaService-ComputerName sql01-Type Browser
Issue: "Access denied" errors
# Ensure you have proper SQL permissionsGet-DbaLogin-SqlInstance sql01-Login$env:USERNAME# For Windows authentication issues, verify domain connectivityTest-ComputerSecureChannel
Issue: Module won't import
# Check execution policyGet-ExecutionPolicy# Force reimport if neededRemove-Module dbatools-Force-ErrorAction SilentlyContinueImport-Module dbatools-Force
For more troubleshooting help, visit ourtroubleshooting guide or ask inSlack.
Get Involved:
- ⭐ Star this repository
- 🐛Report issues
- 💡Request features
- 🤝Contribute code
Community Channels:
Stats:
- 📦 7+ million downloads onPowerShell Gallery
- 👥 250+ contributors
- 🎯 700+ commands
- 🚀 10+ years of active development
We'd love to have you join us! Check out ourContributing Guide and thedbatools-dev Slack channel.
dbatools is licensed under theMIT License.
Thank you to all ourcontributors and the SQL Server community for making this project possible.
About
🚀 SQL Server automation and instance migrations have never been safer, faster or freer
Topics
Resources
License
Code of conduct
Contributing
Uh oh!
There was an error while loading.Please reload this page.
Stars
Watchers
Forks
Sponsor this project
Uh oh!
There was an error while loading.Please reload this page.
Packages0
Uh oh!
There was an error while loading.Please reload this page.