Eu recebo vários erros com LocalDB
( erro de inicialização , não consigo criar banco de dados no SQL Server Management Studio e também vários problemas ao tentar restaurar um backup) e nenhuma das correções que encontrei estão ajudando em nada. Parece-me que todos os erros têm sua raiz nas permissões não configuradas corretamente.
Agora, um script simples de criação de tabela DDL funciona bem no SQL Server Management Studio e cria o banco de dados na raiz da pasta da minha conta de usuário ( conforme explicado aqui ). A pasta Instâncias, no entanto (localizada D:\Users\[My name]\AppData\Local\Microsoft\Microsoft SQL Server Local DB\Instances
ao lado da instalação do SQL Server Express com Advanced Services , especifiquei a pasta DATA em outro local - onde apenas os .mdf
arquivos padrão do SQL Server Express são armazenados, mas não as LocalDB
instâncias) parece problemática em relação às permissões (ao contrário da conta raiz), portanto, e também por ter meus arquivos de banco de dados em um local entre meus projetos, eu gostaria de mover a pasta Instâncias para outro local. Isso é possível? Eu nem encontrei uma entrada de registro correspondente.
Estou usando o SQL Server Express 2012 e também o SSMS da mesma versão (últimas atualizações instaladas).
Qualquer ajuda seria apreciada.
Editar: A página de Configurações do banco de dados mencionada anteriormente pelo KookieMonster gerou um erro para mim, não sendo possível editar nem ver nenhuma configuração lá. Deixei o Windows Update procurar atualizações novamente e houve algumas atualizações para o SQL Server Express que não foram instaladas (embora eu tenha certeza de ter selecionado tudo para instalar antes), então as instalei. Isso me possibilitou ir para a página de configurações.
Tentei configurar a pasta raiz da instância LocalDB para outro lugar, mas recebo um erro de acesso negado para todas as pastas que tentei, a saber
Alter falhou nas configurações 'Microsoft.SqlServer.Management.Smo.ObjectKeyBase'. (Microsoft.SqlServer.Smo)
------------------------------ INFORMAÇÃO ADICIONAL:
Ocorreu uma exceção ao executar uma instrução ou lote Transact-SQL. (Microsoft.SqlServer.ConnectionInfo)
RegCreateKeyEx () retornou o erro 5, 'Acesso negado.' (Microsoft SQL Server, erro: 22002)
Eu recebo isso mesmo que a pasta tenha Controle total definido para Todos! Ainda mais divertida, a única pasta que funciona, definida como padrão (a raiz da conta do usuário) não tem permissões especiais aplicadas - apenas as que meu usuário possui (como qualquer outra pasta que tentei definir). Com efeito, isso significa que todos os arquivos dos meus bancos de dados do LocalDB são salvos na pasta raiz da minha conta.
Respostas:
Veja meu comentário acima. Usei o Process Monitor para rastrear o acesso ao registro e descobri que estava recebendo um acesso negado ao tentar escrever:
3:16:40.8405491 PM sqlservr.exe 8756 RegCreateKey HKLM\SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL11E.LOCALDB\MSSQLServer ACCESS DENIED Desired Access: Write
Eu resolvi isso abrindo o Editor do Registro e dando acesso a Todos a todos
HKLM\SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL11E.LOCALDB\MSSQLServer
. Em seguida, mudei o local padrão e removi o acesso Todos depois que ele foi feito. Isso criou as seguintes chaves extras que não existiam antes:DefaultData
DefaultLog
BackupDirectory
fonte