我安装了SSMS 18。从SQL Server Express 2017安装中选择它以安装新的LocalDB实例,因为它还没有包含在SSMS 18安装中。
安装完成后,当我尝试使用下面的SQL创建数据库时。
CREATE DATABASE Test
我收到以下错误信息:
Msg 5123, Level 16, State 1, Line 1
CREATE FILE encountered operating system error 5(Access is denied.) while attempting to open or create the physical file 'C:\Users\brechtTest.mdf'.
Msg 1802, Level 16, State 4, Line 1
CREATE DATABASE failed. Some file names listed could not be created. Check related errors.
我注意到一件事,但不确定是否相关,那就是文件路径根本没有意义。缺少一个反斜杠。
之后,我尝试使用万能密码,在Computer\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL14E.LOCALDB\MSSQLServer上给所有人授权。这可以防止更改服务器选项中的目录时弹出错误。但它并没有解决原始问题。
奇怪的是,通过GUI创建数据库(如下图)没有问题。但我需要CREATE DATABASE工作,因为我在使用这个功能时遇到了使用EntityFrameworkCore迁移时的错误。
只要我允许自己在“C:\Users”上拥有所有权限,就可以使用CREATE DATABASE创建数据库,因为所用的文件路径是“C:\Users\brechtTest.mdf”。但那个文件路径没有任何意义。
我尝试过以下一些方法:
- 重新安装LocalDB。
- 以管理员身份运行SSMS。
- 配置SQL server服务使用本地用户。
- 编辑Computer\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL14E.LOCALDB\MSSQLServer键以包含反斜杠。
如何使其正常工作,即如何调整默认路径以包含反斜杠,使“C:\Users\brechtTest.mdf”变成“C:\Users\brecht\Test.mdf”?
EnsureDatabase.For.SqlDatabase
时使用了 dbup。 - Chris Missal