Aracılığıyla paylaş


Özel günlük sağlayıcısı kodlama

Dan devralan bir sınıf oluşturduktan sonra LogProviderBase taban sınıfı ve uygulanan DtsLogProviderAttribute öznitelik sınıfa uygulaması özellikleri ve özel bir işlevi bilgisayarınızın. sağlamak için temel sınıfı yöntemleri kılmalıdır

Özel günlük sağlayıcıları çalışma örnekleri için bkz: Integration Services örnekleri üzerinde Codeplex.

Günlük sağlayıcı yapılandırma

Günlük sağlayıcı başlatılıyor

Geçersiz kılma, InitializeLogProvider bağlantılar için önbellek başvurular yöntem koleksiyon ve olayları arabirim.günlük sağlayıcı daha sonra diğer yöntemlerle bu önbelleğe alınan başvuruları kullanabilirsiniz.

YapılandırmaDizesi özelliği kullanılarak

Tasarım sırasında saat, günlük sağlayıcını yapılandırma bilgilerini alır yapılandırma sütun.Bu yapılandırma bilgilerini karşılık gelen ConfigString özellik, günlük sağlayıcı.Varsayılan olarak, bu sütun bir metin kutusu içinden getirebileceðiniz herhangi bir dize bilgi içerir.Çoğu günlük sağlayıcıları ile birlikte verilen Integration Services sağlayıcı bir dış veri kaynağına bağlanmak için kullandığı Bağlantı Yöneticisi adını depolamak için bu özellik kullanın kaynak.Günlük sağlayıcınız kullanıyorsa, ConfigString özellik, kullanım Validate özellik olduğundan emin olun ve bu özellikni validate yöntem küme doğru.

Günlük sağlayıcı doğrulanıyor

Geçersiz kılma, Validate yöntem sağlayıcı düzgün yapılandırılmış ve yürütme için hazır olduğundan emin olmak için.Tipik olarak, emin olmak için doğrulama asgari düzeyde olduğu ConfigString olan küme doğru.günlük sağlayıcı dönünceye kadar yürütme devam edemiyor Success dan Validate yöntem.

Aşağıdaki kod örneği uygulaması gösterir Validate Bağlantı Yöneticisi adı belirtilirse, Bağlantı Yöneticisi ' nde bulunmaktadır emin kılar paket, Bağlantı Yöneticisi, bir dosya adı verir ve ConfigString özellik.

public override DTSExecResult Validate(IDTSInfoEvents infoEvents)
{
    if (this.ConfigString.Length == 0 || connections.Contains(ConfigString) == false)
    {
        infoEvents.FireError(0, "MyTextLogProvider", "The ConnectionManager " + ConfigString + " specified in the ConfigString property cannot be found in the collection.", "", 0);
        return DTSExecResult.Failure;
    }
    else
    {
        string fileName = connections[ConfigString].AcquireConnection(null) as string;

        if (fileName == null || fileName.Length == 0)
        {
            infoEvents.FireError(0, "MyTextLogProvider", "The ConnectionManager " + ConfigString + " specified in the ConfigString property cannot be found in the collection.", "", 0);
            return DTSExecResult.Failure;
        }
    }
    return DTSExecResult.Success;
}
Public Overrides Function Validate(ByVal infoEvents As IDTSInfoEvents) As DTSExecResult
    If Me.ConfigString.Length = 0 Or connections.Contains(ConfigString) = False Then
        infoEvents.FireError(0, "MyTextLogProvider", "The ConnectionManager " + ConfigString + " specified in the ConfigString property cannot be found in the collection.", "", 0)
        Return DTSExecResult.Failure
    Else 
        Dim fileName As String =  connections(ConfigString).AcquireConnectionCType(as string, Nothing)
 
        If fileName = Nothing Or fileName.Length = 0 Then
            infoEvents.FireError(0, "MyTextLogProvider", "The ConnectionManager " + ConfigString + " specified in the ConfigString property cannot be found in the collection.", "", 0)
            Return DTSExecResult.Failure
        End If
    End If
    Return DTSExecResult.Success
End Function

Günlük sağlayıcı kalıcı yapma

Normalde, Bağlantı Yöneticisi için özel Kalıcılık uygulamak zorunda değildir.Özel Kalıcılık, nesnenin özelliklerini karmaşık veri türlerini kullandığınızda gereklidir.Daha fazla bilgi için bkz: Tümleştirme Hizmetleri için Özel Nesneler Geliştirme.

Günlük sağlayıcı ile günlüğü

Vardır üç çalışma -saat tüm günlük sağlayıcıları tarafından geçersiz kılınması gereken yöntemleri: OpenLog, Log, and CloseLog.

Önemli notÖnemli

Doğrulama ve tek paket yürütme sırasında OpenLog ve CloseLog yöntemleri çaðrýlýr birden fazla saat.Özel kodunuzu sonraki açýlýþ ve kapanýþ günlüğü tarafından yazılmasını eski günlük girişleri neden olduğundan emin olun.İçinde sizin test doğrulama olaylarını günlüğe seçtiyseniz, paket, OnPreValidate; görmeniz gerekir ilk günlüğe kaydedilen olay olduğu Gördüğünüz ilk günlüğe kaydedilen olay PackageStart ise, ilk doğrulama olayları üzerine yazıldı.

Oturum açma

Çoğu günlüğü sağlayıcılarını bir dış veri kaynağına bağlanmak kaynak, bir dosya veya veritabanı paket yürütme sırasında toplanan olay bilgilerini depolamak için gibi.Başka bir nesneyle gibi çalışma zamanında ile dış verilere bağlanma kaynak genellikle Bağlantı Yöneticisi nesneleri kullanılarak gerçekleştirilir.

The OpenLog method is called at the start of package execution.Override this method to establish a connection to the external data source.

Aşağıdaki örnek kod yazma sırasında bir metin dosyasını açar, bir günlük sağlayıcı gösterir OpenLog.Çağırarak dosyayı açar AcquireConnection yöntem, belirtilen Bağlantı Yöneticisi'ni, ConfigString özellik.

public override void OpenLog()
{
    if(!this.connections.Contains(this.ConfigString))
        throw new Exception("The ConnectionManager " + this.ConfigString + " does not exist in the Connections collection.");

    this.connectionManager = connections[ConfigString];
    string filePath = this.connectionManager.AcquireConnection(null) as string;

    if(filePath == null || filePath.Length == 0)
        throw new Exception("The ConnectionManager " + this.ConfigString + " is not a valid FILE ConnectionManager");

    //  Create a StreamWriter to append to.
    sw = new StreamWriter(filePath,true);

    sw.WriteLine("Open log" + System.DateTime.Now.ToShortTimeString());
}
Public Overrides  Sub OpenLog()
    If Not Me.connections.Contains(Me.ConfigString) Then
        Throw New Exception("The ConnectionManager " + Me.ConfigString + " does not exist in the Connections collection.")
    End If
 
    Me.connectionManager = connections(ConfigString)
    Dim filePath As String =  Me.connectionManager.AcquireConnectionCType(as string, Nothing)
 
    If filePath = Nothing Or filePath.Length = 0 Then
        Throw New Exception("The ConnectionManager " + Me.ConfigString + " is not a valid FILE ConnectionManager")
    End If
 
    '  Create a StreamWriter to append to.
    sw = New StreamWriter(filePath,True)
 
    sw.WriteLine("Open log" + System.DateTime.Now.ToShortTimeString())
End Sub

Yazma Kütüğü Girişleri

The Log method is called every time that an object in the package raises an event by calling a Fire<event> method on one of the event interfaces.Her olay, onun içeriği ve genellikle açıklayıcı bir mesaj hakkında bilgilerle oluşturulur.Ancak, yapılan her çağrı Log yöntem içeren bilgi için her yöntem parametresi.Örneğin, adları geri döndürülebilir standart bazı olayları ileti metni sağlamak ve DataCode ve DataBytes için isteğe bağlı ek bilgiler düşünülmüştür.

Aşağıdaki kod örneği Implements Log yöntem ve olayları akışına önceki bölümde açılmış olan yazma

public override void Log(string logEntryName, string computerName, string operatorName, string sourceName, string sourceID, string executionID, string messageText, DateTime startTime, DateTime endTime, int dataCode, byte[] dataBytes)
{
    sw.Write(logEntryName + ",");
    sw.Write(computerName + ",");
    sw.Write(operatorName + ",");
    sw.Write(sourceName + ",");
    sw.Write(sourceID + ",");
    sw.Write(messageText + ",");
    sw.Write(dataBytes + ",");
    sw.WriteLine("");
}
Public Overrides  Sub Log(ByVal logEnTryName As String, ByVal computerName As String, ByVal operatorName As String, ByVal sourceName As String, ByVal sourceID As String, ByVal executionID As String, ByVal messageText As String, ByVal startTime As DateTime, ByVal endTime As DateTime, ByVal dataCode As Integer, ByVal dataBytes() As Byte)
    sw.Write(logEnTryName + ",")
    sw.Write(computerName + ",")
    sw.Write(operatorName + ",")
    sw.Write(sourceName + ",")
    sw.Write(sourceID + ",")
    sw.Write(messageText + ",")
    sw.Write(dataBytes + ",")
    sw.WriteLine("")
End Sub

Günlüğü kapatma

The CloseLog method is called at the end of package execution, after all the objects in the package have completed execution, or, when the package stops because of errors.

Aşağıdaki kod örneği uygulaması gösterilmiştir CloseLog sırasında açılan dosya akışı kapatır yöntem OpenLog yöntem.

public override void CloseLog()
{
    if (sw != null)
    {
        sw.WriteLine("Close log" + System.DateTime.Now.ToShortTimeString());
        sw.Close();
    }
}
Public Overrides  Sub CloseLog()
    If Not sw Is Nothing Then
        sw.WriteLine("Close log" + System.DateTime.Now.ToShortTimeString())
        sw.Close()
    End If
End Sub
Integration Services simgesi (küçük)Integration Services ile güncel kalın

En son karşıdan yüklemeler, makaleler, örnekler ve seçilen topluluk çözümleri yanı sıra Microsoft videolar için ziyaret Integration Services sayfa msdn veya TechNet:

Bu güncelleştirmelerle ilgili otomatik bildirim almak için, sayfadaki RSS akışlarına abone olun.