5 min read
Essential Azure Data Studio Extensions
Azure Data Studio’s extension ecosystem dramatically enhances its capabilities. This guide covers essential extensions for database developers and administrators working with Azure and SQL Server.
Top Extensions
Admin Pack for SQL Server
# Install via Extensions marketplace
# Search: "Admin Pack for SQL Server"
# Features:
# - SQL Server Agent management
# - SQL Profiler
# - Server Reports
# - Import/Export wizard
-- With Admin Pack, you can run Agent jobs directly
-- Right-click on SQL Server Agent > Jobs > Start Job
-- View server reports for quick insights
-- Right-click database > Reports
Schema Compare
# Install: "Schema Compare" extension
# Features:
# - Compare database schemas
# - Generate deployment scripts
# - Sync schemas between environments
// Schema compare workflow
// 1. Open command palette (Ctrl+Shift+P)
// 2. Search "Schema Compare: New Schema Comparison"
// 3. Select source and target
// 4. Run comparison
// 5. Generate update script or apply changes
DACPAC Extension
# Enables working with Data-tier Applications
# Extract DACPAC from database
# Right-click database > Data-tier Application Wizard > Extract
# Deploy DACPAC to database
# Right-click Databases > Data-tier Application Wizard > Deploy
SQL Database Projects
# Install: "SQL Database Projects" extension
# Create a new database project
# File > New Project > SQL Database Project
-- Project structure
/*
MyDatabaseProject/
├── dbo/
│ ├── Tables/
│ │ ├── Customers.sql
│ │ └── Orders.sql
│ ├── Views/
│ │ └── vw_CustomerOrders.sql
│ ├── Stored Procedures/
│ │ └── sp_GetCustomerOrders.sql
│ └── Functions/
│ └── fn_CalculateTotal.sql
├── Security/
│ ├── Roles/
│ └── Users/
├── MyDatabaseProject.sqlproj
└── .gitignore
*/
<!-- Sample .sqlproj file -->
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="4.0">
<PropertyGroup>
<Name>MyDatabaseProject</Name>
<DSP>Microsoft.Data.Tools.Schema.Sql.SqlAzureV12DatabaseSchemaProvider</DSP>
<ModelCollation>1033, CI</ModelCollation>
</PropertyGroup>
<ItemGroup>
<Build Include="dbo\Tables\Customers.sql" />
<Build Include="dbo\Tables\Orders.sql" />
<Build Include="dbo\Stored Procedures\sp_GetCustomerOrders.sql" />
</ItemGroup>
</Project>
PostgreSQL Extension
# Install: "PostgreSQL" extension
# Connect to PostgreSQL databases
# Azure Database for PostgreSQL
# Amazon RDS PostgreSQL
# Local PostgreSQL
-- PostgreSQL queries in Azure Data Studio
SELECT
table_name,
pg_size_pretty(pg_total_relation_size(quote_ident(table_name))) AS size
FROM information_schema.tables
WHERE table_schema = 'public'
ORDER BY pg_total_relation_size(quote_ident(table_name)) DESC;
MySQL Extension
# Install: "MySQL" extension
# Connect to MySQL/MariaDB databases
# Azure Database for MySQL
# Local MySQL instances
SandDance for Data Exploration
# Install: "SandDance for Azure Data Studio"
# Visual data exploration
# Run a query, then click the SandDance icon in results
-- Query data, then visualize with SandDance
SELECT
Category,
Region,
SUM(Sales) AS TotalSales,
COUNT(*) AS TransactionCount
FROM dbo.SalesData
GROUP BY Category, Region;
-- After results appear, click SandDance icon for interactive visualization
PowerShell Extension
# Install: "PowerShell" extension
# Run PowerShell scripts directly in Azure Data Studio
# Integrate with dbatools for SQL Server management
# Example: Database backup script
Import-Module dbatools
$servers = @("server1", "server2", "server3")
$backupPath = "\\backup\sqlbackups"
foreach ($server in $servers) {
$databases = Get-DbaDatabase -SqlInstance $server -ExcludeSystem
foreach ($db in $databases) {
Backup-DbaDatabase `
-SqlInstance $server `
-Database $db.Name `
-Path $backupPath `
-CompressBackup `
-Checksum
}
}
Redgate SQL Search
# Install: "Redgate SQL Search"
# Search across all database objects
# Find dependencies
# Navigate code quickly
Creating Custom Extensions
// package.json for a custom extension
{
"name": "my-custom-extension",
"displayName": "My Custom Extension",
"version": "1.0.0",
"engines": {
"vscode": "^1.50.0",
"azdata": ">=1.25.0"
},
"categories": ["Other"],
"activationEvents": [
"onCommand:myExtension.runHealthCheck"
],
"contributes": {
"commands": [
{
"command": "myExtension.runHealthCheck",
"title": "Run Database Health Check"
}
],
"menus": {
"objectExplorer/item/context": [
{
"command": "myExtension.runHealthCheck",
"when": "nodeType == Database",
"group": "myExtension"
}
]
}
}
}
// extension.ts
import * as azdata from 'azdata';
import * as vscode from 'vscode';
export function activate(context: vscode.ExtensionContext) {
let disposable = vscode.commands.registerCommand(
'myExtension.runHealthCheck',
async () => {
const connection = await azdata.connection.getCurrentConnection();
if (!connection) {
vscode.window.showErrorMessage('No active connection');
return;
}
const provider = azdata.dataprotocol.getProvider<azdata.QueryProvider>(
connection.providerId,
azdata.DataProviderType.QueryProvider
);
const query = `
SELECT
'Database Size' AS Metric,
CAST(SUM(size * 8 / 1024) AS VARCHAR) + ' MB' AS Value
FROM sys.master_files
WHERE database_id = DB_ID()
UNION ALL
SELECT
'Table Count',
CAST(COUNT(*) AS VARCHAR)
FROM sys.tables
`;
// Execute and display results
const uri = await azdata.queryeditor.connect(
connection.connectionId,
connection.options.database
);
await azdata.queryeditor.runQuery(uri, query);
}
);
context.subscriptions.push(disposable);
}
Recommended Extension Pack
// Create an extension pack for your team
{
"name": "dba-extension-pack",
"displayName": "DBA Extension Pack",
"description": "Essential extensions for database administrators",
"version": "1.0.0",
"extensionPack": [
"microsoft.admin-pack",
"microsoft.schema-compare",
"microsoft.sql-database-projects",
"microsoft.dacpac",
"redgate.sql-search",
"microsoft.powershell"
]
}
Extension Management
# List installed extensions
azuredatastudio --list-extensions
# Install extension from command line
azuredatastudio --install-extension publisher.extension-name
# Uninstall extension
azuredatastudio --uninstall-extension publisher.extension-name
# Disable extension
# Preferences > Extensions > Find extension > Disable
Extensions transform Azure Data Studio into a comprehensive database development platform.