Avatar billede dougheffernan Nybegynder
23. januar 2006 - 14:49 Der er 14 kommentarer og
1 løsning

Disable/enable en trigger

Er der en eller anden måde hvorpå man kan disable en trigger på en tabel?
Vi har f.eks. en trigger på en tabel hvori der skrives temperaturer hver ½ time.
Der er så sat en trigger på når temperaturen i rummet bliver for høj, så sendes der en mail.
Problemet er når det bliver sommerferie, så skulle det være muligt for vedkommende, som står for at rykke ud når temperaturen overskrides, at disable triggeren. Men som jeg ser det kan man kun gøre det ved at slette/fjerne triggeren i SQL Server Manager.
Avatar billede dr_chaos Nybegynder
23. januar 2006 - 14:52 #1
det kan du med sql på denne måde:
alter table tabelnavn disable trigger triggernavn
Avatar billede dougheffernan Nybegynder
23. januar 2006 - 14:58 #2
Puha, er det muligt at fyre sådan en kommando af indefra en Access database via. f.eks. noget VBA kode?
Avatar billede dougheffernan Nybegynder
23. januar 2006 - 14:58 #3
Hvordan kan man (i SQL Server Manager) se at triggeren er disabled?
Avatar billede dr_chaos Nybegynder
23. januar 2006 - 15:02 #4
alter table tabelnavn disable trigger triggernavn afvikles ligesom du vil gøre med normal sql.

Når en trigger er disabled står der
alter table tabelnavn disable trigger triggernavn
i bunden af den.
Avatar billede dougheffernan Nybegynder
23. januar 2006 - 15:17 #5
Kan man også "injecte" en trigger ind i en SQL Server database fra Access (VBA/forespørgsel)?
Avatar billede dr_chaos Nybegynder
23. januar 2006 - 15:22 #6
muligvis afvikler du f.eks. stored procedures eller sql sætninger fra access databasen ?
JEg har ikke selv prøvet det men jeg kan forestille mig at man kan gøre det på samme måde.
Avatar billede dougheffernan Nybegynder
23. januar 2006 - 15:29 #7
Nej, jeg afvikler p.t. INTET fra Access databasen.
Var ikke klar over at man KUNNE enable/disable en trigger fra Access....har ingen ide om hvordan man skulle kunne sætte en trigger ind i SQL Server database fra en Access database! :(
Avatar billede dougheffernan Nybegynder
23. januar 2006 - 15:29 #8
Triggers, ligger de i en system tabel eller sådan noget?!
Avatar billede dougheffernan Nybegynder
23. januar 2006 - 15:33 #9
Jeg forestiller mig en Access formular med bla. en Gruppeboks, "TriggerAktiveret" med 2 radioknapper: "Ja" og "Nej".
Når der navigeres til næste post, skal triggeren enten slettes eller oprettes. Men hvordan?!
Avatar billede dr_chaos Nybegynder
23. januar 2006 - 15:36 #10
jeg kan kun finde dette eksempel:
http://www.databasejournal.com/features/mssql/article.php/1477431
hvis det ikke kan bruges skal du evt. prøve at oprette et nyt spørgsmål i access kategorien.
Avatar billede dougheffernan Nybegynder
26. januar 2006 - 11:49 #11
Jeg har kigget lidt på dit eksempel, og får en fejl i linien
  oServer.Connect

I det link du har postet er der et andet link som viser disse 2 Stored Procedures, som jeg vist nok kunne bruge i stedet, jeg ved dog bare ikke hvordan man fra Access "aktiverer" en Stored Procedure!

sp_msforeachtable "ALTER TABLE MinTabel DISABLE TRIGGER  all"
sp_msforeachtable "ALTER TABLE MinTabel ENABLE TRIGGER  all"
Avatar billede dougheffernan Nybegynder
26. januar 2006 - 11:52 #12
Koden som den ser ud p.t.

Function EnableTrigger()

Dim oServer As SQLDMO.SQLServer
Dim oTable As SQLDMO.Table
Dim oTrigger As SQLDMO.Trigger
Dim DBName As String

DBName = "MinDatabase"

Set oServer = CreateObject("SQLDMO.SQLServer")

  oServer.LoginSecure = True
  oServer.Connect

  For Each oTable In oServer.Databases(DBName).Tables
    For Each oTrigger In oTable.Triggers
      oTrigger.Enabled = True
    Next
  Next

  oServer.Disconnect
  Set oServer = Nothing
End Function

Function DisableTrigger()

Dim oServer As SQLDMO.SQLServer
Dim oTable As SQLDMO.Table
Dim oTrigger  As SQLDMO.Trigger
Dim DBName As String

DBName = "MinDatabase"

Set oServer = CreateObject("SQLDMO.SQLServer")

  oServer.LoginSecure = True
  oServer.Connect

  For Each oTable In oServer.Databases(DBName).Tables
    For Each oTrigger In oTable.Triggers
      oTrigger.Enabled = False
    Next
  Next

  oServer.Disconnect
  Set oServer = Nothing

End Function
Avatar billede dr_chaos Nybegynder
26. januar 2006 - 12:09 #13
jeg må indrømme at jeg ikke kan hjælpe dig med det.
Jeg har ikke prøvet at arbejde med det.
Prøv at stille et spørgsmål om det i access kategorien.
Der er der måske nogen som kan hjælpe dig.
Avatar billede dougheffernan Nybegynder
26. januar 2006 - 12:20 #14
Det prøver jeg på, men du skal i hvert fald have mange tak (og point) for at hjælpe mig på vej. Hvis du lægger et Svar, skal jeg nok tildele pointene.
Avatar billede dr_chaos Nybegynder
26. januar 2006 - 12:21 #15
svar :)
håber du får det løst
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester