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, Level 16, State 4, Line 1
Não é possível criar o arquivo 'S:' porque ele já existe. Altere o caminho do arquivo ou o nome do arquivo e repita a operação.
Msg 1802, Level 16, State 4, Line 1
CREATE DATABASE falhou. Alguns nomes de arquivo listados não puderam ser criados. Verifique os erros relacionados.
A parte pertinente da documentação afirma:
Se o arquivo estiver em uma partição bruta, os_file_name deverá especificar apenas a letra da unidade de uma partição bruta existente. Apenas um arquivo de dados pode ser criado em cada partição bruta.
E sim, a unidade S: e T: são 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 Label Fs Tipo Tamanho Informações de Status ---------- --- ----------- ----- ---------- ------- ---- ----- -------- * Volume 6 T RAW Partição 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 Label Fs Tipo Tamanho Informações de Status ---------- --- ----------- ----- ---------- ------- ---- ----- -------- * Volume 7 S RAW Partição 129 MB Saudável
Remover os dois pontos das letras da unidade, como em FILENAME = 'S'
e FILENAME = 'T'
, resulta em:
Msg 5105, Level 16, State 2, Line 1
Ocorreu um erro de ativação de arquivo. O nome do arquivo físico 'S' pode estar incorreto. Diagnostique e corrija erros adicionais e repita a operação.
Msg 1802, Level 16, State 1, Line 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 DATABASE
seção:
H. Use partições brutas
Este exemplo cria um banco de dados chamado Employees usando partições brutas. As partições brutas devem existir quando a instrução for 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 acima mostra SIZE
, MAXSIZE
e FILEGROWTH
parâmetros que claramente não são necessários para arquivos de dados do SQL Server 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 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 preferencial é 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 de unidade dos discos nos quais os arquivos de 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 de unidade à unidade em vez de uma letra de unidade. As unidades montadas não estão sujeitas ao limite de 26 unidades imposto pelas letras das unidades; 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 encerrar o caminho da unidade para o nome do arquivo com uma barra invertida (), por exemplo, E:\Nome da amostra. Para obter informações sobre como criar uma unidade montada, consulte a documentação do Windows 2000 Server.Há 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, pois não há sistema de arquivos na partição bruta.As 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 Backup do Windows NT. No entanto, os backups de banco de dados ou 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 em seu tamanho completo ou expanda manualmente os arquivos do banco de dados. Para obter 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.
Os serviços do sistema de arquivos, como substituição de bloco inválido, não estão disponíveis com partições brutas.
Isso foi inspirado no post de Brent Ozar sobre o SQL Server 6.5 , que suportava partições brutas
Posso confirmar que as partições brutas funcionam, como esperado, com o SQL Server 2000 SP4 no Windows XP x64.
Acabei de executar o seguinte através do Query Analyzer (estremece) no SQL Server 2000 SP4:
Os resultados:
O
CREATE DATABASE t
có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ê examina os arquivos de banco de dados:
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":
O SQL Server 2014 (12.0.5000.0) executado como "Sistema Local" no Windows Server 2012 apresenta o mesmo comportamento do SQL Server 2017; ou seja, ele retorna esta mensagem de erro: