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)
Öffnen Sie SQL Server Management Studio.
Wählen Sie die DATENBANK BAM-Archiv aus, und klicken Sie dann auf Neue Abfrage.
Zeigen Sie im Menü Abfrage auf Ergebnisse an , und klicken Sie dann auf Ergebnisse in Text.
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
Ausführen der Abfrage