L'utilità SQLCMD è scritta in .NET 2.0 e comunica con SQL Server via Client SQL Nativo oppure via ODBC. Fornisce un ambiente di scripting ricco di funzionalità (tra cui una primitiva gestione degli errori) in grado di mettere l'utente nelle condizioni di compiere sul server attività di elevata complessità.
È uno strumento poliedrico, perchè sia l'amministratore di sistema (per la creazione di script di manutenzione per database o tabelle) sia lo sviluppatore (per la creazione di sofisticati wizard di installazione dei database in grado modificare le proprie azioni in funzione delle variabili selezionate dall'utente) possono beneficiare del suo utilizzo.
Le precedenti versioni di SQL Server (6.5, 7.0, 2000) erano già in possesso di programmi di utilità simili quali osql e isql. In SQL Server 2005, osql è stato pensionato mentre isql eliminato (la compatibilità con gli script osql viene comunque mantenuta). SQLCMD può essere utilizzata in tre modi:
1.Come utilità della riga di comando. Esegue gli script dalla finestra DOS impostando gli switches opportuni per la connessione, le variabili, ecc.... SQLCMD -S ./SQLEXPRESS -i "creadb.sql" -v dbname="NomeDB"
2.In modalità grafica da SQL Server Management Studio. All'interno del nuovo ambiente di gestione di SQL Server 2005 (il vecchio QA) c'è la possibilità di editare gli script SQLCMD (anche con la colorazione della sintassi).
3.Interattivamente, per eseguire query SQL. Come il vecchio osql sostanzialmente.
es: lancio un bacth per fare backup Sql
SQLCMD -S NAVSERVER -i "D:\SQL_BACKUP\On_demand_bk\BackupOnDemand.sql" -U sa -P !sqlnav01!
BackupOnDemand.sql
BACKUP DATABASE [AdventureWorks] TO
DISK = N'\\nas\Backup\L40\SQL2005\AdventureWorks_backup_200702120215.bak'
WITH NOFORMAT, NOINIT, NAME = N'AdventureWorks-Full Database Backup',
SKIP, NOREWIND, NOUNLOAD, STATS = 10
RestoreOnDemand.sql
RESTORE DATABASE [AdventureWorksNew]
FROM DISK = N'\\nas\Backup\L40\SQL2005\AdventureWorks_backup_200702120215.bak'
WITH FILE = 1,
MOVE N'AdventureWorks_Data' TO N'C:\Data\MSSQL.1\MSSQL\Data\AdventureWorksNew_Data.mdf',
MOVE N'AdventureWorks_Log' TO N'C:\Data\MSSQL.1\MSSQL\Data\AdventureWorksNew_Log.ldf',
NOUNLOAD, STATS = 10