Есть ли способ узнать, какие базовые таблицы используются представлениями с помощью пользовательского запроса или хранимой процедуры?Как я могу проверить зависимости запросов 'sql server'
ответ
Если это то, что вы часто будете делать, Red Hat SQL Dependency Tracker (нет, я не работаю для них) - отличный инструмент. Я думаю, у них есть пробный период, если вы хотите попробовать.
Вот хорошее объяснение:
https://web.archive.org/web/1/http://blogs.techrepublic%2ecom%2ecom/datacenter/?p=277
Я не получаю результатов, когда создаю и запускаю это sp –
Вы можете использовать sql_dependencies вид:
select OBJECT_NAME(referenced_major_id) as DependantObject
from sys.sql_dependencies
where object_id = object_id('YourViewName')
Для рекурсивного извлечения зависимостей (Fe, если выбрать из точки зрения, это было бы найти таблицы, другие ссылки на вид):
with deps (child, parent) as (
select d.object_id, d.referenced_major_id
from sys.sql_dependencies d
where d.object_id = object_id('YourViewName')
union all
select d.object_id, d.referenced_major_id
from sys.sql_dependencies d
inner join deps on deps.parent = d.object_id
)
select OBJECT_NAME(parent)
from deps
Этот метод не является безупречным. Например, если вы переименовываете объект с помощью sp_rename, его зависимости не обновляются.
Я не получаю результатов, когда я запускаю этот –
Хорошо работает на моей машине. Может быть, вы можете опубликовать определение представления? – Andomar
Да, это работает только для просмотров, которые я создал, но для других представлений, созданных другими разработчиками (к которым у меня есть доступ), я получаю 0 записей. –
Вы можете использовать sys.dm_sql_referenced_entities функцию, чтобы найти объекты, на которые ссылается указанный зрения:
SELECT DISTINCT
referenced_schema_name ,
referenced_entity_name
FROM sys.dm_sql_referenced_entities ('Sales.vSalesPersonSalesByFiscalYears', 'OBJECT');
Кроме того, существует мнение, система sys.sql_expression_dependencies, где можно указать имя таблицы и тип объекта ссылающейся:
SELECT
referencing_object_name = o.name,
referencing_object_type_desc = o.type_desc
FROM sys.sql_expression_dependencies se
INNER JOIN sys.objects o
ON se.referencing_id = o.[object_id]
WHERE referenced_entity_name = 'Person' AND o.type_desc = 'View'
Чтобы избежать «ручной» работы, вы также можете использовать ApexSQL Clean, инструмент SQL Server, который может найти все внутренние и внешние зависимости. В панели результатов выберите объект и увидеть все объекты, которые зависят от выбранного объекта и объектов, на которых выбранный объект зависит от:
Вы также можете фильтровать объекты и визуализировать зависимости:
Отказ от ответственности: Я работаю ApexSQL как инженер поддержки
Надежда это помогает
Вы можете сделать это с помощью sys.sql_expression_dependencies в SQL-сервере> = 2008 (R1 +)
Примечание: Это займет 30 секунд или больше.
Если вы только хотят мнения, удалить скаляр + табличные значения функции ('FN' и 'IF').
Функция, учитывающая таблицу, может быть зависимостью вида и наоборот, а view/tvf может зависеть от скалярных функций.
;WITH TFV_Dependencies AS
(
SELECT
--OBJECT_SCHEMA_NAME(sysdep.referencing_id) AS Referencing_Schema
ReferencingO.object_id AS ReferencingObject_Id
,sysschema.name AS Referencing_Schema
,ReferencingO.name AS Referencing_Object_Name
,sysdep.referenced_schema_name AS Referenced_Schema
,sysdep.referenced_entity_name AS Referenced_Object_Name
--,ReferencingO.type
,ReferencedO.name AS RefName
--,ReferencedO.type AS RefType
FROM sys.objects as ReferencingO
LEFT JOIN sys.schemas AS sysschema
ON sysschema.schema_id = ReferencingO.schema_id
LEFT JOIN sys.sql_expression_dependencies AS sysdep
LEFT JOIN sys.objects as ReferencedO
ON ReferencedO.name = sysdep.referenced_entity_name
ON sysdep.referencing_id = ReferencingO.object_id
AND ReferencingO.name <> sysdep.referenced_entity_name
--AND ReferencedO.type <> 'U'
AND ReferencedO.type IN ('IF', 'FN', 'V')
WHERE (1=1)
--AND ReferencingO.type NOT IN ('PK','F','UQ','SQ','D','IT', 'S')
--AND ReferencingO.type IN ('U', 'V', 'FN', 'IF', 'P')
AND ReferencingO.type IN ('IF', 'FN', 'V')
AND ReferencingO.name NOT IN
(
'dt_adduserobject'
,'dt_droppropertiesbyid'
,'dt_dropuserobjectbyid'
,'dt_generateansiname'
,'dt_getobjwithprop'
,'dt_getobjwithprop_u'
,'dt_getpropertiesbyid'
,'dt_getpropertiesbyid_u'
,'dt_setpropertybyid'
,'dt_setpropertybyid_u'
,'dt_verstamp006'
,'dt_verstamp007'
,'sp_helpdiagrams'
,'sp_creatediagram'
,'sp_alterdiagram'
,'sp_renamediagram'
,'sp_dropdiagram'
,'sp_helpdiagramdefinition'
,'fn_diagramobjects'
)
)
,DependencyGroup AS
(
-- base case
SELECT
ReferencingObject_Id AS ObjectId
,Referencing_Object_Name AS ObjectName
,Referencing_Schema AS ObjectSchema
,1 AS Lvl
FROM TFV_Dependencies
WHERE 1=1
AND Referenced_Object_Name IS NULL
-- recursive case
UNION ALL
SELECT
d.ReferencingObject_Id AS ObjectId
,d.Referencing_Object_Name AS ObjectName
,d.Referencing_Schema AS ObjectSchema
,r.Lvl + 1 AS Lvl
FROM TFV_Dependencies AS d
INNER JOIN DependencyGroup AS r
ON r.ObjectName = d.Referenced_Object_Name
)
,
CTE AS
(
SELECT TOP 999999999999999999
MAX(Lvl) AS Lvl
,ObjectId
,ObjectSchema
,ObjectName
--,'DELETE FROM [' + REPLACE(ObjectName, '''', '''''') + ']; ' AS DeleteCmd
FROM DependencyGroup
GROUP BY ObjectId, ObjectSchema, ObjectName
)
SELECT
CTE.Lvl
,CTE.ObjectSchema AS SPECIFIC_SCHEMA
,CTE.ObjectName AS SPECIFIC_NAME
,sysSqlModules.definition AS ROUTINE_DEFINITION
FROM CTE
LEFT JOIN sys.sql_modules AS sysSqlModules
ON sysSqlModules.object_id = CTE.ObjectId
ORDER BY Lvl, ObjectSchema, ObjectName
OPTION (MAXRECURSION 0)
- 1. Как я могу проверить подключение SQL Server от DOS?
- 2. Как я могу отделить SQL запросов
- 3. Частота запросов/оптимизация запросов SQL SQL Server
- 4. SQL Server - журналы запросов?
- 5. Объединение запросов SQL Server
- 6. Зависимости SQL Server
- 7. Логика запросов SQL Server
- 8. Оптимизация запросов SQL Server?
- 9. Группировка запросов SQL Server
- 10. запросов SQL Server вывода
- 11. запросов в SQL Server
- 12. SQL Server: группировка запросов
- 13. SQL Server - Обновление запросов
- 14. Всего запросов SQL Server
- 15. Обнуление запросов SQL Server
- 16. Журнал ошибок запросов SQL Server
- 17. Sql Server: Как я могу раскрыть псевдоним?
- 18. Как я могу исследовать SQL Server?
- 19. Оптимизация SQL-запросов в SQL Server
- 20. Как проверить версию SQL Server
- 21. Как проверить SQL Server Query?
- 22. Приоритеты запросов в SQL Server
- 23. SQL Server 2005 Статистика запросов
- 24. Ошибка выполнения запросов SQL Server
- 25. SQL Server 2005 История запросов
- 26. Как я могу проверить все зависимости, используемые в Maven POM?
- 27. Как я могу лучше проверить зависимости C-библиотеки?
- 28. SQL Server последние 25 запросов оптимизации запросов
- 29. комплексы запросов в SQL Server
- 30. Оптимизация генерации запросов SQL Server
Это не имеет никакого отношения к .net, только SQL-серверу. Тег немного вводит в заблуждение :) – DaveBoltman