在SQL server 2005中,我有一个表定义如下:
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[DebugTrace](
[Timestamp] [datetime] NOT NULL CONSTRAINT [DF_DebugTrace_Timestamp] DEFAULT (getdate()),
[Log] [nvarchar](max) NOT NULL,
[id] [int] IDENTITY(1,1) NOT NULL,
CONSTRAINT [PK_DebugTrace] PRIMARY KEY CLUSTERED
(
[id] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]如您所见,时间戳列的默认值设置为GetDate()。
从(在SQL服务器上本地运行),以下代码运行良好:
insert into DebugTrace ([Log])
values ('test')运行我的工作站的“相同”代码失败:
DebugTrace trace = new DebugTrace();
trace.Log = "test from code";
DebugTraces.InsertOnSubmit(trace);
SubmitChanges();引发的例外情况是:
SqlDateTime溢出必须在1/1/1753 12:00上午12:00至12/31/9999 11:59:59下午
这两个请求都不设置时间戳,而是依赖默认值来设置列值。因此,GetDate()函数如何触发这样的异常?
请求从不同的机器上运行,但具有相同的Windows帐户
发布于 2014-10-30 10:36:20
DebugTrace的属性映射到TimeStamp,是否有默认值?尝试在从代码中插入时给它一个默认值。
DebugTrace trace = new DebugTrace();
trace.Log = "test from code";
trace.TimeStamp= Datetime.Now; 您的问题是,当插入时,时间戳仍然是空的。因此,它可能是您的默认值约束不能正常工作。看看这个link,它精确地阐述了您的问题。
https://stackoverflow.com/questions/26650529
复制相似问题