SqlDateTime overflow. Skal være mellem 1/1/1753 00:00:00 og 31/12/9999 23:59:59
Da jeg udførte opdateringsoperationen fra hjemmesiden, fik jeg hele tiden en fejl, og jeg troede, det var XML-konfigurationen, eller at noget var gået galt, da SQL-sætningen blev udført
Jeg prøvede at bruge SQL query analyzer til at hente de genererede SQL-sætninger og fandt ud af, hvad problemet er med korrekt eksekvering? SQL-udsagnet er som følger:
exec sp_executesql N'INSERT INTO dbo. LeanLogs (Version, OrganizationId, CustomInfoId, LastLeanAlarmType, NowLeanAlarmType, InsertTime, TreatedTime) VALUES (@p0, @p1, @p2, @p3, @p4, @p5, @p6); vælg SCOPE_IDENTITY()',N'@p0 int,@p1 int,@p2 int,@p3 int,@p4 int,@p5 datetime,@p6 datetime',@p0=1,@p1=35,@p2=12,@p3=10,@p4=10,@p5='2017-09-13 13:09:41',@p6=NULL SqlDateTime overflow. En resolution skal --- mellem 1/1/1753 kl. 00:00:00 og 31/12/9999 kl. 23:59:59
Fejlårsag
Hvis værdien af tidstypen, der sendes til databasen, er NULL, eller når databasen indsættes eller opdateres for DateTime.MinValue, er datetime-feltværdien som standard null. NULL refererer her til null i programkoden, og de fleste scenarier, hvor dette sker, er: en tidstypevariabel defineres i programmet, og den sendes videre til databasen (eller den lagrede procedure) uden at tildele en værdi. På dette tidspunkt tildeles værdien af denne variabel som standard 01/01/01. Siden DateTime-typefeltet i databasen er minimumsværdien 1/1/1753 12:00:00, mens . NET Framework, DateTime-typen, minimumsværdien er 1/1/0001 0:00:00, det er selvfølgelig uden for minimumsværdiområdet for SQL-værdien, hvilket resulterer i en dataoverløbsfejl. Lad os se på, hvordan man kan se .net og sql maks min. tid gennem C#:
Output-effekt:
I sidste ende blev det pillet ved i mere end ti minutter,
De endelige fejlårsager er som følger:
En af objektets attributtyper er også et objekt, det vil sige, tabellen har en fremmednøgle, og en ny datetime-attribut tilføjes til fremmednøgletabellen, som ikke tildeles en værdi og ikke sættes til en nullbar type
Når man tilføjer eller opdaterer et objekt, knyttes datotidspunktet for fremmednøgleobjektet automatisk til standardværdien, fordi tidspunktet for .net-standardværdien er mindre end databasens standardminimumstid
Løsning: Sæt egenskaben for en dato-tidstype for fremmednøgleobjektet til nullbar type, hjælp kolleger med at løse det perfekt!
|