欢迎来到 2021 年。所以现在它与三年前 @dean 所描述的非常相似。您无法以文章View or Change the Default Locations for Data and Log Files 中提到的常规方式更改默认值,方法是使用 SSMS、Object Explorer,然后选择您的 SQLLocalDB 实例并在 Database Settings 选项卡。
关于“为什么?”的最佳答案我发现来自the same source:
SQL Server Express LocalDB 的实例是用户创建供其使用的实例。计算机上的任何用户都可以使用 LocalDB 实例创建数据库,将文件存储在其用户配置文件下,并在其凭据下运行该过程。默认情况下,LocalDB 实例的访问权限仅限于其所有者。
顺便说一句,也许您知道,也许不知道:您可以填写表格,然后在 服务器属性 对话框窗口顶部查找 脚本 按钮。然后,如果您从下拉菜单列表中选择 Script Action to New Query Window,您会看到类似这样的内容(在新的查询窗口中):
USE [master]
GO
EXEC xp_instance_regwrite N'HKEY_LOCAL_MACHINE', N'Software\Microsoft\MSSQLServer\MSSQLServer', N'BackupDirectory', REG_SZ, N'C:\Data'
GO
EXEC xp_instance_regwrite N'HKEY_LOCAL_MACHINE', N'Software\Microsoft\MSSQLServer\MSSQLServer', N'DefaultData', REG_SZ, N'C:\Data'
GO
EXEC xp_instance_regwrite N'HKEY_LOCAL_MACHINE', N'Software\Microsoft\MSSQLServer\MSSQLServer', N'DefaultLog', REG_SZ, N'C:\Data'
GO
不幸的是,它可能只适用于“真正的”SQL Server,而不适用于 SQL Local DB。当我尝试以管理员身份使用它时,我看到了这个:
Msg 22002, Level 16, State 1, Line 2
RegCreateKeyEx() returned error 5, 'Access is denied.'
Msg 22002, Level 16, State 1, Line 4
RegCreateKeyEx() returned error 5, 'Access is denied.'
Msg 22002, Level 16, State 1, Line 6
RegCreateKeyEx() returned error 5, 'Access is denied.'
所以有一个提示,特别是如果您使用 .NET Core/5 并尝试轻松使用 Entity Framework migrations 和 Code First 方法进行开发。您可以使用在字段 AttachDbFileName 中定义首选默认位置的 connection string 更新 appsettings.json 文件。
{
"ConnectionStrings": {
"DefaultConnection": "Server=(localdb)\\mssqllocaldb;Database=ContactManager;Trusted_Connection=True;MultipleActiveResultSets=true;AttachDbFileName=C:\\Data\\ContactManager.mdf;"
},
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft": "Warning",
"Microsoft.Hosting.Lifetime": "Information"
}
},
"AllowedHosts": "*"
}