1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies. Weitere Informationen
  2. Willkommen im Forum für alle Datenbanken! Registriere Dich kostenlos und diskutiere über DBs wie Mysql, Oracle, Sql-Server, Postgres, Access uvm
    Information ausblenden

SQL-Script auf Server "finden"

Dieses Thema im Forum "Microsoft SQL Server" wurde erstellt von akr6_, 22 September 2010.

  1. akr6_

    akr6_ Benutzer

    Hallo,

    ich habe eine Anwendung, welche via SQL auf eine SQL-Datenbank zugreift. Nun würde ich gerne einer dieser Abfragen auf dem SQL-Server "sehen", damit ich mir so ein Script als Vorlage nehmen kann. Hm, ich glaube, das ist blöd formuliert.

    Also, in der Anwendung kann ich via GUI diverse Sachen vorgeben, was dann auf der Datenbank zu einer Abfrage führt, und Ergebnisse liefert. Und genau diese Abfrage würde ich gerne auf dem SQL-Server einsehen können. In der Anwendung selbst geht das leider nicht.

    Danke

    Grüße

    Andreas
     
  2. Charly

    Charly Datenbank-Guru

    AW: SQL-Script auf Server "finden"

    Hallo,

    Mit dem SQL-Profiler geht das. Einfach die Instanz angeben und auf Start drücken. Dann mit der Anwendung die Abfragen auf dem Server ausführen und für jede Anfrage auf dem Server gibt es eine neue Zeile (gnz grob ausgedrückt)

    Gruß Charly
     
  3. akr6_

    akr6_ Benutzer

    AW: SQL-Script auf Server "finden"

    Hallo,

    da war ich schon, aber da konnte ich nicht wirklich ein SQL-Script erkennen. Habe den Profiler gestartet, dann die Abfrage ausgeführt, und den Profiler wieder gestoppt. Aber außer Commit TRAN und so kann ich da nix erkennen. Gibt es dort Einstellung, womit ggf. nur Scripte aufgezeichnet werden.

    Danke

    Grüße

    Andreas
     
  4. Charly

    Charly Datenbank-Guru

    AW: SQL-Script auf Server "finden"

    Ich habe mal mit VB folgendes auf dem SQL-Server abgefragt.


    Code:
    Public Sub TransactQuery()
          Dim strSQL As String
          strSQL = "INSERT INTO Einheit (Kurzbez, Beschreibung) VALUES ('Stk','Stück');"
          Using cn As New SqlConnection(My.Settings.ConnectionString)
             cn.Open()
             Using txn As SqlTransaction = cn.BeginTransaction
                Dim cmd As New SqlCommand(strSQL, cn, txn)
                Dim intRecordsAffected As Integer = cmd.ExecuteNonQuery()
                txn.Rollback()
             End Using
          End Using
       End Sub
    Das hat folgende Zeilen auf dem Profiler erzeugt.

    Code:
    SET TRANSACTION ISOLATION LEVEL READ COMMITTED;BEGIN TRANSACTION
    INSERT INTO Einheit (Kurzbez, Beschreibung) VALUES ('Stk','Stück');
    IF @@TRANCOUNT > 0 ROLLBACK TRANSACTION
    Ich habe das trace in eine Datenbanktabelle exportiert um die Zeilen hier einzufügen. Es währe bei Dir auch einen Versuch wert das Ergebnis mal zu exportieren und zu schauen was in der Exporttabelle alles erscheint.

    Gruß Charly

    PS: Wenn da auch keine ordentlichen Daten rauskommen währen mehr Details zu der Anwendung und der Art der Abfragen hilfreich.
     
  5. akr6_

    akr6_ Benutzer

    AW: SQL-Script auf Server "finden"

    Hi,

    das mit dem Trace speichern hab ich auch gerade versucht, da ich zuerst den Trace in eine Datei laufen hab. Ja, was macht die Anwendung. Ich suche über eine GUI nach Daten, welche in einem bestimmten Zeitfenster liegen müssen, also z.B. vom 22.06.2010 bis 21.09.2010. Ferner werden noch zwei Werte geprüft. Die Anwendung selbs nennt sich Mailminder. Und das im Hintergrund ist ein MS SQL Server 2005.

    Danke

    Grüße

    Andreas
     
  6. Charly

    Charly Datenbank-Guru

    AW: SQL-Script auf Server "finden"

    Hallo,

    Ich würde noch folgendes prüfen.

    1. Welche Instanz wird von der Anwendung genutzt (die gleiche wie vom Profiler?).
    2. Welche Rechte hast du auf der Datenbank und dem Server.

    Es gibt da noch was anderes.

    Das Progamm Wireshark (Einfach Googlen) fängt sämtlichen Netzwerkverkehr ab.
    Unter anderm auch den vom SQL-Server und seinen Clients. Ich habe das selber schon gemacht. Man sollte sich allerdings mit dem Ding auskennen (Das fängt schon bei der Installation an). Das Programm ist ein Netzwerkanalyse-Tool mit dem man auch komplexe Filter setzten kann. So z.B. welche Rechner mit welchen Ports überwacht werden sollen. Mann kann damit auch den Netzwerkverkehr zwischen SQL-Client und Server filtern. Voraussetzung ist das die Komunikation zwischen den beiden nicht verschlüsselt ist. Dann bekommt man in den Daten der TCP/IP Pakete die SQL-Scripts in Textform geliefert.

    Das würde ich aber nur versuchen wenns wirklich wichtig ist.
    Und für die Wireshark-Maschine kein Produktivsystem nehmen.

    Gruß Charly
     
  7. akr6_

    akr6_ Benutzer

    AW: SQL-Script auf Server "finden"

    Hi,

    also mit der Instanz müsste passen, und auf dem SQL-Server bin ich Admin. Ich sehe auch im Profiler diverse Aktivitäten, aber halt nicht DAS SQL-Script, welches ich da suche. Das hier sehe ich:

    IF @@TRANCOUNT > 0 ROLLBACK TRAN
    ROLLBACK TRAN
    IF @@TRANCOUNT > 0 COMMIT TRAN

    Muss ich in der Vorlage noch mehr ein- oder umstellen?

    Grüße

    Andreas
     
  8. Charly

    Charly Datenbank-Guru

    AW: SQL-Script auf Server "finden"

    Versuchs mal mit dieser Vorlage.

    TSQL_Replay

    Zeichnet detaillierte Informationen zu Transact-SQL-Anweisungen auf, die erforderlich sind, falls die Ablaufverfolgung wiedergegeben wird. Verwenden Sie diese Vorlage für iterative Optimierungen, wie z. B. Vergleichstest.


    Info habe ich aus
    http://msdn.microsoft.com/de-de/library/ms190176(v=SQL.90).aspx

    Gruß Charly
     
  9. akr6_

    akr6_ Benutzer

    AW: SQL-Script auf Server "finden"

    Hm,

    das hab ich nun gemacht, aber das Einzige, was ich so an "Script" sehen kann ist das hier:

    declare @p2 int
    set @p2=180150479
    declare @p5 int
    set @p5=-1
    exec sp_cursorexecute 1073741825,@p2 output,16,8193,@p5 output,''2010-09-23 15:22:48:293'',104
    select @p2, @p5

    Das hat nicht wirklich viel mit einer SQL-Abfrage zu tun, welche ich so kenne. Kann man so eine Abfrage irgendwie unter den "Langläufern" finden? Dann würde ich auf der Testmaschine eine Abfrage starten, die recht lange läuft, und den Weg versuchen.

    Danke schon mal,

    Grüße

    Andreas
     
  10. Charly

    Charly Datenbank-Guru

    AW: SQL-Script auf Server "finden"

    Doch doch,

    Das sind Deklarationen und Zuweisungen für eine Stored Procedure namens sp_cursorexecute.

    Und jetzt wirds kompliziert. Was sp_cursorexecute so genau macht ist nicht so leicht herauszufinden.

    Hier steht genau beschrieben was man damit anstellen kann:
    http://msdn.microsoft.com/de-de/library/ff713984.aspx

    Ich melde mich nochmal wenn ich einen Weg gefunden habe ob man hier noch mehr infos mit dem Profiler rausholen kann

    Gruß Charly
     
Die Seite wird geladen...

Diese Seite empfehlen