sql >> Databasteknik >  >> RDS >> Sqlserver

Hitta trasiga objekt i SQL Server

Du kanske är intresserad av att kolla in följande artiklar:

  • Michael J. Swart:Hitta saknade SQL-beroenden
  • eggheadcafe.com:Hitta trasiga grejer

Du kan testa Michael J. Swarts lösning enligt följande:

CREATE PROCEDURE proc_bad AS
    SELECT col FROM nonexisting_table
GO

SELECT
    OBJECT_NAME(referencing_id) AS [this sproc or VIEW...],
    referenced_entity_name AS [... depends ON this missing entity name]
FROM 
    sys.sql_expression_dependencies
WHERE 
    is_ambiguous = 0
    AND OBJECT_ID(referenced_entity_name) IS NULL
ORDER BY 
    OBJECT_NAME(referencing_id), referenced_entity_name;

Som returnerar:

+------------------------+------------------------------------------+
| this sproc or VIEW...  |  ... depends ON this missing entity name |
|------------------------+------------------------------------------|
| proc_bad               |  nonexisting_table                       |
+------------------------+------------------------------------------+


  1. Hur man tar bort objekt från SQLite-databasen med SQLiteOpenHelper-klassen

  2. Hitta överlappande datumintervall i PostgreSQL

  3. GROUP BY / aggregerad funktionsförvirring i SQL

  4. 10 tidsbesparande genvägar i Microsoft Access