こんにちは。Sitecore技術担当の山田です。

先日Sitecore 9のデータベース移行を行ったのですが、移行後に以下のようなエラーログが出力されているのを発見しました。

2019-01-23 10:41:02.625 +09:00 [Information] Create "XdbContextLoggingPlugin"
2019-01-23 10:41:02.656 +09:00 [Information] Register "XdbContextLoggingPlugin"
2019-01-23 10:41:18.481 +09:00 [Error] SQL Server への接続を確立しているときにネットワーク関連またはインスタンス固有のエラーが発生しました。サーバーが見つからないかアクセスできません。インスタンス名が正しいこと、および SQL Server がリモート接続を許可するように構成されていることを確認してください。 (provider: SQL Network Interfaces, error: 26 - 指定されたサーバーまたはインスタンスの位置を特定しているときにエラーが発生しました)
System.Data.SqlClient.SqlException (0x80131904): SQL Server への接続を確立しているときにネットワーク関連またはインスタンス固有のエラーが発生しました。サーバーが見つからないかアクセスできません。インスタンス名が正しいこと、および SQL Server がリモート接続を許可するように構成されていることを確認してください。 (provider: SQL Network Interfaces, error: 26 - 指定されたサーバーまたはインスタンスの位置を特定しているときにエラーが発生しました)
   場所 System.Data.SqlClient.SqlInternalConnectionTds..ctor(DbConnectionPoolIdentity identity, SqlConnectionString connectionOptions, SqlCredential credential, Object providerInfo, String newPassword, SecureString newSecurePassword, Boolean redirectedUserInstance, SqlConnectionString userConnectionOptions, SessionData reconnectSessionData, DbConnectionPool pool, String accessToken, Boolean applyTransientFaultHandling, SqlAuthenticationProviderManager sqlAuthProviderManager)
   場所 System.Data.SqlClient.SqlConnectionFactory.CreateConnection(DbConnectionOptions options, DbConnectionPoolKey poolKey, Object poolGroupProviderInfo, DbConnectionPool pool, DbConnection owningConnection, DbConnectionOptions userOptions)

(以下略)

調べてみたところ、データベース内に環境依存のデータ(サーバー名、データベース名)が含まれているのが原因でした。
該当するテーブルは以下のとおりです。

  • データベース名: {インスタンス名}_Xdb.Collection.ShardMapManager
  • テーブル名: _ShardManagement.ShardsGlobal
  • カラム名: ServerName, DatabaseName


テーブルに含まれるサーバー名とデータベース名を移行後の環境のものに書き換えることでエラーが解消されました。

Sitecore 9のデータベース移行をお考えの方はご注意ください。