O SQLServer 2005 introduziu algo chamado SQLCMD Mode msdn link .
À primeira vista, este modo adiciona substituição de variável de arquivos em lote de linha de comando e alguns escapes para comandos do sistema operacional.
Esse recurso é usado em seus ambientes, produção ou teste?
Eu uso o modo sqlcmd no SSMS ocasionalmente. Normalmente, ao migrar bancos de dados de um ambiente para outro. Por exemplo, se eu precisar fazer backup do banco de dados da produção e restaurá-lo para dev, farei tudo isso em um script usando o modo SQLCMD para alternar servidores. Eu costumava usar aqui e ali para uma coisa ou outra, mas não uso com tanta frequência.
Eu uso isso ativamente ao implantar logshipping, pois me permite fazer tudo em um único script conectando-se aos servidores primário, monitor e secundário.
Usei-o também no processamento de dados antes de migrarmos para o SSIS. É definitivamente um recurso útil.
Estou usando o modo sqlcmd principalmente para alterar servidores em um único script. Mas o recurso mais interessante para mim é que posso combinar lotes e arquivos sql em um único pacote (uma combinação de execução de um relatório + um pacote ssis para importar/exportar dados em arquivo csv + alguns scripts de alteração de dados).
Pode-se executar arquivos sql a partir de lotes usando parâmetros fornecidos a partir de um arquivo de lote central que executa tudo e possui todos os parâmetros em um só lugar. Isso é uma coisa doce para mim!
Acho SQLCMD uma ótima ferramenta, substitui os antigos ISQL e OSQL a partir do sql server 2k5. Ele permite inserir instruções TSQL, procedimentos do sistema e arquivos de script no prompt de comando. E MSSMS implementou chamadas desta ferramenta.
Eu uso o sqlcmd para executar scripts administrativos, trabalhos em lote e relatórios. Eu também uso o sqlsplus, que é como o Oracle SQL*Plus, mas para SQL Server (encontrei em www.sqlsplus.com)