MS SQL Server получает db_name () для ссылочного объекта из sys.sql_dependencies - PullRequest
0 голосов
/ 10 сентября 2018

Я создаю sp для проверки устаревших столбцов, используемых в объектах данной базы данных и использующих sys.sql_dependencies. Я проверил все, что мог, и не вижу, где я могу получить db_name для столбца, который я ищу. Я просто хочу убедиться, что он правильный, в коде этот столбец с префиксом db_name.dbo.TableName, поэтому я надеюсь, что он где-то хранится, но не в таблице dependencies, я думаю.
Я знаю, что SYS таблицы специфичны для db_name, так что, может быть, в этом случае они недоступны? так что я могу получить ложное попадание в тот же table.column, но из другой базы данных.

Это мой пример кода, в данном случае я ищу dbNameAAA.table.column (или список их) в объектах другой базы данных (sp, udf, views, triggers и т. Д.)

SELECT  TOP 10
'?????'  db,  -- for ro.name, c.name referenced
ro.name  Tbl,  c.name Col,     ' -->' [_Found in_],
(SELECT  DB_NAME())  db_current,
o.name ObjName,  o.object_id,   o.type_desc ObjType, SCHEMA_NAME(ro.schema_id) Sch_Name
FROM sys.sql_dependencies AS d
  INNER JOIN sys.all_objects AS o         ON o.object_id = d.object_id
  INNER JOIN sys.all_objects AS ro        ON ro.object_id = d.referenced_major_id
  INNER JOIN sys.all_columns AS c         ON c.object_id = ro.object_id AND c.column_id = d.referenced_minor_id
WHERE 1=1  
    and (c.name = 'Cust_ID')
    AND o.type_desc LIKE '%procedure%'

Обновление и это c'be решение: Здесь есть вся информация, даже имя сервера для ref'ed объекта, хотя у него нет имени столбца, но я думаю, что смогу решить его, объединив свои запросы.

SELECT TOP 10 OBJECT_NAME (referencing_id) Referencing_Obj, '--->' [uses],
       referenced_Server_name,
       referenced_database_name, 
       referenced_schema_name, 
       referenced_entity_name, 
       '???'  referenced_column_name
FROM sys.sql_expression_dependencies d
WHERE OBJECT_NAME(referencing_id) = 'sp_My_sp'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...