2

est-il un moyen de spécifier le transaction isolation level lorsque Crystal Reports interroge une base de données SQL Server 2005 sans avoir recours à une des opérations suivantes: deCrystal Reports avec SQL Server 2005: Configuration Isolation des transactions Niveau

  • encapsulant le rapport requête dans une procédure stockée qui exécute SET TRANSACTION ISOLATION LEVEL... avant que la requête elle-même
  • -écriture à la main la requête SQL dans Crystal Reports pour exécuter SET TRANSACTION ISOLATION LEVEL...
+0

Que utilisez-vous pour vous connecter au serveur? (c'est-à-dire ADO.NET via SqlClient, ODBC, OleDb? JDBC? etc.) – chadhoc

+1

@chadhoc: J'essaie d'accomplir ceci via l'application Crystal Reports. Je n'écris pas de code pour utiliser les bibliothèques de connectivité de base de données que vous avez mentionnées. Je souhaite que Crystal Reports configure automatiquement ses connexions de base de données lorsque ** ** ** utilise les bibliothèques de connectivité de base de données. –

+0

merde, j'avais peur de cela - malheureusement, je ne serai pas beaucoup d'aide là-bas. Je pense que si vous utilisez ODBC via CR, vous aurez l'option de faire des mises à jour du registre, ou de créer un DSN sur le système qui spécifie le niveau d'iso que vous voulez utiliser, mais si vous utilisez autre chose (ie OleDb, JDBC, etc.) Je ne vais pas beaucoup aider. – chadhoc

Répondre

1

j'ai pu intégrer cela dans un objet Command:

SET TRANSACTION ISOLATION LEVEL REPEATABLE READ 

--Command objects need to return a value 
SELECT GetDate() 

Cet objet de commande était en plus à la requête que je « ai écrit » dans l'Expert Base de données. Voulez-vous élaborer sur la nécessité de régler le NIVEAU D'ISOLATION?

+0

Merci pour la réponse! Est-ce que la commande exécutera * avant * la requête réelle et dans la même connexion (les niveaux d'isolation de transaction sont sur une base de connexion par connexion)? J'ai essayé d'ajouter ceci à un nouveau rapport et Crystal Reports m'a donné l'avertissement "Votre configuration de lien actuelle contient plusieurs points de départ", me faisant ainsi me demander qui s'exécute en premier. –

+0

Je souhaite définir le niveau d'isolation de la transaction car l'un de nos rapports comporte une requête de longue durée (~ 2 minutes) qui sélectionne toutes les lignes d'une table fréquemment utilisée. Parce que cela verrouille (verrous partagés) chaque ligne dans cette table souvent utilisée, personne d'autre n'est en mesure de mettre à jour jusqu'à ce que la requête se termine. –

+0

Honnêtement, je ne sais pas quand il va s'exécuter par rapport à la requête 'principale'. Est-ce quelque chose que vous pouvez tester? Autre idée: vous pourriez peut-être créer un compte spécial pour les requêtes générées par les rapports et définir le niveau d'isolation de ce compte. – craig

Questions connexes