VSTS 2008 数据库版似乎不知道“DATEADD”常量,有啥想法吗?
Posted
技术标签:
【中文标题】VSTS 2008 数据库版似乎不知道“DATEADD”常量,有啥想法吗?【英文标题】:VSTS 2008 Database Edition doesn't seem to know 'DATEADD' constants, any ideas?VSTS 2008 数据库版似乎不知道“DATEADD”常量,有什么想法吗? 【发布时间】:2009-12-30 16:50:15 【问题描述】:我正在尝试使用 VSTS 2008 Database Edition 实现数据库构建。构建总是在以下约束下失败:
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.
有人知道这里出了什么问题吗?
【问题讨论】:
你有最新的 GDR2 版本吗? 我想是的 - 它显示为“Microsoft Visual Studio Team System 2008 Database Edition GDR 版本 9.1.40413.00” Hour 是现有的列名还是脚本中某处定义的变量?用 hh 代替 hour 怎么样? 再想一想,这段脚本可以使用 Management Studio 工作吗? 是的,这个脚本在 Management Studio 或其他任何地方作为纯 SQL 执行时才有效。用 'hh' 或任何其他常量替换 'hour' 也无济于事,看起来 VSTSDB 错误地假定事物是表中的列而不是常量表达式。 【参考方案1】:您是否尝试将hour
括在方括号中,[hour]
?
【讨论】:
不幸的是没有帮助,返回相同的错误:“TSD03082:此上下文中不允许使用名称“[hour]”。有效表达式是常量、常量表达式和(在某些情况下) 变量。不允许使用列名。"【参考方案2】:在 MSDN 上问了同样的问题: http://social.msdn.microsoft.com/Forums/en-US/vstsdb/thread/24afdc7e-3cef-4322-99ff-76ac5174cf3c/
看起来这是一个错误。已在帖子中建议了一种解决方法。
【讨论】:
以上是关于VSTS 2008 数据库版似乎不知道“DATEADD”常量,有啥想法吗?的主要内容,如果未能解决你的问题,请参考以下文章
Visual Studio Team System 2008数据库版中是否提供了代码分析工具?
如何在 VSTS DB Edition Deploy 中自定义 CREATE DATABASE 语句?