Avatar billede simsen Mester
09. februar 2012 - 14:50 Der er 15 kommentarer og
1 løsning

Ændret dato visning i SQL Express

Hej,

Jeg har en sql express 2005 liggende på en server.

Serveren har haft nogle nedbrud. I den forbindelse har jeg lagt mærke til, at date felter har ændret sig.

Inden systemnedbruddet tog jeg en kopi af databasen og lagde på en tilsvarende database på min computer.

Og her står date felterne således:

25-06-2007 10:12:45

Efter systemnedbruddet på databasen står date felterne således:
6/25/2007 10:12:45 AM

Ikke nok med det men (og jeg har brugt hele dagen på at fejlfinde på den her fejl i mit program) har den også ændret (mindst) to varchar(64) felter:
fra 06.00 til 6:00 AM
fra 18.00 til 6:00 PM

Jeg er sikker på at det ikke er mit program der har ændret den, idet der også er et dato felt, hvor jeg skriver, hvis den er ændret (og det er den ikke siden 2007)...Og hvis det skulle være ændret af en person i selve databasen, så er vi kun to der har adgang....Og jeg ved med sikkerhed, jeg ikke har været inde i samtlige tabeller for at ændrer og jeg er 99,9% sikker på den anden heller ikke har :-)

Er der en eller anden indstilling i databasen jeg kan ændre, så jeg får de gamle værdier tilbage eller kan det vitterlig være rigtig jeg skal igennem hele databasen i alle rækker for at se, om der skulle være flere varchar felter den har ændret?
Avatar billede simsen Mester
09. februar 2012 - 15:06 #1
Hov jeg glemte at skrive, at jeg kan se at der er sket en update med patch 4 i går på SQL Express'en, og at jeg måske tror det er den, der har været inde og fucke up.

Men det ændrer ikke ved, at jeg er bekymret, for om der er flere felter (og her især vchar felter), der måske er ændret og om der er en løsning på problemet?
Avatar billede jokkejensen Novice
09. februar 2012 - 16:17 #2
prøv at skifte sprog :)

/J
Avatar billede Syska Mester
09. februar 2012 - 19:25 #3
enig med Jokke, lyder som en regional settings enten i Windows eller i SQL Setting.

mvh
Avatar billede simsen Mester
10. februar 2012 - 10:24 #4
Jeg er ligeglad med date felterne - om de er på det ene eller andet sprog. Det der bekymrer mig temmelig meget er at værdier i vchar kolonner har ændret sig efter en patch (patch4) opdatering?
Avatar billede jokkejensen Novice
10. februar 2012 - 12:00 #5
Kan du komme med et eksempel på ændringerne i vchar kolonnerne?

"
Ikke nok med det men (og jeg har brugt hele dagen på at fejlfinde på den her fejl i mit program) har den også ændret (mindst) to varchar(64) felter:
fra 06.00 til 6:00 AM
fra 18.00 til 6:00 PM
"

Dette giver ingen mening what so ever i en vchar kolonne, er du sikker på det ikke er typen "time"?

/J
Avatar billede Syska Mester
10. februar 2012 - 18:41 #6
Jeg tror ikke på det er varchar ... så er det temmelig sjovt at det også lige præcis er AM/PM og at 18 er blevet til 06 AM tyder kun i retning af TIME og regional/local setting.

Hvis du gemmer det i din database, så kan det også være din client som gemmer forkert, da du på klienten laver en TIME om til string og sender den til databasen.

Jeg forstår slet ikke hvorfor du gemmer TIME i en varchar. TIME er vist 4 byte. VARCHAR(64) kan fylde mere end den bør.

Hvis det endelig er en bug i en MS patch, så ville jeg oprette den her: http://connect.microsoft.com/ Så er jeg overbevist om de nok skal hjælpe dig med at fikse det.
Avatar billede jokkejensen Novice
11. februar 2012 - 09:55 #7
enig, tror bare du skal have sættet sproget på den database tilbage til dansk. Så slipper du for alle din "fejl data"..

/J
Avatar billede jokkejensen Novice
11. februar 2012 - 09:57 #8
desuden er jeg af den overbevisning at man bør kode sproguafhængigt op mod en database, eller trode slet ikke morderne serverscript brugte dens culture. Men nu er jeg ikke backend specialist.

/J
Avatar billede janus_007 Nybegynder
11. februar 2012 - 19:54 #9
Det lyder som en ændring af language/ locale på Sql Serveren, og underligt at det sker ifb. med et nedbrud, men alt er muligt i min optik.

Pyt med date-felterne, de er lagret korrekt og kan altid vises i det korrekte format som jokke også påpeger, det er straks værre med de varchar og TIME.. hmm btw. det er først i 2008 at feltet DATE og TIME kan specificeres. (det var faktisk i Sql Server 2005 beta, men blev fjernet igen :) )

anyway.... mon ikke du har en stored procedure, trigger eller function som udfra et givent insert splitter datetime til date og time og derved pga. at settings har ændret sig så lider under dette?

Det er typisk set at folk glemmer at sætte date time når de konvertere datetime til string, det kan gøre på 2 måder:

enten.. SET DATEFORMAT ydm , et format :)

eller:
convert(varchar(25), datetime, ... )

Set Dateformat er at foretrække udfra performance, specielt hvis der skal laves noget datetime manipulation. Hvorimod convert ofte anvendes lige før data sendes til requester.

Set Dateformat: http://support.microsoft.com/kb/173907
Avatar billede Syska Mester
12. februar 2012 - 15:03 #10
Hvis det er en VARCHAR(50) ... så er data jo allerede lavet om client side, og derfor ikke et server problem som jeg ser det lige nu, men kan jo tage fejl.

Tror vi skal vente til #simsen vender tilbage med mere info om problemet.

mvh
Avatar billede janus_007 Nybegynder
12. februar 2012 - 18:38 #11
Hvorfor mener du ikke det kunne være en sproc, trigger el. lign som gør noget med datetime på serveren?
Avatar billede Syska Mester
12. februar 2012 - 19:29 #12
#janus_007
Jeg mener ikke simsen bruger hverken trigger, sproc eller andre ting. ( From memory angående andre sprogmål )

Men det kan da ske. Der er bare ikke mange der bruger dem i dag, og jeg ser det ikke som en reel mulighed at det er ændre på serveren, men kunne nemmere måske være en ny klient som er kommet på i næsten samme tidsperiode som opdateringen er kommet.

mvh
Avatar billede simsen Mester
21. februar 2012 - 08:20 #13
Så er jeg langt om længe tilbage.

I havde ret - deres servermand havde ændret regional settings til at være engelsk.

Men den ER altså god nok her de to linjer:

2    Arbejdsdag Begynd    06:00    25-06-2007 10:12:45
3    Arbejdsdag Slut    18:00    25-06-2007 10:12:45

og så hvordan de er defineret:
id    int    Unchecked
name    varchar(64)    Checked
value    text    Checked
modified    datetime    Unchecked

Og jeg undskylder - det var ikke en varchar men en text felt - og nej det mener jeg ikke gør det anderledes?

Men smid et svar - regional settings gjorde udslaget.

buzzzz
Og så husker du forkert. Jeg har faktisk brugt triggers i et projekt på et tidspunkt. Men fik så af en klog mand herinde at vide, at det var forældet og det skulle jeg ikke bruge.

Nu er det her projekt så et, jeg har fået overdraget, men har været inde og tjekke (120 gange faktisk) om der skulle ligge en trigger og kan ikke se dette skulle være tilfældet. Så bekymret er jeg stadig.
Avatar billede Syska Mester
21. februar 2012 - 09:15 #14
#simsen
Jamen, er stående er også hvad jeg husker. Jeg tror ikke i de mange år jeg har været herinde at der er nogen der har anbefalet Triggers. Der er dog nogen der har sagt det var en mulighed.

Du plejer dog at følge "best practice" og hvad folk herinde siger.

Der er heller ikke mange i dag som bruger SP ... da man ikke længere ser dedikerede DBA'er ... så er der mange grunde til at jeg lavede mine antagelser :-) ... men ja, de kunne have været helt forkerte :-)

Men svar hvis noget af mit kunne bruges.

mvh
Avatar billede Syska Mester
21. februar 2012 - 09:15 #15
svar
Avatar billede Syska Mester
21. februar 2012 - 12:48 #16
Jokke skulle vist have haft halvdelen: http://www.eksperten.dk/spm/957870
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

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



IT-JOB

Politiets Efterretningstjeneste

Netværks- og/eller firewallspecialister i PET

Politiets Efterretningstjeneste

Centerchef til Infrastruktur i PET

Optum Computational Engineering ApS

SW developer

Udviklings- og Forenklingsstyrelsen

Systemejer til nyudviklede systemer