CREATE DATABASE на разделах RAW больше не работает?

16

Я пытаюсь создать базу данных, используя два необработанных, то есть неформатированных раздела.

Microsoft Docs заявляет, что вы можете сделать это, вам просто нужно указать только букву диска исходного раздела, как в:

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,
СОЗДАТЬ БАЗУ ДАННЫХ не удалось. Некоторые имена файлов не могут быть созданы. Проверьте связанные ошибки.

Соответствующая часть документации гласит:

Если файл находится в необработанном разделе, os_file_name должен указывать только букву диска существующего необработанного раздела. На каждом необработанном разделе может быть создан только один файл данных.

И да, диски S: и T: оба неформатированных необработанных раздела, которые существуют в моей системе:

DISKPART> подробный раздел

Раздел 4
Тип: ebd0a0a2-b9e5-4433-87c0-68b6b72699c7
Скрыто: нет
Требуется: нет
Атрибут: 0000000000000000
Смещение в байтах: 999934656512

  Том ### Ltr Метка Fs Тип Размер Информация о статусе
  ---------- --- ----------- ----- ---------- ------- ---- ----- --------
* Том 6 T RAW Раздел 127 МБ Здоровый

DISKPART> выбрать раздел 3

Раздел 3 теперь выбранный раздел.

DISKPART> подробный раздел

Раздел 3
Тип: ebd0a0a2-b9e5-4433-87c0-68b6b72699c7
Скрыто: нет
Требуется: нет
Атрибут: 0000000000000000
Смещение в байтах: 1000067825664

  Том ### Ltr Метка Fs Тип Размер Информация о статусе
  ---------- --- ----------- ----- ---------- ------- ---- ----- --------
* Том 7 S RAW Раздел 129 МБ Здоровый

Удаление двоеточия из букв дисков, как в FILENAME = 'S'и FILENAME = 'T', приводит к:

Сообщение 5105, уровень 16, состояние 2, строка 1
Произошла ошибка активации файла. Физическое имя файла 'S' может быть неправильным. Диагностируйте и исправьте дополнительные ошибки и повторите операцию.
Сообщение 1802, уровень 16, состояние 1, строка 1
СОЗДАТЬ БАЗУ ДАННЫХ не удалось. Некоторые имена файлов не могут быть созданы. Проверьте связанные ошибки.

Документация по SQL Server 2000 показывает следующий пример в CREATE DATABASEразделе:

H. Использовать необработанные разделы В
этом примере создается база данных с именем «Сотрудники» с использованием необработанных разделов. Необработанные разделы должны существовать при выполнении инструкции, и на каждый необработанный раздел может входить только один файл.

    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

Однако приведенный выше пример показывает SIZE, MAXSIZE, и FILEGROWTHпараметры , которые явно не требуется для SQL Server Файлы данных хранятся в разделах RAW.

Дополнительные сведения из документации по SQL Server 2000, в частности, касающиеся необработанных дисков:

Использование сырых разделов
Microsoft® SQL Server ™ 2000 поддерживает использование необработанных разделов для создания файлов базы данных. Необработанные разделы - это разделы диска, которые не были отформатированы в файловой системе Microsoft Windows NT®, такой как FAT и NTFS. В некоторых случаях использование баз данных, созданных в необработанных разделах, может привести к небольшому увеличению производительности по сравнению с NTFS или FAT. Однако для большинства установок предпочтительным методом является использование файлов, созданных в разделах NTFS или FAT. При создании файла базы данных в необработанном разделе вы не указываете физические имена файлов, составляющих базу данных; Вы указываете только буквы дисков, на которых должны быть созданы файлы базы данных. Если вы используете Microsoft Windows® 2000 Server, вы можете создавать подключенные диски, чтобы указывать на необработанные разделы. Когда вы монтируете локальный диск в пустую папку, Windows 2000 назначает путь к диску, а не букву диска. На подключенные диски не распространяется ограничение на 26 дисков, налагаемое буквами дисков; следовательно, вы можете использовать неограниченное количество необработанных разделов. Когда вы создаете файл базы данных на смонтированном диске, вы должны заканчивать путь диска к имени файла завершающей обратной косой чертой (), например, E: \ Sample name. Сведения о создании подключенного диска см. В документации по Windows 2000 Server.

При использовании необработанных разделов необходимо учитывать несколько ограничений:
На каждом необработанном разделе может быть создан только один файл базы данных. Логический раздел должен быть настроен как один файл базы данных, поскольку в необработанном разделе нет файловой системы.

Стандартные операции файловой системы, такие как копирование, перемещение и удаление, не могут использоваться с необработанными разделами.

Файлы базы данных, расположенные в необработанных разделах, не могут быть скопированы с помощью утилиты Windows NT Backup. Однако резервные копии базы данных SQL Server или журнала транзакций все еще могут быть созданы.

Файлы базы данных на сырых разделах не могут быть автоматически расширены. Либо изначально создайте базу данных в полном размере, либо вручную разверните файлы базы данных. Для получения дополнительной информации см. Расширение базы данных.

Можно использовать только разделы с буквами, такие как E: или подключенные диски, такие как E: \ Sample name \. Пронумерованные устройства не могут быть использованы.

Службы файловой системы, такие как замена поврежденных блоков, недоступны для необработанных разделов.


Это был вдохновлен пост Brent Ozar в о SQL Server 6.5 , который сделал поддержку необработанных разделов

Макс Вернон
источник
3
Вам нужно использовать RPaaS - Raw Partition as a Service или ARPL - Azure Raw Partition Lake, чтобы он работал с SS 2017 ;-)
SQLRaptor

Ответы:

3

Я могу подтвердить, что необработанные разделы работают, как и ожидалось, с SQL Server 2000 SP4 на Windows XP x64.

Я просто запустил следующее через Query Analyzer (дрожь) для SQL Server 2000 SP4:

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

Результаты:

Процесс CREATE DATABASE выделяет 0,64 МБ на диске «t_primary».
Процесс CREATE DATABASE выделяет 1,00 МБ на диске 't_log'.

Приведенный выше CREATE DATABASE tкод работает с SQL Server 2005 в Windows XP x64; единственный выходCommand(s) completed successfully.

SSMS показывает следующее, когда вы смотрите на файлы базы данных:

введите описание изображения здесь

Разве это не так круто, как ведро болтов?

SQL Server 2012 с пакетом обновления 1 (SP1) в Windows Server 2012 Standard, для учетной записи службы SQL Server Management Studio установлено значение «Локальная система»:

введите описание изображения здесь

SQL Server 2014 (12.0.5000.0), работающий как «Локальная система» в Windows Server 2012, демонстрирует то же поведение, что и SQL Server 2017; то есть возвращает это сообщение об ошибке:

Сообщение 5170, уровень 16, состояние 4, строка 1
Не удается создать файл «E:», поскольку он уже существует. Измените путь к файлу или имя файла и повторите операцию.
Сообщение 1802, Уровень 16, Состояние 4, Строка 1,
СОЗДАТЬ БАЗУ ДАННЫХ не удалось. Некоторые имена файлов не могут быть созданы. Проверьте связанные ошибки.

Макс Вернон
источник