Question

Histoire: L'autre soir, j'ai eu un déploiement qui impliquait l'exécution d'un script qui crée une procédure stockée. Cependant, lors de l'exécution du script, une erreur s'est produite lors du classement de la base de données.

Le problème: Avec l'aide de notre ami Google, j'ai découvert que le problème que je rencontrais était dû au fait que la base de données de notre environnement dynamique contenait un classement et que le classement de la base de données temporaire était différent et que j'obtenais une erreur en essayant d'insérer une variable. table.

La question: Quelle est la meilleure voie à suivre ou quelles sont mes options?

Environnement: sql 2000

Merci d'avance.

Était-ce utile?

La solution

Nous avons rencontré celui-ci avec des bases de données temporaires que nous utilisons pour les tests d'intégration, en relation avec les bases de données de développement et de production. Nous avons veillé à ce que toutes les bases de données utilisent le même classement. Dans votre cas, vous devriez probablement être capable de faire une simple recherche / remplacement dans le fichier de script et de changer simplement le classement en celui utilisé dans la base de données cible.

Éditer: changer dans le script vous fera avancer maintenant; à plus long terme, vous voudrez vous assurer d'utiliser le même classement dans toutes les bases de données associées.

Autres conseils

Il y a des solutions

  • Assurez-vous que tous vos éléments sont identiques dans la même base de données. Sinon, vous allez souffrir.
  • La bonne chose à faire si vos tables temporaires ne contiennent pas beaucoup de données est de les recréer avec le même assemblage que les tables dest.
  • Si ce n'est pas une option, recherchez les types de chaînes et forcez votre assemblage vers la base de données de destination

     INSERT INTO dest_db..DEST_TABLE ( DEST_VARCHAR_COLUMN )
     SELECT TMP_VARCHAR_COLUMN COLLATE <dest_db_collate>
     FROM tmp_db..#TEMP_TABLE
    

La solution évidente consiste à réinstaller votre base de développement avec le même classement que la base de production.

Si vous ne le pouvez pas, par exemple si vous avez plusieurs bases de données de production avec différents classements, vous pouvez vous assurer que vos mises à jour échouent ou réussissent dans leur ensemble. Placez une transaction autour de toutes les mises à jour des procédures stockées et veillez à utiliser alter, non pas déposer / créer.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top