如何从默认位置移动SQL Server LocalDB实例的文件夹?


12

我收到多个错误消息LocalDB启动错误无法从SQL Server Management Studio创建数据库,并且在尝试还原备份时也遇到多个 问题),我发现的任何修复方法都无济于事。在我看来,所有错误的根源都在于未正确设置权限。

现在,一个简单的DDL表创建脚本可以在SQL Server Management Studio中正常运行,并在用户帐户文件夹的根目录中创建数据库(如此处所述)。但是,Instances文件夹(D:\Users\[My name]\AppData\Local\Microsoft\Microsoft SQL Server Local DB\Instances尽管在通过高级服务安装SQL Server Express时位于该文件夹,但我在另一个位置指定了DATA文件夹-仅.mdf存储标准SQL Server Express 文件,但不存储LocalDB实例)在权限方面存在问题(与帐户相反)因此,也为了将我的数据库文件放在项目中的某个位置,我想将Instances文件夹移动到另一个位置。这可能吗?我什至没有找到相应的注册表项。

我正在使用SQL Server Express 2012和相同版本(已安装最新更新)的SSMS。

任何帮助,将不胜感激。

编辑: 前面提到的“数据库设置”页面KookieMonster对我造成了错误,无法编辑或查看那里的任何配置。我让Windows Update再次检查更新,并且有一些未安装的SQL Server Express更新(尽管我确定我选择了所有要安装的东西),所以我安装了它们。这使我可以转到设置页面。

我尝试将LocalDB实例的根文件夹设置到其他位置,但是对于尝试的每个文件夹,我都会收到拒绝访问错误,即

设置“ Microsoft.SqlServer.Management.Smo.ObjectKeyBase”的更改失败。(Microsoft.SqlServer.Smo)

- - - - - - - - - - - - - - - 附加信息:

执行Transact-SQL语句或批处理时发生异常。(Microsoft.SqlServer.ConnectionInfo)


RegCreateKeyEx()返回错误5,“访问被拒绝。” (Microsoft SQL Server,错误:22002)

即使文件夹为每个人都设置了完全控制,我也可以得到它!更有趣的是,唯一起作用的文件夹被设置为默认文件夹(用户帐户的根目录),没有应用特殊权限-仅适用于我的用户所拥有的权限(就像我尝试设置的任何其他文件夹一样)。实际上,这意味着我所有LocalDB数据库的文件都保存到我帐户的根文件夹中。


1
创建数据库并将文件显式设置到特定位置而不采用默认值时会发生什么?
亚伦·伯特兰

1
感谢您的回复!这行得通(如果我选择一个合适的文件夹,例如我的项目文件夹),但是每次必须指定路径是非常不便的。我简直不敢相信没有办法更改默认值。
Piedone

当您转到服务器节点,右键单击属性,数据库参数并切换默认位置时会发生什么?这些值是您在安装过程中设置的值还是其他?
KookieMonster

我一直有完全相同的问题。我认为更改文件夹权限没有效果的原因是,这实际上是在告诉您注册表存在权限问题,特别是创建注册表项(请参阅最后一部分:RegCreateKeyEx)。不幸的是,我无法弄清楚它想要创建什么密钥。
daveaglick 2014年

Answers:


13

看到我上面的评论。我使用进程监视器来跟踪注册表访问,并发现在尝试编写时它被拒绝访问:

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

通过打开注册表编辑器并授予所有人对的完全访问权限,我可以解决此问题HKLM\SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL11E.LOCALDB\MSSQLServer。然后,我更改了默认位置,并在完成后删除了“所有人”访问权限。这产生了以下以前没有的额外键:

默认数据

默认日志

备份目录


谢谢。最后我走了一条不同的路,所以无法测试这对我如何工作。
Piedone 2014年

3
我只是尝试了您在此处提出的解决方案,是的,我有您在注册表中提到的其他功能。但这仍然不会覆盖或更改本地数据库的当前属性值。注册表显示了所有3个位置的期望值,但是在SMSS中,安装后仍然存在默认位置。使用MS SQL Server Compact 3.5 SP 1可能是这种行为的原因吗?
user3840527 2015年

2
这是我唯一能够找到有关此错误的任何信息的地方。somedave,是的,更改该reg密钥的权限的确可以使错误消失,但是正如user3840527所说,SSMS之后仍然具有原始的默认位置,即使退出并重新打开它之后也是如此。
亚恩·杜兰

@Piedone,能否请您解释一下您做了什么而不是使用reg key方法?还是指向解释该方法的地方?谢谢
Yann Duran 2015年

1
错误消失了,但位置没有改变
Adil Mammadov
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.