Olá pessoal!
Hoje vamos falar um pouco sobre o padrão de localização de arquivos dos bancos de dados e como no passar dos anos nós focamos em soluções complexas, automações, alta disponibilidade, tuning etc.
Nossa recomendação é que esta parametrização seja feita durante o processo de instalação do SQL Server, uma vez que, o caminho de armazenamento seja em unidades diferentes do padrão da instalação do mesmo.
Ops! Não defini o diretório durante a instalação. O que devo fazer?
É possível alterar.
Somente há o inconveniente de que é preciso reiniciar o serviço do SQL Server.
O motivo é porque o parâmetro fica armazenado no registry do Windows, e mesmo que seu sistema operacional não seja o Windows, os dados são carregados pelo serviço na inicialização dele.
A definição do local padrão para os arquivos de dados, logs e backup através do SSMS que pode ser acessada pelo menu do botão direito sobre a instância, properties, database settings.
Se você quiser utilizar o t-sql para confirmar esta informação basta utilizar o comando:
No entanto, se fizermos a troca do diretório default, todos os novos bancos de dados criados receberão esse novo padrão. Troquei na minha instância conforme a imagem abaixo:
Vale ressaltar, que se você utilizar a query anterior para verificar os diretórios padrões, irá notar que nada mudou. Novamente, isso é uma característica de sistema. Ele só assumirá os novos padrões depois de reiniciar a instância.
Caso você esteja utilizando o SQL Server em um Windows Core e está sem acesso ao SSMS, ou ainda, desenvolvendo um processo de automação para deploy de diversas instâncias, é interessante saber que o SQL Server guarda estas informações de diretório padrão em chaves do registro do sistema.
Mais precisamente em:
“Computer\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL13.MSSQLSERVER2016\MSSQLServer\DefaultData” para os arquivos de dados, DefaultLog para os arquivos de log e BackupDirectory para backup.
Em caso de acesso remoto ao servidor do SQL Server é possível com uma conexão ssh validar e até definir o valor utilizando o PowerShell.
Nos scripts abaixo, exemplifico como receber o valor da propriedade e definir um novo valor:
“Get-ItemProperty -Path ‘HKLM:\SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL13.MSSQLSERVER2016\MSSQLServer\’ -Name DefaultData”
OU
“Set-ItemProperty -Path ‘HKLM:\SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL13.MSSQLSERVER2016\MSSQLServer\’ -Name DefaultData -Value ‘d:\data’”
Conhecer a localização dos arquivos de bancos de dados SQL Server é fundamental, especialmente quando há muitos servidores que são administrados diariamente pelo DBA.
Por hoje era isso pessoal, espero que tenham gostado.
Até o próximo post!