2009-02-04 3 views
1

J'utilise VSTS 2008 avec les éditions développeur et base de données installées. J'ai installé l'édition DB GDR (version 9.0.31124). Nous avons plusieurs endroits dans le code que nous référençons les serveurs liés (mainframe DB2, iSeries et SQL Server). Un tel exemple est le code que nous avons dans une procédure de magasin:Comment résoudre les erreurs de requête de serveur lié à 4 parties dans le projet de base de données VSTS?

SELECT VendorID 
INTO  #tmpVendors 
FROM DataWhse.BIDataWhse.BP.Vendors 
WHERE EffectiveDate < DATEADD(day, -1, DATEADD(month, 1, CAST(LTRIM(RTRIM(CAST(@Month AS CHAR(2)))) + '/01/' + CAST(@YEAR AS CHAR(4)) AS DATETIME))) 
AND  ExpirationDate > CAST(LTRIM(RTRIM(CAST(@Month AS CHAR(2)))) + '/01/' + CAST(@YEAR AS CHAR(4)) AS DATETIME) 

Je reçois des erreurs de référence non résolues (TSD03006) sur ce type de code. Quelle est la recommandation actuelle pour la gestion de ce type de référence de serveur lié? Dans ce cas, nous traitons avec une autre instance SQL Server 2005. La base de données que nous lions contient des tonnes de tables que nous n'utiliserions jamais. Donc, je voudrais éviter d'avoir à retirer tout le schéma pour cette base de données si possible.

Les informations que je trouve lorsque je cherche semblent être obsolètes. Le GDR a tellement changé au cours de la dernière année et il y a beaucoup de conseils sur les versions antérieures de CTP qui est maintenant oboslete.

Répondre

2

J'ai finalement résolu ce problème. J'ai créé un projet de base de données nommé BIDataWhse, ajouté un schéma bp, ajouté un utilisateur bp et ajouté la définition de la table bp.vendors. Puis compilé ce projet et ajouté une référence db au projet où je recevais l'erreur. Dans la référence, j'ai spécifié des variables pour le serveur et la base de données et j'autorise les substitutions de variables. Le code qui en résulte est:

SELECT VendorID  
INTO  #tmpVendors  
FROM [$(DataWhse)].[$(BIDataWhse)].BP.Vendors  
WHERE EffectiveDate < DATEADD(day, -1, DATEADD(month, 1, CAST(LTRIM(RTRIM(CAST(@Month AS CHAR(2)))) + '/01/' + CAST(@YEAR AS CHAR(4)) AS DATETIME)))  
AND  ExpirationDate > CAST(LTRIM(RTRIM(CAST(@Month AS CHAR(2)))) + '/01/' + CAST(@YEAR AS CHAR(4)) AS DATETIME)  
2

Pour développer cette situation, la référence Ajouter une base de données effectuera la plupart du travail pour vous. Vous devez créer le projet pour la base de données liée et importer le schéma db à partir de la base de données (ou importer des scripts pour les tables dont vous avez besoin si vous ne voulez pas faire toute la base de données). "Dans la référence, j'ai spécifié des variables pour le serveur et la base de données et autoriser les substitutions de variables". Cela signifie que vous pouvez cocher Définir une variable de serveur, Définir une variable de base de données et Mettre à jour des objets de schéma et des scripts. Entrez les noms des variables (il les entourera de $ (..)) et entrez les valeurs que vous voulez remplacer (les vrais noms de serveur/base de données à insérer lorsque le script de déploiement est généré). L'option Mettre à jour l'amènera à parcourir votre projet et à éditer tous les scripts pour remplacer les noms de serveur/base de données par les variables. cool.

Questions connexes