2015-03-12 2 views
0

J'ai un logiciel de CRM sur ma machine locale. Dans la base de données SQL du logiciel, j'ai ajouté un serveur lié (notre site Web de test avec notre base de données de test: Windows Small Business Server 2011). Le serveur lié est défini commeserveur lié: "Aucune transaction n'est active." et "impossible de commencer une transaction distribuée"

RPC => True 
RPC Out => True 
Enable Promotion of Distributed Transaction => True 

J'ai créé un déclencheur de sorte que lorsqu'une entreprise est mise à jour via le logiciel de CRM, il lance une procédure stockée comme:

proc [dbo].[Proc_UpdateInstitutionWeb] 
@Company_ID nvarchar(50) 

as 

DECLARE @id int = 0; 

BEGIN TRY 
    SET @id = CONVERT(int, @Company_ID) 
END TRY 
BEGIN CATCH 
    ... 
END CATCH 

update [myserver].[mydatabase].[dbo].[company] 
set founded = 2000 
where company.id= @id 

Cela ne fonctionne pas quand Je fais le changement dans le CRM. J'ai donc essayé une simple requête de mise à jour sur la table de l'entreprise dans la base de données SQL CRM mais il jette l'erreur suivante:

OLE DB provider "SQLNCLI10" for linked server "myserver" returned message "No transaction is active.". Msg 7391, Level 16, State 2, Procedure Proc_UpdateInstitutionWeb, Line 34 The operation could not be performed because OLE DB provider "SQLNCLI10" for linked server "myserver" was unable to begin a distributed transaction.

Voici ce que j'ai essayé de faire:

fois sur mon ordinateur et le serveur de test:

  • Dans les outils d'administration -> services -> Distributed Transaction Coordinator: a commencé les services
  • Dans les outils d'administration -> services de composants - > Ordinateurs -> Poste de travail -> Coordinateur de transactions distribuées -> Local DTC -> Clic droit -> onglet Sécurité -> réseau vérifié DTC Accéder et Autoriser les clients distants et autoriser les appels entrants et sortants.
  • Enfin, je redémarré le serveur de test

Rien de tout cela encore résolu le problème. Que devrais-je faire?

merci

Répondre

1

Après plusieurs jours de perdre mes cheveux, voici ce qui a fonctionné pour moi, au cas où quelqu'un a besoin.

J'ai d'abord désactivé la génération automatique d'adresse 6to4.

1. Open Command 
2. Type the command `netsh interface 6to4 set state disabled` 

Je restreint la plage de ports DCOM entre les deux machines

1. Start -> Run -> Type DCOMCNFG 
2. Go to the properties of the My Computer node under the Computers folder underneath Component Services. 
3. Under the My Computer Properties look under the Default Protocols tab. 
4. Over there make sure that Connection-oriented TCP/IP is selected and then click on Properties. 
5. No range was listed. I added one. Example 5000-5100 

Je pense que tous les travaux antérieurs sur le DTC dans le Component services et Services est également nécessaire d'avoir cette travail.

J'ai fini avec cette solution de travail avec DTCPing.exe et les références suivantes:

+0

Votre première étape "génération automatique d'adresses 6to4 désactivée" est pour le serveur ou l'ordinateur? –