Serveur lié à SQL Server: "Impossible de lancer plus de transactions sur cette session".

J'essaie d'effectuer une opération INSERT contre un server lié:

 DBCC TRACEON (3604, 7300) BEGIN TRANSACTION INSERT INTO LIVE.Contoso.dbo.Events (EventGUID, EventDate, LoginGUID, UserGUID, EventType, Notes, TargetGUID) VALUES ('{494D023F-CD5A-11E2-9F18-C86000D0B92A}', getdate(), '{3B4F90C0-CD5A-11E2-9F18-C86000D0B92A}', '{494D023D-CD5A-11E2-9F18-C86000D0B92A}', 1, N'Test notes', '{494D023E-CD5A-11E2-9F18-C86000D0B92A}') ROLLBACK TRANSACTION 

et il renvoie l'erreur:

Le fournisseur OLE DB "SQLNCLI" pour le message lié "LIVE" du server lié "Impossible de lancer plus de transactions sur cette session".
Msg 7395, niveau 16, état 2, ligne 3
Impossible de lancer une transaction nestede pour le fournisseur OLE DB "SQLNCLI" pour le server lié "LIVE". Une transaction nestede était nécessaire car l'option XACT_ABORT était désactivée.

Cette database locale a été déplacée de 2000 (où les requêtes ont fonctionné) en 2005 (où les requêtes ne fonctionnent pas). Le server distant est 2008 R2.

Qu'est-ce que vous avez essayé?

La list exhaustive de choses de cette question que j'ai posée il y a deux ans .

Comment avez-vous créé le server lié?

 --EXEC master.dbo.sp_dropserver @server = N'LIVE' EXEC master.dbo.sp_addlinkedserver @server = N'LIVE', @srvproduct=N'', @provider=N'SQLOLEDB', @datasrc=N'vader' EXEC master.dbo.sp_addlinkedsrvlogin @rmtsrvname = N'LIVE', @locallogin = NULL, @useself = N'False', @rmtuser = N'Contoso', @rmtpassword = N'Battery Horse Staple Correct' 

Mais qu'avez-vous essayé?

  • J'ai désactivé toutes les options de security MSDTC sur les deux servers

    entrez la description de l'image ici

  • a vérifié que les horloges sont en synchronisation (ce qui pour une raison inconnue va rompre différents schémas d'authentification s'ils sont hors synchronisation)

    entrez la description de l'image ici

  • J'ai désactivé les pare-feu sur les deux servers (pas de capture d'écran, vous devrez juste me faire confiance)

  • laissant le join dans le domaine

Quelles sont les versions des servers?

  • Local : Microsoft SQL Server 2005 - 9.00.1399.06 (Intel X86) Oct 14 2005 00:33:37 Copyright (c) 1988-2005 Microsoft Corporation Enterprise Edition on Windows NT 5.2 (Build 3790: Service Pack 2)
  • ( Microsoft SQL Server 2008 R2 (SP2) - 10.50.4000.0 (X64) Jun 28 2012 08:36:30 Copyright (c) Microsoft Corporation Enterprise Edition (64-bit) on Windows NT 6.1 <X64> (Build 7601: Service Pack 1) (Hypervisor)

  • Impossible de se connecter à SQL Server 2008 R2 avec l'authentification Windows
  • Comment autoriser l'administrateur local à accéder à SQL Server?
  • Le service de browser SQL ne fonctionne pas lorsque le count de connection est autre chose que LocalSystem
  • Powershell (sqlps) lastbackupdate ne change pas en dépit d'avoir exécuté une sauvegarde sqlserver
  • Comment puis-je affecter plus de 2 Go de memory à mon Instance Web SQL Server 2008 R2?
  • Sauvegarde du journal des transactions
  • Quelle est la memory maximale prise en charge pour Microsoft SQL Server Standard Edition (64 bits)
  • La connection au server de database SQL Server 2008 R2 est SLOW
  • One Solution collect form web for “Serveur lié à SQL Server: "Impossible de lancer plus de transactions sur cette session".”

    A partir de la documentation de SET XACT_ABORT :

    XACT_ABORT doit être activé pour les instructions de modification de données dans une transaction implicite ou explicite contre la plupart des fournisseurs OLE DB, y compris SQL Server. Le seul cas où cette option n'est pas requirejse est si le fournisseur prend en charge les transactions nestedes. "

    Peut-être que vous utilisiez un fournisseur qui prenait en charge les transactions nestedes en 2000. On dirait que vous devez configurer XACT_ABORT . Je ne sais pas si cela correspond bien à votre code de production.

    Cette réponse peut aider: quel est l'avantage d'utiliser "SET XACT_ABORT ON" dans une procédure stockée?

    Les astuces du serveur de linux et windows, tels que ubuntu, centos, apache, nginx, debian et des sujets de réseau.