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]。その列の 1 つが ですOrganizationId。この GUID は組織を識別します。

CRM Environment Prod で組織データベースのバックアップを作成し、CRM Environment Test で復元すると、その ID が保持されます。後で test2 を復元すると、以前にインポートしたものと同じ ID になります。

OptimizeOrgImport はロールアップ 8 で導入され、新しいインポート プロセスが導入されました。古いインポート プロセス (OptimizeOrgImport = 0) では、組織の ID も変更されると思います。したがって、古いインポート プロセスで問題が発生することはありません。

于 2013-01-16T16:24:32.957 に答える