Y a-t-il un moyen de savoir quelles tables de base sont utilisées par les vues en utilisant une requête personnalisée ou une procédure stockée?Comment puis-je vérifier les dépendances des vues sql server
Répondre
Si c'est quelque chose que vous ferez souvent Red Trackers SQL Tracker (non je ne travaille pas pour eux) est un excellent outil. Je pense qu'ils ont une période d'essai si vous voulez l'essayer.
Voici une bonne explication:
https://web.archive.org/web/1/http://blogs.techrepublic%2ecom%2ecom/datacenter/?p=277
Je n'obtiens aucun résultat quand je crée et exécute ce sp –
Vous pouvez utiliser la sql_dependencies vue:
select OBJECT_NAME(referenced_major_id) as DependantObject
from sys.sql_dependencies
where object_id = object_id('YourViewName')
Pour récupérer de manière récursive les dépendances (fe, si vous sélectionnez d'une vue, cela trouverait les tableaux les autres références de vue):
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
Cette méthode n'est pas infaillible. Par exemple, si vous renommez un objet à l'aide de sp_rename, ses dépendances ne sont pas mises à jour.
Je n'obtiens aucun résultat quand je cours ceci –
Fonctionne bien sur ma machine. Peut-être pourriez-vous poster la définition de la vue? – Andomar
oui cela ne fonctionne que pour les vues que j'ai créées mais pour les autres vues créées par d'autres développeurs (auxquelles j'accède) j'obtiens 0 enregistrements. –
Vous pouvez utiliser la fonction sys.dm_sql_referenced_entities pour trouver des objets référencés par une vue spécifiée:
SELECT DISTINCT
referenced_schema_name ,
referenced_entity_name
FROM sys.dm_sql_referenced_entities ('Sales.vSalesPersonSalesByFiscalYears', 'OBJECT');
En outre, il est le point de vue du système de sys.sql_expression_dependencies où vous pouvez spécifier un nom de table et un type de l'objet de référence:
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'
Pour éviter le travail "manuel", vous pouvez également utiliser ApexSQL Clean, un outil SQL Server capable de trouver toutes les dépendances internes et externes. Dans les résultats Pane sélectionnez un objet et voir tous les objets qui dépendent de l'objet sélectionné et les objets sur lesquels l'objet sélectionné dépend:
Vous pouvez également filtrer les objets et visualiser les dépendances:
Disclaimer: Je travaille pour ApexSQL comme ingénieur support
Hope this helps
Vous pouvez le faire en utilisant sys.sql_expression_dependencies dans SQL-server> = 2008 (R1 +)
Note: Cela prendra 30 secondes ou plus.
Si vous voulez seulement les vues, les fonctions supprimer scalaire + valeurs tabulaires ('FN' et 'IF'). Une fonction de valeur table peut être une dépendance d'une vue et vice-versa, et la vue/tvf peut dépendre de fonctions scalaires.
;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. Recherche de dépendances dans SQL Server 2005
- 2. Vues SQL Server 2005
- 3. Comment vérifier un Makefile pour les dépendances?
- 4. Comment imiter les vues matérialisées Oracle sur MS SQL Server?
- 5. SQL Server 2005 procédure stockée Dépendances
- 6. Sql Server Ce 3.5 Vérifier les contraintes
- 7. Dans SQL Server, comment identifier toutes les dépendances pour une table spécifique à l'aide de tables/vues système?
- 8. Comment supprimer Case Sensitive vérifier dans SQL Server 2008?
- 9. Rejoindre des vues sql dans Oracle sql
- 10. Vue SQL Server montrant des données obsolètes/erronées après la modification des dépendances sous-jacentes
- 11. Texte des vues système dans SQL Server 2005
- 12. Vérifier les autorisations d'affichage des vues pour l'utilisateur
- 13. Vérifier l'intervalle de date avec SQL Server
- 14. Microsoft SQL Server: vérifier les utilisateurs propres autorisations
- 15. Diagramme des dépendances pour les partiels Rails
- 16. Donner à Flex MXML des vues de leurs dépendances
- 17. SQL Server FTI: Comment vérifier l'état de la table?
- 18. Comment supprimer une colonne avec des dépendances d'objet dans SQL Server 2008?
- 19. Les vues SQL Server peuvent-elles avoir des clés primaires et étrangères?
- 20. Comment puis-je vérifier l'enregistrement en double dans SQL Server
- 21. Comment vérifier qui a fait quoi dans SQL Server 2005?
- 22. Sql Requête pour lister toutes les vues dans une base de données SQL Server 2005
- 23. Aide requête SQL (Rejoindre des vues?)
- 24. Vues vs sous-requêtes inline SQL Server 2005/2008
- 25. Sql Server: Comment refuser l'accès des utilisateurs aux serveurs liés
- 26. Comment appeler des vues dans une autre instruction SELECT (SQL Server)?
- 27. Dans SQL Server 2000, existe-t-il une requête sysobjects qui récupère les vues utilisateur et non les vues système?
- 28. Comment vérifier les dépendances lors de l'invocation d'une sous-marque à générer en cas de modifications?
- 29. SQL Server 2005, le besoin de script pour vérifier toutes les contraintes sur la table
- 30. Les tables SQL ne sont-elles pas des vues?
Cela n'a rien à voir avec .net, uniquement le serveur SQL. L'étiquette est un peu trompeuse :) – DaveBoltman