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

Pie*_*one 13 ssms sql-server-express sql-server-localdb

我收到多个错误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实例)在权限方面似乎存在问题(与帐户相反) root) 因此,也为了将我的数据库文件放在我的项目中的某个位置,我想将 Instances 文件夹移动到另一个地方。这可能吗?我什至没有找到相应的注册表项。

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


数据库设置页面向我抛出了一个错误,无法编辑或查看那里的任何配置。我让 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 数据库文件都保存到我帐户的根文件夹中。

小智 16

我使用 Process Monitor 来跟踪注册表访问,发现它在尝试写入时被拒绝访问:

3:16:40.8405491 PM  
sqlservr.exe 8756   
RegCreateKey    
HKLM\SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL11E.LOCALDB\MSSQLServer   
ACCESS DENIED   
Desired Access: Write
Run Code Online (Sandbox Code Playgroud)

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

  • 默认数据
  • 默认日志
  • 备份目录


归档时间:

查看次数:

11579 次

最近记录:

5 年,3 月 前