san*_*art 9 .net c# sql sql-server localdb
我想知道是否可以更改默认位置(LocalDB)
.当您使用SqlLocalDB.exe
默认位置创建它时
C:\Users\userId\AppData\Local\Microsoft\Microsoft SQL Server Local DB\Instances\MyDB
Run Code Online (Sandbox Code Playgroud)
我相信这个路径用在(LocalDB)
连接字符串中(由*.dbml
文件创建者自动生成):
<connectionStrings>
<add name="MyApp.Properties.Settings.MyConnectionString"
connectionString="Data Source=**(LocalDB)**\MyDB;Initial Catalog=sthDB;Integrated Security=True"
providerName="System.Data.SqlClient" />
</connectionStrings>
Run Code Online (Sandbox Code Playgroud)
Dan*_*ith 10
我也一直在尝试自定义实例位置,并找到了解决方案.正如以前的帖子中提到的那样,它似乎默认为%LOCALAPPDATA%\Microsoft\Microsoft SQL Server Local DB\Instances
.经过一些实验,似乎SQLLocabDB命令行实用程序使用%USERPROFILE%
环境变量(而不是%LOCALAPPDATA%
)来查找此位置.
以下内容适用于我(从命令提示符处使用SQLLocalDB):
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
Run Code Online (Sandbox Code Playgroud)
如图所示,这创建了我的LocalDB实例c:\temp
,虽然从"AppData"开始继承原始文件夹层次结构(这似乎是不可更改的).请注意,还必须手动创建文件夹层次结构的"AppData\Local"部分,否则将失败.
下一个问题实际上是从C#应用程序连接到此数据库.为此,%USERPROFILE%
必须将环境变量设置为与上面相同的位置,即:
Environment.SetEnvironmentVariable("USERPROFILE", "c:\\temp");
Run Code Online (Sandbox Code Playgroud)
这应该在建立DB连接之前完成.可能最好在应用程序的入口点的某个地方执行此操作.
总而言之,这有点像黑客,但它至少给了一个选项来存储除"c:\ users ..."之外的其他地方.
您无法更改默认值,但可以为您创建的每个数据库更改它:
create database foo on (name='foo', filename='c:\DBs\foo.mdf')
Run Code Online (Sandbox Code Playgroud)
http://blogs.msdn.com/b/sqlexpress/archive/2011/10/28/localdb-where-is-my-database.aspx