FAQ-ウィキ

答え:

Recovery Toolbox for SQL Server でサポートされているデータを保存する方法は 2 つあります:

  1. SQL スクリプトをハード ドライブに保存すると、データベース オブジェクトやテーブルなどが作成され、これらのテーブルにデータが挿入されます。
  2. ユーザーが定義したデータベースでスクリプトを起動することもできます。これらのスクリプトは SQL 言語で記述されています。

SQL スクリプトは、同じデータベース ファイルに基づいているにもかかわらず、異なる場合があることに注意してください。これは、ADO によって直接サーバー接続のために実行されるクエリと、MS SQL Server に付属するクエリ アナライザー環境で実行される SQL クエリの両方の構文の特殊性 (「:」の使用、Go コマンドなど) が原因で発生します。最初の方法の方が信頼性が高く、2 番目の方法の方が便利です。

データをスクリプトに変換してディスクに保存する

1. 保存データのマッピング

データをディスクに保存することを選択した場合、Recovery Toolbox for SQL Server は、ソース MDF ファイルの名前を含むサブディレクトリを作成します。このサブディレクトリはユーザー定義ディレクトリに作成され、すべてのスクリプトがそこに配置されます。すべてのスクリプトは規則に従って名前が付けられ、名前は単語と数字で構成されます。単語はスクリプトの役割を示し、数字はスクリプトの番号を示します。スクリプトには多くの種類があります。たとえば、次のとおりです。

  • Types*.sql - スクリプトは、ユーザーが定義したデータ型を作成します。
  • Tables*.sql - スクリプトはテーブルを作成します。
  • Indexes*.sql - スクリプトは主キーとインデックスを作成します。
  • ForeignKeys*.sql - スクリプトは外部キーを作成します。
  • Procedure*.sql - スクリプトはストアド プロシージャを作成します。
  • Function*.sql - スクリプトは、ユーザーが定義した関数を作成します。
  • View*.sql - スクリプトはビューを作成します。
  • Triggers*.sql - スクリプトはトリガーを作成します。
  • Data*.sql - スクリプトはテーブルにデータを挿入します。

スクリプト シーケンス番号には有用なデータは含まれておらず、スクリプトの実行シーケンスやその他の情報を示すものではありません。これらの番号は、データを分割して 1 つの大きなファイルではなく、さまざまな小さなドキュメントに保存するためにのみ使用されます。ユーザーは、SQL スクリプトを使用してファイルの最大サイズを定義できます。さらに、ユーザーはデータ ファイルの番号付けに注意する必要があります。データ タイプの各ファイルには、1 つのテーブルのデータのみを含めることができることに注意してください。シーケンス番号付きのファイルには、各テーブルのすべてのデータが含まれます。

注記: 一部のファイルに数字がない場合、一部のテーブルにデータが含まれていないことを意味します。

2. スクリプト実行シーケンス

この図では、スクリプト実行の推奨順序を確認できます。

スクリプト実行シーケンス

スクリプトの実行シーケンスは、既存のデータとテーブルの構造に対する既存の制限によって異なります。次の要素に特に注意してください。

  1. セカンダリ キーを作成する場合は、対応するプライマリ キーを指定してください。このため、これらの操作は異なるファイルに保存され、この順序で起動する必要があります。
  2. インデックスとセカンダリ キーを作成する前に、プログラムはテーブルにデータを入力します。これは、セカンダリ キーが定義されているテーブルにデータを入力するときに参照整合性チェックが実行されるため必須です。セカンダリ キーを持つテーブルが、対応するプライマリ キーを持つテーブルより先に入力されると、エラーが発生します。さらに、この方法には別の特殊性があります。復元されたデータがプライマリ キー、一意のインデックスなどと競合する場合、この場合、テーブルにはとにかくデータが入力されますが、制限は作成されません (インデックス、プライマリ キーなど)。ユーザーが別の動作を必要とする場合は、スクリプトの実行順序を自分で選択できます。
  3. データベースでの プロシージャ関数ビュートリガー オブジェクトの作成には、これらのオブジェクトが複雑で扱いにくい依存関係を持つ可能性があるため、いくつかの困難があります。プロシージャは他のプロシージャを参照し、ビューは関数を参照し、トリガーはすべてのオブジェクトを参照する場合があります。そのため、プログラムではこのもつれを解決することはできません。ユーザーはすべての依存関係を手動で見つけ、必要な順序で SQL スクリプトを起動する必要があります。別の方法としては、すべてのエラー メッセージが消えるまで、このグループ内のすべてのスクリプトを複数回実行します。

3. Install.bat ファイル

Install.bat ファイルは、すべてのスクリプトの自動実行を確実にするために作成されます。このファイルは、ツールによって以前に保存されたすべてのスクリプトを実行します。スクリプトの実行シーケンスは、データベースに適用する場合と同じです。このバッチ ファイルには、MS SQL Server クライアント部分の一部である isqlw ユーティリティがインストールされている必要があります。コマンド ラインで、ファイル install.batサーバー名データベース名ユーザー名、および パスワード パラメータを指定してください。例: install.bat SQLServer SQLDatabase SQLUser SQLUserPassword

注意:
  1. パラメータはスペースで区切る必要があります。パラメータ自体にスペースが含まれている場合は、二重引用符で囲む必要があります。
  2. パラメータシーケンスは変更できません。
  3. データを NEW EMPTY データベースにインポートしてください。データをインポートする前に、データベースにテーブル、インデックス、ストアド プロシージャなどが含まれていてはなりません。
  4. install.bat ファイルがパラメータなしで実行される場合は、このファイルを起動する方法についての簡単なガイドを参照できます。

4. InstallTrusted.bat

Windows アカウント経由で Microsoft SQL Server にログインする場合は、InstallTrusted.bat ファイルを使用します。InstallTrusted.bat ファイルには、サーバー名とデータベース名という 2 つのパラメーターがあります。

使用例: installtrusted.bat SQLServer SQLDatabase Windows アカウントによるログインの詳細については、こちらをご覧ください: https://docs.microsoft.com/en-us/sql/relational-databases/security/authentication-access/principals-database-engine?view=sql-server-2017

答え:

複数のソースファイルから MS SQL Server 形式のデータベースを修復する

MS SQL Server 形式のデータベースには、1 つまたは複数のファイルが含まれています。ファイルには、メイン データ ファイル (デフォルトの拡張子は *.mdf)、セカンダリ データ ファイル (デフォルトの拡張子は *.ndf)、トランザクション ログ ファイル (デフォルトの拡張子は *.ldf) など、いくつかの種類があります。Recovery Toolbox for SQL Server を使用してデータを修復する場合は、すべてのセカンダリ データ ファイルとメイン データ ファイルへのパスを指定する必要があります。これは、[ファイルを開く] ダイアログ ボックスで行うことができます。

MDF の修復
Fig.1

破損したデータベースにメインデータファイル、セカンダリデータファイル、トランザクションログファイルが含まれている場合は、*.mdf形式のメインデータファイルと*.ndf形式のすべてのセカンダリデータファイルを選択する必要があります (見る fig. 2)。

fix ms sql server
Fig.2

答え:

Recovery Toolbox for SQL Server は、ランサムウェア ウイルスによって暗号化された Microsoft SQL Server データベース ファイルの .MDF/.NDF ファイルから情報を部分的または完全に回復できます。

Recovery Toolbox for SQL Server はデータを復号化しません。

一般に、このような場合にはデータの復号化は適用できません。

ただし、MDF ファイルが部分的に暗号化されている場合は、Recovery Toolbox for SQL Server が役立ちます。通常、ウイルスはファイル サイズが大きいため、ヘッダーやファイルの先頭部分のみを暗号化します。このような場合、MDF ファイルのヘッダーまたは一部のみが暗号化されていれば、Recovery Toolbox for SQL Server が役立ちます。このプログラムは、ファイル内のすべてのデータ ブロックと収集されたデータ構造を分析します。次に、可能であれば、元のデータ構造とデータ自体を再作成します。

Microsoft SQL Server MDF ファイル構造 Microsoft SQL Server MDF ファイル構造

ランサムウェアウイルスによる攻撃を受けた後、MDF ファイルからデータを回復することは可能ですか?

プログラムを使用してデータの 100% または一部を回復できるという保証はありません。その質問に対する明確な答えを得るには、Recovery Toolbox for SQL Server のデモ版をダウンロードし、暗号化された MDF ファイルを指定して、ファイルの分析が完了するまで待つ必要があります。

プログラムの DEMO バージョンで .mdf ファイルの分析が完了すると、ファイルから抽出できるデータの完全なプレビューが利用できるようになります。

注記:

Recovery Toolbox のカスタマー サポート部門によると、通常、ランサムウェア プログラムは、データベース ファイルのヘッダーのみを暗号化します。これは、データベース ファイルのファイル サイズが大きいためです。その結果、ソース ファイルからほぼすべてのデータ構造とほぼすべての情報を復元できる場合が多くあります。

スクリプトを実行した後に次のエラーが表示される場合:

Server: Msg 242, Level 16, State 3, Line 1

[Microsoft][ODBC SQL Server Driver][SQL Server] char データ型を datetime データ型に変換した結果、範囲外の datetime 値が生成されました。

声明は終了しました。

答え:

つまり、次の操作を実行してサーバーの言語設定を変更する必要があります。

  1. Enterprise Manager を起動します。
  2. 必要なサーバーを選択して接続します。
  3. マウスの右ボタンをクリックして Properties を選択し、プロパティ ウィンドウを開きます。
  4. Server Settingsタブを開きます。
  5. Default Language for user ドロップダウン リストで English を選択し、OK を押します。
    SQL Server を修復する
  6. SQL サーバーを停止します。これを行うには、コンテキスト メニューで Stop を選択し、確認ウィンドウの Are you sure you wish to stop SQL Server service. という質問に対して Yes と答えます。
  7. SQL Server を起動します。そのためには、コンテキスト メニューで Start を選択します。
  8. これで、Recovery Toolbox for SQL Server によってハード ドライブに保存されたスクリプトを実行できます。また、データベース スクリプト実行モードでプログラムを実行することもできます。
    ms sql サーバー 復元
  9. ここで、設定を復元する必要があります。そのためには、Enterprise Manager で必要なサーバーのプロパティ ウィンドウを開きます。
  10. Default Language for user リストでデフォルト言語を選択し、OK を押します。
    破損したデータベースSQL Server
  11. SQL サーバーを停止します。これを行うには、コンテキスト メニューで Stop を選択し、確認ウィンドウの Are you sure you wish to stop SQL Server service. という質問に対して Yes と答えます。
  12. SQL Server を起動します。そのためには、コンテキスト メニューで Start を選択します。

スクリプトを実行した後に次のエラーが表示される場合:

Server: Msg 242, Level 16, State 3, Line 1

[Microsoft][ODBC SQL Server Driver][SQL Server] char データ型を datetime データ型に変換した結果、範囲外の datetime 値が生成されました。

声明は終了しました。

答え:

つまり、次の操作を実行してサーバーの言語設定を変更する必要があります。

  1. Management Studio を起動します。
  2. 必要なサーバーを選択してください。
  3. [Security\Logins] に移動します。
  4. データベースを使用するユーザーを選択し、ユーザーのプロパティ ウィンドウを開きます。
  5. Default Language for user ドロップダウン リストで English を選択し、OK を押します。
    回復ツール ms sql server
  6. これで、Recovery Toolbox for SQL Server によってハード ドライブに保存されたスクリプトを実行できます。または、データベース スクリプト実行モードでプログラムを起動することもできます。
    一時停止中のデータベース SQL Server
  7. ここで、設定を復元する必要があります。そのためには、必要なユーザーの Management Studio のプロパティ ウィンドウを開きます。
  8. Default Language for user リストでデフォルト言語を選択し、OK を押します。
    破損した .mdf ファイル
  1. SQL Server Management Studio を起動します。
  2. Object ExplorerDatabases を右クリックします。
  3. Attachをクリックします
  4. Addボタンをクリックします
  5. mdfファイルを選択し、OKボタンをクリックします。
  6. OKボタンをクリックします
  7. 操作が完了するまで待ちます。

この問題を解決するには、次の操作を行う必要があります:

  1. データをスクリプトとして保存する
  2. コマンドラインから必要なパラメータをすべて指定したファイル install.bat を実行します。
  3. 正常に実行されなかったスクリプトを確認するには、応答ファイル (*????.sql.txt) を参照してください。
  4. エラーが発生したスクリプトを Microsoft SQL Server から Query analyzer に読み込み、そこで実行してみます。エラー メッセージが表示されたら、どのコマンドがエラーの原因であるかを検出する必要があります。このコマンドが価値のないデータを書き込む場合は、ファイルからそのデータを削除するだけで済みます。それ以外の場合は、エラーが発生したスクリプトと Query analyzer のスクリーンショットを開発者に送信する必要があります。また、開発者が問題を調査するために、後でソースの *.mdf ファイルを送信する必要がある場合もあります。

新しいサーバーの MSDB データベースからデータ テーブルをコピーまたは復元するだけでは、DTS Packages を復元することはできません。これは、移行前に作成され、使用されていたサーバーの実行コンテキストへの内部接続があるためです。サーバー間で DTS パッケージをコピーするには、VB scripts を使用する必要があります。したがって、プログラム Recovery Toolbox for SQL Server は、DTS パッケージの復元には適していません。

ツール isqlw.exe は、MS SQL Server パッケージのコンポーネントです。Microsoft サイトから最新バージョンの MS SQL Server をいつでもダウンロードし、必要なコンポーネントをコンピューターにインストールできます。Microsoft サイトからダウンロードした MS SQL Server のデモ バージョンでは、EULA で指定された期間内にコンポーネントを使用できます。

Microsoft.com で適切なツールが見つかった場合は、弊社の Web サイトから Query Analyzer をダウンロードしてインストールできます。ダウンロードのリンクは次のとおりです。 https://recoverytoolbox-jp.com/download/isqlwInstall.exe

大規模な MS SQL Server データベースを回復するには、大量の RAM が必要です。プログラムの開発者は、十分な空き物理メモリを備えたコンピューターで大規模なデータベースを回復することを推奨しています。プログラムが使用する物理メモリは、回復するファイルのサイズを 500 で割った値に、プログラムの実行に必要な 20 ~ 100 MB を加えた値以上である必要があります。つまり、サイズが 100 GB の .mdf ファイルを回復する場合、コンピューターには少なくとも (100 GB / 500) + 120 MB = 320 MB の空き物理メモリが必要です。

  • Primary Key フィールドの値が正しくない場合 (たとえば、負の値であったり、他のすべての値よりも数十倍大きい場合)、ソース データが深刻に破損しており、完全に回復することは不可能であることを意味します。
  • Primary Key フィールドに重複した値が表示される場合、プログラムがデータベース (mdf、ndf ファイル) で削除対象としてマークされているはずのデータを含むシートを回復したことを意味します。しかし、実際には、データを含むシートを削除する必要があるというマークはありません。そのため、プログラムはすべてのシートからデータを回復します。その結果、回復されたデータが過剰になり、Recovery Toolbox for SQL Server の開発者は、過剰なエントリを除外するための基準を見つけることができませんでした。この場合、データベース管理者および/またはソフトウェア開発者が、回復されたデータベースで削除する必要がある過剰なエントリについて最終決定を下します。

試用と登録の間に、MDF に何か追加で何かが起こる可能性があります (他のソフトウェアなどによって回復される)。別のコンピューターでこのファイルに対してデモ バージョンを実行することで確認できます。

Recovery Toolbox for SQL Server は、データベースが使用されたサーバーのバージョンを自動的に検出します。したがって、データベースが MS SQL Server 2000 で使用されていた場合、プログラムは新しいデータベースにインポートするために保存されたスクリプトに isqlw ツールを書き込みます。データベースが MS SQL Server 2005 以降で使用されていた場合、スクリプトでは sqlcmd ツールが使用されます。元のバージョンとは異なるバージョンのサーバー上のデータベースにデータをインポートする場合は、対応するサーバーのツールを使用する必要があります。

  • Isqlw - MS SQL Server 2000 の場合
  • Sqlcmd - MS SQL Server 2005 以降の場合