¿Cómo mover la carpeta de instancias LocalDB de SQL Server desde la ubicación predeterminada?


12

Recibo múltiples errores con LocalDB( error de inicio , no puedo crear DB desde SQL Server Management Studio y también varios problemas al intentar restaurar una copia de seguridad) y ninguna de las soluciones que encontré está ayudando en nada. Me parece que todos los errores tienen su raíz en los permisos no configurados correctamente.

Ahora, un simple script de creación de tabla DDL funciona bien desde SQL Server Management Studio y crea la base de datos en la raíz de la carpeta de mi cuenta de usuario ( como se explica aquí ). Sin embargo, la carpeta de instancias (ubicada a D:\Users\[My name]\AppData\Local\Microsoft\Microsoft SQL Server Local DB\Instancespesar de la instalación de SQL Server Express con servicios avanzados especifiqué la carpeta de DATOS en otra ubicación, donde solo .mdfse almacenan los archivos estándar de SQL Server Express , pero no las LocalDBinstancias) parece problemática con respecto a los permisos (al contrario de la cuenta root) por lo tanto, y también por tener mis archivos DB en una ubicación entre mis proyectos, me gustaría mover la carpeta Instances a otro lugar. es posible? Ni siquiera he encontrado una entrada de registro correspondiente.

Estoy usando SQL Server Express 2012 y también SSMS de la misma versión (últimas actualizaciones instaladas).

Cualquier ayuda sería apreciada.

Editar: La página de Configuración de la base de datos que KookieMonster mencionó anteriormente arrojó un error para mí, al no poder editar ni ver ninguna configuración allí. Dejé que Windows Update buscara actualizaciones nuevamente y hubo algunas actualizaciones para SQL Server Express que no se instalaron (aunque estoy seguro de que seleccioné todo para instalar antes), así que las instalé. Esto me permitió ir a la página de configuración.

Intenté configurar la carpeta raíz de la instancia de LocalDB en otro lugar, pero recibo un error de acceso denegado para cada carpeta que probé, a saber

Alter falló para la configuración 'Microsoft.SqlServer.Management.Smo.ObjectKeyBase'. (Microsoft.SqlServer.Smo)

------------------------------ INFORMACIÓN ADICIONAL:

Se produjo una excepción al ejecutar una instrucción o lote de Transact-SQL. (Microsoft.SqlServer.ConnectionInfo)


RegCreateKeyEx () devolvió el error 5, 'Acceso denegado'. (Microsoft SQL Server, error: 22002)

¡Obtengo esto incluso si la carpeta tiene Control total establecido para Todos! Aún más divertido, la única carpeta que funciona, una que está configurada como predeterminada (la raíz de la cuenta de usuario) no tiene permisos especiales aplicados, solo los que tiene mi usuario (como cualquier otra carpeta que intenté configurar). En efecto, esto significa que todos los archivos de mis bases de datos LocalDB se guardan en la carpeta raíz de mi cuenta.


1
¿Qué sucede cuando crea una base de datos y establece explícitamente los archivos en una ubicación específica en lugar de tomar los valores predeterminados?
Aaron Bertrand

1
¡Gracias por su respuesta! Eso funciona (si selecciono una carpeta adecuada como mi carpeta de proyecto) pero es muy inconveniente tener que especificar la ruta cada vez. Simplemente no puedo creer que no haya forma de cambiar los valores predeterminados.
Piedone

¿Qué sucede cuando va al nodo del servidor, hace clic derecho, propiedades, parámetros de la base de datos y cambia la ubicación predeterminada? ¿Los valores son los que configuró durante la instalación o algo más?
KookieMonster

He tenido exactamente el mismo problema. Creo que la razón por la que cambiar los permisos de la carpeta no tiene efecto es porque esto realmente le dice que hay un problema de permisos con el registro, específicamente creando una clave de registro (vea la última parte: RegCreateKeyEx). Lamentablemente, no puedo entender qué clave quiere crear.
daveaglick

Respuestas:


13

Ver mi comentario arriba. Utilicé Process Monitor para rastrear el acceso al registro y descubrí que estaba obteniendo un acceso denegado al intentar escribir:

3:16:40.8405491 PM sqlservr.exe 8756 RegCreateKey HKLM\SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL11E.LOCALDB\MSSQLServer ACCESS DENIED Desired Access: Write

Lo solucioné abriendo el Editor del Registro y dándole a Todos acceso total HKLM\SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL11E.LOCALDB\MSSQLServer. Luego cambié la ubicación predeterminada y eliminé el acceso Todos una vez que se hizo. Esto hizo las siguientes teclas adicionales que no estaban allí antes:

DefaultData

DefaultLog

BackupDirectory


Gracias. Al final he tomado una ruta diferente, así que no puedo probar cómo funcionaría para mí.
Piedone

3
Acabo de probar exactamente la solución que propuso aquí y sí, tengo los extras que mencionó en el registro. Aún así, esto no anula ni cambia los valores de propiedades actuales de mi base de datos local. El registro muestra los valores deseados para las 3 ubicaciones, pero en SMSS todavía existen las ubicaciones predeterminadas por instalación. ¿Usar MS sql server compact 3.5 SP 1 podría ser la razón de tal comportamiento?
user3840527

2
Este es el único lugar que he sido capaz de encontrar cualquier información sobre este error. alguna vez, sí, alterar los permisos para esa clave de registro hace que el error desaparezca, pero como dice user3840527, SSMS todavía tiene las ubicaciones predeterminadas originales después, incluso después de salir y volver a abrirlo.
Yann Duran

@Piedone, ¿podrías explicar qué fue lo que hiciste en lugar de usar el método de clave reg? ¿O señala un lugar que explica el método? Gracias
Yann Duran

1
El error desaparece pero la ubicación no cambia
Adil Mammadov
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.