Condividi tramite


Creazione di una visualizzazione partizionata nel database di archiviazione

Quando si esegue il pacchetto di manutenzione dati BAM (BAM_DM_<activity name>) BAM copia ogni partizione nel database Di importazione primaria BAM in una tabella separata nel database di archiviazione BAM. Se si scollega il database di archiviazione e quindi lo si ricollega per l'esecuzione di una query, sarà difficile individuare i dati per la query.

Per facilitare l'individuazione dei dati, è possibile creare visualizzazioni partizionate nel database di archiviazione BAM. BAM supporta un massimo di 253 partizioni. Per ogni attività, BAM genera un pacchetto DTS di manutenzione dei dati BAM che copia i dati delle attività nel database di archiviazione BAM e quindi li rimuove dal database di importazione primaria BAM. Se si verifica un errore del database di archiviazione dopo la copia dei dati ma prima del backup successivo, i dati andranno perduti.

Per evitare di perdere i dati, è opportuno disporre di un unico pacchetto di archiviazione che prima copia i dati precedenti relativi a tutte le attività, quindi esegue il backup del database di archiviazione BAM e infine elimina tutte le partizioni copiate dal database di importazione primaria BAM.

Prerequisiti

Per eseguire questa procedura è necessario accedere come membro del gruppo Amministratori BizTalk Server.

Creare una visualizzazione partizionata nel database di archivio BAM (SQL Server 2008 SP1 o SQL Server 2008 R2)

  1. Aprire SQL Server Management Studio.

  2. Selezionare il database di archivio BAM e quindi fare clic su Nuova query.

  3. Scegliere Risultati dal menu Query e quindi fare clic su Risultati su Testo.

  4. Copiare nel riquadro della query lo script SQL riportato di seguito. Sostituire <il nome dell'attività con il nome> dell'attività e sostituire <view type> con istanze per la visualizzazione istanza o Relazioni per la visualizzazione relazione .

    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. Esecuzione della query.

Vedere anche