Versionen im Vergleich

Schlüssel

  • Diese Zeile wurde hinzugefügt.
  • Diese Zeile wurde entfernt.
  • Formatierung wurde geändert.

Es gibt Fälle in denen bei Verwendung von ADVOKAT mit Microsoft SQL Server nach einem bestimmten Wert (Text/Zahl/Wort/Wortteil) in der Datenbank gesucht wirderforderlich ist herauszufinden wie lange die Datenbanksicherung benötigt.
Dafür muss Microsoft SQL Management Studio verwendet werden, das Tool "AdvoDiag.exe" ist dafür nicht verwendbarnutzbar.

Vorgehensweise

  1. Verbinden Sie sich als Domänenadministrator per Remotedesktopverbindung auf den Datenbankserver. Ist AdvoAll im Einsatz, so kann alternativ auch der Serviceaccount von das AdvoAll-Benutzerkonto genutzt werden.
      Starten Sie
      • Falls Microsoft SQL Management Studio
      . Hinweis: Sollte
      • am eigenen Arbeitsplatz verfügbar ist, können Sie es natürlich auch dort nutzen.
      • Starten Sie Microsoft SQL Management Studio. Sollte es nicht starten oder eine Fehlermeldung anzeigen, versuchen Sie es erneut per Rechtsklick > "Als Administrator ausführen".

        Ist Microsoft SQL Management Studio nicht vorhanden, so ist ohne Wartungsfenster eine nachträgliche Installation möglich.
        Unabhängig von der verwendeten Version des Microsoft SQL Server kann das aktuellste Management Studio hier heruntergeladen werden, die Installation ist vollautomatisch und selbsterklärend.

    • Verbinden Sie sich mit jener Microsoft SQL Instanz, welche die ADVOKAT Datenbanken beinhaltet.
      Den Instanznamen können Sie in der Konfigurationsdatei "Advokat.ini" im ADVOKAT Backend unter "...\ADVOKAT\Daten\" ermitteln.

      Info
      DATENBANK=S:\ADVOKAT\DATEN\ADVOKAT.MDB/SERVER/INSTANZ/Advokat_DATEN

      Anmerkung: Möchte man die Überprüfung für die SharePoint Datenbanken durchführen (sofern ADVOKAT mit Microsoft SharePoint in Verwendung), dann gibt es eventuell eine weitere SQL-Instanz.

      Als Authentifizierungsmethode sind folgende Varianten möglich:

      • Windows-Authentifizierung

      • SQL Server-Authentifizierung

        • Benutzername: advokat

        • Kennwort:

          • Standardkennwort: Das Kennwort ist beim ADVOKAT Support zu erfragen
          !
          Image Removed
          • .
          • Individuelles Kennwort (Parameter "SWID" ist in Advokat.ini vorhanden): Dieses Kennwort ist dem ADVOKAT Support nicht bekannt.

    • Nach dem erfolgreichen Verbindungsaufbau werden in der linken Spalte "Objekt-Explorer" beim Unterpunkt "Datenbanken" alle verfügbaren Datenbanken angezeigt.
      Es ist jene Datenbank der Unterpunkt "Systemdatenbanken" auszuwählen und dort die Systemdatenbank "master" per Rechtsklick > "Neue Abfrage" auszuwählen, deren Inhalt man überprüfen möchte. In den meisten Fällen handelt es sich dabei um die Datenbank "ADVOKAT_Daten".
      Image Removedzu öffnen.
      Image Added

    • Im Abfragefenster können nun SQL-Befehle abgesetzt werden. Die Ausführung eines SQL-Befehls erfolgt über die Schaltfläche "Ausführen".
      Nachdem die Ausführung eines Befehls abgeschlossen ist – diese kann Sekunden bis Minuten dauern, die Dauer wird angezeigt – erscheint der Bereich "Ergebnisse".


      In diesem Beispiel wird nach dem Wort "Test" gesucht, es werden als Ergebnis alle Datenbankfelder aufgelistet in denen dieses Wort vorkommt.
      Die Angabe des Symbols "%" (Wildcard) ist nicht erforderlich, auf die Groß- und Kleinschreibung muss auch nicht geachtet werden.
      Falls Sie nicht das gewünschte Ergebnis finden, dann sind Schritt 3 und 4 mit einer anderen Datenbank zu versuchen: ADVOKAT_AdvoErv oder ADVOKAT_Tabellenallen Sicherungs- und Wiederherstellungsvorgängen von Datenbanken in dieser SQL-Instanz gesucht.

      Codeblock
      languagesql
      DECLAREselect @SearchStr nvarchar(100) = 'Test'
      DECLARE @Results TABLE (ColumnName nvarchar(370), ColumnValue nvarchar(3630))
      
      SET NOCOUNT ON
      
      DECLARE @TableName nvarchar(256), @ColumnName nvarchar(128), @SearchStr2 nvarchar(110)
      SET  @TableName = ''
      SET @SearchStr2 = QUOTENAME('%' + @SearchStr + '%','''')
      
      WHILE @TableName IS NOT NULL
      
      BEGIN
          SET @ColumnName = ''
          SET @TableName =
      r.session_id, 
      r.blocking_session_id, 
      db_name(database_id) as [DatabaseName],
      r.command, 
      [SQL_QUERY_TEXT] = Substring(Query.TEXT, (r.statement_start_offset / 2) + 1, (
                  (
                 (         SELECT MIN(QUOTENAME(TABLE_SCHEMA) + '.' + QUOTENAME(TABLE_NAME))
        CASE r.statement_end_offset
           FROM     INFORMATION_SCHEMA.TABLES         WHERE WHEN - 1
           TABLE_TYPE = 'BASE TABLE'             AND   THEN QUOTENAME(TABLE_SCHEMA) + '.' + QUOTENAME(TABLE_NAME) > @TableNameDatalength(Query.TEXT)
                    AND    OBJECTPROPERTY(                     OBJECT_ID(ELSE r.statement_end_offset
                          END    QUOTENAME(TABLE_SCHEMA) + '.' + QUOTENAME(TABLE_NAME)
              - r.statement_start_offset
                      ), 'IsMSShipped'
                    / 2
                  ) = 0
          )+ 1),
           WHILE (@TableName IS NOT NULL) AND (@ColumnName IS NOT NULL)      BEGIN
              SET @ColumnName =
              (
                  SELECT MIN(QUOTENAME(COLUMN_NAME))
                  FROM     INFORMATION_SCHEMA.COLUMNS
                  WHERE         TABLE_SCHEMA    = PARSENAME(@TableName, 2)
        [SP_Name] = Coalesce(Quotename(Db_name(Query.dbid)) + N'.' + Quotename(Object_schema_name(Query.objectid, Query.dbid)) + N'.' + 
                  AND    TABLE_NAME    = PARSENAME(@TableName, 1)
                      AND    DATA_TYPE IN ('char', 'varchar', 'nchar', 'nvarchar', 'int', 'decimal')
                      AND    QUOTENAME(COLUMN_NAME) > @ColumnName
              )
      
              IF @ColumnName IS NOT NULL
      
              BEGIN
                  INSERT INTO @Results
                  EXEC
                  (
                      'SELECT ''' + @TableName + '.' + @ColumnName + ''', LEFT(' + @ColumnName + ', 3630) 
                      FROM ' + @TableName + ' (NOLOCK) ' +
                      ' WHERE ' + @ColumnName + ' LIKE ' + @SearchStr2
                  )
              END
          END    
      END
      
      SELECT ColumnName, ColumnValue FROM @ResultsQuotename(Object_name(Query.objectid, Query.dbid)), ''),
      r.percent_complete,
      start_time,
      CONVERT(VARCHAR(20), DATEADD(ms, [estimated_completion_time],
      GETDATE()), 20) AS [ETA_COMPLETION_TIME],
      CONVERT(NUMERIC(6, 2), r.[total_elapsed_time] / 1000.0 / 60.0) AS [Elapsed_MIN],
      CONVERT(NUMERIC(6, 2), r.[estimated_completion_time] / 1000.0 / 60.0) AS [Remaining_ETA_MIN],
      CONVERT(NUMERIC(6, 2), r.[estimated_completion_time] / 1000.0 / 60.0/ 60.0) AS [ETA_Hours],
      wait_type,
      wait_time/1000 as Wait_Time_Sec, 
      wait_resource
      from sys.dm_exec_requests r 
      cross apply sys.fn_get_sql(r.sql_handle) as Query where r.session_id>50 and command IN ('RESTORE DATABASE','BACKUP DATABASE', 'RESTORE LOG', 'BACKUP LOG')