СТВОРИТИ ДАТАБАЗУ на розділах RAW більше не працює?


16

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

Microsoft Docs стверджує, що ви можете це зробити, вам просто потрібно вказати лише букву диска необробленого розділу, як у:

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

Однак SQL Server 2017 повертає цю помилку:

Msg 5170, рівень 16, стан 4, рядок 1
Неможливо створити файл 'S:', оскільки він вже існує. Змініть шлях до файлу або ім'я та повторіть операцію.
Msg 1802, рівень 16, стан 4, рядок 1
СТВОРИТИ ДАТАБАЗУ не вдалося. Не можна створити деякі перелічені імена файлів. Перевірте пов’язані помилки.

У відповідному біті документації зазначено:

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

І так, диск S: і T: обидва неформатовані сирі розділи, які існують у моїй системі:

DISKPART> розділ деталей

Розділ 4
Тип: ebd0a0a2-b9e5-4433-87c0-68b6b72699c7
Приховано: Ні
Обов’язковий: Ні
Вкладення: 0000000000000000
Зсув у байтах: 999934656512

  Том ### Ltr Label Fs Тип розміру Інформація про стан
  ---------- --- ----------- ----- ---------- ------- ---- ----- --------
* Том 6 T RAW розділ 127 Мб Здоровий

DISKPART> виберіть розділ 3

Розділ 3 - це тепер обраний розділ.

DISKPART> розділ деталей

Розділ 3
Тип: ebd0a0a2-b9e5-4433-87c0-68b6b72699c7
Приховано: Ні
Обов’язковий: Ні
Вкладення: 0000000000000000
Зсув у байтах: 1000067825664

  Том ### Ltr Label 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, ви можете створити змонтовані диски, щоб вказувати на необроблені розділи. Коли ви монтуєте локальний диск у порожню папку, Windows 2000 призначає шлях до диска, а не літеру диска. Встановлені приводи не підпадають під ліміт 26 приводів, накладений літерами диска; отже, ви можете використовувати необмежену кількість необроблених розділів. Коли ви створюєте файл бази даних на змонтованому диску, ви повинні закінчити шлях диска до імені файлу із зворотною косою рисою (), наприклад, E: \ Sample name. Інформацію про створення змонтованого диска див. У документації на сервер Windows 2000.

Існує кілька обмежень, які слід враховувати при використанні необроблених розділів:
На кожному необробленому розділі може бути створений лише один файл бази даних. Логічний розділ повинен бути налаштований як єдиний файл бази даних, оскільки в сирому розділі немає файлової системи.

Стандартні операції з файловою системою, такі як копіювання, переміщення та видалення, не можна використовувати із необробленими розділами.

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

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

Можуть використовуватися лише літерні розділи, такі як E :, або встановлені диски, такі як E: \ Sample sample \. Пронумеровані пристрої не можна використовувати.

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


Це був натхненний пост Brent Ozar в про SQL Server 6.5 , який зробив підтримку необроблених розділів


3
Для роботи з SS 2017 вам потрібно використовувати RPaaS - Raw Partition або ARPL - Azure Raw Partition Lake ;-)
SQLRaptor

Відповіді:


3

Я можу підтвердити роботу сирих розділів, як очікувалося, за допомогою SQL Server 2000 SP4 на Windows 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 виділяє 0,64 Мб на диску 't_primary'.
Процес CREATE DATABASE виділяє на диску 't_log' 1,00 Мб.

Вищевказаний CREATE DATABASE tкод працює з SQL Server 2005 для Windows XP x64; єдиний вихід єCommand(s) completed successfully.

Під час перегляду файлів бази даних SSMS показує наступне:

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

Хіба це не так круто, як відро болтів?

SQL Server 2012 SP1 для Windows Server 2012 Standard із обліковим записом служби SQL Server Studio Studio встановлено на "Місцева система":

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

SQL Server 2014 (12.0.5000.0), який працює як "Локальна система" на Windows Server 2012, проявляє таку ж поведінку, що і SQL Server 2017; тобто воно повертає це повідомлення про помилку:

Msg 5170, рівень 16, стан 4, рядок 1
Неможливо створити файл 'E:', оскільки він уже існує. Змініть шлях до файлу або ім'я та повторіть операцію.
Повідомлення 1802, рівень 16, стан 4, рядок 1
СТВОРИТИ ДАТАБАЗУ не вдалося. Не можна створити деякі перелічені імена файлів. Перевірте пов’язані помилки.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.