Announcement

Collapse
No announcement yet.

Alle Trigger per Script deaktivieren?

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

  • Alle Trigger per Script deaktivieren?

    Hallo,

    ich stoße immer wieder auf das Problem, daß ich auf einer Datenbank (SQL-Server 2005) eine ganze Liste an Triggern deaktivieren muß. Die Namen der Trigger hab ich - gibt es eine Möglichkeit, diese per Script zu deaktivieren/aktivieren?

    Ich hoffe, Ihr könnt mir weiterhelfen,

    Gruß, Avhy.

  • #2
    Beispiel aus BOL

    USE AdventureWorks;
    GO
    DISABLE TRIGGER Person.uAddress ON Person.Address;
    GO

    Comment


    • #3
      Hallo ebis,

      das hab ich mittlerweile auch gefunden. Aber da muß ich ja dann trotzdem die Trigger der DB erstmal rauslesen (geht über das Software-Gateway) und dann darauf abgestimmt die Scripte basteln.

      Schön wäre "Alles aus" - "Alles an", ohne daß ich vorher die Namen und Tabellen wissen müsste.. bzw. wenn ich Namen/Tabellen rauslese und die dann in das Script automatisch einbinden könnte....

      Comment


      • #4
        z.b. über eine sp mit einem Cursor:
        -- Drop stored procedure if it already exists
        IF EXISTS (
        SELECT *
        FROM INFORMATION_SCHEMA.ROUTINES
        WHERE SPECIFIC_SCHEMA = N'dbo'
        AND SPECIFIC_NAME = N'xsp_ableTrigger'
        )
        DROP PROCEDURE dbo.xsp_ableTrigger
        GO
        CREATE PROCEDURE dbo.xsp_ableTrigger
        @Schema SYSNAME = NULL,
        @Switch BIT = 0,
        @Debug BIT = 1
        AS
        BEGIN
        DECLARE @Trigger SYSNAME
        , @Table SYSNAME
        , @Stmt NVARCHAR (512) ;
        DECLARE Update_Trigger_Cursor CURSOR FAST_FORWARD FOR
        SELECT NAME as TriggerName
        , Object_Name (Parent_ID) AS TableName
        FROM sys.Triggers
        OPEN Update_Trigger_Cursor;
        FETCH NEXT FROM Update_Trigger_Cursor INTO @Trigger, @Table;
        WHILE @@FETCH_STATUS = 0
        BEGIN
        SET @Stmt = CASE WHEN @Switch = 0 THEN N'ENABLE ' ELSE N'DISABLE' END + N'TRIGGER '
        + CASE WHEN @Schema IS NOT NULL THEN @Schema +N'.' ELSE N'' END + @Trigger
        + N' ON (' + CASE WHEN @Schema IS NOT NULL THEN @Schema +N'.' ELSE N'' END
        + @Table + N')';
        IF @Debug = 1
        PRINT @Stmt
        ELSE
        EXEC sp_ExecuteSQL @Stmt
        FETCH NEXT FROM Update_Trigger_Cursor INTO @Trigger, @Table;
        END;
        CLOSE Update_Trigger_Cursor;
        DEALLOCATE Update_Trigger_Cursor;
        END
        GO
        -- Example to execute the stored procedure
        EXECUTE dbo.xsp_ableTrigger NULL, 0, 1

        Comment


        • #5
          Perfekt! Hab bei mir zwar noch die Klammern vor/nach dem Tabellennamen rausnehmen müssen, weil das dem SQL-Server nicht soschmeckte beim Ausführen - aber ansonsten klappte es auf Anhieb.

          Danke für Deine Mühe!

          WO lernt man denn sowas?

          Comment


          • #6
            Originally posted by Avhy View Post
            Perfekt! Hab bei mir zwar noch die Klammern vor/nach dem Tabellennamen rausnehmen müssen, weil das dem SQL-Server nicht soschmeckte beim Ausführen - aber ansonsten klappte es auf Anhieb.
            OK, die Klammern sind Blödsinn...
            Originally posted by Avhy View Post
            WO lernt man denn sowas?
            ganz altmodisch:
            http://www.amazon.de/Inside-Server-P...6713117&sr=8-1

            Comment

            Working...
            X