Ich habe mal nach einer Alternative zu den Archivierungsdateien.bak zu SQL-Datenbanken gesucht. Eine Möglichkeit bietet die Erzeugung und Anwendung von Scripts zum Löschen, Kreieren und Befüllen von Datenbanken. Im SSMS über den Menüpunkt Skrips generieren manuell durchführbar. Meine Prozedur erstellt ein bestimmtes gewünschtes Script ausgehend von einer vorhandenen Datenbank. Das Script kann dann als alternatives Archiv gespeichert werden. Folgende Parameter werden für den Aufruf der Prozedur createScript benötigt:
Zur Erzeugung der Script-SQL-Statements wird die Prozedur createSqlStatements angewendet. Sie erzeugt den eigentlichen "Script-Text". Folgende Parameter werden für den Aufruf der Prozedur benötigt und aus der aufrufenden Prozedur createScript übergeben:
Für die Anwendung der Programme ist außerdem notwendig: Imports Microsoft.SqlServer Imports Microsoft.SqlServer.Management.Common Imports Microsoft.SqlServer.Management.Sdk.Sfc Imports Microsoft.SqlServer.Management.Smo Hier der Code für beide Prozeduren: ''' <summary> ''' Funktion zum Erzeugen eines SQL-Scripts für Übertragung von Daten ''' für alle Tabellen einer Datenbank ''' </summary> ''' <param name="srvName">der Server-Name (inkl. Instanzname)</param> ''' <param name="dbName">der Datenbankname</param> ''' <param name="scriptArt">die Art des zu erstellenden Scripts</param> ''' (scriptArt: "Schema" (Script vom Schema), "Daten" (Script von Daten) ''' oder "" (komplette Datenbank)) ''' <param name="target">die Zielversion des Servers</param> ''' <param name="debugFlag">das Script protokollieren ja|nein</param> Public Function createScript(srvName As String, dbName As String, Optional scriptArt As String = "Daten", Optional target As SqlServerVersion = SqlServerVersion.Version140, Optional debugFlag As Boolean = False) _ As String Dim script As String Dim srv As New Server(srvName) Dim Scripter As New Scripter(srv) Dim db As Database = srv.Databases(dbName) With Scripter.Options .TargetServerVersion = target Select Case scriptArt Case "Daten" .ScriptData = True .ScriptSchema = False script = createSqlStatements(srv, db, Scripter, debugFlag) Case "Schema" .ScriptSchema = True .ScriptData = False .Indexes = True ' include indizes script = createSqlStatements(srv, db, Scripter, debugFlag) Case Else ' komplette Datenbank .ScriptData = False .ScriptDrops = True .ScriptSchema = True script = createSqlStatements(srv, db, Scripter, debugFlag) .ScriptDrops = False script += createSqlStatements(srv, db, Scripter, debugFlag) .ScriptSchema = False .ScriptData = True script += createSqlStatements(srv, db, Scripter, debugFlag) End Select End With Return script End Function ''' <summary> ''' Erzeugen eines Scripts ''' </summary> ''' <param name="Server">der Server-Name (inkl. Instanzname)</param> ''' <param name="Database">die Datenbank</param> ''' <param name="Scripter">der Scripter</param> ''' <param name="debugFlag">das Script protokollieren ja|nein</param> ''' <returns></returns> Private Function createSqlStatements(Server As Server, Database As Database, Scripter As Scripter, Optional debugFlag As Boolean = False) As String Dim result As New StringBuilder For Each Table As Table In Database.Tables If Not Table.IsSystemObject Then Dim ScriptLines As List(Of String) ScriptLines = Scripter.EnumScript(New Urn() {Table.Urn}).ToList() For Each Line As String In ScriptLines result.AppendLine(Line) If debugFlag Then Debug.Print(Line) Next End If Next Return result.ToString End Function Beispiele für die Anwendung Es wird die komplette Datenbank DatabankName auf dem Server serverName als Script erstellt; Schema und alle Daten. ' Datenbank Dim st As String = createScript(serverName, DatabankName, "") Erstellung eines Scripts, das ausschließlich alle Daten der Datenbank beinhaltet. ' Daten Dim st As String = createScript(serverName, DatabankName, "Daten") Nur die Schemata aller Tabellen der Datenbank werden gespeichert als Script. ' Schema Dim st As String = createScript(serverName, DatabankName, "Schema") Hinweis: Es empfiehlt sich für die Anwendung des Tipps, die neueste SMO-Version zu installieren. Dieser Tipp wurde bereits 4.281 mal aufgerufen.
Anzeige
![]() ![]() ![]() Ein absolutes Muss - Geballtes Wissen aus mehr als 8 Jahren vb@rchiv! - nahezu alle Tipps & Tricks und Workshops mit Beispielprojekten - Symbol-Galerie mit mehr als 3.200 Icons im modernen Look Weitere Infos - 4 Entwickler-Vollversionen (u.a. sevFTP für .NET), Online-Update-Funktion u.v.m. |
sevAniGif (VB/VBA) ![]() Anzeigen von animierten GIF-Dateien Ab sofort lassen sich auch unter VB6 und VBA (Access ab Version 2000) animierte GIF-Grafiken anzeigen und abspielen, die entweder lokal auf dem System oder auf einem Webserver gespeichert sind. Tipp des Monats ![]() Manfred Bohn IndexOf für mehrdimensionale Arrays Die generische Funktion "IndexOf" ermittelt das erste Auftreten eines bestimmten Wertes in einem n-dimensionalen Array TOP Entwickler-Paket ![]() TOP-Preis!! Mit der Developer CD erhalten Sie insgesamt 24 Entwickler- komponenten und Windows-DLLs. Die Einzelkomponenten haben einen Gesamtwert von 1866.50 EUR... |
||||||||||||||||
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein. |