usar table_name schema_information information_schema como columns character_maximum_length sql sql-server tsql ssdt

sql - table_name - referencia no resuelta al objeto[INFORMATION_SCHEMA].



sql columns (3)

Creé una UDF que accede a la vista [INFORMATION_SCHEMA].[TABLES] :

CREATE FUNCTION [dbo].[CountTables] ( @name sysname ) RETURNS INT AS BEGIN RETURN ( SELECT COUNT(*) FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = @name ); END

Dentro de Visual Studio, el esquema y el nombre de la vista están marcados con una advertencia:

SQL71502: Función: [dbo]. [CountTables] tiene una referencia no resuelta al objeto [INFORMATION_SCHEMA]. [TABLES].

Todavía puedo publicar el proyecto de la base de datos sin ningún problema, y ​​la UDF parece funcionar correctamente. IntelliSense rellena el nombre de la vista para mí, por lo que no parece tener un problema con ella.

También intenté cambiar la implementación para usar sys.objects lugar de esta vista, pero también recibí la misma advertencia para esta vista.

¿Cómo puedo resolver esta advertencia?


Agregue una referencia de base de datos al master :

  1. En el proyecto, haga clic con el botón derecho en Referencias .
  2. Seleccione Agregar referencia de base de datos ....
  3. Seleccione la base de datos del sistema .
  4. Asegúrese de que el maestro esté seleccionado.
  5. Presione OK .

Tenga en cuenta que podría llevarle un tiempo a VS actualizarse.


En nuestro proyecto, ya tenemos una referencia al maestro, pero tuvimos este problema. Aquí estaba el error que obtuvimos:

SQL71502: Procedure: [Schema].[StoredProc1] has an unresolved reference to object [Schema].[Table1].[Property1].

Para resolver el error de referencia, en el archivo sql de la tabla, haga clic con el botón derecho en Propiedades y verifique que BuildSettings esté configurado en Build.

Cambiarlo construir lo arregló.


lo que Sam dijo es la mejor manera de hacer esto.
Sin embargo, si tiene un escenario en el que necesita desplegar el dacpac desde una máquina que no tiene esa referencia en esa ubicación específica, puede tener problemas. Otra forma es abrir su archivo .project y asegurarse de que la siguiente etiqueta tenga el valor de false para la configuración de compilación que está tratando de ejecutar.

<TreatTSqlWarningsAsErrors>false</TreatTSqlWarningsAsErrors>

De esta forma, no necesita agregar una referencia a su proyecto.