Partager via


Création d'une vue partitionnée dans la base de données d'archivage

Lorsque vous exécutez le package de maintenance des données BAM (BAM_DM_<activity name>), BAM copie chaque partition de la base de données d’importation principale BAM dans une table distincte de la base de données d’archivage BAM. Si vous détachez la base de données des archives et la rattachez à des fins de requête, il sera difficile de localiser les données pour votre requête.

Vous pouvez créer des vues partitionnées dans la base de données des archives BAM afin de faciliter la localisation des données. L'analyse BAM prend en charge jusqu'à 253 partitions. Pour chaque activité, l'analyse BAM génère un lot DTS de gestion de données BAM, qui copie les données d'activité dans la base de données des archives BAM, puis les supprime de la base de données d'importation principale BAM. Si la base de données des archives rencontre une défaillance après la copie des données mais avant la prochaine sauvegarde, les données sont perdues.

La solution est d'avoir un lot d'archives unique, qui copie d'abord les anciennes données à partir de toutes les activités, puis sauvegarde la base de données des archives BAM pour supprimer finalement les partitions copiées à partir de la base de données d'importation principale BAM.

Prérequis

Pour exécuter cette procédure, vous devez ouvrir une session en tant que membre du groupe Administrateurs de BizTalk Server.

Créer une vue partitionnée dans la base de données d’archivage BAM (SQL Server 2008 SP1 ou SQL Server 2008 R2)

  1. Ouvrez SQL Server Management Studio.

  2. Sélectionnez la base de données d’archivage BAM, puis cliquez sur Nouvelle requête.

  3. Dans le menu Requête , pointez sur Résultats vers , puis cliquez sur Résultats sur Texte.

  4. Copiez le script SQL suivant dans le volet de requête. Remplacez le nom> de l’activité par <le nom de votre activité et remplacez par <view type>Instances pour instance vue ou Relations pour l’affichage relation.

    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. exécutez la requête.

Voir aussi