こんにちは。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のデータベース移行をお考えの方はご注意ください。