web-dev-qa-db-ja.com

RAWパーティションでCREATE DATABASEが機能しなくなりましたか?

2つのraw、つまりフォーマットされていないパーティションを使用してデータベースを作成しようとしています。

Microsoft Docsはこれを実行できると述べており、次のようにrawパーティションのドライブ文字のみを指定する必要があります。

CREATE DATABASE DirectDevice 
ON (NAME = DirectDevice_system, FILENAME = 'S:')
LOG ON (NAME = DirectDevice_log, FILENAME = 'T:')

ただし、SQL Server 2017は次のエラーを返します。

メッセージ5170、レベル16、状態4、行1
ファイル 'S:'はすでに存在するため作成できません。ファイルパスまたはファイル名を変更して、操作を再試行してください。
メッセージ1802、レベル16、状態4、行1
データベースの作成に失敗しました。リストされている一部のファイル名を作成できませんでした。関連するエラーを確認してください。

documentation の関連ビットは次のように述べています:

ファイルがrawパーティションにある場合、os_file_nameは既存のrawパーティションのドライブ文字のみを指定する必要があります。各rawパーティションに作成できるデータファイルは1つだけです。

そして、はい、ドライブS:とT:はどちらも、システムに存在するフォーマットされていないrawパーティションです。

DISKPART>詳細パーティション
 
パーティション4 
タイプ:ebd0a0a2-b9e5-4433-87c0-68b6b72699c7 
非表示:いいえ
必須:いいえ
 Attrib:0000000000000000 
オフセット(バイト):999934656512 
 
ボリューム### LtrラベルFsタイプサイズステータス情報
 -------- ---- ----------- ----- ---------- ------- --------- --- ----- 
 * Volume 6 T RAWパーティション127 MBヘルシー
 
 DISKPART>パーティション3を選択
 
パーティション3が選択されましたパーティション。
 
 DISKPART>詳細パーティション
 
パーティション3 
タイプ:ebd0a0a2-b9e5-4433-87c0-68b6b72699c7 
非表示:いいえ
必須:いいえ
アトリブ:0000000000000000 
オフセット(バイト):1000067825664 
 
ボリューム### LtrラベルFsタイプサイズステータス情報
 ---------- --- ----------- ----- ---------- ------- --------- -------- 
 * Volu me 7 S RAWパーティション129 MBヘルシー

FILENAME = 'S'およびFILENAME = 'T'のように、ドライブ文字からコロンを削除すると、次のようになります。

メッセージ5105、レベル16、状態2、行1
ファイルのアクティブ化エラーが発生しました。物理ファイル名「S」が誤っている可能性があります。追加のエラーを診断して修正し、操作を再試行してください。
メッセージ1802、レベル16、状態1、行1
データベースの作成に失敗しました。リストされている一部のファイル名を作成できませんでした。関連するエラーを確認してください。

SQL Server 2000 Documentation は、CREATE DATABASEセクションの下に次の例を示します。

H. rawパーティションを使用する
この例では、RAWパーティションを使用してEmployeesというデータベースを作成します。ステートメントが実行されるときにrawパーティションが存在している必要があり、1つのファイルのみが各rawパーティションに移動できます。

    USE master
    GO
    CREATE DATABASE Employees
    ON
    ( NAME = Empl_dat,
        FILENAME = 'f:',
        SIZE = 10,
        MAXSIZE = 50,
        FILEGROWTH = 5 )
    LOG ON
    ( NAME = 'Sales_log',
        FILENAME = 'g:',
        SIZE = 5MB,
        MAXSIZE = 25MB,
        FILEGROWTH = 5MB )
    GO

ただし、上記の例は、RAWパーティションに格納されているSQL Serverデータファイルには明らかに必要ないSIZEMAXSIZE、およびFILEGROWTHパラメーターを示しています。

特にrawドライブに関するSQL Server 2000ドキュメントの詳細:

Rawパーティションの使用
Microsoft®SQL Server™2000は、データベースファイルを作成するためのrawパーティションの使用をサポートしています。 rawパーティションは、FATやNTFSなどのMicrosoft WindowsNT®ファイルシステムでフォーマットされていないディスクパーティションです。場合によっては、RAWパーティションに作成されたデータベースを使用すると、NTFSまたはFATよりもパフォーマンスがわずかに向上することがあります。ただし、ほとんどのインストールでは、NTFSまたはFATパーティションに作成されたファイルを使用する方法が推奨されます。 rawパーティションにデータベースファイルを作成するときは、データベースを構成するファイルの物理名を指定しません。データベースファイルを作成するディスクのドライブ文字のみを指定します。 MicrosoftWindows®2000 Serverを使用している場合、ローパーティションを指すようにマウントされたドライブを作成できます。ローカルドライブを空のフォルダにマウントすると、Windows 2000はドライブ文字ではなくドライブにドライブパスを割り当てます。マウントされたドライブは、ドライブ文字によって強制される26ドライブの制限の対象ではありません。したがって、無制限の数のrawパーティションを使用できます。マウントされたドライブにデータベースファイルを作成するときは、ファイル名へのドライブパスの末尾にバックスラッシュ()を付ける必要があります(例:E:\ Sample name)。マウントされたドライブの作成については、Windows 2000 Serverのドキュメントを参照してください。

Rawパーティションを使用する際に考慮すべきいくつかの制限があります。
各rawパーティションに作成できるデータベースファイルは1つだけです。 rawパーティションにはファイルシステムがないため、論理パーティションは単一のデータベースファイルとして構成する必要があります。

コピー、移動、削除などの標準のファイルシステム操作は、ローパーティションでは使用できません。

Rawパーティションにあるデータベースファイルは、Windows NTバックアップユーティリティを使用してバックアップできません。ただし、SQL Serverデータベースまたはトランザクションログのバックアップは引き続き作成できます。

Rawパーティションのデータベースファイルは自動的に拡張できません。最初にフルサイズでデータベースを作成するか、データベースファイルを手動で拡張します。詳細については、「データベースの拡張」を参照してください。

E:などの文字付きパーティション、またはE:\ Sample name \などのマウントされたドライブのみを使用できます。番号付きデバイスは使用できません。

不良ブロック置換などのファイルシステムサービスは、ローパーティションでは使用できません。


これは SQL Server 6.5に関するBrent Ozarの投稿 に触発されたもので、-didがrawパーティションをサポートしています。

16
Max Vernon

Windows上のSQL Server 2000 SP4で、期待どおりにrawパーティションが機能することを確認できますXP x64。

SQL Server 2000 SP4に対してクエリアナライザー(シャダー)を使用して次の処理を実行しました。

_CREATE DATABASE t
ON PRIMARY 
(
    NAME = t_primary
    , FILENAME = 'E:'
)
LOG ON 
(
    NAME = t_log
    , FILENAME = 'F:'
);
_

結果:

CREATE DATABASEプロセスはディスク 't_primary'に0.64 MBを割り当てています。
CREATE DATABASEプロセスは、ディスク 't_log'に1.00 MBを割り当てています。

上記の_CREATE DATABASE t_コードは、Windows上のSQL Server 2005で機能しますXP x64;出力はCommand(s) completed successfully.のみです

データベースファイルを見ると、SSMSは以下を表示します。

enter image description here

それはボルトのバケツほどクールではありませんか?

SQL Server Management Studioサービスアカウントが「ローカルシステム」に設定された、Windows Server 2012 Standard上のSQL Server 2012 SP1:

enter image description here

Windows Server 2012で「ローカルシステム」として実行されているSQL Server 2014(12.0.5000.0)は、SQL Server 2017と同じ動作を示します。つまり、次のエラーメッセージが返されます。

メッセージ5170、レベル16、状態4、行1
ファイル 'E:'は既に存在するため作成できません。ファイルパスまたはファイル名を変更して、操作を再試行してください。
メッセージ1802、レベル16、状態4、行1
データベースの作成に失敗しました。リストされている一部のファイル名を作成できませんでした。関連するエラーを確認してください。

3
Max Vernon