Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Aplica-se a:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Base de dados SQL no Microsoft Fabric
Você pode eliminar possíveis problemas de design e nomenclatura e evitar armadilhas de desempenho analisando o código do banco de dados. Os conceitos são muito semelhantes à realização de análise estática para detetar e corrigir defeitos no código gerenciado. Você configura quais regras de análise deseja aplicar ao código do banco de dados, analisa o código e, em seguida, corrige ou ignora os problemas identificados. Antes de analisar o código do banco de dados, você deve primeiro importar o esquema do banco de dados para um projeto de banco de dados. Para obter mais informações, consulte Começar a partir de um banco de dados existente.
Ao realizar a análise estática com as regras fornecidas, você pode identificar problemas que se enquadram nas seguintes categorias:
Problemas de design do T-SQL Problemas de design incluem código que pode não se comportar da maneira esperada, sintaxe preterida e problemas que podem causar problemas quando o design do banco de dados é alterado.
Problemas de nomenclatura do T-SQL Problemas de nomenclatura surgem se o nome de um objeto de banco de dados pode causar problemas inesperados ou violar convenções geralmente aceitas.
Problemas de desempenho do T-SQL Problemas de desempenho incluem código que pode reduzir visivelmente a velocidade na qual as operações de banco de dados são concluídas. Muitos desses problemas identificam o código que causará uma verificação de tabela quando o código for executado.
As regras de análise de código são extensíveis. Você pode criar suas próprias regras para impor seus próprios padrões de codificação. Para obter mais informações, consulte Visão geral da extensibilidade das regras de análise de código.
Exemplo de arquivo de projeto SQL e sintaxe
Um arquivo de projeto SQL pode conter duas propriedades, RunSqlCodeAnalysis e SqlCodeAnalysisRules. O elemento RunSqlCodeAnalysis especifica se a análise de código é executada quando o projeto é criado. Por padrão, todas as regras incluídas são executadas e a deteção de padrão de regra resulta em um aviso de compilação.
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build">
<Sdk Name="Microsoft.Build.Sql" Version="1.0.0" />
<PropertyGroup>
<Name>AdventureWorks</Name>
<DSP>Microsoft.Data.Tools.Schema.Sql.Sql160DatabaseSchemaProvider</DSP>
<ModelCollation>1033, CI</ModelCollation>
<RunSqlCodeAnalysis>True</RunSqlCodeAnalysis>
</PropertyGroup>
...
O elemento SqlCodeAnalysisRules especifica as regras e seu comportamento de erro/aviso. No exemplo a seguir, as regras Microsoft.Rules.Data.SR0006 e Microsoft.Rules.Data.SR0007 estão desabilitadas e uma deteção para a regra Microsoft.Rules.Data.SR0008 resultará em um erro de compilação.
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build">
<Sdk Name="Microsoft.Build.Sql" Version="1.0.0" />
<PropertyGroup>
<Name>AdventureWorks</Name>
<DSP>Microsoft.Data.Tools.Schema.Sql.Sql160DatabaseSchemaProvider</DSP>
<ModelCollation>1033, CI</ModelCollation>
<RunSqlCodeAnalysis>True</RunSqlCodeAnalysis>
<SqlCodeAnalysisRules>-Microsoft.Rules.Data.SR0006;-Microsoft.Rules.Data.SR0007;+!Microsoft.Rules.Data.SR0008</SqlCodeAnalysisRules>
</PropertyGroup>
...
Um arquivo StaticCodeAnalysis.SuppressMessages.xml pode ser adicionado ao projeto para suprimir descobertas específicas de análise de código. Exemplo seguinte elimina o aviso SR0001 para o procedimento armazenado no arquivo StoredProcedures/uspGetEmployeeManagers.sql.
<?xml version="1.0" encoding="utf-8" ?>
<StaticCodeAnalysis version="2" xmlns="urn:Microsoft.Data.Tools.Schema.StaticCodeAnalysis">
<SuppressedFile FilePath="StoredProcedures/uspGetEmployeeManagers.sql">
<SuppressedRule Category="Microsoft.Rules.Data" RuleId="SR0001" />
</SuppressedFile>
</StaticCodeAnalysis>
Regras fornecidas
Problemas de design do T-SQL
Quando você analisa o código T-SQL em seu projeto de banco de dados, um ou mais avisos podem ser categorizados como problemas de design. Você deve resolver problemas de design para evitar as seguintes situações:
- Alterações subsequentes no banco de dados podem quebrar aplicativos que dependem dele.
- O código pode não produzir o resultado esperado.
- O código pode quebrar se você executá-lo com versões futuras do SQL Server.
Em geral, você não deve suprimir um problema de design porque ele pode quebrar seu aplicativo, agora ou no futuro.
As regras fornecidas identificam os seguintes problemas de design:
- SR0001: Evite SELECT * em procedimentos armazenados, exibições e funções com valor de tabela
- SR0008: Considere usar SCOPE_IDENTITY em vez de @@IDENTITY
- SR0009: Evite usar tipos de comprimento variável de tamanho 1 ou 2
- SR0010: Evite usar sintaxe preterida ao unir tabelas ou exibições
- SR0013: O parâmetro de saída (parâmetro) não é preenchido em todos os caminhos de código
- SR0014: A perda de dados pode ocorrer ao transmitir de {Type1} para {Type2}
Problemas de nomenclatura do T-SQL
Quando você analisa o código T-SQL em seu projeto de banco de dados, um ou mais avisos podem ser categorizados como problemas de nomenclatura. Você deve resolver problemas de nomenclatura para evitar as seguintes situações:
- O nome especificado para um objeto pode entrar em conflito com o nome de um objeto do sistema.
- O nome especificado sempre precisará ser incluído em caracteres de escape (no SQL Server, '[' e ']').
- O nome que você especificou pode confundir outras pessoas que tentam ler e entender seu código.
- O código pode quebrar se você executá-lo com versões futuras do SQL Server.
Em geral, você pode suprimir um problema de nomenclatura se outros aplicativos que não podem ser alterados dependerem do nome atual.
As regras fornecidas identificam os seguintes problemas de design:
- SR0011: Evite usar caracteres especiais em nomes de objetos
- SR0012: Evite usar palavras reservadas para nomes de tipo
- SR0016: Evite usar sp_ como um prefixo para procedimentos armazenados
Problemas de desempenho do T-SQL
Quando você analisa o código T-SQL em seu projeto de banco de dados, um ou mais avisos podem ser categorizados como problemas de desempenho. Você deve resolver um problema de desempenho para evitar a seguinte situação:
- Uma verificação de tabela ocorrerá quando o código for executado.
Em geral, você pode suprimir um problema de desempenho se a tabela contiver tão poucos dados que uma verificação não fará com que o desempenho caia significativamente.
As regras fornecidas identificam os seguintes problemas de design:
- SR0004: Evite usar colunas que não tenham índices como expressões de teste em predicados IN
- SR0005: Evite usar padrões que comecem com "%" em predicados LIKE
- SR0006: Mover uma referência de coluna para um lado de um operador de comparação para usar um índice de coluna
- SR0007: Use ISNULL(column, default_value) em colunas nulas em expressões
- SR0015: Extrair chamadas de função determinística de predicados WHERE
Habilitar e desabilitar a análise de código
Para habilitar ou desabilitar a análise de código SQL no Visual Studio, clique com o botão direito do mouse no projeto no Gerenciador de Soluções e selecione Propriedades. Na guia Análise de código da janela de propriedades, selecione as configurações de análise de código desejadas.
Para desativar ou habilitar uma regra específica, selecione-a na tabela. Para alterar a gravidade de uma regra, marque a caixa Tratar Aviso como Erro para aquela regra na lista.
Para habilitar ou desabilitar a análise de código SQL nos projetos SQL no estilo SDK (visualização), edite o arquivo .sqlproj diretamente. Abra o arquivo .sqlproj na visualização do Gerenciador de Soluções ao clicar duas vezes no projeto.
No editor de texto, adicione um elemento <RunSqlCodeAnalysis>True</RunSqlCodeAnalysis> ao primeiro bloco <PropertyGroup> para habilitar a análise de código. Para desativar a análise de código, altere o valor do elemento RunSqlCodeAnalysis para True ou False ou remova o elemento completamente.
Para habilitar ou desabilitar a análise de código SQL na extensão Projetos do Banco de Dados SQL, edite o arquivo .sqlproj diretamente. Abra o arquivo .sqlproj na visualização do Explorer ou clicando com o botão direito do mouse no projeto na visualização Projetos de Banco de Dados e selecionando Editar arquivo .sqlproj.
No editor de texto, adicione um elemento <RunSqlCodeAnalysis>True</RunSqlCodeAnalysis> ao primeiro bloco <PropertyGroup> para habilitar a análise de código. Para desativar a análise de código, altere o valor do elemento RunSqlCodeAnalysis para True ou False ou remova o elemento completamente.
Para substituir as configurações de análise de código no arquivo de projeto, você pode usar as propriedades /p:RunSqlCodeAnalysis e /p:SqlCodeAnalysisRules com o comando dotnet build. Por exemplo, para criar com a análise de código desativada:
dotnet build /p:RunSqlCodeAnalysis=False
Para construir com configurações específicas de regra de análise de código SQL:
dotnet build /p:RunSqlCodeAnalysis=True /p:SqlCodeAnalysisRules="+!Microsoft.Rules.Data.SR0001;+!Microsoft.Rules.Data.SR0008"