Freigeben über


Erstellen einer partitionierten Ansicht in der Archivdatenbank

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 zum Abfragen erneut verbinden, gestaltet sich die Ermittlung der Daten für die Abfrage sehr schwierig.

Sie können in der BAM-Archivdatenbank partitionierte Ansichten erstellen, um die Suche nach den Daten zu vereinfachen. BAM unterstützt bis zu 253 Partitionen. BAM generiert für jede Aktivität ein DTS-Paket zur Datenwartung in BAM. Dieses kopiert die Aktivitätsdaten in die BAM-Archivdatenbank und löscht sie anschließend aus der primären BAM-Importdatenbank. Wenn die Archivdatenbank nach dem Kopieren der Daten, jedoch vor der nächsten Sicherung, abstürzt, gehen die Daten verloren.

Dieses Problem eines Datenverlusts lässt sich durch ein einzelnes Archivierungspaket lösen, das zunächst die alten Daten aus allen Aktivitäten kopiert, dann die BAM-Archivdatenbank sichert und schließlich die aus der primären BAM-Importdatenbank kopierten Partitionen löscht.

Voraussetzungen

Sie müssen als Mitglied der Gruppe BizTalk Server Administratoren angemeldet sein, um dieses Verfahren ausführen zu können.

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 DATENBANK BAM-Archiv 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 <den Aktivitätsnamen> durch Ihren Aktivitätsnamen, und ersetzen Sie <view type> durch Instanzen für instance Ansicht 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. Ausführen der Abfrage

Weitere Informationen