Freigeben über


Erstellen einer partitionierten Ansicht in der Archivierungsdatenbank

Wenn Sie das BAM-Datenwartungspaket (BAM_DM_<activity name>) ausführen, kopiert BAM jede Partition in der primären BAM-Importdatenbank in eine separate Tabelle in der BAM-Archivdatenbank. Wenn Sie die Archivdatenbank trennen und sie für die Abfrage erneut anfügen, ist es schwierig, die Daten für Ihre Abfrage zu finden.

Sie können partitionierte Ansichten in der BAM-Archivdatenbank erstellen, um das Auffinden der Daten zu erleichtern. BAM unterstützt bis zu 253 Partitionen. Für jede Aktivität generiert BAM ein BAM-Datenwartungs-DTS-Paket, das die Aktivitätsdaten in die BAM-Archivdatenbank kopiert und dann aus der PRIMÄREN IMPORT-Datenbank des BAM entfernt. Wenn die Archivdatenbank nach dem Kopieren der Daten fehlschlägt, aber vor der nächsten Sicherung gehen die Daten verloren.

Die Lösung, um verlorene Daten zu verhindern, besteht darin, ein einzelnes Archivierungspaket zu haben, das zuerst die alten Daten aus allen Aktivitäten kopiert, dann die BAM-Archivdatenbank gesichert und schließlich die Partitionen abbricht, die aus der primären BAM-Importdatenbank kopiert wurden.

Voraussetzungen

Sie müssen als Mitglied der Gruppe "BizTalk Server-Administratoren" angemeldet sein, um dieses Verfahren auszuführen.

Erstellen einer partitionierten Ansicht in der BAM-Archivdatenbank (SQL Server 2008 SP1 oder SQL Server 2008 R2)

  1. Öffnen Sie SQL Server Management Studio.

  2. Wählen Sie die BAM-Archivdatenbank aus, und klicken Sie dann auf "Neue Abfrage".

  3. Zeigen Sie im Menü "Abfrage " auf " Ergebnisse an ", und klicken Sie dann auf " Ergebnisse" in "Text".

  4. Kopieren Sie das folgende SQL-Skript in den Abfragebereich. Ersetzen Sie <Aktivitätsnamen> durch Ihren Aktivitätsnamen, und ersetzen Sie <view type> entweder durch Instanzen für die Ansicht "Instanzen" oder Beziehungen für die Beziehungsansicht.

    set nocount on
    
    declare @activityName as nvarchar(128)
    declare @viewType as nvarchar(50)
    set @activityName = N'<activity name>'-- Substitute your activity name here
    set @viewType = N'<view type>'-- Substitute the view type here, either "Instances" or "Relationships"
    
    declare @tableName nvarchar(128)
    declare @viewName nvarchar(128)
    declare @isFirstTable bit
    declare @scriptLine nvarchar(300)
    
    set @viewName = N'bam_' + @activityName + '_' + @viewType + 'View'
    select N'SELECT Name FROM sysobjects where name = N''' + @viewName + ''' and type = ''V'''
     + char(13) + char(10) + 'IF @@ROWCOUNT > 0 DROP VIEW ' + @viewName
     + char(13) + char(10) + 'GO'
    
    select 'CREATE VIEW ' +  @viewName + ' AS ' + char(13) + char(10)
    
    declare instance_cursor cursor local for
    select name from sysobjects
    where name like N'bam_' + @activityName + '_' + @viewType + '_%' and type = 'U'
    
    SET @isFirstTable = 1
    OPEN instance_cursor
    FETCH NEXT FROM instance_cursor INTO @tableName
    
    WHILE @@fetch_status = 0
    BEGIN
    
    if @isFirstTable = 1
    BEGIN
    SET @scriptLine = N'SELECT * FROM [' + @tableName + ']'
    SET @isFirstTable = 0
    END
    ELSE
    SET @scriptLine = N'UNION ALL SELECT * FROM [' + @tableName + ']'
    
    SELECT @scriptLine
    
    FETCH NEXT FROM instance_cursor INTO @tableName
    END
    CLOSE instance_cursor
    DEALLOCATE instance_cursor
    
    select 'GO'
    set nocount off
    
  5. Führen Sie die Abfrage aus.

Siehe auch