TL;DR: Este artigo analisa as novidades do SSMS 22.7: Schema Compare visual, formatador SQL integrado e suporte a variáveis SQLCMD. Essas ferramentas simplificam a adoção de práticas de Database DevOps sem sair do SSMS, reduzindo o atrito entre desenvolvimento e operações de banco de dados. Para empresas brasileiras, isso significa mais agilidade e consistência em deployments de SQL Server, com menor dependência de ferramentas externas pagas.
No início deste ano, a Microsoft introduziu os projetos SQL no SSMS com a carga de trabalho Database DevOps, trazendo o fluxo básico de criar, compilar e publicar para o SQL Server Management Studio. Com a versão 22.7, a empresa expande essa base com duas capacidades que profissionais de banco de dados pediam há tempos: um Schema Compare gráfico e um formatador SQL nativo. Além disso, o suporte a projetos SQL na modalidade Database DevOps (Preview) ganha variáveis SQLCMD no diálogo de publicação.
Sob a ótica de quem vive o dia a dia de operações de banco de dados no Brasil, essas funcionalidades não são apenas “mais um release”: elas representam um passo concreto para reduzir a dependência de ferramentas de terceiros e simplificar a adoção de práticas de Database DevOps sem a necessidade de sair do ambiente que a equipe já domina.
Como o Schema Compare gráfico acelera a consistência entre ambientes?
O Schema Compare (Preview) permite comparar duas definições de banco de dados, sejam elas provenientes de um banco conectado, de um projeto SQL ou de um arquivo .dacpac. A interface exibe as diferenças como um conjunto de ações necessárias para fazer o alvo corresponder à origem — muito similar a um diff do Git.
Figura: Schema Compare visualmente contrasta conjuntos de objetos de banco de dados, puxando de bancos de dados, projetos SQL ou arquivos .dacpac.
O fluxo é direto: selecione a origem e o destino, execute a comparação e revise os resultados em uma grade que agrupa diferenças por tipo de ação (adições, alterações e exclusões). Cada linha representa um objeto que difere entre as duas definições, e você pode detalhar para ver as diferenças T-SQL linha a linha — com visualização lado a lado ou inline. A partir daí, é possível incluir ou excluir alterações por objeto e depois gerar um script de atualização ou aplicar a mudança diretamente.
Onde o Schema Compare se torna ainda mais poderoso para o desenvolvimento contínuo é com arquivos .scmp. Um arquivo de comparação salva a definição completa da comparação (conexões de origem e destino, opções e tipos de objeto excluídos), permitindo reexecutar a mesma comparação posteriormente com um único clique. Para um time que precisa sincronizar regularmente um banco de desenvolvimento com o projeto SQL, isso transforma o processo em algo repetível e consistente.
As opções de comparação permitem ajustes granulares — ignorar espaços em branco, ordem de colunas, controlar se índices não presentes na origem devem ser removidos — dando o nível de controle necessário para cada ambiente.
Por que um formatador SQL nativo faz diferença na revisão de código?
Formatação consistente torna o T-SQL mais legível, revisável e manutenível — especialmente quando várias pessoas contribuem para o mesmo projeto SQL. O SSMS 22.7 introduz um formatador SQL integrado, acessível diretamente pelo menu de contexto (clique direito) em qualquer janela de editor T-SQL.
Figura: O código T-SQL fica mais legível quando formatado consistentemente; a opção Format SQL no menu de contexto aplica regras customizáveis ao seu código.
O formatador suporta diversas opções de estilo: casing de palavras-chave (maiúsculo, minúsculo ou PascalCase), tamanho da indentação, ponto e vírgula após instruções, e quebra de cláusulas como FROM, WHERE e JOIN. Opções de alinhamento permitem organizar corpos de cláusulas, definições de colunas e itens de SET. Listas multilinha controlam se colunas SELECT, predicados WHERE e valores INSERT ganham linhas próprias.
Para projetos SQL, o formatador se integra com a opção "Format on Save". Quando ativada, cada vez que você salva um arquivo .sql do projeto, ele é automaticamente formatado conforme suas regras configuradas. Isso mantém a consistência dos arquivos sem esforço adicional — especialmente valioso quando as mudanças passam por pull requests e code reviews.
A Microsoft afirma que continuará expandindo as opções disponíveis e incentiva o envio de feedback. O formatador é construído sobre a biblioteca open‑source .NET para parsing de T-SQL, o ScriptDOM (também conhecido como SqlScriptDOM). O repositório no GitHub aceita discussões de ideias, desafios e pull requests.
Como as variáveis SQLCMD eliminam a duplicação de código entre ambientes?
Deployments reais raramente têm um único ambiente. Strings de conexão, feature flags e valores específicos de cada ambiente precisam mudar entre dev, teste e produção, mas ninguém quer manter cópias separadas do código do banco. As variáveis SQLCMD resolvem isso criando tokens dinamicamente substituíveis nos objetos e scripts SQL, com valores definidos no momento do deploy.
Para adicionar uma variável SQLCMD ao seu projeto no SSMS, selecione o projeto no Solution Explorer e vá em Properties. Na seção SQLCMD Variables, especifique o nome da variável e, opcionalmente, um valor padrão.
Figura: As propriedades do projeto incluem variáveis SQLCMD, ampliando a flexibilidade dos deployments do seu projeto.
A variável é definida no arquivo .sqlproj:
<ItemGroup>
<SqlCmdVariable Include="EnvironmentName">
<DefaultValue>staging</DefaultValue>
<Value>$(SqlCmdVar__1)</Value>
</SqlCmdVariable>
</ItemGroup>
Uma vez definida, você referencia a variável em qualquer script SQL usando a sintaxe $(variableName). Por exemplo, executar lógica condicional com base no ambiente:
IF '$(EnvironmentName)' = 'testing'
BEGIN
-- insert test seed data
END
Figura: Com base nas entradas do diálogo de publicação, o SSMS calcula o plano de deployment dinâmico para o seu projeto. O mesmo processo pode ser feito via SqlPackage CLI em pipelines de CI/CD.
Novidade no SSMS 22.7: o diálogo Publish agora exibe as variáveis SQLCMD para que você defina seus valores diretamente ao fazer o deploy a partir do SSMS. Deployments rápidos podem ser feitos sem linha de comando. Quando chegar a hora de usar uma ferramenta de linha de comando para pipelines automatizados, o SqlPackage suporta as mesmas variáveis com a opção /v:
sqlpackage /Action:Publish /SourceFile:AdventureWorks.dacpac /TargetConnectionString:{connection_string} /v:EnvironmentName=production
Variáveis SQLCMD mantêm o código do banco flexível e manutenível, suportando as variações necessárias entre ambientes de deploy. Seja parametrizando um endpoint para sp_invoke_external_rest_endpoint ou alternando comportamento entre ambientes, você define a variável uma vez no projeto e fornece o valor no momento do deploy.
O que vem a seguir e como compartilhar feedback
Essas funcionalidades no SSMS 22.7 fazem parte de um investimento contínuo em tornar o Database DevOps prático e acessível. O roadmap trimestral mostra o que está por vir no ecossistema de projetos SQL. A Microsoft continuará lançando novas funcionalidades de Database DevOps e melhorias incrementais nas existentes.
Explore a documentação de todas as capacidades dos projetos SQL e experimente o Schema Compare, o SQL formatter e as variáveis SQLCMD no SSMS 22.7. Seu feedback molda diretamente as prioridades — envie comentários pelo menu Help > Send Feedback no SSMS ou pelo canal Developer Community.
Perguntas Frequentes
-
O Schema Compare no SSMS 22.7 funciona apenas com bancos SQL Server hospedados na Azure?
Não. O Schema Compare permite comparar definições entre bancos conectados (on‑premises ou cloud), projetos SQL (.sqlproj) e arquivos .dacpac, independentemente de onde o banco está hospedado. -
Preciso de alguma licença adicional para usar o formatador SQL integrado?
Não. O SQL formatter é nativo do SSMS 22.7 e está disponível sem custo extra para quem já utiliza o SQL Server Management Studio. Basta acessar o menu de contexto em qualquer janela de editor T‑SQL. -
As variáveis SQLCMD substituem a necessidade de utilizar ferramentas de CI/CD como o SqlPackage?
Elas complementam. As variáveis SQLCMD podem ser definidas no diálogo de Publish do SSMS, mas para pipelines automatizados o recomendado é utilizar o SqlPackage com a opção /v, mantendo a mesma flexibilidade. -
O formatador SQL possui suporte para format on save em projetos SQL?
Sim. Quando a opção 'Format on Save' está habilitada, ao salvar qualquer arquivo .sql do projeto, o código é automaticamente formatado conforme as regras configuradas, garantindo consistência sem esforço manual. -
Essas funcionalidades estão disponíveis em versões anteriores do SSMS?
Não. Schema Compare gráfico e o SQL formatter são novidades da versão 22.7 (Preview). As funcionalidades de SQL projects foram introduzidas em versões anteriores, mas essas capacidades específicas exigem a atualização para a 22.7.
Artigo originalmente publicado em Azure Updates - Latest from Azure Charts.