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 :

ansi_nulls et ansi_warnings sur OPENROWSET Erreur Msg 7405


Sujet :

MS SQL Server

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé

    Profil pro
    Administrateur de base de données
    Inscrit en
    Février 2004
    Messages
    130
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Février 2004
    Messages : 130
    Par défaut ansi_nulls et ansi_warnings sur OPENROWSET Erreur Msg 7405
    A mes sauveurs: bien le bonjour,

    Je fais un insert à partir d'un serveur dans une table sur un autre serveur via un openrowset . Le script est lancé par un isql:

    isql -S prodsr014\dfrec7 -U stat -P stat -d dba -i suivi_users.sql -o suivi_users_dfrec7.txt -w 200 -n

    Pas de chance le système me renvoie:
    Msg 7405, Level 16, State 1, Server PRODSR014\DFREC7, Line 96
    Les requˆtes h‚t‚rogŠnes requiŠrent les options ANSI_NULLS et ANSI_WARNINGS pour ˆtre d‚finies pour la connexion. Cela assure la coh‚rence s‚mantique de la requˆte. Activez ces options et relancez la
    requˆte.

    (Dommage, avec l'analyser de requêtes, cela fonctionne très bien...)
    J'ai beau préciser avant l'openrowset: set ansi_defaults on, j'ai tjs le même message....

    Triste, non? Pouvez vs m'expliquer le pourquoi du comment et le moyen d'éluder ce problème
    grand merci

  2. #2
    Rédacteur/Modérateur

    Avatar de Fabien Celaia
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Octobre 2002
    Messages
    4 227
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : Suisse

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Service public

    Informations forums :
    Inscription : Octobre 2002
    Messages : 4 227
    Billets dans le blog
    25
    Par défaut
    Peut-on STP voir ce qu'il y a dans suivi_users.sql ?
    Sr DBA Oracle / MS-SQL / MySQL / Postgresql / SAP-Sybase / Informix / DB2

    N'oublie pas de consulter mes articles, mon blog, les cours et les FAQ SGBD

    Attention : pas de réponse technique par MP : pensez aux autres, passez par les forums !

  3. #3
    Membre confirmé

    Profil pro
    Administrateur de base de données
    Inscrit en
    Février 2004
    Messages
    130
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Février 2004
    Messages : 130
    Par défaut Scripit sql de comptage.
    Voici le script.
    Buts: compter le nombre de users , tout les quarts d'heure, sur nos serveurs. Conserver ces données sur un serveur particulier via un openrowset.
    In the beginning, j'avais un problème sur ansi_nulls et ansi_warnings. J'ai résolu par cochage dans les propriétes du serveur.
    Maintenant, j'ai:

    Serveur : Msg 7391, Niveau 16, État 1, Ligne 96
    L'opération demandée ne peut pas être effectuée car le fournisseur OLE DB 'SQLOLEDB' n'a pas réussi à démarrer de transaction distribuée.
    [OLE/DB provider returned message: La nouvelle transaction ne peut pas s'inscrire dans le coordinateur de transactions spécifié. ]


    La ligne 96 correspond à mon insert via OPENROWSET

    Donc, le script... si tu peux me dépanner.....ou me donner des conseils....
    -- ******************************************
    -- * SCRIPT COMPTAGE UTILISATEURS CONNECTES *
    -- ******************************************
    -- création des tables: à ne passer qu'un fois SUR LE SERVEUR CIBLE
    -- drop table stat.sess_s01
    -- create table sess_s01 (
    -- S01_pk bigint identity (1,1)
    -- S01_timestamp DATEtime,
    -- S01_server varchar(25),
    -- S01_base varchar(25),
    -- S01_username varchar(30),
    -- S01_count int)
    -- drop table stat.sess_s02
    -- create table sess_s02 (
    -- S02_server varchar(25),
    -- S02_base varchar(25),
    -- S02_dir char(1),
    -- S02_type char(1) )


    -- Accès base DBA et options
    use dba


    set ansi_warnings on
    set ansi_defaults on
    set ansi_nulls on

    -- DECLARATION DES VARIABLES

    -- variables gestion du time stamp
    declare @ts char(30) -- récupère la date
    declare @mi char(2) -- récupère les minutes
    -- variables gestion nom serveur et nom instance
    declare @buf char(35)
    declare @serv varchar(20) -- récupère le serveur
    declare @inst varchar(20) -- récupère la base
    -- variables gestion fectch sur cursor1
    declare @Fv1 char(20) -- récupère le nom de la base de données
    declare @Fv2 char(15) -- récupère le nom de l utilisateur
    declare @Fv3 int -- récupère le nombre de connection sous cet utilisateur
    -- variables diverses
    set nocount on
    set textsize 0
    set fmtonly off
    print ' '

    -- CORPS PROGRAMME

    -- TRAVAIL SUR TIME STAMP
    set @ts=getdate()
    -- gestion du créneau des minutes
    set @mi=datepart(minute,@ts)
    if ( ( @mi > 1 and @mi < 15 ) or @mi = 0 ) set @mi='00'
    if @mi > 14 and @mi < 30 set @mi=15
    if @mi > 29 and @mi < 45 set @mi=30
    if @mi > 44 and @mi < 61 set @mi=45
    set @ts=stuff(@ts,charindex(':',@ts) +1,2,@mi)
    set @ts= cast(@ts as datetime)
    print @ts

    -- TRAVAIL sur nom SERVEUR et nom BASE
    set @buf=@@servername
    set @serv=substring(@buf,1,charindex('\',@buf) - 1 )
    set @inst=substring(@buf,charindex('\',@buf) + 1,70 )

    -- ACQUISITIONS et TRAITEMENT des onnées
    if exists (select * from dba..sysobjects where name='Xresult0' and xtype='U')
    drop table Xresult0

    create table Xresult0 (
    SPID smallint,
    ecid smallint,
    status nchar(30),
    loginame nchar(128),
    hostname nchar(128),
    blk char(5),
    dbname char(128) null,
    cmd nchar(30) )

    insert into Xresult0 exec sp_who

    -- enrichissement de la table maitresse sess_s01 du serveur cible
    declare cursor1 cursor scroll for
    select dbname, loginame, count(*) from Xresult0 where hostname <> ' '
    and loginame <> 'stat'
    group by dbname, loginame
    order by dbname
    open cursor1

    fetch first from cursor1 into @Fv1, @Fv2, @Fv3

    while @@fetch_status =0
    begin
    set ansi_defaults on
    insert into OPENROWSET('SQLOLEDB','75.17.2.121\bidon';'stat';'stat','SELECT * FROM dba..sess_s01')
    (s01_timestamp, s01_server, s01_inst, s01_base, s01_username, s01_count)
    VALUES
    (@ts, @serv, @inst, @Fv1, @Fv2, @Fv3)

    print @ts+' '+@serv+' '+@inst+' '+ @Fv1 + ' ' + @Fv2 + ' ' + cast(@Fv3 as char(10))
    fetch next from cursor1 into @Fv1, @Fv2,@Fv3
    end

    close cursor1
    deallocate cursor1

    -- FIN traitement d insertion

    -- final
    drop table result0


    Merci et bonne soirée

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Debutant GCC sur Solaris]Erreur de compilation
    Par xxaragornxx dans le forum Autres éditeurs
    Réponses: 3
    Dernier message: 13/01/2006, 17h29
  2. Aide sur gestion erreur
    Par Virgile59 dans le forum Access
    Réponses: 6
    Dernier message: 05/01/2006, 18h05
  3. erreur: ...ANSI_NULLS et ANSI_WARNINGS.. dans une storedProc
    Par MoTUmBo dans le forum MS SQL Server
    Réponses: 5
    Dernier message: 01/12/2005, 21h24
  4. Réponses: 15
    Dernier message: 16/09/2004, 09h37
  5. question sur les erreurs de compilation
    Par vince3320 dans le forum C
    Réponses: 5
    Dernier message: 19/04/2004, 11h34

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