Announcement

Collapse
No announcement yet.

Analyse einer Prozedur

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Analyse einer Prozedur

    Hallo,

    ist es beim MS SQL Server 2005 irgendwie möglich eine Prozedur nach den SQL Statements zu analysieren?

    Folgendes Beispiel:

    CREATE PROCEDURE [dbo].[test]

    AS
    BEGIN
    DECLARE
    @test int
    @counter int,
    @run int,
    @v_sqlstmt nvarchar(2000),
    BEGIN
    SET @counter = 1
    SET @run = 20

    WHILE @run >= @counter
    BEGIN

    set @sqlstmt = N'select @test = Spalte_2 from testtablelle where ID = '+convert(varchar(30), @run)+''
    EXEC(sqlstmt)
    end
    set @run = @run -1
    end


    Nachdem ich die Prozedur ausgefürht habe würde ich gerne in einer Datei oder Tablle die Statements, mit aufgelösten Variablen, anschauen die ausgeführt wurden sind.
    So das ich z.B. folgesndes erhalte:

    select @test = Spalte_2 from testtablelle where ID = 20
    select @test = Spalte_2 from testtablelle where ID = 19
    select @test = Spalte_2 from testtablelle where ID = 18
    .
    .
    .
    .

    Erstmal danke für eine Rückmeldung

  • #2
    [HIGHLIGHT="sql"]CREATE PROCEDURE [dbo].[test]
    ( @Debug Bit = 1
    )
    AS
    BEGIN
    DECLARE
    @test int
    @counter int,
    @run int,
    @v_sqlstmt nvarchar(2000),
    BEGIN
    SET @counter = 1
    SET @run = 20

    WHILE @run >= @counter
    BEGIN
    set @sqlstmt = N'select @test = Spalte_2 from testtablelle where ID = '+convert(varchar(30), @run)+''
    IF @Debug = 1
    PRINT @sqlstmt
    ELSE
    EXEC @sqlstmt
    end
    set @run = @run -1
    end
    [/HIGHLIGHT]
    [HIGHLIGHT="sql"]exec dbo.test 1 [/HIGHLIGHT]
    gibt die Statements im Meldungsfenster aus
    [HIGHLIGHT="sql"]exec dbo.test 0 [/HIGHLIGHT]
    führt die Statements aus


    select @test = Spalte_2 from testtablelle where ID = 20
    select @test = Spalte_2 from testtablelle where ID = 19
    select @test = Spalte_2 from testtablelle where ID = 18
    Zuletzt editiert von ebis; 09.04.2008, 10:47. Reason: tags

    Comment


    • #3
      Danke für deine Antwort.
      Das wäre zumindest mal ein Ansatz.

      Gibt es den noch eine "einfachere" Lösung/Weg?
      Sonst müsste ich ja jede Prozedur (mit bis zu 200 oder mehr Statements) ändern.

      Comment


      • #4
        Originally posted by split View Post
        Danke für deine Antwort.
        Das wäre zumindest mal ein Ansatz.

        Gibt es den noch eine "einfachere" Lösung/Weg?
        Sonst müsste ich ja jede Prozedur (mit bis zu 200 oder mehr Statements) ändern.
        z.B.
        Stored Procedure schreiben, welche
        a) die Definitionen aller andere SP's ausliest,
        b) den Parameter @Debug einfügt
        c) bei jedem Exec @SqlStmt die entsprechende Bedingung hinzufügt
        d) und das ganze dann mit ALTER zurück in die DB schreibt

        dabei könnten die in http://www.simple-talk.com/sql/t-sql...ray-workbench/ beschriebenen Funktionen hilfreich sein...
        Zuletzt editiert von ebis; 09.04.2008, 14:32. Reason: Vervollständigen

        Comment


        • #5
          Super.
          Danke für den Hinweis.

          Comment


          • #6
            statische Statements

            Da bin ich es nochmal.

            Ist eine Auflösung der Variablen auch bei statischen SQL Statements möglich?
            1. CREATE PROCEDURE [dbo].[test]
            2. AS
            3. BEGIN
            4. DECLARE
            5. @test1 int
            6. @test2 int
            7. @counter int,
            8. @run int,
            9. BEGIN
            10. SET @counter = 1
            11. SET @run = 20
            12. WHILE @run >= @counter
            13. BEGIN
            14. insert into test(spalte1, spalte2, spalte3) values(getdate(),@test1,@test2)
            15. end
            16. end
            17. set @run = @run -1
            18. end

            Comment

            Working...
            X