SQL Server 2008/2000差异使用列名作为保留关键字

时间:2010-03-05 11:28:53

标签: sql sql-server-2008

我可能不会更抱歉 - 这个问题非常错误。正如您所发现的那样,错误是由于具有该名称的列不存在。错误和帖子是由于登台服务器和生产服务器之间的错误配置造成的。但是你的答案已经检测到这个错误,很多,非常感谢


以下声明:

select [user] from bookings

让我陷入困境。请注意,保留关键字周围放置了方括号。正如您所看到的,不幸的是,为列名称(当然是用户)选择了保留关键字,但在SQL Server 2000中运行的先前应用程序中,执行的查询没有错误。

不幸的是,在SQL Server 2008中 - 移植到哪个应用程序 - 行为不同,它会抱怨并发出错误。改变数据库表可能是一个令人头疼的问题,因为必须对db和代码进行大量更改。有一种方法可以执行查询,保留列的名称吗?

谢谢!

2 个答案:

答案 0 :(得分:0)

你得到了什么错误。我刚刚在我的SQL2008副本中创建了一个预订表,并且

没有出现这样的错误
select [user] from bookings

我在另一个数据库中也有一个名为user的表,并且没有问题

答案 1 :(得分:0)

2008就像以前一样,它不希望你使用保留名称,但我没有为它抛出错误。

CREATE TABLE [dbo].[tblUser](
    [userid] [int] IDENTITY(1,1) NOT NULL,
    [user] [nchar](10) NOT NULL,
 CONSTRAINT [PK_tblUser] PRIMARY KEY CLUSTERED 
(
    [userid] ASC
)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
) ON [PRIMARY]

接着是

select [user] from tbluser

执行时没有生成错误。