LocalDB:更改SQL Server默认位置

LocalDB:更改SQL Server默认位置

我也一直在尝试定制实例的位置,并找到了一个解决方案。正如在之前的文章中提到的,它似乎默认使用%LOCALAPPDATA%\Microsoft\Microsoft SQL Server Local DB\Instances。经过一些试验之后,SQLLocabDB命令行实用程序似乎使用%USERPROFILE%环境变量(而不是%LOCALAPPDATA%)来查找此位置。

以下方法适用于我(从命令提示符使用SQLLocalDB ):

代码语言:javascript复制C:\Users\dan.smith>echo %USERPROFILE%

C:\Users\dan.smith

C:\Users\dan.smith>set USERPROFILE=c:\temp

C:\Users\dan.smith>echo %USERPROFILE%

c:\temp

C:\Users\dan.smith>mkdir c:\temp\AppData\Local

C:\Users\dan.smith>sqllocaldb create test

LocalDB instance "test" created with version 13.0.1100.286.

C:\Users\dan.smith>cd C:\temp\AppData\Local\Microsoft\Microsoft SQL Server Local DB\Instances\test

C:\temp\AppData\Local\Microsoft\Microsoft SQL Server Local DB\Instances\test>dir /w

Volume in drive C has no label.

Volume Serial Number is 4A71-7A6F

Directory of C:\temp\AppData\Local\Microsoft\Microsoft SQL Server Local DB\Instances\test

[.] [..]

error.log error1.log

log.trc master.mdf

mastlog.ldf model.mdf

modellog.ldf msdbdata.mdf

msdblog.ldf system_health_0_131061520581180000.xel

tempdb.mdf templog.ldf

12 File(s) 46,701,550 bytes

2 Dir(s) 117,107,499,008 bytes free如图所示,这在c:\temp下创建了我的LocalDB实例,尽管继承了从"AppData“开始的原始文件夹层次结构(这似乎是不可更改的)。请注意,手动创建文件夹层次结构的"AppData\Local“部分也是必要的,否则将失败。

下一个问题实际上是从C#应用程序连接到此数据库。为此,必须将%USERPROFILE%环境变量设置为与上述位置相同的位置,即:

代码语言:javascript复制Environment.SetEnvironmentVariable("USERPROFILE", "c:\\temp");这应该在建立数据库连接之前完成。最好是在应用程序的入口点的某个位置执行此操作。

总而言之,这是一种黑客行为,但它至少让人可以选择将数据存储在"c:\users...“之外的其他位置。

更新

值得注意的是,这里的想法是只为当前运行的进程更改%USERPROFILE%环境变量,而不是在整个计算机范围内。这是在命令提示符下使用set时的行为。上面提到的Environment.SetEnvironmentVariable方法重载也默认使用此行为,不过可能更好的方法是使用更明确的内容,例如:

代码语言:javascript复制Environment.SetEnvironmentVariable("USERPROFILE", "c:\\temp", EnvironmentVariableTarget.Process);

✨ 相关推荐

黑铁矮人
h365官方登录平台

黑铁矮人

📅 09-19 👀 7909
Rogaine培健海外京东自营旗舰店
h365官方登录平台

Rogaine培健海外京东自营旗舰店

📅 02-18 👀 5407
和奔腾G3220谁更值得买?赛扬G1820评测(全文)
365体育管网登录网站

和奔腾G3220谁更值得买?赛扬G1820评测(全文)

📅 09-01 👀 194