0
votes

Comment déterminer les dépendances d'une table?

Je dois migrer certaines données entre les environnements. Les structures de données seront exactement identiques, toutefois, certaines des données sont dépendantes de données existantes qui devront être adaptées, ou plus précisément, des utilisateurs (tels que la propriété, la dernière modification, etc.). J'ai déjà établi comme une exigence selon laquelle les noms d'utilisateur sur les deux environnements se réfèrent toujours au même utilisateur, ce que je dois faire, c'est de déterminer quelles colonnes référennent la table utilisateur et transformer mes données d'un environnement à l'autre.

J'ai essayé de vérifier les dépendances de l'objet SQL Server Management Studio sur la table des utilisateurs et une liste détaillée de laquelle les objets référencent la colonne ID. Cependant, il y a au moins une table que je sais que cela fait référence à la colonne ID qui n'apparaît pas dans la liste. P>

Options de contrainte sur la table P>

personnes à charge sur la table des utilisateurs p>

Tentative de mise à jour d'une ligne de la table de proposition avec un identifiant non invitée affiche l'exception attendue: p>

Msg 547, Level 16, State 0, Line 1
The UPDATE statement conflicted with the FOREIGN KEY constraint "OSFRK_OSUSR_tpt_PROPOSAL_OSUSR_A7L_USER_MASTER_CREATEDBY". The conflict occurred in database "databasename", table "dbo.OSUSR_A7L_USER_MASTER", column 'ID'.


3 commentaires

Cela ressemble à ce que vous avez trouvé est une clé étrangère implicite. C'est-à-dire que la demande traite la relation comme une clé étrangère, mais la base de données elle-même manque l'intégrité référentielle pour l'appliquer. Ces types de choses sont difficiles à trouver.


Comment cela serait-il le cas, car les contraintes sont en place et que les mises à jour sur la table des consommateurs échouent en vertu du serveur de maintien de l'intégrité des données?


Aller sur votre commentaire ... "Cependant, il y a au moins une table que je sais que renvoie la colonne ID qui n'apparaît pas dans la liste."


3 Réponses :


0
votes

Vous pouvez suivre la procédure suivante, dans Explorateur d'objets , développez Bases de données , développez une base de données , puis développez Tables < / fort>.

Cliquez avec le bouton droit sur une table, puis cliquez sur Voir les dépendances .

Dans la boîte de dialogue Dépendances d'objet, sélectionnez des objets dépendants ou des objets sur lesquels.

Sélectionnez un objet dans la grille de dépendants. Le type d'objet (tel que «déclencheur» ou «procédure stockée») apparaît dans la zone Type.

En outre, ce lien est très utile: https://docs.microsoft.com/en-us/sql/relational-databases/tables/view-the-depends-of-atable?view = SQL-Server-2017


1 commentaires

Merci pour la réponse. J'ai édité ma question de clarté. J'avais fourni deux captures d'écran, mais la façon dont le texte a été aligné, il semblerait que ce n'est qu'un. La deuxième capture d'écran indique les "objets qui dépendent de ..." de la fenêtre de la table des utilisateurs et le tableau que j'ai mentionné ne figure pas.



0
votes

Vous pouvez également utiliser cette commande:

USE [databasename]
GO
EXEC sp_depends @objname = 'objectname';


2 commentaires

Weird, cette commande ne renvoie rien. Ou plutôt, il renvoie que "l'objet ne fait référence à aucun objet, et aucun objet ne le fait référence.". J'ai fourni à la fois le nom de la table et le nom complet (avec base de données et schéma) et ils ont tous deux renvoyé le même message.


Désolé, cette commande consiste à visionner les dépendances des objets tels que des tables et des vues. Vous pouvez trouver plus d'informations sur cette commande ici: docs.microsoft.com/en-us/sql/relante-databases/...



0
votes

Essayez cela peut être ce qui vous sera utile.

EXEC sp_fkeys 'TableName'


1 commentaires

Merci, cela a fait l'affaire. Il montre le tableau que j'ai mentionné et je vis un aspect rapide, j'ai également remarqué au moins une autre table qui n'était pas présente dans la fenêtre d'origine.