set @sph_usr = 'derives'
set @sph_pwd = 'casanis'
set @sph_db = 'devrisk1'
set @idemmission = 3208
set @isin_new = 'XS0000000007'
set @sql = 'update OPENROWSET(''MSDAORA'',''' + @sph_db + '''; '''
+ @sph_usr + '''; ''' + @sph_pwd + ''', ''select * from
hsbc_pims_to_sophis_rapro where idemmission = ' + cast(@idemmission as
varchar)+''') set codeisin = ''' + @isin_new + ''''
exec sp_executesql @sql
Par contre, lorsque je tente la même mise à jour depuis un trigger, alors
j'obtiens l'erreur suivante:
Server: Msg 7391, Level 16, State 1, Procedure TR_UPD_TEST, Line 34
The operation could not be performed because the OLE DB provider 'MSDAORA'
was unable to begin a distributed transaction.
OLE DB error trace [OLE/DB Provider 'MSDAORA'
ITransactionJoin::JoinTransaction returned 0x8004d01b].
Connaissez vous ce problème et le moyen de le contourner?
set @sph_usr = 'derives' set @sph_pwd = 'casanis' set @sph_db = 'devrisk1'
set @idemmission = 3208 set @isin_new = 'XS0000000007'
set @sql = 'update OPENROWSET(''MSDAORA'',''' + @sph_db + '''; ''' + @sph_usr + '''; ''' + @sph_pwd + ''', ''select * from hsbc_pims_to_sophis_rapro where idemmission = ' + cast(@idemmission as varchar)+''') set codeisin = ''' + @isin_new + ''''
exec sp_executesql @sql
Par contre, lorsque je tente la même mise à jour depuis un trigger, alors j'obtiens l'erreur suivante:
Server: Msg 7391, Level 16, State 1, Procedure TR_UPD_TEST, Line 34 The operation could not be performed because the OLE DB provider 'MSDAORA' was unable to begin a distributed transaction. OLE DB error trace [OLE/DB Provider 'MSDAORA' ITransactionJoin::JoinTransaction returned 0x8004d01b].
Connaissez vous ce problème et le moyen de le contourner?
Comprenez que le code que vous mettez dans un trigger participe de la transaction qui l'a initiée. Comme vous faites appels à un serveur distant depuis un serveur local, il vous faut démarrer une transaction distribuée.
Initiez votre transaction par BEGIN DISTRIBUTED TRANSACTION Vérifiez que vos services MSDTC soient activés sur tous les serveurs.
Si vous ne voulez pas une transaction distribuée, dans le cas ou le code du trigger n'a pas besoin de participer à la transaction, alors vous pouvez lancez un COMMIT en début de code.
A +
Merci
Brigitte
-- Frédéric BROUARD, MVP SQL Server, expert bases de données et langage SQL Le site sur le langage SQL et les SGBDR : http://sqlpro.developpez.com Audit, conseil, expertise, formation, modélisation, tuning, optimisation ********************* http://www.datasapiens.com ***********************
Brigitte a écrit :
Bonjour,
Lorsque j'execute ce code depuis SQL Query Analyser afin de mettre à jour
une table Sophis, tout fonctionne correctement.
set @sph_usr = 'derives'
set @sph_pwd = 'casanis'
set @sph_db = 'devrisk1'
set @idemmission = 3208
set @isin_new = 'XS0000000007'
set @sql = 'update OPENROWSET(''MSDAORA'',''' + @sph_db + '''; '''
+ @sph_usr + '''; ''' + @sph_pwd + ''', ''select * from
hsbc_pims_to_sophis_rapro where idemmission = ' + cast(@idemmission as
varchar)+''') set codeisin = ''' + @isin_new + ''''
exec sp_executesql @sql
Par contre, lorsque je tente la même mise à jour depuis un trigger, alors
j'obtiens l'erreur suivante:
Server: Msg 7391, Level 16, State 1, Procedure TR_UPD_TEST, Line 34
The operation could not be performed because the OLE DB provider 'MSDAORA'
was unable to begin a distributed transaction.
OLE DB error trace [OLE/DB Provider 'MSDAORA'
ITransactionJoin::JoinTransaction returned 0x8004d01b].
Connaissez vous ce problème et le moyen de le contourner?
Comprenez que le code que vous mettez dans un trigger participe de la
transaction qui l'a initiée.
Comme vous faites appels à un serveur distant depuis un serveur local,
il vous faut démarrer une transaction distribuée.
Initiez votre transaction par
BEGIN DISTRIBUTED TRANSACTION
Vérifiez que vos services MSDTC soient activés sur tous les serveurs.
Si vous ne voulez pas une transaction distribuée, dans le cas ou le code
du trigger n'a pas besoin de participer à la transaction, alors vous
pouvez lancez un COMMIT en début de code.
A +
Merci
Brigitte
--
Frédéric BROUARD, MVP SQL Server, expert bases de données et langage SQL
Le site sur le langage SQL et les SGBDR : http://sqlpro.developpez.com
Audit, conseil, expertise, formation, modélisation, tuning, optimisation
********************* http://www.datasapiens.com ***********************
set @sph_usr = 'derives' set @sph_pwd = 'casanis' set @sph_db = 'devrisk1'
set @idemmission = 3208 set @isin_new = 'XS0000000007'
set @sql = 'update OPENROWSET(''MSDAORA'',''' + @sph_db + '''; ''' + @sph_usr + '''; ''' + @sph_pwd + ''', ''select * from hsbc_pims_to_sophis_rapro where idemmission = ' + cast(@idemmission as varchar)+''') set codeisin = ''' + @isin_new + ''''
exec sp_executesql @sql
Par contre, lorsque je tente la même mise à jour depuis un trigger, alors j'obtiens l'erreur suivante:
Server: Msg 7391, Level 16, State 1, Procedure TR_UPD_TEST, Line 34 The operation could not be performed because the OLE DB provider 'MSDAORA' was unable to begin a distributed transaction. OLE DB error trace [OLE/DB Provider 'MSDAORA' ITransactionJoin::JoinTransaction returned 0x8004d01b].
Connaissez vous ce problème et le moyen de le contourner?
Comprenez que le code que vous mettez dans un trigger participe de la transaction qui l'a initiée. Comme vous faites appels à un serveur distant depuis un serveur local, il vous faut démarrer une transaction distribuée.
Initiez votre transaction par BEGIN DISTRIBUTED TRANSACTION Vérifiez que vos services MSDTC soient activés sur tous les serveurs.
Si vous ne voulez pas une transaction distribuée, dans le cas ou le code du trigger n'a pas besoin de participer à la transaction, alors vous pouvez lancez un COMMIT en début de code.
A +
Merci
Brigitte
-- Frédéric BROUARD, MVP SQL Server, expert bases de données et langage SQL Le site sur le langage SQL et les SGBDR : http://sqlpro.developpez.com Audit, conseil, expertise, formation, modélisation, tuning, optimisation ********************* http://www.datasapiens.com ***********************
Brigitte
Merci
"Fred BROUARD" a écrit :
Brigitte a écrit : > Bonjour, > > Lorsque j'execute ce code depuis SQL Query Analyser afin de mettre à jour > une table Sophis, tout fonctionne correctement. > > declare @idemmission int > declare @sql nvarchar(2000) > declare @sph_usr nvarchar(50) > declare @sph_pwd nvarchar(50) > declare @sph_db nvarchar(50) > declare @isin_new varchar(12) > declare @isin_old varchar(12) > > set @sph_usr = 'derives' > set @sph_pwd = 'casanis' > set @sph_db = 'devrisk1' > > set @idemmission = 3208 > set @isin_new = 'XS0000000007' > > set @sql = 'update OPENROWSET(''MSDAORA'',''' + @sph_db + '''; ''' > + @sph_usr + '''; ''' + @sph_pwd + ''', ''select * from > hsbc_pims_to_sophis_rapro where idemmission = ' + cast(@idemmission as > varchar)+''') set codeisin = ''' + @isin_new + '''' > > exec sp_executesql @sql > > > Par contre, lorsque je tente la même mise à jour depuis un trigger, alors > j'obtiens l'erreur suivante: > > Server: Msg 7391, Level 16, State 1, Procedure TR_UPD_TEST, Line 34 > The operation could not be performed because the OLE DB provider 'MSDAORA' > was unable to begin a distributed transaction. > OLE DB error trace [OLE/DB Provider 'MSDAORA' > ITransactionJoin::JoinTransaction returned 0x8004d01b]. > > Connaissez vous ce problème et le moyen de le contourner?
Comprenez que le code que vous mettez dans un trigger participe de la transaction qui l'a initiée. Comme vous faites appels à un serveur distant depuis un serveur local, il vous faut démarrer une transaction distribuée.
Initiez votre transaction par BEGIN DISTRIBUTED TRANSACTION Vérifiez que vos services MSDTC soient activés sur tous les serveurs.
Si vous ne voulez pas une transaction distribuée, dans le cas ou le code du trigger n'a pas besoin de participer à la transaction, alors vous pouvez lancez un COMMIT en début de code.
A +
> > Merci > > Brigitte >
-- Frédéric BROUARD, MVP SQL Server, expert bases de données et langage SQL Le site sur le langage SQL et les SGBDR : http://sqlpro.developpez.com Audit, conseil, expertise, formation, modélisation, tuning, optimisation ********************* http://www.datasapiens.com ***********************
Merci
"Fred BROUARD" a écrit :
Brigitte a écrit :
> Bonjour,
>
> Lorsque j'execute ce code depuis SQL Query Analyser afin de mettre à jour
> une table Sophis, tout fonctionne correctement.
>
> declare @idemmission int
> declare @sql nvarchar(2000)
> declare @sph_usr nvarchar(50)
> declare @sph_pwd nvarchar(50)
> declare @sph_db nvarchar(50)
> declare @isin_new varchar(12)
> declare @isin_old varchar(12)
>
> set @sph_usr = 'derives'
> set @sph_pwd = 'casanis'
> set @sph_db = 'devrisk1'
>
> set @idemmission = 3208
> set @isin_new = 'XS0000000007'
>
> set @sql = 'update OPENROWSET(''MSDAORA'',''' + @sph_db + '''; '''
> + @sph_usr + '''; ''' + @sph_pwd + ''', ''select * from
> hsbc_pims_to_sophis_rapro where idemmission = ' + cast(@idemmission as
> varchar)+''') set codeisin = ''' + @isin_new + ''''
>
> exec sp_executesql @sql
>
>
> Par contre, lorsque je tente la même mise à jour depuis un trigger, alors
> j'obtiens l'erreur suivante:
>
> Server: Msg 7391, Level 16, State 1, Procedure TR_UPD_TEST, Line 34
> The operation could not be performed because the OLE DB provider 'MSDAORA'
> was unable to begin a distributed transaction.
> OLE DB error trace [OLE/DB Provider 'MSDAORA'
> ITransactionJoin::JoinTransaction returned 0x8004d01b].
>
> Connaissez vous ce problème et le moyen de le contourner?
Comprenez que le code que vous mettez dans un trigger participe de la
transaction qui l'a initiée.
Comme vous faites appels à un serveur distant depuis un serveur local,
il vous faut démarrer une transaction distribuée.
Initiez votre transaction par
BEGIN DISTRIBUTED TRANSACTION
Vérifiez que vos services MSDTC soient activés sur tous les serveurs.
Si vous ne voulez pas une transaction distribuée, dans le cas ou le code
du trigger n'a pas besoin de participer à la transaction, alors vous
pouvez lancez un COMMIT en début de code.
A +
>
> Merci
>
> Brigitte
>
--
Frédéric BROUARD, MVP SQL Server, expert bases de données et langage SQL
Le site sur le langage SQL et les SGBDR : http://sqlpro.developpez.com
Audit, conseil, expertise, formation, modélisation, tuning, optimisation
********************* http://www.datasapiens.com ***********************
Brigitte a écrit : > Bonjour, > > Lorsque j'execute ce code depuis SQL Query Analyser afin de mettre à jour > une table Sophis, tout fonctionne correctement. > > declare @idemmission int > declare @sql nvarchar(2000) > declare @sph_usr nvarchar(50) > declare @sph_pwd nvarchar(50) > declare @sph_db nvarchar(50) > declare @isin_new varchar(12) > declare @isin_old varchar(12) > > set @sph_usr = 'derives' > set @sph_pwd = 'casanis' > set @sph_db = 'devrisk1' > > set @idemmission = 3208 > set @isin_new = 'XS0000000007' > > set @sql = 'update OPENROWSET(''MSDAORA'',''' + @sph_db + '''; ''' > + @sph_usr + '''; ''' + @sph_pwd + ''', ''select * from > hsbc_pims_to_sophis_rapro where idemmission = ' + cast(@idemmission as > varchar)+''') set codeisin = ''' + @isin_new + '''' > > exec sp_executesql @sql > > > Par contre, lorsque je tente la même mise à jour depuis un trigger, alors > j'obtiens l'erreur suivante: > > Server: Msg 7391, Level 16, State 1, Procedure TR_UPD_TEST, Line 34 > The operation could not be performed because the OLE DB provider 'MSDAORA' > was unable to begin a distributed transaction. > OLE DB error trace [OLE/DB Provider 'MSDAORA' > ITransactionJoin::JoinTransaction returned 0x8004d01b]. > > Connaissez vous ce problème et le moyen de le contourner?
Comprenez que le code que vous mettez dans un trigger participe de la transaction qui l'a initiée. Comme vous faites appels à un serveur distant depuis un serveur local, il vous faut démarrer une transaction distribuée.
Initiez votre transaction par BEGIN DISTRIBUTED TRANSACTION Vérifiez que vos services MSDTC soient activés sur tous les serveurs.
Si vous ne voulez pas une transaction distribuée, dans le cas ou le code du trigger n'a pas besoin de participer à la transaction, alors vous pouvez lancez un COMMIT en début de code.
A +
> > Merci > > Brigitte >
-- Frédéric BROUARD, MVP SQL Server, expert bases de données et langage SQL Le site sur le langage SQL et les SGBDR : http://sqlpro.developpez.com Audit, conseil, expertise, formation, modélisation, tuning, optimisation ********************* http://www.datasapiens.com ***********************