CREATE DATABASE em partições RAW não funciona mais?

16

Estou tentando criar um banco de dados usando duas partições brutas, ou seja, não formatadas.

O Microsoft Docs afirma que você pode fazer isso, basta especificar apenas a letra da unidade da partição bruta, como em:

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

No entanto, o SQL Server 2017 retorna este erro:

Msg 5170, nível 16, estado 4, linha 1
Não é possível criar o arquivo 'S:' porque ele já existe. Altere o caminho ou o nome do arquivo e tente novamente a operação.
Msg 1802, nível 16, estado 4, linha 1
CREATE DATABASE falhou. Alguns nomes de arquivo listados não puderam ser criados. Verifique os erros relacionados.

O bit pertinente da documentação declara:

Se o arquivo estiver em uma partição bruta, os_file_name deve especificar apenas a letra da unidade de uma partição bruta existente. Somente um arquivo de dados pode ser criado em cada partição bruta.

E sim, a unidade S: e T: são ambas partições brutas não formatadas que existem no meu sistema:

DISKPART> partição de detalhes

Partição 4
Tipo: ebd0a0a2-b9e5-4433-87c0-68b6b72699c7
Oculto: Não
Obrigatório: Não
Atributo: 0000000000000000
Deslocamento em bytes: 999934656512

  Volume ### Ltr Etiqueta Fs Tipo Tamanho Status Informações
  ---------- --- ----------- ----- ---------- ------- ---- ----- --------
* Volume 6 T Partição RAW 127 MB Saudável

DISKPART> selecione a partição 3

A partição 3 agora é a partição selecionada.

DISKPART> partição de detalhes

Partição 3
Tipo: ebd0a0a2-b9e5-4433-87c0-68b6b72699c7
Oculto: Não
Obrigatório: Não
Atributo: 0000000000000000
Deslocamento em bytes: 1000067825664

  Volume ### Ltr Etiqueta Fs Tipo Tamanho Status Informações
  ---------- --- ----------- ----- ---------- ------- ---- ----- --------
* Partição RAW S 7 Volume 129 MB Saudável

A remoção dos dois pontos das letras da unidade, como em FILENAME = 'S'e FILENAME = 'T', resulta em:

Msg 5105, Nível 16, Estado 2, Linha 1
Ocorreu um erro de ativação do arquivo. O nome do arquivo físico 'S' pode estar incorreto. Diagnostique e corrija erros adicionais e tente novamente a operação.
Msg 1802, nível 16, estado 1, linha 1
CREATE DATABASE falhou. Alguns nomes de arquivo listados não puderam ser criados. Verifique os erros relacionados.

A documentação do SQL Server 2000 mostra o seguinte exemplo na CREATE DATABASEseção:

H. Usar partições brutas
Este exemplo cria um banco de dados chamado Funcionários usando partições brutas. As partições brutas devem existir quando a instrução é executada e apenas um arquivo pode ir em cada partição bruta.

    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

No entanto, o exemplo mostra acima SIZE, MAXSIZE, e FILEGROWTHparâmetros que claramente não são necessários para o SQL Server arquivos de dados armazenados em partições RAW.

Mais detalhes da documentação do SQL Server 2000, especificamente sobre unidades brutas:

Usando partições brutas
O Microsoft® SQL Server ™ 2000 suporta o uso de partições brutas para criar arquivos de banco de dados. Partições brutas são partições de disco que não foram formatadas com um sistema de arquivos do Microsoft Windows NT®, como FAT e NTFS. Em alguns casos, o uso de bancos de dados criados em partições brutas pode gerar um pequeno ganho de desempenho em relação ao NTFS ou FAT. No entanto, para a maioria das instalações, o método preferido é usar arquivos criados em partições NTFS ou FAT. Ao criar um arquivo de banco de dados em uma partição bruta, você não especifica os nomes físicos dos arquivos que compõem o banco de dados; você especifica apenas as letras da unidade dos discos nos quais os arquivos do banco de dados devem ser criados. Se você estiver usando o Microsoft Windows® 2000 Server, poderá criar unidades montadas para apontar para partições brutas. Quando você monta uma unidade local em uma pasta vazia, O Windows 2000 atribui um caminho para a unidade em vez de uma letra da unidade. As unidades montadas não estão sujeitas ao limite de 26 unidades imposto pelas letras da unidade; portanto, você pode usar um número ilimitado de partições brutas. Ao criar um arquivo de banco de dados em uma unidade montada, você deve finalizar o caminho da unidade para o nome do arquivo com uma barra invertida à direita (), por exemplo, E: \ Sample name. Para obter informações sobre como criar uma unidade montada, consulte a documentação do Windows 2000 Server.

Existem várias limitações a serem consideradas ao usar partições brutas:
Apenas um arquivo de banco de dados pode ser criado em cada partição bruta. A partição lógica deve ser configurada como um único arquivo de banco de dados, porque não há sistema de arquivos na partição bruta.

Operações padrão do sistema de arquivos, como copiar, mover e excluir, não podem ser usadas com partições brutas.

Arquivos de banco de dados localizados em partições brutas não podem ser copiados usando o utilitário de backup do Windows NT. No entanto, os backups do banco de dados ou do log de transações do SQL Server ainda podem ser criados.

Arquivos de banco de dados em partições brutas não podem ser expandidos automaticamente. Crie inicialmente o banco de dados no tamanho máximo ou expanda manualmente os arquivos do banco de dados. Para mais informações, consulte Expandindo um banco de dados.

Somente partições com letras, como E: ou unidades montadas, como E: \ Sample name \ podem ser usadas. Dispositivos numerados não podem ser usados.

Serviços de sistema de arquivos, como substituição incorreta de bloco, não estão disponíveis com partições brutas.


Isto foi inspirado por post de Brent Ozar sobre o SQL Server 6.5 , que fez oferecem suporte a partições matérias

Max Vernon
fonte
3
Você precisa RPaaS uso - Partition Raw como um serviço, ou ARPL - Azure Raw Partition Lake para que ele funcione com SS 2017 ;-)
SQLRaptor

Respostas:

3

Posso confirmar que as partições brutas funcionam, conforme o esperado, com o SQL Server 2000 SP4 no Windows XP x64.

Acabei de executar o seguinte através do Query Analyzer (shudders) no SQL Server 2000 SP4:

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

Os resultados:

O processo CREATE DATABASE está alocando 0,64 MB no disco 't_primary'.
O processo CREATE DATABASE está alocando 1,00 MB no disco 't_log'.

O CREATE DATABASE tcódigo acima funciona com o SQL Server 2005 no Windows XP x64; a única saída éCommand(s) completed successfully.

O SSMS mostra o seguinte quando você olha para os arquivos do banco de dados:

insira a descrição da imagem aqui

Não é tão legal quanto um balde de parafusos?

SQL Server 2012 SP1 no Windows Server 2012 Standard, com a conta de serviço do SQL Server Management Studio definida como "Sistema Local":

insira a descrição da imagem aqui

O SQL Server 2014 (12.0.5000.0) em execução como "Sistema Local" no Windows Server 2012 exibe o mesmo comportamento do SQL Server 2017; ou seja, ele retorna esta mensagem de erro:

Msg 5170, nível 16, estado 4, linha 1
Não é possível criar o arquivo 'E:' porque ele já existe. Altere o caminho ou o nome do arquivo e tente novamente a operação.
Msg 1802, nível 16, estado 4, linha 1
CREATE DATABASE falhou. Alguns nomes de arquivo listados não puderam ser criados. Verifique os erros relacionados.

Max Vernon
fonte