古いCommerce Serverバージョンを11.3以降のバージョンにアップグレードする際、Upgrade Wizardに以下のようなエラーが表示されます:
ログ ファイルに、下記のようなエントリーが出力されます:
<Product Catalog>: Info: Beginning product catalog schema migration <Product Catalog>: Info: Product catalog schema migration failed, however, the changes to full text catalogs cannot be rolled back. <Product Catalog>: Error: System.Data.SqlClient.SqlException (0x80131904): Invalid object name 'sysprocesses'. at System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection, Action`1 wrapCloseInAction) at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj, Boolean callerHasConnectionLock, Boolean asyncClose) at System.Data.SqlClient.TdsParser.TryRun(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj, Boolean& dataReady) at System.Data.SqlClient.SqlCommand.RunExecuteNonQueryTds(String methodName, Boolean async, Int32 timeout, Boolean asyncWrite) at System.Data.SqlClient.SqlCommand.InternalExecuteNonQuery(TaskCompletionSource`1 completion, String methodName, Boolean sendToPipe, Int32 timeout, Boolean asyncWrite) at System.Data.SqlClient.SqlCommand.ExecuteNonQuery() at CommerceServer.Core.Internal.ServerUtility.ExecuteSqlScriptFromString(SqlConnection connection, SqlTransaction transaction, String sqlScriptContents) at CommerceServer.Core.Internal.ServerUtility.ExecuteSqlScript(SqlConnection connection, SqlTransaction transaction, String sqlFileName) at CommerceServer.Core.Migration.CatalogComponent.RunMigrationSchema(CatalogExecutionContext executionContext, String catalogCreateSqlPath) at CommerceServer.Core.Migration.CatalogComponent.Migrate() ClientConnectionId:9cc4600d-649c-44a1-b3ac-10c09d6cad36 Error Number:208,State:1,Class:16
このエラーは、dbo.ctlg_DropPersistentTablesInScratchDBストアド プロシージャに関連するDBスキーマの変更によって発生します。このストアド プロシージャでは、sysprocessesオブジェクトに単一の識別子を使用していますが、SQLサーバーの古いバージョン(SQL 2008など)では、三つの部分からなる識別子のフォーマット([database_name].[schema_name].object_name)を使用することが前提とされているため、エラーが発生します。
下記の変更をCatalogCreate.sqlファイル(デフォルトではC:\Program Files (x86)\Commerce Server 11にインストールされています) に適用することで、この問題を解決することができます。
作成されたdbo.ctlg_DropPersistentTablesInScratchDBプロシージャ内には、以下のステートメントが3回出現します(行頭はCREATE PROCEDURE dbo.ctlg_DropPersistentTablesInScratchDBで始まります)。
Select '*' From sysprocesses Where spid = @Tablespid_tmp
3回出現する上記のステートメントを、以下のように変更します:
Select '*' From master..sysprocesses Where spid = @Tablespid_tmp
上記の変更をCatalogCreate.sqlファイルに保存し、Upgrade Wizardを再度実行してください。