Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

System.Data.SqlTypes.SqlTypeException:SqlDateTime-Überlauf

Matt ist höchstwahrscheinlich auf dem richtigen Weg. Sie haben einen Standardwert für Ihre Spalte definiert - dieser greift jedoch nur, wenn Sie tatsächlich etwas in Ihre Tabelle in der Datenbank einfügen.

Wenn Sie einen Komponententest durchführen, initialisieren Sie, wie Sie sagen, höchstwahrscheinlich die DateTime-Variable auf etwas (oder nicht - dann wird es DateTime.MinValue sein, das 01.01.0001 ist) und dann senden Sie das an den SQL Server und dieser Wert liegt außerhalb des gültigen Bereichs für eine DATETIME auf SQL Server (wie der Fehler eindeutig besagt).

Sie müssen also Ihrem .NET-Einheitentest eine Zeile hinzufügen, um die DateTime-Variable mit „DateTime.Today“ zu initialisieren:

DateTime myDateTime = DateTime.Today

und diese dann in SQL Server einfügen.

ODER:Sie können Ihre SQL INSERT-Anweisung so ändern, dass sie keinen Wert für diese Spalte einfügt - es sieht so aus, als würde sie das tun (und versucht, dieses - für SQL Server - ungültige Datum in die Tabelle einzufügen). Wenn Sie diese Spalte nicht in Ihrem INSERT angeben, dann der Spaltenstandard von getdate() wird aktiv und fügt das heutige Datum in die Spalte ein.

Markus