SQL Server 2012 Express LocalDB

Microsoft SQL Server 2012 Express LocalDB ist ein Ausführungsmodus von SQL Server Express, der speziell für Programmentwickler konzipiert wurde. Die LocalDB-Installation kopiert einen minimalen Satz von Dateien, der für den Start von SQL Server-Datenbankmodul erforderlich ist. Sobald LocalDB installiert ist, stellen Entwickler mithilfe einer speziellen Verbindungszeichenfolge eine Verbindung her. Wenn eine Verbindung hergestellt wird, wird die erforderliche SQL Server-Infrastruktur automatisch erstellt und gestartet. Sie ermöglicht der Anwendung, die Datenbank zu verwenden, und zwar ohne komplexe oder zeitraubende Konfigurationstasks. Mit Developer Tools können Entwickler SQL Server-Datenbankmodul bereitstellen, womit sie Transact-SQL-Code schreiben und testen können, und zwar ohne dabei eine vollständige Serverinstanz von SQL Server verwalten zu müssen. Eine Instanz von SQL Server Express LocalDB wird mit dem Hilfsprogramm SqlLocalDB.exe verwaltet. SQL Server Express LocalDB sollte anstelle der SQL Server Express-Benutzerinstanzfunktion verwendet werden, die veraltet ist.

Installieren von LocalDB

Die Hauptmethode zur Installation von LocalDB besteht in der Verwendung des Programms SqlLocalDB.msi. LocalDB ist eine Option bei der Installation einer beliebigen SKU von SQL Server 2012 Express. Wählen Sie während der Installation von SQL Server Express auf der Seite Funktionsauswahl die Option LocalDB aus. Es darf nur eine Installation der LocalDB-Binärdateien für eine SQL Server-Datenbankmodul-Hauptversion vorhanden sein. Mehrere Datenbankmodul-Prozesse können gestartet werden und verwenden dann die gleichen Binärdateien. Für eine Instanz von SQL Server-Datenbankmodul, die als LocalDB gestartet wurde, gelten die gleichen Einschränkungen wie für SQL Server Express

Beschreibung

Das LocalDB-Setupprogramm installiert mithilfe des SqlLocalDB.msi-Programms die notwendigen Dateien auf dem Computer. Nach der Installation ist LocalDB eine Instanz von SQL Server Express, mit der SQL Server-Datenbanken erstellt und geöffnet werden können. Die Systemdatenbankdateien für die Datenbank werden im lokalen AppData-Pfad des Benutzers gespeichert. Dieser Pfad ist normalerweise verborgen. Beispiel: C:\Users\<user>\AppData\Local\Microsoft\Microsoft SQL Server Local DB\Instances\LocalDBApp1\. Benutzerdatenbankdateien werden an dem vom Benutzer angegebenen Speicherort gespeichert, in der Regel im Ordner C:\Users\<user>\Documents\.

Weitere Informationen, einschließlich LocalDB in einer Anwendung finden Sie in der Dokumentation zu Visual Studio unter Übersicht über lokale Daten, Exemplarische Vorgehensweise: Erstellen einer SQL Server LocalDB-Datenbank und Exemplarische Vorgehensweise: Herstellen einer Verbindung mit Daten in einer SQL Server LocalDB-Datenbank (Windows Forms).

Weitere Informationen zur LocalDB-API finden Sie unter SQL Server Express LocalDB Instanz-API-Referenz und LocalDBStartInstance-Funktion.

Das Hilfsprogramm SqlLocalDb kann neue Instanzen von LocalDB erstellen, eine Instanz von LocalDB starten und beenden und enthält Optionen zur Verwaltung von LocalDB. Weitere Informationen zum Hilfsprogramm SqlLocalDb finden Sie unter SqlLocalDB-Hilfsprogramm.

Die Instanzsortierung für LocalDB wird auf SQL_Latin1_General_CP1_CI_AS festgelegt und kann nicht geändert werden. Auf Datenbankebene, Spaltenebene und Ausdrucksebene werden Sortierungen normal unterstützt. Eigenständige Datenbanken basieren auf den Metadaten- und tempdb-Sortierungsregeln unter Enthaltene Datenbanksortierungen.

Einschränkungen

LocalDB kann nicht als Abonnent für die Mergereplikation hinzugefügt werden.

FILESTREAM wird von LocalDB nicht unterstützt.

LocalDB lässt nur lokale Warteschlangen für Service Broker zu.

Eine Instanz von LocalDB, die den integrierten Konten gehört, wie z. B. NT AUTHORITY\SYSTEM, kann aufgrund der Windows-Dateisystemumleitung Verwaltbarkeitsprobleme aufweisen. Verwenden Sie stattdessen ein normales Windows-Benutzerkonto als Besitzer.

Automatisch und benannte Instanzen

LocalDB unterstützt zwei Arten von Instanzen: Automatische Instanzen und benannte Instanzen.

  • Automatische Instanzen von LocalDB sind öffentlich. Sie werden erstellt und automatisch für den Benutzer verwaltet. Sie können von allen Anwendungen verwendet werden. Eine automatische Instanz von LocalDB ist für jede Version von LocalDB vorhanden, die auf dem Computer des Benutzers installiert ist. Automatische Instanzen von LocalDB stellen die nahtlose Instanzverwaltung bereit. Es ist nicht nötig, eine Instanz zu stellen, da es auch so funktioniert. Dies ermöglicht einfache Anwendungsinstallationen und eine Migration zu einem anderen Computer. Wenn auf dem Zielcomputer die angegebene Version von LocalDB installiert ist, ist die automatische Instanz von LocalDB für diese Version auch auf dem Zielcomputer verfügbar. Automatische Instanzen von LocalDB haben ein besonderes Muster für den Instanznamen, der zu einem reservierten Namespace gehört. Dies trägt zur Verhinderung von Namenskonflikten mit benannten LocalDB-Instanzen bei. Der Name der automatischen Instanz ist ein einfaches v, gefolgt von der LocalDB-Versionsnummer im Format xx.x. v11.0 stellt beispielsweise SQL Server 2012 dar.

  • Benannte Instanzen von LocalDB sind privat. Diese gehören einer Einzelanwendung, die für das Erstellen und Verwalten der Instanz zuständig ist. Benannte Instanzen sind zum Teil von anderen Instanzen isoliert und können durch die Reduzierung von Ressourcenkonflikten, die mit anderen Datenbankbenutzern auftreten können, die Leistung verbessern. Der Benutzer muss benannte Instanzen explizit über die LocalDB-Verwaltungs-API oder implizit für eine verwaltete Anwendung (auch wenn die verwaltete Anwendung auch bei Bedarf die API verwenden kann) über die Datei "app.config" erstellen. Jede benannte Instanz von LocalDB verfügt über eine zugeordnete Version von LocalDB, die auf einen angegebenen Satz LocalDB-Binärdateien verweist. Ein Instanzname von LocalDB ist ein sysname-Datentyp und kann bis zu 128 Zeichen aufweisen. (Dies unterscheidet sich von regulären benannten Instanzen von SQL Server, die Namen auf reguläre NetBIOS-Namen von 16 ASCII-Zeichen beschränken.) Der Name einer Instanz von LocalDB kann alle Unicode-Zeichen enthalten, die für den Dateinamen gültig sind. Eine benannte Instanz, die einen automatischen Instanznamen verwendet, wird eine automatische Instanz.

Unterschiedliche Benutzer eines Computers können über Instanzen mit dem gleichen Namen verfügen. Jede Instanz ist ein anderer Prozess, der als ein anderer Benutzer ausgeführt wird.

Freigegebene Instanzen von LocalDB

Von LocalDB wird das Freigeben von Instanzen unterstützt, um Szenarien zu unterstützen, in denen mehrere Benutzer eines Computer sich mit einer einzelnen Instanz von LocalDB verbinden müssen. Ein Instanzbesitzer kann auswählen, anderen Benutzern auf dem Computer zu ermöglichen, eine Verbindung mit seiner Instanz herzustellen. Sowohl die automatische als auch die benannten Instanzen von LocalDB können freigegeben werden. Zum Freigeben einer Instanz von LocalDB müssen Benutzer einen freigegebenen Namen (Alias) dafür auswählen. Da der freigegebene Name für Benutzer des Computers sichtbar ist, muss dieser freigegebene Name auf dem Computer eindeutig sein. Der freigegebene Name für eine Instanz von LocalDB verfügt über das gleiche Format wie die benannte Instanz von LocalDB.

Nur ein Administrator auf dem Computer kann eine freigegebene Instanz von LocalDB erstellen. Die Freigabe einer freigegebenen Instanz von LocalDB kann von einem Administrator oder dem Besitzer der freigegebenen Instanz von LocalDB entfernt werden Verwenden Sie zum Freigeben oder zum Entfernen der Freigabe einer Instanz von LocalDB die LocalDBShareInstance und LocalDBUnShareInstance-Methoden der LocalDB-API oder die Optionen zum Freigeben oder zum Entfernen einer Freigabe des SqlLocalDb-Hilfsprogramms.

Starten von LocalDB und Herstellen einer Verbindung zu LocalDB

Herstellen einer Verbindung zur automatischen Instanz

Die einfachste Möglichkeit zur Verwendung von LocalDB besteht darin, mit der Verbindungszeichenfolge "Server=(localdb)\v11.0;Integrated Security=true" eine Verbindung mit der automatischen Instanz herzustellen, deren Besitzer der aktuelle Benutzer ist. Um mithilfe des Dateinamens eine Verbindung zu einer bestimmten Datenbank herzustellen, verwenden Sie eine ähnliche Verbindungszeichenfolge wie "Server=(LocalDB)\v11.0; Integrated Security=true ;AttachDbFileName=D:\Data\MyDB1.mdf".

HinweisHinweis

Wenn ein Benutzer zum ersten Mal auf einem Computer versucht, eine Verbindung mit LocalDB herzustellen, muss die automatische Instanz sowohl erstellt als auch gestartet werden. Die zusätzliche Zeit, die für das Erstellen der Instanz benötigt wird, kann dazu führen, dass der Verbindungsversuch abgebrochen und eine Timeoutmeldung ausgegeben wird. Warten Sie in diesem Fall einige Sekunden, bis der Erstellungsvorgang vollständig abgeschlossen ist, und stellen Sie dann erneut eine Verbindung her.

Erstellen einer benannten Instanz und Herstellen einer Verbindung

Zusätzlich zur automatischen Instanz unterstützt LocalDB auch benannte Instanzen. Mit dem Programm SqlLocalDB.exe können Sie eine benannte Instanz von LocalDB erstellen, starten und beenden. Weitere Informationen zu SqlLocalDB.exe finden Sie unter SqlLocalDB-Hilfsprogramm.

REM Create an instance of LocalDB
"C:\Program Files\Microsoft SQL Server\110\Tools\Binn\SqlLocalDB.exe" create LocalDBApp1
REM Start the instance of LocalDB
"C:\Program Files\Microsoft SQL Server\110\Tools\Binn\SqlLocalDB.exe" start LocalDBApp1
REM Gather information about the instance of LocalDB
"C:\Program Files\Microsoft SQL Server\110\Tools\Binn\SqlLocalDB.exe" info LocalDBApp1

Die letzte Zeile oben gibt Informationen ähnlich der folgenden zurück.

Name

"LocalDBApp1"

Version

<Aktuelle Version>

Freigegebener Name

""

Besitzer

"<Ihr Windows-Benutzerkonto>"

Automatisch erstellen

Nein

State

Ausführen

Letzte Startzeit

<Datum und Uhrzeit>

Instanz-Pipename

np:\\. \pipe\LOCALDB#F365A78E\tsql\query

HinweisHinweis

Wenn Ihre Anwendung eine Version vor .NET 4.0.2 verwendet, müssen Sie eine direkte Verbindung mit der Named Pipe von LocalDB herstellen. Der Wert für Instanz-Pipename ist die Named Pipe, welche die Instanz von LocalDB überwacht. Der Teil des Instanzpipenamens nach LOCALDB # ändert sich jedes Mal, wenn die Instanz von LocalDB gestartet wird. Sie stellen eine Verbindung zur Instanz von LocalDB mithilfe von SQL Server Management Studio her, indem Sie den Namen der Instanzpipe im Feld Servername des Dialogfeldes Verbindung herstellen mit Datenbankmodul eingeben. Von Ihrem benutzerdefinierten Programm aus stellen Sie eine Verbindung zur Instanz von LocalDB mit einer Verbindungszeichenfolge ähnlich wie SqlConnection conn = new SqlConnection(@"Server=np:\\.\pipe\LOCALDB#F365A78E\tsql\query"); her.

Herstellen einer Verbindung mit einer freigegebenen Instanz von LocalDB

Fügen Sie zum Herstellen einer Verbindung mit einer freigegebenen Instanz von LocalDB der Verbindungszeichenfolge .\ (Punkt + umgekehrter Schrägstrich) hinzu, um einen Verweis auf den für die freigegebenen Instanzen reservierten Namespace zu erstellen. Verwenden Sie eine Verbindungszeichenfolge, beispielsweise (localdb)\.\AppData, als Teil der Verbindungszeichenfolge, um beispielsweise eine Verbindung mit einer freigegeben Instanz von LocalDB namens AppData herzustellen. Benutzer, die eine Verbindung mit einer freigegebenen Instanz von LocalDB herstellen, die sie nicht besitzen, müssen über eine Windows-Authentifizierung oder über einen Anmeldenamen für die SQL Server-Authentifizierung verfügen.

Problembehandlung

Informationen zur Problembehandlung für LocalDB finden Sie unter Problembehandlung SQL Server 2012 Express LocalDB.

Berechtigungen

Eine Instanz von SQL Server 2012 Express LocalDB ist eine von einem Benutzer zur eigenen Verwendung erstellte Instanz. Jeder Benutzer auf dem Computer kann eine Datenbank mithilfe einer LocalDB-Instanz erstellen, Dateien unter seinem Benutzerprofil speichern und die gemäß der Anmeldeinformationen erlaubten Prozesse ausführen. Der Zugriff auf die LocalDB-Instanz ist standardmäßig auf den Besitzer beschränkt. Die in LocalDB enthaltenen Daten sind per Dateisystemzugriff auf die Datenbankdateien geschützt. Wenn die Datenbankdateien eines Benutzers an einem freigegebenen Speicherort gespeichert werden, kann die Datenbank von jedem Benutzer mit Dateisystemzugriff auf diesen Speicherort geöffnet werden, und zwar über die jeweils eigene Instanz von LocalDB. Wenn die Datenbankdateien sich an einem geschützten Speicherort befinden, z. B. dem Datenordner des Benutzers, können nur dieser Benutzer und Administratoren mit Zugriffsrechten für diesen Ordner die Datenbank öffnen. Die LocalDB-Dateien können jeweils nur von einer LocalDB-Instanz geöffnet werden.

HinweisHinweis

LocalDB wird immer im Sicherheitskontext des Benutzers ausgeführt, d. h., LocalDB wird nie mit den Anmeldeinformationen der Gruppe lokaler Administratoren ausgeführt. Das bedeutet, dass der Zugriff auf alle von einer LocalDB-Instanz verwendeten Datenbankdateien über das eigene Windows-Konto des Benutzers möglich sein muss, unabhängig von der Mitgliedschaft in der Gruppe lokaler Administratoren.

Siehe auch

Verweis

SqlLocalDB-Hilfsprogramm