LocalDB: change SQL Server default location

后端 未结 2 652
醉梦人生
醉梦人生 2020-12-16 19:35

I wonder if it is possible to change default location of (LocalDB). When you create it with SqlLocalDB.exe default location is

C:\         


        
相关标签:
2条回答
  • 2020-12-16 19:57

    I've also been trying to customise the instances location, and have found a solution. As alluded to in previous posts, it appears that it defaults to %LOCALAPPDATA%\Microsoft\Microsoft SQL Server Local DB\Instances. After some experimentation, it seems that the SQLLocabDB command line utility uses the %USERPROFILE% environment variable (rather than %LOCALAPPDATA%) to find this location.

    The following worked for me (using SQLLocalDB from a command prompt):

    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
    

    As shown, this created my LocalDB instance under c:\temp, albeit inheriting the original folder hierarchy from "AppData" onward (which seems unchangeable). Note that it was also necessary to create the "AppData\Local" part of the folder hierarchy manually, otherwise it fails.

    The next issue is actually connecting to this database from a C# application. To do this, the %USERPROFILE% environment variable must be set to the same location as above, i.e.:

    Environment.SetEnvironmentVariable("USERPROFILE", "c:\\temp");
    

    This should be done prior to establishing a DB connection. Probably best to do this somewhere in the entry point of the application.

    All in all this is a bit of a hack, but it at least gives one the option to store things somewhere else other than in "c:\users...".

    0 讨论(0)
  • 2020-12-16 20:13

    You can't change the default, but you can change it for every database you create:

    create database foo on (name='foo', filename='c:\DBs\foo.mdf')
    

    http://blogs.msdn.com/b/sqlexpress/archive/2011/10/28/localdb-where-is-my-database.aspx

    0 讨论(0)
提交回复
热议问题