Partilhar via


Demonstra Passo a passo: Analisar o código do Transact-SQL para um banco de dados existente

Você pode melhorar a qualidade da Transact-SQL código em um banco de dados esquema por meio de importação em um o projeto de banco de dados e analisar o código contra um conjunto de regras. Por exemplo, você talvez queira localizar erros em um esquema que você deve usar, mas que não desenvolveu e cuja qualidade não foi verificada. Para obter mais informações, consulte Analisando o código do banco de dados para melhorar a qualidade do código.

Antes de você pode analisar seu código de banco de dados, você deve já importou o esquema para um banco de dados existente em um o projeto de banco de dados. Esse projeto contém o código de um nível de qualidade de desconhecido. Você deseja analisar o Transact-SQL código, a aplicação de todas as regras disponíveis para análise de código estático. Posteriormente, você pode decidir desativar algumas regras para sua equipe, mas essa avaliação inicial, você deseja localizar todos os possíveis problemas no código do banco de dados. Você examinar o código que causou esses avisos e os avisos. Corrigir um aviso, suprimir avisos de mais e, em seguida, analisar novamente o projeto de banco de dados.

Pré-requisitos

Antes de concluir este passo a passo, você deve concluir Demonstra Passo a passo: Colocar um esquema de banco de dados existente no controle de versão. Essa explicação passo a passo, você pode criar uma solução que contém um projeto de banco de dados é denominado MyAdvWorks.

Configure regras para análise do projeto de banco de dados

  1. Em Visual Studio, abra a solução de MyAdvWorks.

  2. Em Visualização Esquema, expanda o nó do projeto de banco de dados, se ainda não estiver expandida.

  3. Sobre o dados , aponte para Análise estática de códigoe clique em Configure.

    As propriedades de análise de código para o seu projeto de banco de dados aparecem.

  4. No regras lista, expanda os nós de Design, nomeação e desempenho para exibir todas as regras que estão disponíveis para analisar Transact-SQL código.

  5. Verifique se as caixas de seleção para todas as regras são selecionadas.

    Você pode marcar ou desmarcar a caixa de seleção de uma categoria de regras, como, por exemplo, Design, marque ou desmarque as caixas de seleção para cada regra nessa categoria.

    ObservaçãoObservação

    Você pode tratar uma regra como um erro em vez de um aviso, selecionando o Tratar o aviso como erro caixa de seleção para essa regra.

  6. No menu File, clique em Save All.

    Em seguida, você analisará o Transact-SQL código em seu projeto de banco de dados. Esta explicação passo a passo, você irá iniciar a análise manual, mas você pode configurá-lo para iniciar após cada compilação bem-sucedida do seu projeto de banco de dados. Para obter mais informações, consulte Como: Ativar e desativar a análise estática para código do banco de dados.

Para analisar o seu projeto de banco de dados

  • Sobre o dados , aponte para Análise estática de códigoe clique em Executar.

    O Transact-SQL código em seu projeto de banco de dados é analisado e avisos são exibidos na Error List. Se o Error List não aparecer, abra o Exibir menu e clique Error List.

    Em seguida, você irá exibir e corrigir um dos avisos.

Para exibir e corrigir um aviso.

  1. No Error List, encontrar o seguinte aviso:

    SR0014 : Microsoft.Rules.Data: Perda de dados pode ocorrer quando a projeção de String(1) de ASCII para SmallInt.

    O código que causou este aviso é no arquivo chamado "ufnGetStock.function.sql". Você pode encontrar o código na linha 12, 30 de coluna.

  2. O aviso com o botão direito do Error Liste clique em Mostrar Ajuda de erro.

    O tópico da Ajuda para a regra SR0014 aparece. Você pode aprender sobre o que disparou a regra, como resolver o aviso e quando deseja ignorar o aviso. Você também pode ver um exemplo de Transact-SQL código que causaria esse aviso e atualizações para que o código que resolveria o aviso.

  3. No Error List, clique duas vezes o aviso ou realçá-lo e pressione ENTER.

    O Transact-SQL editor abre e exibe o código que causou o aviso. O cursor aparece no início do código que causou o aviso. Nesse caso, o cursor aparece na cláusula FROM porque a coluna de número inteiro, LocationID, que está sendo comparada com uma constante de caractere único, '6'. O código a seguir é exibida:

    CREATE FUNCTION [dbo].[ufnGetStock](@ProductID [int])
    RETURNS [int] 
    AS 
    -- Returns the stock level for the product. This function is used internally only
    BEGIN
        DECLARE @ret int;
    
        SELECT @ret = SUM(p.[Quantity]) 
        FROM [Production].[ProductInventory] p 
        WHERE p.[ProductID] = @ProductID 
            AND p.[LocationID] = '6'; -- Only look at inventory in the misc storage
    
        IF (@ret IS NULL) 
            SET @ret = 0
    
        RETURN @ret
    END;
    
    GO
    EXECUTE sp_addextendedproperty @name = N'MS_Description', @value = N'Scalar function returning the quantity of inventory in LocationID 6 (Miscellaneous Storage)for a specified ProductID.', @level0type = N'SCHEMA', @level0name = N'dbo', @level1type = N'FUNCTION', @level1name = N'ufnGetStock';
    
    
    GO
    EXECUTE sp_addextendedproperty @name = N'MS_Description', @value = N'Input parameter for the scalar function ufnGetStock. Enter a valid ProductID from the Production.ProductInventory table.', @level0type = N'SCHEMA', @level0name = N'dbo', @level1type = N'FUNCTION', @level1name = N'ufnGetStock', @level2type = N'PARAMETER', @level2name = N'@ProductID';
    
  4. Atualize o código para a instrução SELECT coincidir com o exemplo a seguir:

        SELECT @ret = SUM(p.[Quantity]) 
        FROM [Production].[ProductInventory] p 
        WHERE p.[ProductID] = @ProductID 
            AND p.[LocationID] = 6; -- Only look at inventory in the misc storage
    
  5. Sobre o arquivo menu, clique em Salvar ufnGetStock.function.sql.

    Em seguida, você analisará e suprimir um segundo aviso.

Para exibir e suprimir um aviso de análise de código

  1. No Error List, encontrar o seguinte aviso:

    SR0011 : Microsoft.Rules.Data: Object name(Database Version) contains special characters.

    O código que faz com que esse aviso é no arquivo chamado "AWBuildVersion.table.sql". Você pode encontrar o código na linha 3, 5 de coluna.

    Neste ponto, você deve decidir-se eliminar os caracteres especiais do nome do objeto. Usando a refatoração de banco de dados, você pode automatizar a atualização de todas as referências a este objeto para que eles contêm o nome correto. No entanto, você interromperá todos os aplicativos que dependem do antigo nome. Se você não tem informações suficientes para decidir a melhor abordagem, você pode suprimir o aviso até que você investigaram as ramificações da alteração. Você também pode criar um item de trabalho em Visual Studio Team Foundation Server para controlar esta tarefa ou mesmo atribuí-lo a alguém.

  2. No Error List, clique no cabeçalho da coluna Descrição.

    O Error List classifica os avisos por suas descrições, todas as SR0011 de agrupamento avisos juntos.

  3. Rolagem de Error List até que o aviso de SR0011 aparece e realce que o aviso.

    Se você quiser ignorar vários avisos, você pode realçar uma lista contígua de avisos clicando o primeiro aviso na lista e em seguida, pressionando a tecla SHIFT enquanto clica no último aviso na lista.

    ObservaçãoObservação

    Você pode criar um item de trabalho desta lista clicando em qualquer linha realçada, apontando para Create Work Iteme clicando em um tipo de item de trabalho. Se você eliminar o aviso até que o nome pode ser alterado, você deve incluir uma instrução do item de trabalho para unsuppress o aviso após o nome é alterado. Para manter este passo a passo em breve, irá ignorar os itens de trabalho de criação.

  4. Qualquer linha realçada com o botão direito e, em seguida, clique em Suprimir mensagens de análise de código estático.

    Um arquivo chamado StaticCodeAnalysis.SuppressMessages.xml é adicionado ao seu projeto de banco de dados. O arquivo MyAdvWorks.dbproj foi extraído do controle de versão. Os avisos suprimidos desaparecem da Error List, deixando menos avisos na lista.

    ObservaçãoObservação

    Se você suprimir um aviso para um arquivo em seu projeto de banco de dados, você pode suprimir todas as instâncias do que o aviso para esse arquivo.

    O arquivo XML contém a lista de avisos suprimidas. Você pode excluir esse arquivo se você deseja unsuppress a todos os avisos suprimidos. Para obter mais informações, consulte Como: Parar suprimir avisos de análise de código do banco de dados.

    No último procedimento, você irá analisar o projeto de banco de dados.

Para analisar o seu projeto de banco de dados

  • Sobre o dados , aponte para Análise estática de códigoe clique em Executar.

    O Transact-SQL código em seu projeto de banco de dados é analisado novamente e os avisos restantes exibidas a Error List. Os avisos que você corrigido ou suprimidas não aparecem.

Próximas etapas

Em um ambiente típico, você poderia analisar cada aviso que apareceram na Error List. Você poderia, então, corrigir os problemas que você possa corrigir imediatamente, suprimir os problemas que podem ser ignorados e criar itens de trabalho para problemas que devem ser corrigidos posteriormente. Para alguns dos problemas, você pode usar a refatoração de banco de dados para resolver os avisos. Para obter mais informações sobre refatoração de banco de dados, consulte Refatorar o código do banco de dados e dados.

Depois de resolver ou suprimir cada aviso, você deve executar o testes de unidade de banco de dados e testes de aplicativo para verificar que as alterações não introduziu problemas. Para obter mais informações sobre testes de unidade de banco de dados, consulte Verificando o banco de dados código usando testes de unidade.

Consulte também

Conceitos

Analisando o código do banco de dados para melhorar a qualidade do código