共用方式為


在封存資料庫中建立數據分割檢視

當您執行 BAM 數據維護套件 (BAM_DM_<activity name>) BAM 時,會將 BAM 主要匯入資料庫中的每個分割區複製到 BAM 封存資料庫中的個別數據表。 如果您將封存資料庫卸載並重新掛載以進行查詢,可能會很難找到所需的查詢數據。

您可以在 BAM 封存資料庫中建立資料分割檢視,以利尋找數據。 BAM 最多可支援 253 個分割區。 針對每個活動,BAM 會產生一個 BAM 數據維護 DTS 套件,它會將活動數據複製到 BAM 封存資料庫,然後將它從 BAM 主要匯入資料庫中移除。 如果封存資料庫在複製數據之後失敗,但在下次備份之前,就會遺失數據。

防止遺失數據的解決方案是擁有單一封存套件,它會先從所有活動複製舊數據,然後備份 BAM 封存資料庫,最後卸除從 BAM 主要匯入資料庫複製的數據分割。

先決條件

您必須以 BizTalk Server Administrators 群組的成員身分登入,才能執行此程式。

在 BAM 封存資料庫中建立分割視圖(SQL Server 2008 SP1 或 SQL Server 2008 R2)

  1. 開啟 SQL Server Management Studio。

  2. 選取 BAM 封存資料庫,然後按兩下 [ 新增查詢]。

  3. 在 [ 查詢 ] 選單上,指向 [ 結果至 ],然後按下 [ 結果至文字 ]。

  4. 將下列 SQL 文稿複製到查詢窗格中。 請用您的活動名稱替換<活動名稱>,並用實例替換<view type>以使用實例檢視,或用關係替換以使用關係檢視。

    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. 執行查詢。

另請參閱