データベース ファイルの初期化Database File Initialization

適用対象: はいSQL Server いいえAzure SQL Database いいえAzure Synapse Analytics (SQL DW) いいえParallel Data Warehouse APPLIES TO: YesSQL Server NoAzure SQL Database NoAzure Synapse Analytics (SQL DW) NoParallel Data Warehouse

データおよびログ ファイルの初期化は、ディスクに以前削除したファイルのデータが残っている場合にそれを上書きするために行います。Data and log files are initialized to overwrite any existing data left on the disk from previously deleted files. 次のいずれかの操作を実行すると、データとログ ファイルは、まずファイルのゼロイング (ゼロを書き込む処理) で初期化されます。Data and log files are first initialized by zeroing the files (filling with zeros) when you perform one of the following operations:

  • データベースを作成します。Create a database.
  • 既存のデータベースへのデータ ファイルまたはログ ファイルの追加。Add data or log files, to an existing database.
  • 既存のファイルのサイズを大きくする (自動拡張操作を含む)。Increase the size of an existing file (including autogrow operations).
  • データベースまたはファイル グループの復元。Restore a database or filegroup.

上記の操作は、ファイルの初期化によって余分な時間がかかります。File initialization causes these operations to take longer. ただし、データを初めてファイルに書き込む際には、オペレーティング システムがファイルを 0 で埋め込む必要はありません。However, when data is written to the files for the first time, the operating system does not have to fill the files with zeros.

ファイルの瞬時初期化 (IFI)Instant File Initialization (IFI)

SQL ServerSQL Server では、データ ファイルが瞬時に初期化され、ゼロイング操作を回避できます。In SQL ServerSQL Server, data files can be initialized instantaneously to avoid zeroing operations. ファイルの瞬時初期化を使うと、上記のファイル操作を高速に実行することが可能になります。Instant file initialization allows for fast execution of the previously mentioned file operations. ファイルの瞬時初期化では、0 で埋め込むことなく、使用中のディスク領域の返還を要求します。Instant file initialization reclaims used disk space without filling that space with zeros. 代わりに、新しいデータがファイルに書き込まれるときに、ディスクの内容が上書きされます。Instead, disk content is overwritten as new data is written to the files. ログ ファイルを瞬時に初期化することはできません。Log files cannot be initialized instantaneously.

注意

ファイルの瞬時初期化は、 MicrosoftMicrosoftWindows XP ProfessionalWindows XP Professional または Windows Server 2003Windows Server 2003 以降のバージョンでのみ使用できます。Instant file initialization is available only on MicrosoftMicrosoftWindows XP ProfessionalWindows XP Professional or Windows Server 2003Windows Server 2003 or later versions.

重要

ファイルの瞬時初期化は、データ ファイルにのみ使用できます。Instant file initialization is available only for data files. ログ ファイルは、作成時やサイズの増大時に常にゼロ化されます。Log files will always be zeroed when being created, or growing in size.

ファイルの瞬時初期化は、SQL ServerSQL Serverサービス開始アカウントに SE_MANAGE_VOLUME_NAME が付与されている場合にのみ使用できます。Instant file initialization is only available if the SQL ServerSQL Server service startup account has been granted SE_MANAGE_VOLUME_NAME. Windows Administrator グループのメンバーにはこの権限があり、他のユーザーを ボリュームの保守タスクを実行 セキュリティ ポリシーに追加することにより、これらのユーザーにこの権限を許可することができます。Members of the Windows Administrator group have this right and can grant it to other users by adding them to the Perform Volume Maintenance Tasks security policy.

重要

Transparent Data Encryption (TDE) など、ファイルの瞬時初期化を使用できない機能の使用状況もあります。Some feature usage, such as Transparent Data Encryption (TDE), can prevent Instant File Initialization.

アカウントに Perform volume maintenance tasks 権限を許可する方法。To grant an account the Perform volume maintenance tasks permission:

  1. データ ファイルを作成するコンピューター上で、ローカル セキュリティ ポリシー アプリケーション (secpol.msc) を開きます。On the computer where the data file will be created, open the Local Security Policy application (secpol.msc).

  2. 左側のペインで [ローカル ポリシー] を展開し、 [ユーザー権利の割り当て] をクリックします。In the left pane, expand Local Policies, and then click User Rights Assignment.

  3. 右側のペインで、 [ボリュームの保守タスクを実行] をダブルクリックします。In the right pane, double-click Perform volume maintenance tasks.

  4. [ユーザーまたはグループの追加] をクリックして、SQL Server サービスを実行するアカウントを追加します。Click Add User or Group and add the account that runs the SQL Server service.

  5. [適用] をクリックし、 [ローカル セキュリティ ポリシー] ダイアログ ボックスをすべて閉じます。Click Apply, and then close all Local Security Policy dialog boxes.

  6. SQL Server サービスを再起動します。Restart the SQL Server service.

注意

SQL Server 2016 (13.x)SQL Server 2016 (13.x) 以降、インストール時、セットアップ中にサービス アカウントにこのアクセス許可を付与できます。Starting with SQL Server 2016 (13.x)SQL Server 2016 (13.x), this permission can be granted to the service account at install time, during setup. コマンド プロンプト インストールを利用する場合、/SQLSVCINSTANTFILEINIT 引数を追加するか、インストール ウィザード[SQL Server データベース エンジン サービスにボリューム メンテナンス タスクを実行する特権を付与する] ボックスを選択します。If using the command prompt install, add the /SQLSVCINSTANTFILEINIT argument, or check the box Grant Perform Volume Maintenance Task privilege to SQL Server Database Engine Service in the installation wizard.

注意

SQL Server 2012 (11.x)SQL Server 2012 (11.x) SP4 以降、および SQL Server 2016 (13.x)SQL Server 2016 (13.x) SP1 以降では、sys.dm_server_services DMV の instant_file_initialization_enabled 列を利用し、ファイルの瞬時初期化が有効になっているかどうかを判断できます。Starting with SQL Server 2012 (11.x)SQL Server 2012 (11.x) SP4, and SQL Server 2016 (13.x)SQL Server 2016 (13.x) SP1 and later, the column instant_file_initialization_enabled in the sys.dm_server_services DMV can be used to identify if instant file initialization is enabled.

解説Remarks

SQL ServerSQL Server サービス開始アカウントに SE_MANAGE_VOLUME_NAME が与えられる場合、開始時に SQL ServerSQL Server エラー ログに次のような情報メッセージが記録されます。If the SQL ServerSQL Server service startup account is granted SE_MANAGE_VOLUME_NAME, an informational message that resembles the following is logged in the SQL ServerSQL Server error log at startup:

Database Instant File Initialization: enabled. For security and performance considerations see the topic 'Database Instant File Initialization' in SQL Server Books Online. This is an informational message only. No user action is required.

SQL ServerSQL Server サービス開始アカウントに SE_MANAGE_VOLUME_NAME が与えられていない場合、開始時に SQL ServerSQL Server エラー ログに次のような情報メッセージが記録されます。If the SQL ServerSQL Server service startup account has not been granted SE_MANAGE_VOLUME_NAME, an informational message that resembles the following is logged in the SQL ServerSQL Server error log at startup:

Database Instant File Initialization: disabled. For security and performance considerations see the topic 'Database Instant File Initialization' in SQL Server Books Online. This is an informational message only. No user action is required.

適用対象: SQL ServerSQL Server (SQL Server 2012 (11.x)SQL Server 2012 (11.x) SP4 以降、SQL Server 2014 (12.x)SQL Server 2014 (12.x) SP2 および SQL Server 2016 (13.x)SQL Server 2016 (13.x) 以降)Applies to: SQL ServerSQL Server (Starting with SQL Server 2012 (11.x)SQL Server 2012 (11.x) SP4, SQL Server 2014 (12.x)SQL Server 2014 (12.x) SP2 and SQL Server 2016 (13.x)SQL Server 2016 (13.x) and later)

セキュリティに関する考慮事項Security Considerations

ファイルの瞬時初期化 (IFI) を利用するとき、削除されたディスクの内容は、新しいデータがファイルに書き込まれるときにのみ上書きされるため、他のデータがデータ ファイルのその領域に書き込まれるまで、許可されていないプリンシパルが削除された内容にアクセスする可能性があります。When using Instant File Initialization (IFI), because the deleted disk content is overwritten only as new data is written to the files, the deleted content might be accessed by an unauthorized principal, until some other data writes on that specific area of the data file. データベース ファイルが SQL ServerSQL Serverのインスタンスにアタッチされている間は、ファイルに対する随意アクセス制御リスト (DACL) により、このような情報漏えいのリスクは軽減されます。While the database file is attached to the instance of SQL ServerSQL Server, this information disclosure risk is reduced by the discretionary access control list (DACL) on the file. この DACL により、 SQL ServerSQL Server サービス アカウントとローカル管理者のみにファイル アクセスが許可されます。This DACL allows file access only to the SQL ServerSQL Server service account and the local administrator. ただし、ファイルがデタッチされると、SE_MANAGE_VOLUME_NAME が付与されていないユーザーまたはサービスからアクセスされる可能性があります。However, when the file is detached, it may be accessed by a user or service that does not have SE_MANAGE_VOLUME_NAME. データベースのバックアップ時にも同様の懸案事項があります。バックアップ ファイルが適切な DACL で保護されていない場合、許可されていないユーザーやサービスが削除された内容を利用できるようになることがあります。A similar consideration exists when the database is backed up: if the backup file is not protected with an appropriate DACL, the deleted content can become available to an unauthorized user or service.

もう 1 つの考慮事項は、IFI を使用してファイルが拡張された場合、SQL Server 管理者が未加工のページ コンテンツにアクセスして、以前削除されたコンテンツを表示する可能性があることです。Another consideration is that when a file is grown using IFI, a SQL Server administrator could potentially access the raw page contents and see the previously deleted content.

データベース ファイルが記憶域ネットワークでホストされている場合、記憶域ネットワークで常に新しいページが事前に初期化されているものとして示される可能性もあり、オペレーティング システムでページが再初期化されると不要なオーバーヘッドが発生する可能性があります。If the database files are hosted on a storage area network, it is also possible that the storage area network always presents new pages as pre-initialized, and having the operating system re-initialize the pages might be unnecessary overhead.

注意

セキュリティで保護された物理環境に SQL ServerSQL Server をインストールすると、ファイルの瞬時初期化 (IFI) を有効にしたことによるパフォーマンスの利点が、セキュリティ リスクを上回る可能性があります。それがこの方法をお勧めする理由です。If SQL ServerSQL Server is installed in a secure physical environment, the performance benefits of enabling instant file initialization can outweigh the security risk and hence the reason for this recommendation.

削除された内容が公開される可能性が懸念される場合は、次のいずれか、または両方の対策を行う必要があります。If the potential for disclosing deleted content is a concern, you should take one or both of the following actions:

  • デタッチされたすべてのデータ ファイルおよびバックアップ ファイルに、常に限定的な DACL が設定されるようにする。Always make sure that any detached data files and backup files have restrictive DACLs.
  • SQL ServerSQL Server サービス アカウントから SE_MANAGE_VOLUME_NAME を失効させて、SQL ServerSQL Server のインスタンスに対するファイルの瞬時初期化を無効にする。Disable instant file initialization for the instance of SQL ServerSQL Server by revoking SE_MANAGE_VOLUME_NAME from the SQL ServerSQL Server service startup account.

重要

ファイルの瞬時初期化を無効にすると、データ ファイルの割り当て回数が増えます。Disabling instant file initialization will increase allocation times for data files.

注意

ファイルの瞬時初期化の無効化で効果があるのは、ユーザー権限が禁止された後で作成またはサイズ増加されたファイルのみです。Disabling instant file initialization only affects files that are created or increased in size after the user right is revoked.

参照See Also

CREATE DATABASE (SQL Server Transact-SQL)CREATE DATABASE (SQL Server Transact-SQL)