none
zeitgesteuerter Zugriff für User RRS feed

  • Frage

  • Hallo,

    wir möchten gern verhindern, dass User während unserer nächtlichen Updateroutinen auf dem Datawarehouse Abfragen ausführen. Kann man da irgendetwas zeitgesteuertes einrichten? 

    Gruß Ulf

    Donnerstag, 10. Oktober 2013 05:41

Antworten

  • Hallo Ulf,

    eventuell kannst du die Datenbank in den SingleUserMode schalten. Die Updateroutinen durchführen und anschließend wieder in den MultiUser Mode schalten?

    alter database <deineDB> set single_user with rollback immediate

    alter database <deineDB> set multi_user

    Durch die WITH ROLLBACK IMMEDIATE werden alle offenen Transaktionen zurückgerollt.

    Hier noch der Link zur MSDN

    http://msdn.microsoft.com/de-de/library/bb522682.aspx

    Viele Grüße

    Stefan


    • Bearbeitet Stefan Wimmer (Bobbl) Donnerstag, 10. Oktober 2013 06:26 Formatierung und Ergänzung
    • Als Antwort markiert ufl Donnerstag, 10. Oktober 2013 15:11
    Donnerstag, 10. Oktober 2013 06:22
  • Hallo,

    mir würde dazu 2 Dinge einfallen. Entweder du verwendest einen Logon Trigger oder du läßt tatsächlich die User zu, vermindert aber die Ressourcen mittels der Ressourcenkontrolle.

    Der Logon Trigger würde ungefähr so aussehen:

    Create TRIGGER Logontrigger
    ON ALL SERVER WITH EXECUTE AS 'sa'
    FOR LOGON
    AS
    BEGIN
    If ORIGINAL_LOGIN() not in ('SA', 'DOM\Administrator') 
     AND (CONVERT(time, GETDATE()) between '14:00:00' and  '15:04:00')
    Rollback
    END

    Andreas
    -------------------------------

    Website: ppedv AG
    Blog: Blog.fumus.de


    • Bearbeitet Fumus Donnerstag, 10. Oktober 2013 14:00
    • Als Antwort markiert ufl Donnerstag, 10. Oktober 2013 15:10
    Donnerstag, 10. Oktober 2013 13:12

Alle Antworten

  • Hallo Ulf,

    eventuell kannst du die Datenbank in den SingleUserMode schalten. Die Updateroutinen durchführen und anschließend wieder in den MultiUser Mode schalten?

    alter database <deineDB> set single_user with rollback immediate

    alter database <deineDB> set multi_user

    Durch die WITH ROLLBACK IMMEDIATE werden alle offenen Transaktionen zurückgerollt.

    Hier noch der Link zur MSDN

    http://msdn.microsoft.com/de-de/library/bb522682.aspx

    Viele Grüße

    Stefan


    • Bearbeitet Stefan Wimmer (Bobbl) Donnerstag, 10. Oktober 2013 06:26 Formatierung und Ergänzung
    • Als Antwort markiert ufl Donnerstag, 10. Oktober 2013 15:11
    Donnerstag, 10. Oktober 2013 06:22
  • Hallo,

    mir würde dazu 2 Dinge einfallen. Entweder du verwendest einen Logon Trigger oder du läßt tatsächlich die User zu, vermindert aber die Ressourcen mittels der Ressourcenkontrolle.

    Der Logon Trigger würde ungefähr so aussehen:

    Create TRIGGER Logontrigger
    ON ALL SERVER WITH EXECUTE AS 'sa'
    FOR LOGON
    AS
    BEGIN
    If ORIGINAL_LOGIN() not in ('SA', 'DOM\Administrator') 
     AND (CONVERT(time, GETDATE()) between '14:00:00' and  '15:04:00')
    Rollback
    END

    Andreas
    -------------------------------

    Website: ppedv AG
    Blog: Blog.fumus.de


    • Bearbeitet Fumus Donnerstag, 10. Oktober 2013 14:00
    • Als Antwort markiert ufl Donnerstag, 10. Oktober 2013 15:10
    Donnerstag, 10. Oktober 2013 13:12
  • Der Trigger gefällt mir. Damit testen wir mal.

    Danke Ulf

    Donnerstag, 10. Oktober 2013 15:10