次の方法で共有


アーカイブ データベースでのパーティション ビューの作成

BAM データ メンテナンス パッケージ (BAM_DM_<activity name>) を実行すると、BAM プライマリ インポート データベース内の各パーティションが BAM アーカイブ データベース内の別のテーブルにコピーされます。 アーカイブ データベースを接続解除した後、クエリを実行するために再接続する場合、クエリでデータを検索するのが困難になります。

データの検索を容易にするために、BAM アーカイブ データベースでパーティション ビューを作成できます。 BAM では最大 253 のパーティションをサポートしています。 BAM によってアクティビティごとに 1 つの BAM データ保守 DTS パッケージが生成され、アクティビティ データが BAM アーカイブ データベースにコピーされ、BAM プライマリ インポート データベースから削除されます。 データをコピーした後、次のバックアップの前にアーカイブ データベースに障害が発生すると、データは失われます。

データ損失を防ぐための対策として、アーカイブ パッケージを 1 つ作成し、最初にすべてのアクティビティの古いデータをコピーします。その後、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. クエリを実行します。

参照