Bugün iki farklı bilgisayarda veri bütünlüğünü koruyabilmek için bir delete trigger'a ihtiyaç duydum. Sunucu A üzerine Sunucu B'yi Link server olarak ekledim. After Delete Triggerımı ilgili tabloya ekledim. Trigger içerisinde Sunucu B de yeralan bir tabloyu eden bir script bulunmaktaydı. Trigger'ın tetiklenmesini sağladığımda ise
MSDTC 'ın Sunucu B de çalışmadığını belirten
"MSDTC on server 'servername' is unavailable"
hatasını aldım.
Bunun sebebi trigger içerisine mevcut transactionın gönderilmesi ve trigger içerisinde uzak sunucuya ulaşmaya çalışmaktır.
Uzak sunucularda yeralan ortak iki transaction işlemi, özel bir servis olan MSDTC tarafından yönetilir.
Sunucu B ye gidip çalıştıra gidip "services.msc" yazdım ve açılan pencereden Distributed Transaction Coordinator 'ı bulup start ettim. Sunucu A da da servisin çalıştığından emin oldum.Tekrar denediğimde bu sefer farklı bir hata beni bekliyordu.
"The partner transaction manager has disabled its support for remote/network transactions."
Bu durumu çözmek için dcomcnfg.exe yazıp açılan pencerede sırasıyla
--Component Service
--Computers
--My Computer
--Distributed Transaction Coordinator
--Local DTC
Sağ click properties
Security tabında bulunan aşağıdaki alanları işaretledim.
Network DTC Access
Allow Remote Clients
Allow Remote Administration
Allow InBound
Allow OutBound
Enable XA Transactions
İki sunucuda da bu ayarları yaptım. Tekrar denediğimde hala network erişiminin olmadığını söyledi.
Bu arada bu testleri herseferinde trigger tetikleyerek değil daha kolay bir yol olan DTCping.exe ile yapabilirsiniz. DOWNLOAD
İki sunucuda da exeyi çalıştırın. Sunucuların Netbios isimlerini yazın. Sırasıyla A ve B sunucularında PING buttonuna tıklayın. Hata almıyorsanız işlem tamamdır.
Alınan hataları yorumlamak için
http://blogs.msdn.com/b/distributedservices/archive/2008/11/12/troubleshooting-msdtc-issues-with-the-dtcping-tool.aspx#AccessisDenied
adresini ziyaret edebilirsiniz.
Firewall ayarlarına MSDTC çalışabilmesi için gerekli 135 RPC endpoint portunu exception olarak ekledim.
Firewall ayarlarından emin olduktan sonra tekrar denedim tekrar aynı problemi yaşadım.
Eğer sizde de sunuculardan birisi Xp, Vista veya Win7 ise sizde bu problemi yaşayabilirsiniz.
Bunun için yapılması gereken;
1. Click Start, click Run, type Regedit, and then click OK.
2. Locate and then click the following registry key:
HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows NT
3. On the Edit menu, point to New, and then click Key.
Note If the RPC registry key already exists, go to step 5.
4. Type RPC, and then press ENTER.
5. Click RPC.
6. On the Edit menu, point to New, and then click DWORD Value.
7. Type RestrictRemoteClients, and then press ENTER.
8. Click RestrictRemoteClients.
9. On the Edit menu, click Modify.
10. In the Value data box, type 0, and then click OK.
Note To enable the RestrictRemoteClients setting, type1.
11. Close Registry Editor and restart the computer.
Yukarıdaki işlemleri tamamlayıp tekrar denediğinizde başarıya ulaşacaksınız.
Hiç yorum yok:
Yorum Gönder