Avatar billede bigbird Nybegynder
29. april 2007 - 21:28 Der er 9 kommentarer

Aflæse fra en SQL og indsætte i en anden

Hejsa

Jeg skal have lavet en udtræk fra en SQL database hvert 5 minut, og skal blot aflæse en værdi. Denne værdi skal så gemme i en anden database dog med en tidsstempling...

Det skulle gerne kunne afvikles fra en cmd, således at jeg kunne lægge det ind i et batch script, og afvikle det hvert 5 minut.


Baggrund...
I den ene database gemmes der en værdi, men det program der gemmer den laver ikke en tidstempling, så der står kun en værdi i det felt, altså ingen historik..

Ved at smide det over i en anden database, samt tilføje en tidstempling, kan vi få historik på værdien...

Hvordan tilføjer jeg en tidstempling midt i en SQL sætning ?
Hvordan smider jeg dataen over i en anden database?
Avatar billede hrc Mester
29. april 2007 - 21:46 #1
Du skal have det over i en anden database? Det ved jeg ikke hvordan man gør, men skal du have indsat den i en anden tabel er det ligetil:
1. Enten opretter du en tabel med et dato-felt som autoindsætter today()
2. Alternativt bruger du noget lignende dette:
insert into tabel1 (dato, vaerdi) select today(), vaerdi from gurligris where ...

Kan godt finpudse det lidt hvis det faktisk er det du mener - og du tror det kan bruges til noget.
Avatar billede mainz Nybegynder
29. april 2007 - 22:32 #2
For at smide det over i en anden database, kan du bruge følgende:

SELECT '' FROM <en anden database på den samme serverinstans>..TABLENAME WHERE ... og bruge INSERT INTO bagefter
Avatar billede mainz Nybegynder
29. april 2007 - 22:35 #3
Med hensyn til at det skal afvikles hvert 5. minut, kan du f.eks. via en scheduled task eller lign. eksekvere et SQL-script via en .cmd-fil, som eksekverer en SP i databasen:

sqlcmd -S .\SQLExpress -i <sti til dit script>

Hvis det er SQL 2000, kan du bruge osql
Avatar billede bigbird Nybegynder
30. april 2007 - 01:01 #4
Så der findes direkte en funktion i SQL der hedder today(), returnere den blot datoen eller er det en datetime hvor der også er timer og minuter med ?

Så noget i denne stil ?

insert into tabel1 (dato, status) select today(), status from Services where ID=server03
Avatar billede bigbird Nybegynder
30. april 2007 - 15:41 #5
->hrc
Enten opretter du en tabel med et dato-felt som autoindsætter today()

Dette ville være det smarteste :) Hvordan gøres dette ? Når jeg prøver at definer "Default Value or Binding" is Manageren, så får jeg fejl at det ikke er korrekt udfyldt.. Feltet er et "datetime"
Avatar billede bigbird Nybegynder
30. april 2007 - 15:51 #6
Her er min SQL
INSERT into ServiceUptime (SERVICENAME, DISPLAYNAME, STATUS, PARENTDEVICENAME, SERVICEID,TID)

SELECT ServicesDefinition.SERVICENAME, ServicesDefinition.DISPLAYNAME, Services.STATUS, Services.PARENTDEVICENAME, Services.SERVICEID
FROM Services INNER JOIN ServicesDefinition
ON Services.SERVICEDEFINITIONID = ServicesDefinition.SERVICEDEFINITIONID
SELECT today()

Fejlen jeg får er:
Msg 120, Level 15, State 1, Line 1
The select list for the INSERT statement contains fewer items than the insert list. The number of SELECT values must match the number of INSERT columns.
Msg 195, Level 15, State 10, Line 6
'today' is not a recognized built-in function name.

Ved godt at man ikke må have 2 x Select i samme sætning, men den brokker sig alligvel ovre at today() ikke findes...
Avatar billede bigbird Nybegynder
30. april 2007 - 16:07 #7
Løst :)

Det hed getdate() istedet for today(), som vist er noget Pascal hvis jeg tænker mig om :)

Men laver du et svar hrc. så kan du få point :)
Og hvis jeg kan dele point, så også mainz i forbindelse med at skrive til anden database :)
Avatar billede mainz Nybegynder
30. april 2007 - 17:08 #8
Du kan sagtens dele pointene, men kun hvis mit bud hjalp dig
Avatar billede bigbird Nybegynder
07. maj 2007 - 22:47 #9
Jeg mangler et "svar" fra jer begge, så jeg kan lukke tråden :)
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