运行 BAM 数据维护包(BAM_DM_<activity name>
)时,BAM 将 BAM 主导入数据库中的每个分区复制到 BAM 存档数据库中的单独表中。 如果分离存档数据库并将其重新附加以供查询,则很难找到查询的数据。
可以在 BAM 存档数据库中创建分区视图,以便查找数据。 BAM 最多支持 253 个分区。 对于每个活动,BAM 将生成一个 BAM 数据维护 DTS 包,该包将活动数据复制到 BAM 存档数据库,然后将其从 BAM 主导入数据库中删除。 如果存档数据库在复制数据之后但在下次备份之前失败,则数据将丢失。
防止丢失数据的解决方案是具有单个存档包,该包首先从所有活动复制旧数据,然后备份 BAM 存档数据库,最后删除从 BAM 主导入数据库复制的分区。
先决条件
必须以 BizTalk Server 管理员组的成员身份登录才能执行此过程。
在 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
执行查询。