0
votes

SSDT a une référence non résolue à l'objet pour les vues mais fonctionne correctement pour la procédure

Cette erreur n'est pas l'erreur "normale", lorsqu'il y a une référence de base de données manquante. J'ai une référence de base de données ajoutée correctement et cela a bien fonctionné jusqu'à présent avec des procédures stockées.

Le problème: > p>

J'ai un projet de base de données, appelons-le Bidk Strong>. Cette base de données a une référence au fichier DACPAC, construire à partir d'un projet de base de données NOTER appelé rptdk strong>. P>

rptdk strong> a une table appelée dbo.billingitem strong>, que je peux faire référence à partir de BIDK STRY> Projet de base de données à l'aide de ce code: P>

[CommonDM].[TestReferenceFromView] has an unresolved reference to object [RPTDK].[dbo].[BILLINGITEM]


0 commentaires

3 Réponses :


0
votes

J'avais un cas comme celui-ci avant, au lieu de spécifier le nom de la base de données, essayez de sélectionner sans spécifier le nom de la base de données comme celui-ci xxx

ou en utilisant [$ dbname] pour le nom de la base de données comme celui-ci. xxx

Cela a fonctionné pour moi


1 commentaires

Le premier sans indiquer le nom de la base de données n'a pas fonctionné. Mais la seconde permet de me permettre de construire, cependant, cela est plutôt anoying encore, car je ne peux plus copier de coller des parties du code de Visual Studio sur SSMS, sans passer constamment de la version $ (qui est essentiellement un paramètre i SQLCMD. mode) et la valeur réelle. C'est vraiment anodying, mais merci pour votre aide.



0
votes

Après avoir testé et essayer des paramètres différents, je peux conclure que l'approche "correcte" consiste à utiliser la syntaxe [$ ($ (RPTDK)] forte>, dans laquelle le RPTDK est le nom du nom du paramètre, comme Il est défini lorsque l'on ajoute la référence de la base de données au début.

select BILLINGITEM_ID,
       TIMESTAMP,
       BILLINGITEMTYPE_ENUMID,
       VATCODE_ENUMID,
       LCOMPANY_ID,
       LEASESERVICECOMPONENT_ID
from [$(RPTDK)].[dbo].BILLINGITEM as bilitm


0 commentaires

0
votes

Pour être court - SSDT aime les noms de 2 parties. Vous pouvez utiliser des variables pour 3-4 noms de pièce, mais idéalement, vous devez créer un DACPAC ou un projet pour chaque base de données externe. Puis référez-les dans votre projet principal. Ensuite, pour chaque objet externe, vous devez créer des synonymes, puis vous n'aurez plus de problèmes. De plus, il vous donnera possibilité d'avoir différentes bases de données / instances sur différents environnements.

Vous pouvez trouver un exemple comment organiser la solution avec SSDT dans mon Github Repo . Je veux toujours ajouter d'autres choses là-bas, mais vous pouvez voir un exemple de comment travailler avec votre cas.


0 commentaires