Ich habe Skript, das alle ungültigen Abhängigkeiten in der Datenbank zurückgibt. Aber dieses Skript gibt viele Duplikate zurück. Also ich möchte nur DISTINCT
Ergebnisse sehen.Suchen DISTINCT fehlende SQL-Abhängigkeiten
/*
modified version of script from http://michaeljswart.com/2009/12/find-missing-sql-dependencies/
Added columns for object types & generated refresh module command...
filter out user-define types: http://stackoverflow.com/questions/2330521/find-broken-objects-in-sql-server
*/
SELECT TOP (100) PERCENT
QuoteName(OBJECT_SCHEMA_NAME(referencing_id)) + '.' + QuoteName(OBJECT_NAME(referencing_id)) AS [this Object...],
o.type_desc,
ISNULL(QuoteName(referenced_server_name) + '.', '')
+ ISNULL(QuoteName(referenced_database_name) + '.', '')
+ ISNULL(QuoteName(referenced_schema_name) + '.', '')
+ QuoteName(referenced_entity_name) AS [... depends ON this missing entity name]
,sed.referenced_class_desc
,case when o.type_desc in('SQL_STORED_PROCEDURE' ,'SQL_SCALAR_FUNCTION' ,'SQL_TRIGGER' ,'VIEW')
then 'EXEC sys.sp_refreshsqlmodule ''' + QuoteName(OBJECT_SCHEMA_NAME(referencing_id)) + '.' + QuoteName(OBJECT_NAME(referencing_id)) + ''';'
else null
end as [Refresh SQL Module command]
FROM sys.sql_expression_dependencies as sed
LEFT JOIN sys.objects o
ON sed.referencing_id=o.object_id
WHERE (is_ambiguous = 0)
AND (OBJECT_ID(ISNULL(QuoteName(referenced_server_name) + '.', '')
+ ISNULL(QuoteName(referenced_database_name) + '.', '')
+ ISNULL(QuoteName(referenced_schema_name) + '.', '')
+ QuoteName(referenced_entity_name)) IS NULL)
AND NOT EXISTS
(SELECT *
FROM sys.types
WHERE types.name = referenced_entity_name
AND types.schema_id = ISNULL(SCHEMA_ID(referenced_schema_name), SCHEMA_ID('dbo'))
)
ORDER BY [this Object...],
[... depends ON this missing entity name]
go
Dies ist Skript.
Ich versuchte GROUP BY [... depends ON this missing entity name]
hinzufügen, aber ich bekomme die folgende Fehlermeldung:
Invalid column name '... depends ON this missing entity name'.
Ich habe versucht, nur für Test in Folge zu jeder Spalte Aggregatfunktionen hinzufügen, aber immer noch gleiche Fehler.
SELECT DISTINCT' oder 'GROUP BY ISNULL (QUOTENAME (referenced_server_name) + '', '') + ISNULL (QUOTENAME (referenced_database_name) + '.', '') + ISNULL (Zitatname (referenzierter_Schema_Name) + '.', '') + Zitatname (referenzierter_Entitätsname) ' – Matt
@Matt, ja,' GROUP BY' hilft. Denken Sie immer daran, GROUP BY by Alias sollte funktionieren ... – demo
Hat die 'GROUP BY' funktioniert? – Matt