LocalDB: Ändern des SQL server-Standardsorts

Ich frage mich, ob es möglich ist, die Standardposition von (LocalDB) zu ändern. Wenn Sie es mit SqlLocalDB.exe Standard-memoryort erstellen

 C:\Users\userId\AppData\Local\Microsoft\Microsoft SQL server Local DB\Instances\MyDB 

Und ich glaube, dieser Pfad wird in (LocalDB) in Verbindungszeichenfolgen verwendet (automatisch generiert von Schöpfer von *.dbml fileen):

 <connectionStrings> <add name="MyApp.Properties.Settings.MyConnectionString" connectionString="Data Source=**(LocalDB)**\MyDB;Initial Catalog=sthDB;Integrated Security=True" providerName="System.Data.SqlClient" /> </connectionStrings> <connectionStrings> <connectionStrings> <add name="MyApp.Properties.Settings.MyConnectionString" connectionString="Data Source=**(LocalDB)**\MyDB;Initial Catalog=sthDB;Integrated Security=True" providerName="System.Data.SqlClient" /> </connectionStrings> 

Ich habe auch versucht, den Instanzstandort anzupassen und eine Lösung gefunden zu haben. Wie in früheren Beiträgen entzogen, scheint es, dass es standardmäßig auf "% LOCALAPPDATA% \ Microsoft \ Microsoft SQL server Local DB \ Instances". Nach einigen Experimenten scheint es, dass das SQLLocabDB-Befehlszeilenprogramm die% USERPROFILE% Umgebungsvariable (anstelle von% LOCALAPPDATA%) verwendet, um diesen Standort zu finden.

Das folgende arbeitete für mich (mit SQLLocalDB von einer Eingabeaufforderung):

 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 

Wie gezeigt, hat dies meine LocalDB-Instanz unter c: \ temp erstellt, wenngleich die ursprüngliche Ordnerhierarchie von "AppData" weiter geerbt wird (was unveränderlich erscheint). Beachten Sie, dass es auch notwendig war, den "AppData \ Local" Teil der Ordnerhierarchie manuell zu erstellen, sonst fehlschlägt es.

Die nächste Ausgabe ist eigentlich die Verbindung zu dieser database aus einer C # -Anwendung. Um dies zu tun, muss die Umgebungsvariable% USERPROFILE% auf denselben Ort wie oben gesetzt werden, dh:

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

Dies sollte vor dem Herstellen einer DB-Verbindung erfolgen. Wahrscheinlich am besten, dies zu tun irgendwo im Einstiegspunkt der Anwendung.

Alles in allem ist dies ein bisschen ein Hack, aber es gibt zumindest eine Möglichkeit, Dinge irgendwo anders als in "c: \ users …" zu speichern.

Sie können die Voreinstellung nicht ändern, aber Sie können sie für jede database ändern, die Sie erstellen:

 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