导入组织不会使用 Microsoft Dynamics CRM 4.0 中的新 OrganizationId 重命名全文目录ftcat_documentindex_

应用对象
Dynamics CRM 4.0

症状

使用部署管理器导入组织后,导入组织中 FullTextCatalogIndex 的系统作业将停止工作并处于等待状态。 如果应用 了KB977867,则不会出现此问题。

原因

导入组织不会重命名全文目录,并且导入的组织数据库存储了包含备份组织的 GUID 的全文目录。 系统作业尝试执行包含当前组织 ID ftcat_documentindex_<OrganizationIdGuidValue> 的全文目录更新,然后更改为等待状态。

解决方法

若要解决此问题,请在组织数据库上运行以下 SQL 脚本:

DECLARE @ID AS NVARCHAR(128), 
  @OLDNAME AS NVARCHAR(128), 
  @NEWNAME AS NVARCHAR(128),
  @LINES AS INT
SELECT @OLDNAME = name FROM  SYS.FULLTEXT_CATALOGS WHERE name LIKE 'ftcat_documentindex_%'
SELECT @ID = OrganizationId FROM Organization
SET @ID = REPLACE(@ID,'-','')
SET @ID = LOWER(@ID)
SET @NEWNAME = 'ftcat_documentindex_' + @ID
PRINT 'GUID IS : '+@ID
PRINT '---------------------'
PRINT 'OLDNAME IS : '+@OLDNAME
PRINT '---------------------'
PRINT 'NEWNAME IS : '+@NEWNAME
PRINT '---------------------'
IF @OLDNAME!=@NEWNAME
BEGIN
 EXEC sp_fulltext_database 'enable' 
 -- Drop exsiting full text catalog
 PRINT 'START DROPPING EXSITING FULL TEXT CATALOG ..'
 PRINT '---------------------'
 IF  EXISTS (SELECT * FROM sys.fulltext_indexes fti WHERE fti.object_id = OBJECT_ID(N'[dbo].[DocumentIndex]'))
 BEGIN
  ALTER FULLTEXT INDEX ON [dbo].[DocumentIndex] DISABLE
 END
 IF  EXISTS (SELECT * FROM sys.fulltext_indexes fti WHERE fti.object_id = OBJECT_ID(N'[dbo].[DocumentIndex]'))
 BEGIN
  DROP FULLTEXT INDEX ON [dbo].[DocumentIndex]
 END
 SELECT @LINES = COUNT(*) FROM sysfulltextcatalogs ftc WHERE ftc.name = @OLDNAME
 IF  @LINES > 0
 BEGIN
  EXEC sp_fulltext_catalog @OLDNAME,'drop' 
 END
 PRINT 'DROPPING COMPLETE ..'
 PRINT '---------------------'
 -- Add new full text catalog
 PRINT 'START ADDING EXSITING FULL TEXT CATALOG ..'
 PRINT '---------------------'
 EXEC sp_fulltext_catalog @NEWNAME,'create'
 EXEC sp_fulltext_table 'documentindex', 'create', @NEWNAME, 'cndx_PrimaryKey_DocumentIndex' 
 EXEC sp_fulltext_column 'documentindex', 'Title', 'add' 

 EXEC sp_fulltext_column 'documentindex', 'KeyWords', 'add' 

 EXEC sp_fulltext_column 'documentindex', 'SearchText', 'add' 

 EXEC sp_fulltext_table 'documentindex', 'activate' 

 EXEC sp_fulltext_catalog @NEWNAME, 'start_full' 
 PRINT 'ADDING COMPLETE ..'
END
ELSE
PRINT 'THE FULL TEXT CATALOG HAS BEEN UPDATED ..'