Rubrik: Datenbanken · ADO.NET Allgemein | VB-Versionen: VB2022 | 06.10.25 |
![]() Es wird eine übergeordnete Funktion ProofTableState gezeigt, die unter Verwendung einiger Hilfsfunktionen den Status einer Datenbank ermittelt und entsprechend darauf reagiert. | ||
Autor: ![]() | Bewertung: ![]() ![]() ![]() ![]() ![]() | Views: 48 |
ohne Homepage | System: Win7, Win8, Win10, Win11 | kein Beispielprojekt |
Es wird eine übergeordnete Funktion ProofTableState gezeigt, die unter Verwendung einiger Hilfsfunktionen den Status einer Datenbank ermittelt und entsprechend darauf reagiert.
Die Hauptfunktion (Server- und Datenbankname müssen bekannt sein):
''' <summary> ''' Prüfen des Datenbank-Status am SQL-Server ''' </summary> ''' <param name="conn">die SQL-Connection</param> ''' <param name="DBName">der Datenbankname</param> ''' <returns>Rückgabe des Status als String</returns> Public Function ProofTableState(conn As SqlConnection, DBName As String) As String Dim sqlStr As String = "SELECT state_desc FROM sys.databases WHERE name='" + DBName + "'" Dim st As String Dim cmd As New SqlCommand With conn .Open() cmd = New SqlCommand(sqlStr, conn) st = cmd.ExecuteScalar.ToString cmd.Dispose() .Close() End With Return st End Function
Hilfsfunktionen zur Prüfung, Ermittlung des Datanbank-Status:
''' <summary> ''' Setzen des Datenbank-Status auf ONLINE ''' </summary> ''' <param name="oConn">die SQL-Connection</param> ''' <param name="DBName">der Datenbankname</param> ''' <returns></returns> Public Function DB_SetOnline(ByRef oConn As SqlConnection, DBName As String) As Boolean Dim sqlStr As String = "ALTER DATABASE [" + DBName + "] SET ONLINE" Return ActionWithTable(oConn, DBName, sqlStr, False) End Function
''' <summary> ''' Setzen des Datenbank-Status auf OFFLINE ''' </summary> ''' <param name="oConn">die SQL-Connection</param> ''' <param name="DBName">der Datenbankname</param> ''' <returns></returns> Public Function DB_SetOffline(ByRef oConn As SqlConnection, DBName As String) As Boolean Dim sqlStr As String = "ALTER DATABASE [" + DBName + "] SET OFFLINE WITH ROLLBACK IMMEDIATE" Return ActionWithTable(oConn, DBName, sqlStr, False) End Function
''' <summary> ''' Aktion mit Datentabelle ausführen, bspw. DELETE, TRUNCATE o.a. ''' </summary> ''' <param name="conn">SQL-Verbindung</param> ''' <param name="tblName">Tabellenname</param> ''' <param name="query">Query-String für die Aktion</param> ''' <param name="flag">Message zeigen ja|nein</param> Public Function ActionWithTable(conn As SqlConnection, tblName As String, query As String, Optional flag As Boolean = True) As Boolean Try Dim cmd As New SqlCommand With cmd .Connection = conn .CommandType = CommandType.Text .CommandText = query If conn.State <> ConnectionState.Open Then conn.Open() .ExecuteNonQuery() conn.Close() End With Catch ex As System.Exception MessageBox.Show(ex.Message.ToString, "FEHLER", MessageBoxButtons.OK, MessageBoxIcon.Error) Clipboard.SetText(ex.Message.ToString) conn.Close() Finally If flag Then Dim t As String = "Aktion mit " + tblName + " erfolgreich!" MessageBox.Show(t, "ACTION", MessageBoxButtons.OK, MessageBoxIcon.Exclamation) End If End Try Return flag End Function