Visual studio 2008 VSTS 2008数据库版似乎不知道“DATEADD”常量,有什么想法吗?

Visual studio 2008 VSTS 2008数据库版似乎不知道“DATEADD”常量,有什么想法吗?,visual-studio-2008,database-project,Visual Studio 2008,Database Project,我正在尝试使用VSTS2008数据库版实现一个数据库构建。生成总是在以下约束条件下失败: ALTER TABLE [dbo].[tablename] ADD CONSTRAINT [DF_tablename_date] DEFAULT (CONVERT([varchar],dateadd(hour,(-1),getdate()),(1))) FOR [date]; 它显示的错误如下所示: TSD03082: The name "hour" is not permitted in thi

我正在尝试使用VSTS2008数据库版实现一个数据库构建。生成总是在以下约束条件下失败:

ALTER TABLE [dbo].[tablename]
    ADD CONSTRAINT [DF_tablename_date] DEFAULT (CONVERT([varchar],dateadd(hour,(-1),getdate()),(1))) FOR [date];
它显示的错误如下所示:

TSD03082: The name "hour" is not permitted in this context. Valid expressions are constants, constant expressions, and (in some contexts) variables. Column names are not permitted.

有人知道这里出了什么问题吗?

您是否尝试过将小时用方括号括起来,[hour]?

在MSDN上问了同样的问题:


看起来像是个虫子。线程中建议了一种解决方法。

您有最新的GDR2版本吗?我想是的-它显示为Microsoft Visual Studio Team System 2008数据库版GDR版本9.1.40413.00是现有的列名还是脚本中某个地方定义的变量?使用hh而不是hour怎么样?再想一想,这段脚本使用ManagementStudio可以工作吗?是的,在ManagementStudio或其他任何地方以普通SQL执行时,此脚本都可以工作。将“hour”替换为“hh”或任何其他常量也无济于事,看起来VSTSDB错误地假定该内容是表中的一列而不是常量表达式。不起作用。不幸的是,返回时出现相同错误:TSD03082:此上下文中不允许使用名称[hour]。有效表达式包括常量、常量表达式以及某些上下文中的变量。不允许使用列名。