1

当我使用 OptimizeOrgImport=1 导入组织时是否有一些陷阱?这种优化在内部是如何工作的?

用例:

  1. 导入组织,说“测试”。(工作正常)
  2. 导入此组织的另一个副本,例如“test2”(更新用户时失败)
  3. 设置 OptimizeOrgImport=0 并导入“test2”(又好了!)

步骤 2 的日志:

14:46:22|   Info| Import Organization (test2)
14:46:22|   Info| Update Organization...
14:48:20|   Info| Update Users...
14:48:44|  Error| Import Organization (Name=test2, Id=5b6bf441-650c-e211-b194-00185d111162) failed with Exception:
System.InvalidOperationException: ExecuteNonQuery requires an open and available Connection. The connection's current state is closed.
   at System.Data.SqlClient.SqlConnection.GetOpenConnection(String method)
   at System.Data.SqlClient.SqlConnection.ValidateConnectionForExecute(String method, SqlCommand command)
   at System.Data.SqlClient.SqlCommand.ValidateCommand(String method, Boolean async)
   at System.Data.SqlClient.SqlCommand.InternalExecuteNonQuery(DbAsyncResult result, String methodName, Boolean sendToPipe)
   at System.Data.SqlClient.SqlCommand.ExecuteNonQuery()
   at Microsoft.Crm.CrmDbConnection.InternalExecuteNonQuery(IDbCommand command)
   at Microsoft.Crm.CrmDbConnection.ExecuteNonQuery(IDbCommand command, Boolean impersonate)
   at Microsoft.Crm.CrmDbConnection.SetTransactionIsolationLevel(IsolationLevel il)
   at Microsoft.Crm.CrmDbConnection.Dispose(Boolean disposing)
   at Microsoft.Crm.SqlExecutionContext.Dispose(Boolean disposing)
   at Microsoft.Crm.SqlExecutionContext.Dispose()
   at Microsoft.Crm.Tools.Admin.ImportOrganizationInstaller.Import(Guid organizationId, String organizationUniqueName, String organizationFriendlyName, String sqlServerName, String databaseName, Uri reportServerUrl, String privilegedUserGroupName, String sqlAccessGroupName, String userGroupName, String reportingGroupName, String privilegedReportingGroupName, ICollection`1 users, MultipleTenancy multipleTenancy)

提前谢谢你。

4

1 回答 1

1

OptimizeOrgImport设置设置为 1 时,您必须考虑以下因素:

当您使用注册表项 OptimizeOrgImport 并将此项的值设置为 1 时,您不能多次导入同一个组织数据库。如果要多次导入同一个组织数据库,则必须执行以下操作之一:

  • 设置 OptimizeOrgImport = 0 并使用正常的导入过程。
  • 删除组织,然后再次导入组织。

请参阅http://support.microsoft.com/kb/977867/en

每个组织数据库都包含一个表[dbo].[OrganizationBase]。它的列之一是OrganizationId. 此 GUID 将标识组织。

如果您在 CRM Environment Prod 上备份组织数据库并在 CRM Environment Test 上恢复它,它将保留其 ID。如果您稍后恢复 test2,它的 ID 与您之前导入的 ID 相同。

OptimizeOrgImport 是在 Rollup 8 中引入的,并引入了一个新的导入过程。我假设旧的导入过程 (OptimizeOrgImport = 0) 也会更改组织的 ID。因此,您不会遇到旧导入过程的问题。

于 2013-01-16T16:24:32.957 回答