PowerShell Gallery Downloads Build Status GitHub Stars
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 databases Get-DbaDatabase -SqlInstance localhost # Check your backups Get-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 databases Get-DbaDatabase -SqlInstance sql01 | Backup-DbaDatabase # Simple restore Restore-DbaDatabase -SqlInstance sql01 -Path "C:\temp\mydb.bak" # Test ALL your backups on a different server Test-DbaLastBackup -SqlInstance sql01 -Destination sql02 | Out-GridView
# Migrate entire SQL instance with one command $params = @{ Source = 'sql01' Destination = 'sql02' BackupRestore = $true SharedPath = '\\nas\temp' } Start-DbaMigration @params -Force # Copy jobs between servers Copy-DbaAgentJob -Source sql01 -Destination sql02
# Find databases without recent backups Get-DbaLastBackup -SqlInstance sql01 | Where-Object LastFullBackup -lt (Get-Date).AddDays(-7) # Check for corruption Get-DbaLastGoodCheckDb -SqlInstance sql01 | Out-GridView # Monitor currently running queries Install-DbaWhoIsActive -SqlInstance sql01 -Database master Invoke-DbaWhoIsActive -SqlInstance sql01
# Find databases across multiple servers Find-DbaDatabase -SqlInstance sql01, sql02, sql03 -Pattern "Production" # Find stored procedures containing specific text Find-DbaStoredProcedure -SqlInstance sql01 -Pattern "INSERT INTO Audit" # Discover SQL instances on network Find-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 copying Import-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 command Get-Help Test-DbaLastBackup -Full # Find commands Get-Command -Module dbatools *backup* Find-DbaCommand -Tag Migration # Online help Get-Help Test-DbaLastBackup -Online
Resources:
- π Documentation
- π Command Reference
- π° Blog
- π¬ Slack Community
$cred = Get-Credential sqladmin Get-DbaDatabase -SqlInstance sql01 -SqlCredential $cred
$cred = Get-Credential ad\winadmin Get-DbaDiskSpace -ComputerName sql01 -Credential $cred
# Using colon or comma for non-default ports Get-DbaDatabase -SqlInstance 'sql01:55559' Get-DbaDatabase -SqlInstance 'sql01,55559' # Note: quotes required
# Import module before starting transcript (PS 5.1 requirement) Import-Module dbatools Start-Transcript Get-DbaDatabase -SqlInstance sql01 Stop-Transcript
Issue: "Could not connect to SqlInstance"
# Test connectivity Test-DbaConnection -SqlInstance sql01 # Check if SQL Browser service is running for named instances Get-DbaService -ComputerName sql01 -Type Browser
Issue: "Access denied" errors
# Ensure you have proper SQL permissions Get-DbaLogin -SqlInstance sql01 -Login $env:USERNAME # For Windows authentication issues, verify domain connectivity Test-ComputerSecureChannel
Issue: Module won't import
# Check execution policy Get-ExecutionPolicy # Force reimport if needed Remove-Module dbatools -Force -ErrorAction SilentlyContinue Import-Module dbatools -Force
For more troubleshooting help, visit our troubleshooting guide or ask in Slack.
Get Involved:
- β Star this repository
- π Report issues
- π‘ Request features
- π€ Contribute code
Community Channels:
Stats:
- π¦ 7+ million downloads on PowerShell Gallery
- π₯ 250+ contributors
- π― 700+ commands
- π 10+ years of active development
We'd love to have you join us! Check out our Contributing Guide and the dbatools-dev Slack channel.
dbatools is licensed under the MIT License.
Thank you to all our contributors and the SQL Server community for making this project possible.