Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Şunlar için geçerlidir:SQL Server
Azure SQL Yönetilen Örneği
çoğaltma hatalarını gidermek, işlem çoğaltmasının nasıl çalıştığını temel olarak anlamadan sinir bozucu olabilir. Yayın oluşturmanın ilk adımı Anlık Görüntü Aracısı'nın anlık görüntüyü oluşturmasını ve anlık görüntü klasörüne kaydetmesini sağlamaktır. Ardından Dağıtım Aracısı anlık görüntüyü aboneye uygular.
Bu işlem yayını oluşturur ve onu eşitleme durumuna getirir. Eşitleme üç aşamada çalışır:
İşlemler çoğaltılan nesneler üzerinde gerçekleşir ve işlem günlüğünde "çoğaltma için" olarak işaretlenir.
Günlük Okuyucu Aracısı işlem günlüğünü tarar ve "çoğaltma için" olarak işaretlenmiş işlemleri arar. Bu işlemler daha sonra dağıtım veritabanına kaydedilir.
Dağıtım Aracısı, okuyucu iş parçacığını kullanarak dağıtım veritabanını tarar. Ardından, yazıcı iş parçacığını kullanarak bu ajan aboneye bağlanır ve değişiklikleri uygular.
Bu işlemin herhangi bir adımında hatalar oluşabilir. Bu hataları bulmak, eşitleme sorunlarını gidermenin en zor yönü olabilir. Neyse ki, Çoğaltma İzleyicisi'nin kullanımı bu işlemi kolaylaştırır.
Uyarı
Bu sorun giderme kılavuzunun amacı, sorun giderme metodolojisini öğretmektir. Özel hatanızı çözmek için değil, çoğaltmayla ilgili hataları bulma konusunda genel rehberlik sağlamak için tasarlanmıştır. Bazı belirli örnekler sağlanır, ancak bunların çözümü ortama bağlı olarak değişebilir. Örnek hatalar, Öğretici: Tamamen bağlı iki sunucu (işlemsel) arasında çoğaltmayı yapılandırma öğreticisine dayanır.
Sorun giderme metodolojisi
Sorulacak sorular
- Eşitleme işleminin neresinde çoğaltma başarısız oluyor?
- Hangi temsilci hata yaşıyor?
- Çoğaltma en son ne zaman başarılı bir şekilde çalıştı? O zamandan beri bir şey değişti mi?
İlgili adımlar
Çoğaltma İzleyicisi'ni kullanarak çoğaltmanın hangi noktada hatayla karşılaştığını belirleyin (hangi aracı?):
- Yayımcıdan Dağıtımcıya bölümünde hatalar oluşuyorsa, sorun Günlük Okuyucu Aracısı'ndadır.
- Dağıtımcıdan Aboneye bölümünde hatalar oluşuyorsa, sorun Dağıtım Aracısı'ndadır.
Hatanın ayrıntılarını belirlemek için İş Etkinliği İzleyicisi'nde aracının iş geçmişine bakın. İş geçmişi yeterince ayrıntı göstermiyorsa, belirli bir ajansta ayrıntılı günlük kaydını etkinleştirebilirsiniz.
Hata için bir çözüm belirlemeyi deneyin.
Anlık Görüntü Aracısı ile ilgili hataları bulma
Anlık Görüntü Aracısı anlık görüntüyü oluşturur ve belirtilen anlık görüntü klasörüne yazar.
Anlık Görüntü Aracınızın durumunu görüntüleyin:
Nesne Gezgini'nde, Çoğaltma altında bulunan Yerel Yayın düğümünü genişletin.
Yayınınızda AdvWorksProductTrans> Anlık Görüntü Aracısı Durumunu Görüntüle'ye sağ tıklayın.
Anlık Görüntü Aracısı durumunda bir hata bildirilirse, Anlık Görüntü Aracısı iş geçmişinde daha fazla ayrıntı bulabilirsiniz:
Nesne Gezgini'nde SQL Server Agent'ı genişletin ve İş Etkinliği İzleyicisi'ne gidin.
Kategoriye göre sıralayın ve Anlık Görüntü Aracısını REPL-Snapshot kategorisine göre tanımlayın.
Anlık Görüntü Aracısı'na sağ tıklayıp Geçmişi Görüntüle'yi seçin.
Anlık Görüntü Aracısı geçmişinde ilgili günlük girdisini seçin. Bu genellikle hatayı bildiren girdiden önce bir veya iki satırdır. (Kırmızı X, hataları gösterir.) Günlüklerin altındaki kutudaki ileti metnini gözden geçirin:
The replication agent had encountered an exception. Exception Message: Access to path '\\node1\repldata.....' is denied.
Windows izinleriniz anlık görüntü klasörünüz için doğru yapılandırılmadıysa, Anlık Görüntü Aracısı için "erişim reddedildi" hatasını görürsünüz. Anlık görüntünüzün depolandığı klasöre yönelik izinleri doğrulamanız ve Snapshot Agent'ı çalıştırmak için kullanılan hesabın paylaşıma erişim izinlerine sahip olduğundan emin olmanız gerekir.
Günlük Okuyucu Aracısındaki hataları bulun.
Günlük Okuyucu Aracısı yayımcı veritabanınıza bağlanır ve "çoğaltma için" olarak işaretlenmiş işlemler için işlem günlüğünü tarar. Ardından bu işlemleri dağıtım veritabanına ekler.
SQL Server Management Studio'da yayımcıya bağlanın. Sunucu düğümünü genişletin, Çoğaltma klasörüne sağ tıklayın ve çoğaltma izleyicisini başlat'ı seçin:
Çoğaltma İzleyicisi açılır:
Kırmızı X, yayının senkronize olmadığını gösterir. Sol taraftaki Yayımcılarım'ı genişletin ve ardından ilgili yayımcı sunucusunu genişletin.
Sol taraftaki AdvWorksProductTrans yayınını seçin ve sorunun nerede olduğunu belirlemek için sekmelerden birinde kırmızı X işaretini arayın. Bu durumda, kırmızı X Aracılar sekmesindedir, bu nedenle aracılardan biri bir hatayla karşılaşır:
Hangi aracının hatayla karşılaştığını belirlemek için Aracılar sekmesini seçin:
Bu görünümde Anlık Görüntü Aracısı ve Günlük Okuyucu Aracısı olmak üzere iki aracı görüyorsunuz. Hata ile karşılaşan bileşen kırmızı bir X işaretine sahiptir. Bu durumda, hata Günlük Okuyucu Aracısı'ndadır.
Hatayı bildiren satıra çift tıklayarak Günlük Okuyucu Ajanı için ajan geçmişini görüntüleyin. Bu geçmiş hata hakkında daha fazla bilgi sağlar:
Status: 0, code: 20011, text: 'The process could not execute 'sp_replcmds' on 'NODE1\SQL2016'.'. The process could not execute 'sp_replcmds' on 'NODE1\SQL2016'. Status: 0, code: 15517, text: 'Cannot execute as the database principal because the principal "dbo" does not exist, this type of principal cannot be impersonated, or you do not have permission.'. Status: 0, code: 22037, text: 'The process could not execute 'sp_replcmds' on 'NODE1\SQL2016'.'.Hata genellikle yayımcı veritabanının sahibi doğru ayarlanmadığında oluşur. Veritabanı geri yüklendiğinde bu durum oluşabilir. Bunu doğrulamak için:
Nesne Gezgini'nde Veritabanları'ı genişletin.
AdventureWorks2025>Özellikleri'ne sağ tıklayın.
Dosyalar sayfasının altında bir sahip olduğunu doğrulayın. Bu kutu boşsa, sorununuzun nedeni büyük olasılıkla budur.
Dosyalar sayfasında sahibi boşsa, veritabanı bağlamında
AdventureWorks2025penceresi açın. Aşağıdaki T-SQL kodunu çalıştırın:-- set the owner of the database to 'sa' or a specific user account, without the brackets. EXECUTE sp_changedbowner '<useraccount>'; -- example for sa: exec sp_changedbowner 'sa' -- example for user account: exec sp_changedbowner 'sqlrepro\administrator'Gerektiğinde Log Okuyucu Aracısını yeniden başlatabilirsiniz.
Nesne Gezgini'nde SQL Server Aracısı düğümünü genişletin ve İş Etkinliği İzleyicisi'ni açın.
Kategoriye göre sıralayın ve Log Reader Aracısını REPL-LogReader kategorisine göre tanımlayın.
Günlük Okuyucu Aracısı işine sağ tıklayın ve İşi Adımdan Başlat'ı seçin.
Çoğaltma İzleyicisi'ni yeniden açarak yayınınızın şimdi senkronize olduğunu doğrulayın. Henüz açık değilse, Nesne Gezgini'nde Çoğaltma'ya sağ tıklayarak bulabilirsiniz.
AdvWorksProductTrans yayınını seçin, Ajanlar sekmesini seçin ve Günlük Okuyucu Ajanına çift tıklayarak aracı geçmişini açın. Günlük Okuyucu Aracısı'nın çalıştığını ve ya komutları çoğalttığını ya da "çoğaltılacak işlem yok" ifadesini görmeniz gerekir.
Dağıtım Aracısı ile ilgili hataları bulma
Dağıtım Aracısı, dağıtım veritabanındaki verileri bulur ve aboneye uygular.
SQL Server Management Studio'da yayımcıya bağlanın. Sunucu düğümünü genişletin, Çoğaltma klasörüne sağ tıklayın ve çoğaltma izleyicisini başlat'ı seçin.
Çoğaltma İzleyicisi'ndeAdvWorksProductTrans yayınını seçin ve Tüm Abonelikler sekmesini seçin. Aboneliğe sağ tıklayın ve Ayrıntıları Görüntüle'yi seçin:
Abone Geçmişi Dağıtımcısı iletişim kutusu açılır ve aracının hangi hatayla karşılaştığını açıklar:
Error messages: Agent 'NODE1\SQL2016-AdventureWorks2022-AdvWorksProductTrans-NODE2\SQL2016-7' is retrying after an error. 89 retries attempted. See agent job history in the Jobs folder for more details.Hata, Dağıtım Aracısı'nın yeniden denediğini gösterir. Daha fazla bilgi edinmek için Dağıtım Aracısı'nın iş geçmişini denetleyin:
Nesne Gezgini >SQL Server Aracısı'nu genişletin.
İşleri Kategoriye göre sıralayın.
Dağıtım Aracısını REPL-Distribution kategorisine göre tanımlayın. Aracıya sağ tıklayın ve Geçmişi Görüntüle'yi seçin.
Hata girdilerinden birini seçin ve pencerenin en altındaki hata metnini görüntüleyin:
Message: Unable to start execution of step 2 (reason: Error authenticating proxy NODE1\repl_distribution, system error: The user name or password is incorrect.)Bu hata, Dağıtım Aracısı'nın kullandığı parolanın yanlış olduğunu gösterir. Sorunu çözmek için:
Nesne Gezgini'nde Çoğaltma düğümünü genişletin.
Abonelik >Özellikleri'ne sağ tıklayın.
Aracı İşlem Hesabı'nın yanındaki üç noktayı (...) seçin ve parolayı değiştirin.
Nesne Gezgini'nde Çoğaltma seçeneğine sağ tıklayarak Yeniden Çoğaltma İzleyicisini kontrol edin. Tüm Abonelikler altındaki kırmızı X işareti, Dağıtım Aracısı'nın hatayla karşılaşmaya devam ettiğini gösterir.
Çoğaltma İzleyicisi> aboneliğe sağ tıklayarak Aboneye Dağıtım geçmişini açın. Burada hata artık farklıdır:
Connecting to Subscriber 'NODE2\SQL2016' Agent message code 20084. The process could not connect to Subscriber 'NODE2\SQL2016'. Number: 18456 Message: Login failed for user 'NODE2\repl_distribution'.Bu hata, NODE2\repl_distribution kullanıcısı için oturum açma başarısız olduğundan Dağıtım Aracısı'nın aboneye bağlanalamadığını gösterir. Daha fazla araştırma yapmak için aboneye bağlanın ve Nesne Gezgini'ndeki Yönetim düğümü altında geçerli SQL Server hata günlüğünü açın:
Bu hatayı görüyorsanız abonede oturum açma bilgileri eksiktir. Bu hatayı çözmek için bkz. Çoğaltma için Güvenlik Rolü Gereksinimleri.
Oturum açma hatası çözüldükten sonra Çoğaltma İzleyicisi'ni yeniden denetleyin. Tüm sorunlar giderildiyse, Yayın Adı'nın yanında yeşil bir ok ve Tüm Abonelikler altında Çalışıyor durumunu görmeniz gerekir.
Başarılı olduğunu doğrulamak için aboneliğe sağ tıklayarak DağıtımcıDan Aboneye geçmişini bir kez daha açın. Dağıtım Aracısı'nı ilk kez çalıştırıyorsanız anlık görüntünün aboneye toplu olarak kopyalandığını görürsünüz:
Birleştirme Aracısı ile ilgili hataları bulma
Birleştirme aracısının değişiklikleri çoğaltması uzun sürebilir. Birleştirme çoğaltma eşitleme işleminin hangi adımının en çok zaman aldığını belirlemek için, birleştirme aracısı günlüğüyle birlikte izleme bayrağı 101'i kullanın. Bunu yapmak için birleştirme aracısı parametreleri için aşağıdaki parametreleri kullanın ve aracıyı yeniden başlatın:
-T 101
-output
-outputverboselevel
Uyarı
Tabloya istatistik <distribution-server>..msmerge_history yazmanız gerekiyorsa izleme bayrağı 102'yi kullanın.
Birleştirme replikasyonu eşitlemesi tamamlandıktan sonra birleştirme aracısının örnek bir çıktısı aşağıdaki gibidir:
**************************************************************
CONNECTION TIMES --> time took to establish the connection to the servers. Publisher (all connections) 156 msec Subscriber (all connections) 32 msec Distributor 93 msec
**************************************************************
UPLOAD COUNTERS --> upload phase (changes from the Sub to the Pub) stats MakeGeneration Time = 343 msec. InsertGenHistory Time = 31 msec. UpdateGenHistory Time = 0 msec. ProxiedMetadata Time = 0 msec.
**************************************************************
DOWNLOAD COUNTERS --> download phase (changes from the Pub to the Sub) stats MakeGeneration Time = 219 msec. InsertGenHistory Time = 0 msec. UpdateGenHistory Time = 0 msec.
**************************************************************
RETENTION-BASED CLEANUP STATISTICS --> sp_mergemetadataretentioncleanup proc stats Publisher: Cleanup Time 281 msec MSmerge_genhistory rows cleaned up 0 MSmerge_contents rows cleaned up 0 MSmerge_tombstone rows cleaned up 0 Subscriber: Cleanup Time 187 msec MSmerge_genhistory rows cleaned up 0 MSmerge_contents rows cleaned up 0 MSmerge_rowtrack rows cleaned up 0 MSmerge_tombstone rows cleaned up 0
**************************************************************
RETRY STATISTICS Retry Time (Upload) 0 msec. Retry Time (Download) 0 msec. Total changes retried 0 Number of Iterations through rows needing retry 0 Total number of changes that failed despite retry 0
**************************************************************
PROXY METADATA QUEUE COUNTERS Queue Full: Number of Waits: 0, Total Wait Time: 0 msec
**************************************************************
Distributor-side History Logging Time = 219 msec. Number of Distributor-side History Messages Logged = 11 Subscriber-side History Logging Time = 295 msec. Number of Subscriber-side History Messages Logged = 11
**************************************************************
2013-05-28 17:24:11.820 OLE DB Subscriber '<SQL Server name>\sql2008r2': DBCC SQLPERF (NETSTATS) 2013-05-28 17:24:11.822 OLE DB Publisher '<SQL Server name>\SQL2008R2': DBCC SQLPERF (NETSTATS) 2013-05-28 17:24:11.824 OLE DB Distributor '<SQL Server name>\SQL2008R2': DBCC SQLPERF (NETSTATS) NETWORK STATISTICS Server Reads Writes Bytes Read Bytes Written Publisher 74 74 19112 37526 Subscriber 73 73 19032 36931 Distributor 75 75 19192 38121
**************************************************************
NETWORK STATUS Network Connection: The computer has one or more LAN cards that are active. Network link speed: Destination Incoming Outgoing Publisher Unreachable Unreachable Subscriber Unreachable Unreachable Distributor Unreachable Unreachable
**************************************************************
Herhangi bir aracıda ayrıntılı günlük kaydını etkinleştirme
Çoğaltma topolojisindeki herhangi bir aracıda oluşan hatalar hakkında daha ayrıntılı bilgi görmek için ayrıntılı günlük kaydı kullanabilirsiniz. Adımlar her temsilci için aynıdır. İş Etkinliği İzleyicisi'nde doğru aracıyı seçtiğinizden emin olmanız gerekir.
Uyarı
Aracılar, çekme veya itme aboneliği olmasına bağlı olarak yayımcıda veya abonede bulunabilir. Aracı, araştırdığınız sunucuda kullanılamıyorsa diğer sunucuyu kontrol edin.
Ayrıntılı günlüğün kaydedileceği yeri belirleyin ve klasörün mevcut olduğundan emin olun. Bu örnekte c:\temp kullanılır.
Nesne Gezgini'nde SQL Server Aracısı düğümünü genişletin ve İş Etkinliği İzleyicisi'ni açın.
Kategoriye göre sıralayın ve ilgilendiğiniz aracıyı belirleyin. Bu örnek, Günlük Okuyucu Aracısı'nı kullanır. İlgi > duyduğunuz Özellikler aracısını sağ tıklayın.
Adımlar sayfasını seçin ve ardından Aracıyı çalıştır adımını vurgulayın. Düzenle'yi seçin.
Komut kutusuna yeni bir satır başlatın, aşağıdaki metni girin ve Tamam'ı seçin:
-Output C:\Temp\OUTPUTFILE.txt -Outputverboselevel 3Konumu ve yoğunluk seviyesini tercihinize göre değiştirebilirsiniz.
Ayrıntılı çıkış parametresini eklerken aşağıdaki sorunlar aracınızın başarısız olmasına veya outfile dosyasının eksik olmasına neden olabilir:
Uzun çizginin kısa çizgiye dönüştüğü bir biçimlendirme sorunu var.
Konum diskte yok veya aracıyı çalıştıran hesabın belirtilen konuma yazma izni yok.
Son parametre ile
-Outputparametresi arasında bir boşluk eksik.Farklı aracılar farklı yoğunluk düzeylerini destekler. Ayrıntılı günlük kaydını etkinleştirirseniz ancak aracınız başlatılamazsa, belirtilen ayrıntı düzeyini 1 azaltmayı deneyin.
Günlük Okuyucu Aracısı'nı yeniden başlatmak için aracı >Adımda İşi Durdur'a sağ tıklayın. Araç çubuğundan Yenile simgesini seçerek yenileyin . > Aracıya sağ tıklayın Adımda İşi Başlat.
Disk üzerindeki çıkışı gözden geçirin.
Ayrıntılı günlüğü devre dışı bırakmak için, daha önce eklediğiniz
-Outputsatırını kaldırmak üzere önceki adımları izleyin.
İlgili içerik
Yardım alın
- SQL için Fikirler: SQL Server'ın geliştirilmesine yönelik önerileriniz mi var?
- Microsoft Soru-Cevap (SQL Server)
- DBA Stack Exchange (etiket sql-server): SQL Server soruları sorun
- Stack Overflow (etiket sql-server): SQL geliştirme sorularının yanıtları
- Microsoft SQL Server Lisans Koşulları ve Bilgileri
- İş kullanıcıları için destek seçenekleri
- Ek SQL Server Yardım ve Geri Bildirim
SQL belgelerine katkıda bulunma
SQL içeriğini kendiniz düzenleyebildiğinizi biliyor muydunuz? Bunu yaparsanız, belgelerimizin geliştirilmesine yardımcı olmakla kalmaz, aynı zamanda sayfaya katkıda bulunan olarak da kabul edilirsiniz.
Daha fazla bilgi için Bkz. Microsoft Learn belgelerini düzenleme.