2009-11-12 7 views
1

J'ai une base de données utilisant la capture de données modifiées (CDC) créée à partir d'un projet de base de données Visual Studio (GDR2).Visual Studio + Database Edition + CDC = Echec du déploiement

Mon problème est que j'ai une procédure stockée qui analyse les informations CDC, puis retourne des données. Comment est-ce un problème que vous posez? Eh bien, l'ordre d'opération est la suivante.

  1. Pré-déploiement Script
  2. Tables
  3. index, clés, etc.
  4. Procédures
  5. post-déploiement Script

A l'intérieur du script de post-déploiement est où activer CDC. C'est ici que se trouve le problème. La procédure qui agit sur les tables CDC bombarde parce qu'elles n'existent pas encore! J'ai essayé de placer l'appel à sys.sp_cdc_enable_table dans le script qui crée la table, mais cela ne lui plaît pas.

Erreur 102 TSD03070: Cette instruction n'est pas reconnue dans ce contexte. C: ... \ Schema Objects \ Schemas \ dbo \ Tables \ Foo.table.sql 20 1 Foo

  • est-il une meilleure/manière intégrée pour permettre aux CDC telles que ses références sont disponibles lorsque les procédures stockées sont créées?
  • Existe-t-il un moyen d'exécuter un script après la création de tables mais avant la création d'autres objets?
  • Que diriez-vous d'une façon de créer les dépendances de procédure être damné?
  • Ou peut-être que je fais juste des choses qui ne devraient pas être faites?!?!

Maintenant, j'ai un travail autour.

  1. Commentaire sur le corps de sproc
  2. Déploiement (CDC est créé)
  3. sproc Uncomment
  4. Déploiement
  5. Tout est bien jusqu'à ce que la prochaine fois que je mets à jour une table CDC objet d'un suivi. Ensuite, je dois commenter la procédure "offensante".

Merci d'avoir lu ma question et merci pour votre aide!

Répondre

0

Je ne suis pas vraiment familier avec cela à travers un projet VS DB, mais je peux au moins essayer d'offrir une solution alternative. Ce n'est qu'une demi-réponse, mais pourriez-vous abandonner plutôt que modifier le proc à l'étape 1? Au moins de cette façon, vous n'auriez pas à singe avec le contenu de la proc. Dans les jours "avant que nous ayons eu diff pour db", j'abandonnais généralement tous les bits non-table avant de modifier les tables.

Je sais que cela ne va pas à la cause première, mais peut être au moins un travail plus facile/plus clair. Si rien d'autre, vous sauriez si le proc est là ou non, vous empêchant de penser que tout est cool mais votre corps proc est manquant, d'où il ne fait rien.

+0

Je ne suis pas sûr que cela fonctionnerait. Le proc est un fichier, foo.proc.SQL, ce studio visuel s'exécute chaque fois que j'essaye de déployer. Le fichier lui-même est une procédure CREATE dbo.foo AS ... Je ne suis pas sûr de savoir comment déployer fonctionne, si elle clobbers tout et commence à partir de zéro. La nature intermittente de l'émission en fait un PITA. Par exemple, pas de nouvelles colonnes ATM, ça marche bien :) –