Ich war gespannt, wie der Weg von der Entwicklung in LocalDB zu einer Produktionsinstanz aussehen würde
...
Verbessert / rationalisiert LocalDB die Bereitstellung unter solchen Umständen?
Nicht wirklich so viel Unterschied, um ehrlich zu sein. Obwohl dies User Instances
kein Faktor mehr ist, ist es für einen Entwickler immer noch sehr einfach, eine Reihe von SqlLocalDb-Instanzen zu erstellen und den Überblick zu verlieren, welche die "wahre" Version der Wahrheit enthält.
LocalDb macht das Einrichten einer vollständigen dienstbasierten Instanz von SQL Server (Express oder auf andere Weise) überflüssig und reduziert die Komplexität des Sicherheitsmodells. Es ist immer noch Sache des Entwicklers oder des Teams, solide Entwicklungspraktiken in Bezug auf Quellcodeverwaltung und Werbung zu implementieren. Wie in den Kommentaren zum Ausdruck gebracht, gibt es verschiedene Möglichkeiten, Code von einer lokalen Instanz in die Produktion zu befördern (hoffentlich zuerst durch eine Art QS / Test-System):
- Backup wiederherstellen
- Datenbankprojekte über VS / SSDT
- Vergleichstools von Drittanbietern wie SQL Compare
- manuelle Platzierung von Schema / Skripten / Daten in der Quellcodeverwaltung
- manuelle Generierung von Skripten zur Bereitstellungszeit
- Assistenten zum Importieren / Exportieren von Daten (Einschränkung: Ich habe den Assistenten nicht gegen SqlLocalDb ausprobiert)
(Ich habe absichtlich auf das Trennen / Anhängen verzichtet, da das Sichern / Wiederherstellen viel sicherer ist. Wenn beim Trennen während oder nach dem Trennen etwas mit der MDF-Datei passiert, haben Sie jetzt keine Kopien Ihrer Datenbank. Wenn eine Sicherung fehlschlägt, haben Sie immer noch Fehler habe die Quelle.)
Ob eines davon mehr oder weniger anfällig für die gleichen Probleme wie heute ist, hängt mehr von der Teamdisziplin und den etablierten Verfahren ab als davon, ob Express oder LocalDb für die lokale Entwicklung verwendet werden. MEINER BESCHEIDENEN MEINUNG NACH.
Das Schöne an LocalDb gegenüber Benutzerinstanzen ist, dass Sie beim Herstellen einer Verbindung zu einer einzelnen Instanz von LocalDb nicht in dem speziellen Fall landen, in dem Sie bei jeder Verwendung AttachDbFileName
eine neue Kopie der Datenbank erhalten. Der problematischste Teil besteht darin, dass Sie eine Tabelle in einer Instanz ändern und dann einen Fehler von Ihrer Anwendung erhalten, da diese mit einer Kopie verbunden ist, bei der Ihre Tabelle nicht geändert wurde. Wie Sie bereits betont haben, hat dies zu einem nie endenden Strom von Verwirrung und ähnlichen Fragen zu SO geführt. Tatsächlich unterstützt SqlLocalDb immer noch AttachDbFileName
, aber ich denke, es wird sehr selten verwendet, wenn überhaupt.
Mit LocalDb ist es weniger wahrscheinlich, dass Sie auf diese Probleme stoßen , aber sie existieren immer noch. Es ist ein anderes Tool mit einigen Vorteilen, aber es kann immer noch unangemessen verwendet werden.