Compartir a través de


Análisis del código T-SQL para buscar defectos

Se aplica a:SQL ServerAzure SQL Database Azure SQL Managed InstanceBase de datos SQL de Microsoft Fabric

Puede mejorar la calidad del código de Transact-SQL en un esquema de base de datos importando en un proyecto de base de datos y analizando el código en un conjunto de reglas. Por ejemplo, es posible que desee encontrar errores en un esquema que no ha desarrollado y cuya calidad no se ha comprobado. Para obtener más información, consulte la introducción al análisis de código.

Para esta evaluación inicial, desea encontrar todos los posibles problemas en el código de la base de datos. Revise las advertencias y el código que provocó esas advertencias. Para mejorar el código T-SQL, corrija las advertencias, suprima una advertencia y analice iterativamente el proyecto de base de datos.

Requisitos previos

Para poder analizar el código en un proyecto de base de datos, ya debe tener un proyecto SQL. Para obtener más información sobre el uso de una base de datos existente para crear un proyecto, consulte Tutorial: inicio desde una base de datos existente.

Habilitación del análisis de código SQL en la compilación del proyecto

Para habilitar el análisis de código SQL en Visual Studio, haga clic con el botón derecho en el proyecto en Explorador de soluciones y seleccione Propiedades. En la pestaña Análisis de código de la ventana de propiedades, active la casilla Habilitar análisis de código en compilación.

Guarde la ventana de propiedades del proyecto y vuelva al Explorador de soluciones.

Para habilitar el análisis de código SQL en un proyecto de SQL, edite el archivo .sqlproj directamente. Abra el archivo .sqlproj y agregue un elemento <RunSqlCodeAnalysis>True</RunSqlCodeAnalysis> al primer bloque <PropertyGroup> para habilitar el análisis de código.

Para habilitar el análisis de código SQL en la extensión Proyectos de SQL Database, edite el archivo .sqlproj directamente. Abra el archivo .sqlproj desde la vista Explorador o haga clic con el botón derecho en el proyecto en la vista Proyectos de base de datos y seleccione Editar archivo .sqlproj.

En el editor de texto, agregue un elemento <RunSqlCodeAnalysis>True</RunSqlCodeAnalysis> al primer bloque <PropertyGroup> para habilitar el análisis de código.

Para habilitar el análisis de código SQL en un proyecto de SQL, edite el archivo .sqlproj directamente. Abra el archivo .sqlproj y agregue un elemento <RunSqlCodeAnalysis>True</RunSqlCodeAnalysis> al primer bloque <PropertyGroup> para habilitar el análisis de código.

Análisis del código

Para analizar el código de un proyecto de base de datos con el análisis de código habilitado en la compilación, haga clic con el botón derecho en el proyecto en el Explorador de soluciones y seleccione Compilar.

La ventana salida muestra los resultados del proceso de compilación general.

El código T-SQL del proyecto de base de datos se analiza durante la compilación. Los errores y advertencias del análisis de código aparecen en la Lista de errores. Si la Lista de errores no aparece, abra el menú Ver y seleccione Lista de errores. Puede hacer doble clic en una advertencia para ir a la línea de código que provocó la advertencia.

Para analizar el código de un proyecto de base de datos con el análisis de código habilitado en la compilación, haga clic con el botón derecho en el proyecto en el Explorador de soluciones y seleccione Compilar.

La ventana salida muestra los resultados del proceso de compilación general.

El código T-SQL del proyecto de base de datos se analiza durante la compilación. Los errores y advertencias del análisis de código aparecen en la Lista de errores. Si la Lista de errores no aparece, abra el menú Ver y seleccione Lista de errores. Puede hacer doble clic en una advertencia para ir a la línea de código que provocó la advertencia.

Para analizar el código de un proyecto de base de datos con el análisis de código habilitado en la compilación, haga clic con el botón derecho en el proyecto en la vista Proyectos de base de datos y seleccione Compilar.

La ventana salida muestra los resultados del proceso de compilación general y los errores o advertencias del análisis de código. Los archivos especificados en cada advertencia o error son vínculos interactivos que navegan a la línea de código que provocó la advertencia.

Para analizar el código de un proyecto de base de datos con el análisis de código habilitado en la compilación, ejecute el comando dotnet build desde la línea de comandos del directorio del proyecto.

dotnet build MyDatabaseProject.sqlproj

La salida del comando muestra los resultados del proceso de compilación general y los errores o advertencias del análisis de código.

Configuración de reglas de análisis de código

Para deshabilitar o habilitar una regla específica en Visual Studio, haga clic con el botón derecho en el proyecto en el Explorador de soluciones y seleccione Propiedades. En la pestañaAnálisis de código de la ventana de propiedades, seleccione la regla de la tabla. Para cambiar la gravedad de una regla, seleccione el cuadro Para Tratar la advertencia como error para esa regla de la lista.

Guarde la ventana de propiedades del proyecto y vuelva al Explorador de soluciones.

Para deshabilitar o habilitar una regla específica en un proyecto de SQL, edite el archivo .sqlproj directamente. Abra el archivo .sqlproj y agregue o modifique el elemento para SqlCodeAnalysisRules en el primer bloque <PropertyGroup> para especificar las reglas que se van a habilitar o deshabilitar. La siguiente configuración de ejemplo deshabilita dos reglas (SR0007 y SR0006) y cambia SR0008 para producir un error de compilación. El resto de las reglas están habilitados de manera predeterminada.

<?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>
...

Para deshabilitar o habilitar una regla específica en la extensión Proyectos de SQL Database, edite el archivo .sqlproj directamente. Abra el archivo .sqlproj desde la vista Explorador o haga clic con el botón derecho en el proyecto en la vista Proyectos de base de datos y seleccione Editar archivo .sqlproj.

Agregue o modifique el elemento para SqlCodeAnalysisRules en el primer bloque <PropertyGroup> para especificar las reglas que se van a habilitar o deshabilitar. La siguiente configuración de ejemplo deshabilita dos reglas (SR0007 y SR0006) y cambia SR0008 para producir un error de compilación. El resto de las reglas están habilitados de manera predeterminada.

<?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>
...

Para deshabilitar o habilitar una regla específica en un proyecto de SQL, edite el archivo .sqlproj directamente. Abra el archivo .sqlproj y agregue o modifique el elemento para SqlCodeAnalysisRules en el primer bloque <PropertyGroup> para especificar las reglas que se van a habilitar o deshabilitar. La siguiente configuración de ejemplo deshabilita dos reglas (SR0007 y SR0006) y cambia SR0008 para producir un error de compilación. El resto de las reglas están habilitados de manera predeterminada.

<?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>
...

Suprimir advertencias de análisis de código

Para suprimir un error o advertencia de análisis de código para un archivo específico .sql en Visual Studio, haga clic con el botón derecho en la advertencia en la Lista de errores y seleccione Suprimir mensajes de análisis de código estáticos. El resultado del análisis de código para esa regla y el archivo .sql se suprime y ya no aparece en la Lista de errores ni en la salida de la compilación.

Nota

La supresión de una advertencia no corrige el problema subyacente. Suprima las advertencias solo cuando tenga un motivo válido para hacerlo.

Para suprimir un error de análisis de código o una advertencia para un archivo específico .sql en un proyecto de SQL, agregue un archivo StaticCodeAnalysis.SuppressMessages.xml al proyecto. En el archivo, especifique el identificador de regla y el archivo para el que se suprimirá la advertencia.

<?xml version="1.0" encoding="utf-8" ?>
<StaticCodeAnalysis version="2" xmlns="urn:Microsoft.Data.Tools.Schema.StaticCodeAnalysis">
  <SuppressedFile FilePath="Views/SelectStarView.sql">
    <SuppressedRule Category="Microsoft.Rules.Data" RuleId="SR0001" />
  </SuppressedFile>
</StaticCodeAnalysis>

Si el archivo no existe, créelo en la raíz del proyecto. Si el archivo ya existe, suprima una advertencia adicional al archivo existente StaticCodeAnalysis.SuppressMessages.xml mediante la creación de un nuevo elemento <SuppressedFile><SuppressedRule /></SuppressedFile>.

El resultado del análisis de código para esa regla y el archivo .sql se suprime y ya no aparece en la salida de la compilación.

Para suprimir un error de análisis de código o una advertencia para un archivo específico .sql en la extensión Proyectos de SQL Database, agregue un archivo StaticCodeAnalysis.SuppressMessages.xml al proyecto. En el archivo, especifique el identificador de regla y el archivo para el que se suprimirá la advertencia.

<?xml version="1.0" encoding="utf-8" ?>
<StaticCodeAnalysis version="2" xmlns="urn:Microsoft.Data.Tools.Schema.StaticCodeAnalysis">
  <SuppressedFile FilePath="Views/SelectStarView.sql">
    <SuppressedRule Category="Microsoft.Rules.Data" RuleId="SR0001" />
  </SuppressedFile>
</StaticCodeAnalysis>

Si el archivo no existe, créelo en la raíz del proyecto. Si el archivo ya existe, suprima una advertencia adicional al archivo existente StaticCodeAnalysis.SuppressMessages.xml mediante la creación de un nuevo elemento <SuppressedFile><SuppressedRule /></SuppressedFile>.

El resultado del análisis de código para esa regla y el archivo .sql se suprime y ya no aparece en la salida de la compilación.

Para suprimir un error de análisis de código o una advertencia para un archivo específico .sql en un proyecto de SQL, agregue un archivo StaticCodeAnalysis.SuppressMessages.xml al proyecto. En el archivo, especifique el identificador de regla y el archivo para el que se suprimirá la advertencia.

<?xml version="1.0" encoding="utf-8" ?>
<StaticCodeAnalysis version="2" xmlns="urn:Microsoft.Data.Tools.Schema.StaticCodeAnalysis">
  <SuppressedFile FilePath="Views/SelectStarView.sql">
    <SuppressedRule Category="Microsoft.Rules.Data" RuleId="SR0001" />
  </SuppressedFile>
</StaticCodeAnalysis>

Si el archivo no existe, créelo en la raíz del proyecto. Si el archivo ya existe, suprima una advertencia adicional al archivo existente StaticCodeAnalysis.SuppressMessages.xml mediante la creación de un nuevo elemento <SuppressedFile><SuppressedRule /></SuppressedFile>.

El resultado del análisis de código para esa regla y el archivo .sql se suprime y ya no aparece en la salida de la compilación.