SQLCMD Syntax Support for VS Code
Estensione VS Code completa per il supporto della sintassi SQLCMD (SQL Server Command Line).
Funzionalità
✨ Syntax Highlighting
- Evidenziazione completa dei comandi SQLCMD (
:r, :setvar, :connect, ecc.)
- Evidenziazione delle variabili
$(VariableName)
- Supporto per separatori batch
GO
- Syntax highlighting SQL standard (keywords, funzioni, commenti, stringhe)
🔍 Validazione in Tempo Reale
- Verifica che i file inclusi con
:r esistano
- Controllo variabili non definite
- Warning per variabili senza valore
- Suggerimenti per convenzioni di codice
💡 IntelliSense
- Autocompletamento comandi SQLCMD
- Hover su variabili mostra valore e definizione
- Go to Definition per file inclusi con
:r
- Snippets per comandi comuni
📝 Snippets Predefiniti
:r - Include file
:setvar - Definisci variabile
$() - Usa variabile
go - Batch separator
- Template per post-deployment scripts
- Gestione trigger (enable/disable)
Installazione
Metodo 1: Da Source (Consigliato per Sviluppo)
Prerequisiti:
npm install -g @vscode/vsce typescript
Compila l'estensione:
cd sqlcmd-support
npm install
npm run compile
Crea il package VSIX:
vsce package
Installa in VS Code:
- Apri VS Code
- Vai a Extensions (Ctrl+Shift+X)
- Click sui tre puntini (...) → "Install from VSIX..."
- Seleziona il file
sqlcmd-support-1.0.0.vsix generato
Metodo 2: Sviluppo Locale
Copia la cartella sqlcmd-support in:
- Windows:
%USERPROFILE%\.vscode\extensions\
- macOS/Linux:
~/.vscode/extensions/
Riavvia VS Code
Compila con:
cd ~/.vscode/extensions/sqlcmd-support
npm install
npm run compile
Configurazione
Vai a Settings (Ctrl+,) e cerca "SQLCMD":
{
// Valida che i file :r esistano
"sqlcmd.validateIncludes": true,
// Evidenzia le variabili SQLCMD
"sqlcmd.highlightVariables": true
}
Uso
Associazione File
L'estensione si attiva automaticamente per:
- File
.sqlcmd
- File
.sql (con rilevamento automatico sintassi SQLCMD)
Per forzare il linguaggio SQLCMD su un file .sql:
- Click sulla lingua in basso a destra (o Ctrl+K M)
- Seleziona "SQLCMD"
Comandi Disponibili
- SQLCMD: Validate File - Valida il file corrente (Ctrl+Shift+P → "SQLCMD: Validate File")
Esempio di Utilizzo
/*
Post-Deployment Script
*/
SET NOCOUNT ON;
GO
-- Definisci variabili
:setvar DatabaseName MyDatabase
:setvar BackupPath C:\Backups
-- Usa variabili
USE [$(DatabaseName)];
GO
-- Include file esterni
:r .\Scripts\CreateTables.sql
GO
:r .\Scripts\SeedData.sql
GO
PRINT 'Deployment completato per database $(DatabaseName)';
GO
Funzionalità Avanzate
Hover su Variabili
Passa il mouse su $(VariableName) per vedere:
- Nome della variabile
- Valore definito
- Avviso se non definita
Go to Definition
Ctrl+Click su un path di file in :r .\path\to\file.sql per aprire il file.
Snippets
Digita l'abbreviazione e premi Tab:
post-deploy → Template completo per script post-deployment
disable-trigger → Disabilita trigger con controllo
enable-trigger → Riabilita trigger
check-exists → Controlla se tabella ha dati
Specifiche SQLCMD Supportate
Comandi
:r <filepath> - Include file esterni
:setvar <var> <value> - Definisce variabili
$(<var>) - Riferimento variabili
:connect <server> - Connessione server
:on error [exit|ignore] - Gestione errori
:out <filepath> - Output su file
:!! <command> - Esegui comando shell
GO [count] - Separatore batch
Pattern Riconosciuti
- Commenti:
-- e /* */
- Stringhe:
'...' e "..."
- Numeri: Interi e decimali
- Keywords SQL: CREATE, SELECT, INSERT, UPDATE, DELETE, ecc.
- Funzioni SQL: COUNT, SUM, AVG, GETDATE, CAST, ecc.
Sviluppo
Struttura Progetto
sqlcmd-support/
├── package.json # Manifest estensione
├── tsconfig.json # Configurazione TypeScript
├── src/
│ └── extension.ts # Logica principale
├── syntaxes/
│ └── sqlcmd.tmLanguage.json # Grammatica TextMate
├── snippets/
│ └── sqlcmd.json # Snippets
└── language-configuration.json # Configurazione linguaggio
Build e Test
# Installa dipendenze
npm install
# Compila TypeScript
npm run compile
# Compila in watch mode
npm run watch
# Crea package
vsce package
Debug
- Apri il progetto in VS Code
- Premi F5 per avviare Extension Development Host
- Apri un file
.sql o .sqlcmd nella finestra di debug
Troubleshooting
L'estensione non si attiva
- Verifica che il file sia
.sql o .sqlcmd
- Controlla che la lingua sia impostata su "SQLCMD" (in basso a destra)
- Riavvia VS Code
Sintassi non evidenziata
- Compila l'estensione:
npm run compile
- Ricarica finestra: Ctrl+Shift+P → "Developer: Reload Window"
Validazione non funziona
- Controlla le impostazioni:
sqlcmd.validateIncludes
- Verifica che i path dei file siano corretti
- Usa path relativi o assoluti
Contribuire
Pull requests sono benvenute! Per cambiamenti importanti:
- Fork il repository
- Crea un branch per la feature (
git checkout -b feature/AmazingFeature)
- Commit le modifiche (
git commit -m 'Add AmazingFeature')
- Push al branch (
git push origin feature/AmazingFeature)
- Apri una Pull Request
Roadmap
- [ ] Supporto per debugging SQLCMD
- [ ] Integrazione con SQL Server Management Studio
- [ ] Formattazione automatica codice
- [ ] Refactoring variabili
- [ ] Test runner integrato
- [ ] Supporto per template project
Licenza
MIT License - vedi LICENSE per dettagli
Autore
Michele - Newevo.com
Riconoscimenti
- Basato sulle specifiche ufficiali SQLCMD di Microsoft
- Grammatica TextMate ispirata alle convenzioni VS Code
- Community VS Code per le best practices
Enjoy! 🚀