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:

  • Performance lente avec l'authentification de base IIS
  • Si les journaux sont tronqués, pourquoi utiliser la récupération complète?
  • Impact de garder plus de 100 objects de server lié ouverts dans MS SQL Server
  • Comment script SQL Server Jobs pour la migration
  • La connection a échoué pour "IIS AppPool \ ASP.NET v4.0" - SQL Server Web
  • Puis-je prédire les écritures maximales par minute sur un disque / RAID
  • 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)

  • SQL Server 2005: un programme de sauvegarde approprié
  • Portable SQL Server
  • Existe-t-il un moyen d'exécuter sqlcmd pour get une sortie de requête sans afficher le nombre de lignes affectées?
  • Conduire la configuration pour 5 grandes bases de données
  • Réparation de pages incohérentes dans la database
  • Modifier la procédure stockée dans la réplication SQL
  • 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.