Wie lautet der Migrations- / Bereitstellungspfad von einer LocalDB-Lösung zur Enterprise-Instanz?


7

Angesichts der vorhandenen Definition für die LocalDB von SQL Server 2012 als

SqlLocalDB ist eine lokale Datenbank-Engine mit geringem Overhead von SQL Server 2012 (und zukünftigen Versionen), mit der sich Entwickler eher auf die Entwicklung als auf die Instanzkonfiguration oder -sicherheit konzentrieren können.

Ich war gespannt, wie der Weg von der Entwicklung in LocalDB zu einer Produktionsinstanz aussehen würde, insbesondere angesichts der Probleme mit Benutzerinstanzen (ca. SQL 2005), und der Versuch, eine davon in die Produktion zu befördern, und Entwickler würden den Überblick über welche Instanz verlieren Sie versuchten tatsächlich zu fördern. Eine schnelle Suche in StackOverflow verrät solche Probleme in verschiedenen Formen. Verbessert / rationalisiert LocalDB die Bereitstellung unter solchen Umständen?


3
LocalDB untermauert das SSDT-Entwicklungsmodell. Verschiedene Optionen für Bereitstellungen, einschließlich dacpac / SqlPackage.exe und source / target, werden verglichen, um Skripte in einer ähnlichen vergeblichen Form zu generieren. Redgate / Apex et al. Ich werde später noch einmal mit einer Antwort darüber nachdenken, wenn mich niemand schlägt.
Mark Storey-Smith

Antworten:


4

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 Instanceskein 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 AttachDbFileNameeine 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.


@swasheck froh, dass es nützlich ist.
Aaron Bertrand
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.