IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

MS SQL Server Discussion :

Problème BO, Transaction level Snapshot, NO_BROWSETABLE et sp_prepare


Sujet :

MS SQL Server

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Mars 2007
    Messages
    616
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Luxembourg

    Informations forums :
    Inscription : Mars 2007
    Messages : 616
    Par défaut Problème BO, Transaction level Snapshot, NO_BROWSETABLE et sp_prepare
    Bonjour,

    J'ai un problème qui viens certainement de Business Objects, mais j'aimerais comprendre pourquoi j'ai tout un paquet d'instruction SQL et pourquoi ça ne marche pas.

    Je m'explique, je veux exécuter ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    SET TRANSACTION ISOLATION LEVEL SNAPSHOT
    SELECT
     V_DIM_PRO_LIB.PRO_C_PRO,
     V_DIM_PRO_LIB.PRO_LABEL
    FROM
      V_DIM_PRO_LIB
    La requête est générée par BO et le préfixe (SET...) à été défini dans les paramètres de connexion. Ce qui me semble correct.
    Dans le profiler je vois ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
     
    SET NO_BROWSETABLE ON
    --
    declare @p1 int
    set @p1=1
    exec sp_prepare @p1 output,NULL,N'SET DATEFORMAT YMD',1
    select @p1
    --
    exec sp_execute 1
    --
    exec sp_unprepare 1
    --
    SET NO_BROWSETABLE OFF
    --
    declare @p1 int
    set @p1=2
    exec sp_prepexec @p1 output,NULL,N'SET TRANSACTION ISOLATION LEVEL SNAPSHOT'
    select @p1
    --
    exec sp_unprepare 2
    --
    SET NO_BROWSETABLE ON
    --
    declare @p1 int
    set @p1=3
    exec sp_prepare @p1 output,NULL,N'SELECT
     V_DIM_PRO_LIB.PRO_C_PRO,
    V_DIM_PRO_LIB.PRO_LABEL
    FROM
      V_DIM_PRO_LIB
    ',1
    select @p1
    --
    exec sp_execute 3
    --
    exec sp_unprepare 3
    Il n'y a pas de doc sur les procédures sp_xxx ni sur SET NO_BROWSETABLE
    BO, ne peut pas afficher le snapshot et se bloque.
    Je ne peux pas exécuter le code tel quel dans Management Studio, mais celui là fonctionne correctement et donne bien l'état Snapshot:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    SET NO_BROWSETABLE ON
    SET DATEFORMAT YMD
    SET NO_BROWSETABLE OFF 
    SET TRANSACTION ISOLATION LEVEL SNAPSHOT
    SET NO_BROWSETABLE ON
    SELECT
     V_DIM_PRO_LIB.PRO_C_PRO,
     V_DIM_PRO_LIB.PRO_LABEL
    FROM
      V_DIM_PRO_LIB
    Est ce que quelqu'un sait ou a une idée pourquoi le lot d'instruction BO ne fonctionne pas alors que celui de management Studio marche bien?
    Est-ce que quelqu'un peut me dire ce qu'est :
    SET NO_BROWSETABLE ON
    sp_prepare
    sp_execute
    sp_unprepare
    sp_prepexec ?
    (Je suppose que qu'il s'agit de procédures pour des requêtes pré-compilées)

    Merci

  2. #2
    Membre chevronné Avatar de agemis31
    Profil pro
    DBA
    Inscrit en
    Octobre 2007
    Messages
    399
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : DBA

    Informations forums :
    Inscription : Octobre 2007
    Messages : 399
    Par défaut
    Bonsoir,

    L'option NO_BROWSETABLE est documentée ici.

    J'ai l'impresion que BO essaye de modifier le curseur obtenu pendant son parcours (sinon pourquoi utiliser NO_BROWSETABLE ON ?), mais avec un niveau d'isolation SNAPSHOT, les curseurs sont statiques.

    Avez vous le même problème avec un autre niveau d'isolation ?

    @+

  3. #3
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Mars 2007
    Messages
    616
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Luxembourg

    Informations forums :
    Inscription : Mars 2007
    Messages : 616
    Par défaut
    Citation Envoyé par agemis31 Voir le message
    Bonsoir,

    L'option NO_BROWSETABLE est documentée ici.
    Merci. Donc si j'ai bien compris NO_BROWSETABLE ON = FOR BROWSE dans chaque SELECT. Mais je n'ai toujours pas compris ce qu'est FOR BROWSE, je ne sais pas ce qu'est un curseur de mode de navigation DB-Library.

    J'ai l'impresion que BO essaye de modifier le curseur obtenu pendant son parcours (sinon pourquoi utiliser NO_BROWSETABLE ON ?), mais avec un niveau d'isolation SNAPSHOT, les curseurs sont statiques.

    Avez vous le même problème avec un autre niveau d'isolation ?
    @+
    En faite c'est moi qui a ajouté la ligne SET TRANSACTION ISOLATION LEVEL SNAPSHOT dans les paramètres de connexion de BO, par défaut il n'y a rien.

  4. #4
    Membre chevronné Avatar de agemis31
    Profil pro
    DBA
    Inscrit en
    Octobre 2007
    Messages
    399
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : DBA

    Informations forums :
    Inscription : Octobre 2007
    Messages : 399
    Par défaut
    Bonsoir,

    En faite c'est moi qui a ajouté la ligne SET TRANSACTION ISOLATION LEVEL SNAPSHOT dans les paramètres de connexion de BO, par défaut il n'y a rien.
    Oui, donc ça marche en ne mettant rien (donc en READ COMMITTED si le niveau d'isolation n'a pas été changé) ?
    Au vu de l'utilisation de BO et des noms de vos tables, vous travaillez sur une base OLAP. J'imagine qu'on ne peut pas la considérer en lecture seule
    puisque vous voulez utiliser le niveau d'isolation SNAPSHOT...

    @+

  5. #5
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Mars 2007
    Messages
    616
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Luxembourg

    Informations forums :
    Inscription : Mars 2007
    Messages : 616
    Par défaut
    Citation Envoyé par agemis31 Voir le message
    Bonsoir,
    Oui, donc ça marche en ne mettant rien (donc en READ COMMITTED si le niveau d'isolation n'a pas été changé) ?
    Oui.
    Au vu de l'utilisation de BO et des noms de vos tables, vous travaillez sur une base OLAP. J'imagine qu'on ne peut pas la considérer en lecture seule
    puisque vous voulez utiliser le niveau d'isolation SNAPSHOT...
    @+
    Oui, en effet c'est un Datawarehouse. Il est chargé par des procédures stockées et BO ne fait que des SELECTs. Pendant le chargement je voulais donner aux utilisateurs la possibilité de tirer leurs rapports.
    Le niveau snapshot pourrait permettre également la possibilité de déboguer les procédures stockées directement en prod sans bloquer les utilisateurs.

    Mais comment faire?

    P.S. qu'est ce qu'un curseur de mode de navigation DB-Library?

  6. #6
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 990
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 990
    Billets dans le blog
    6
    Par défaut
    Pour naviguer en mode d'isoaltion snapshot il faut que la base l'autorise. Vérifiez cela dans les propriétés de la base

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

Discussions similaires

  1. [delphi][interbase]problème de transaction
    Par daheda dans le forum Bases de données
    Réponses: 4
    Dernier message: 26/10/2006, 09h12
  2. Problème de Transactions
    Par blaspalles dans le forum Access
    Réponses: 4
    Dernier message: 18/09/2006, 17h05
  3. problème de transaction et load data
    Par jccanut dans le forum Installation
    Réponses: 6
    Dernier message: 14/09/2006, 11h38
  4. [SQL 2k] Problème de transaction choisie comme victime
    Par Actarion dans le forum MS SQL Server
    Réponses: 7
    Dernier message: 04/07/2006, 17h17
  5. Encore un petit problème de transaction
    Par devdev dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 24/03/2005, 16h13

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo