アーカイブ データベースでのパーティション ビューの作成
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)
SQL Server Management Studio を開きます。
BAM アーカイブ データベースを選択し、[ 新しいクエリ] をクリックします。
[ クエリ ] メニューの [ 結果 先] をポイントし、[ 結果からテキストへ] をクリックします。
次の 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
クエリを実行します。