Avatar billede boris Mester
03. juli 2003 - 10:37 Der er 6 kommentarer og
1 løsning

styre en applikation ved hændelse i MS SQL

Kan man på forholdsvis enkel måde få en MS SQL server til at køre et program, f.eks. en bat-fil, hver gang en bestemt tabel opdateres?
(Kun point til svaret 'ja' og en forståelig brugsanvisning, som er nem at implementere.)
Eksempel: I en ordretabel opdateres eller oprettes en ordrelinie fra f.eks. ODBC. Når det sker, skal en batfil køres.
Avatar billede bennytordrup Nybegynder
03. juli 2003 - 10:57 #1
Der kan ikke svares ubetinget ja på et sådant spørgsmål - det springende punkt er "på forholdsvis enkel måde". Hvad der er enkelt for en er ikke nødvendigvis enkelt for en anden.

Desuden må du ikke på forhånd sige, at du kun giver points til svaret ja - hvad hvis nu, dit spørgsmål ikke kan besvares med ja? Hvis jeg nu opretter spørgsmålet "Kan jeg få lov at se kildekoden til MS SQL Server 2000. Jeg giver kun points for svaret ja", så vil jeg aldrig komme af med de points.

Omkring dit spørgsmål, så vil jeg pege på triggere i forbindelse med f.eks den extended stores procedure xp_cmdshell til afvikling af en bat-fil.

create trigger OrdreOpdateringEllerOprettelse
after insert, update
as
  exec master..xp_cmdshell 'Navn.bat'
Avatar billede boris Mester
03. juli 2003 - 11:09 #2
Jeg kan godt forstå synspunktet. Det jeg tænkte på, var svar, der ikke kan bruges til noget, og derfor er lidt overflødige.
Det du skriver lyder som noget af det rigtige!
Det er MS SQL 2000 og det ligger på en Windows 2000 (terminal)server.
Kan man bare gå ind under tabellen og oprette en trigger? Og hedder det noget andet end xp_cmdshell, når det ikke er xp?
Avatar billede bennytordrup Nybegynder
03. juli 2003 - 11:10 #3
det hedder xp_cmdshell, fordi det er en eXtended Procedure.
Avatar billede bennytordrup Nybegynder
03. juli 2003 - 11:10 #4
Jeg ved ikke, om den kan oprettes gennem Enterprise Manager, men det burde det kunne. Jeg plejer at bruge Query Analyzer til at oprette ting og sager.
Avatar billede boris Mester
03. juli 2003 - 11:32 #5
Jeg kom åbenbart til at trykke svar, da jeg kommenterede dit første svar.
Nu har jeg forsøgt, men foreløbig ser det ikke ud som om der sker noget. Der er ingen syntaksfejl, men filen bliver tilsyneladende heller ikke eksekveret.
Avatar billede bennytordrup Nybegynder
03. juli 2003 - 11:40 #6
hvad med exec master..xp_cmdshell 'c:\navn.bat'

Husk, at bat-filen skal kunne findes af SQL Serveren. Stier angivet i xp_cmdshell er stier lokalt på SQL Server maskinen.
07. juli 2003 - 14:20 #7
Og så husk lige at det ikke er sikkert at du kan få rettigheder til at anvende xp_cmdshell på dine kunders SQL Server.
Hvis man kan udføre xp_cmdshell, kan man jo "komme til" at 1) formatere c:
2) se andre servere i netværket (og formattere disses c:)
mvh
Henrik
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