ここに問題があります
sqlRestore.RelocateFiles.Add(new RelocateFile(databaseName, dataFileLocation));
sqlRestore.RelocateFiles.Add(new RelocateFile(databaseName + "_log", logFileLocation));
ここで、databaseName は、db バックアップ ファイルで指定されたデータベースの名前を意味します。しかし、宛先データベース名を指定しています。
元のデータベース名に変更
バックアップ ファイルからデータベース名を読み取るサンプル コードはこちら
DataTable dtFileList = sqlRestore.ReadFileList(serverName);
string dbLogicalName = dtFileList.Rows[0][0].ToString();
string dbPhysicalName = dtFileList.Rows[0][1].ToString();
string logLogicalName = dtFileList.Rows[1][0].ToString();
string logPhysicalName = dtFileList.Rows[1][1].ToString