Aracılığıyla paylaş


Nasıl Yapılır: Bir iş Logic işleyici birleştirme makalesi (RMO programlama) uygular.

The Microsoft.SqlServer.Replication.BusinessLogicSupport namespace implements an arabirim that enables you to write custom iş mantığı to handle events that occur during the birleştirme çoğaltma synchronization process. Yöntemleri iş mantığı işleyicisi eşitlemede çoğaltılır, değişen her satır için çoğaltma işlemi tarafından çağrılabilir.

Bir iş mantığı işleyicisi uygulamak için genel işlemidir:

  1. Iş mantığı işleyicisi derleme oluşturun.

  2. Derleme sırasında dağıtımcı kaydedin.

  3. dağıtmak derleme Birleştirme Aracısı çalıştığı sunucuda.çekme temelli abonelik için aracı abone üzerinde çalışır ve gönderme için abonelik aracı dağıtımcı üzerinde çalışır.Web üzerinden eşitleme kullanırken, aracı, Web sunucusu üzerinde çalışır.

  4. Kullanan bir makale oluşturun iş mantığı işleyicisi, veya kullanmak için varolan bir makale iş mantığı işleyicisi.

Belirttiğiniz iş mantığı işleyicisi eşitlenir her satır için yürütülür.Karmaşık mantığına ve aramalar'ın diğer uygulamalara veya ağ hizmetleri performansı etkileyebilir.Iş mantığı işleyicileri hakkında daha fazla bilgi için bkz: Iş mantığı birleştirme eşitlemesi sırasında çalıştırma.

Bir iş mantığı işleyicisi oluşturmak için

  1. Içinde Microsoft Visual Studio'da .NET derlemesi için iş mantığı işleyicisi uygulayan kodunu içeren yeni bir proje oluşturun.

  2. Aşağıdaki ad boşlukları için proje başvuru ekleyin.

    Derleme başvurusu

    Konum

    Microsoft.SqlServer.Replication.BusinessLogicSupport

    C:\Program Files\Microsoft SQL Server\100\COM (varsayılan yükleme)

    System.Data

    GAC (.NET Framework bileşeni)

    System.Data.Common

    GAC (.NET Framework bileşeni)

  3. Geçersiz kılan bir Class BusinessLogicModule sınıf.

  4. Uygula HandledChangeStates() işlenen değişiklik türlerini belirtmek için özellik'ı tıklatın.

  5. Aşağıdaki yöntemlerden birini veya birkaçını geçersiz BusinessLogicModule sınıf:

    • CommitHandler(SourceIdentifier, Guid) -Eşitleme sırasında kabul edilen bir veri değişikliği olduğunda çağrılabilir.

    • DeleteErrorHandler(SourceIdentifier, DataSet, ErrorLogType%, String%, Int32, String, Int32%, String%) -DELETE deyim olan çalışırken bir hata oluşursa çağrılan karşıya veya karşıdan.

    • DeleteHandler(SourceIdentifier, DataSet, Int32%, String%) -DELETE deyimleri olan, çağrılan karşıya veya karşıdan.

    • InsertErrorHandler(SourceIdentifier, DataSet, ErrorLogType%, String%, Int32, String, Int32%, String%) -karşıya veya karşıdan olan bir INSERT deyim, bir hata oluştuğunda başlatıldı.

    • InsertHandler(SourceIdentifier, DataSet, DataSet%, Int32%, String%) -INSERT deyimleri olan, çağrılan karşıya veya karşıdan.

    • UpdateConflictsHandler(DataSet, DataSet, DataSet%, ConflictLogType%, String%, Int32%, String%) -çakışan bir UPDATE deyimi yayımcı ve abone oluştuğunda başlatıldı.

    • UpdateDeleteConflictHandler(SourceIdentifier, DataSet, DataSet%, ConflictLogType%, String%, Int32%, String%) -DELETE deyimleri yayımcı ve abonelik sırasında UPDATE deyimleri çakışmadığını çağırdı.

    • UpdateErrorHandler(SourceIdentifier, DataSet, ErrorLogType%, String%, Int32, String, Int32%, String%) -karşıya veya karşıdan bir UPDATE deyim, bir hata oluştuğunda, çağrılan olur.

    • UpdateHandler(SourceIdentifier, DataSet, DataSet%, Int32%, String%) -UPDATE deyimleri olan, çağrılan karşıya veya karşıdan.

    Not

    Açık kendi özel iş mantığı tarafından işlenen tüm makale çakışmalar makale varsayılan çözümleyici tarafından ele alınır.

  6. iş mantığı işleyicisi derleme proje oluşturun.

Kaydetmek için bir iş mantığı işleyicisi

  1. dağıtımcı bağlantı kullanarak oluşturduğunuz ServerConnection sınıf.

  2. örnek ReplicationServer sınıf. Geçiş ServerConnection Adım 1 den.

  3. Arama EnumBusinessLogicHandlers() döndürülen denetleyin. ArrayList derleme zaten iş mantığı işleyicisi olarak kaydedilmemiş emin olmak için nesne.

  4. örnek BusinessLogicHandler sınıf. Aşağıdaki özellikleri belirtin:

    • DotNetAssemblyName() -.NET derleme adı.Derleme Birleştirme Aracısı yürütülebilir dosyası ile aynı dizinde dağıtmış, uygulama ile aynı dizinde, zaman uyumlu olarak birleştirme aracı başlatır veya GAC'YE, tam içermelidir yol derleme adı.Bir iş mantığı işleyicisi ile Web üzerinden eşitleme kullanırken derleme adı ile tam yolunu içermelidir.

    • DotNetClassName() -geçersiz kılan sınıfının Tam adı BusinessLogicModule ve iş mantığı işleyicisi uygular.

    • FriendlyName() -iş mantığı işleyicisi erişirken kullandığınız bir kolay ad.

    • IsDotNetAssembly() -değeri true.

Bir iş mantığı işleyicisi dağıtmak

  • dağıtmak derleme birleştirme aracı, dosya konumunda burada çalışan sunucuda, iş mantığı işleyicisi dağıtımcı sırasında zaman kaydedildiği belirtildi.çekme temelli abonelik için aracı abone üzerinde çalışır ve gönderme için abonelik aracı dağıtımcı üzerinde çalışır.Web üzerinden eşitleme kullanırken, aracı, Web sunucusu üzerinde çalışır.Iş mantığı işleyicisi kaydolurken tam yol ile derleme adı eklenmedi, derleme Birleştirme Aracısı Birleştirme Aracısı zaman uyumlu olarak başlatan bir uygulama ile aynı dizinde yürütülebilir aynı dizinde dağıtın.Aynı derlemenin kullanan birden çok uygulama varsa, GAC'YE derleme yükleyebilir.

Yeni bir tablo makale bir iş mantığı işleyicisi kullanmak için

  1. Yayımcı bağlantısını kullanarak oluşturduğunuz ServerConnection sınıf.

  2. örnek MergeArticle sınıf. küme Aşağıdaki özellikleri:

    • Bu makale için adı Name().

    • yayın adıPublicationName().

    • Için yayın veritabanının adı DatabaseName().

    • Kolay anımsanır adını iş mantığı işleyicisi ()FriendlyName()) için ArticleResolver().

  3. Call Create() yöntem. Daha fazla bilgi için bkz: Nasıl Yapılır: Bir makale (RMO programlama) tanımlayın..

Varolan bir tabloyu makaleyle bir iş mantığı işleyicisi kullanmak için

  1. Yayımcı bağlantısını kullanarak oluşturduğunuz ServerConnection sınıf.

  2. örnek MergeArticle sınıf.

  3. küme Name(), PublicationName(), ve DatabaseName() özellikleri.

  4. küme bağlantı için adım 1'den ConnectionContext() özellik.

  5. Call LoadProperties() yöntem, nesne özelliklerini almak için. Bu yöntem döndürüyorsa false, adım 3'te makale özelliklerini yanlış olarak tanımlanmış ya da makaleyi yok. Daha fazla bilgi için bkz: Nasıl Yapılır: Görüntüleme ve makale özellikleri (RMO programlama) Değiştir.

  6. küme iş mantığı işleyicisini kolay adı ArticleResolver(). Bu değeridir FriendlyName() iş mantığı işleyicisi kaydedilirken belirtilen özellik.

Example

Bu, ilgili bilgileri günlüğe kaydeder ve iş mantığı bir işleyici ekler, güncelleştirmeler ve Abone tarafında siler örneğidir.

Bu örnek, bir iş mantığı işleyicisi dağıtımcı adresindeki kaydeder.

Bu örnek, iş mantığı işleyicisi kullanmak için varolan bir makale değiştirir.