有的SQL语句在我的机器上能很容易的通过,但是到的我们的server上报错,是不是server上面有的配置对SQL的要求高,所以通不过。
比如一个简单的例子,下面这个SQL在我机器上是对的,到服务器上报错。
SQL code
SELECT CompanyID,CompanyName as CompanyID FROM Companies
这个问题第1个回答:
不会吧,这可是标准的sql啊。看看连接的数据库是不是一样呢?另外,还是把错误贴出来吧
这个问题第2个回答:
什么错误啊!错误日志呢!
这个问题第3个回答:
报什么错
如果数据结构一样
区分大小写?
这个问题第4个回答:
首先我要提个建议:你应该把报错的提示告诉我们,否则神仙也解决不了这个问题。
然后原因嘛我们也不好多猜,你检查下你连接的是否是 正确的服务器实例中的正确的数据库(算我多心了,这么低级的错误估计你是不会犯的,呵呵)。
这个问题第5个回答:
当前数据库是否正确
表结构是否完全一样等
贴出错误说明吧
这个问题第6个回答:
是不是二进制的原因-区分大小写
这个问题第7个回答:
噢,这个没报错,等等我找另外一个。
这个问题第8个回答:
SELECT DISTINCT p.ContractID,ch.CompanyID,e.EmployeeID,e.FirstName,e.MiddleInitial,e.LastName,e.SSN,c.FederalTaxID,
CONVERT(VARCHAR(10),BeginLastDate.BeginDate,101) AS BeginDate,CONVERT(VARCHAR(10),BeginLastDate.LastDate,101) AS LastDate,CONVERT(VARCHAR(10),ch.EndDate,101) as EndDate
FROM CprWeekly cw
INNER JOIN CprHeader ch ON cw.CprHeaderID = ch.CprHeaderID
...
ORDER BY e.FirstName,e.LastName,ch.EndDate
这个地方ch.如果不去掉,在我机器上是对的,在server是出错。
错误消息:
ORDER BY items must appear in the select list if SELECT DISTINCT is specified.
这个问题第9个回答:
错误提示翻译过来是:
如果distinct使用的话,排序的字段必须出现在select列表中
是语句的语法问题,我觉得和配置没有什么太大的关系。详细比较下两个sql语句是否一样,例如是不是都使用了distinct选项
这个问题第10个回答:
SQL当然是一样的,出现这样的问题不是一次两次了。
这个问题第11个回答:
就是还有其它的情况,也是同样的SQL语句,我们这里测试完全通过,到那里出错了。
服务器是windows 2003,我是windows xp.
这个问题第12个回答:
UP
这个问题第13个回答:
是你服务器配置的原因吧
仔细检查一下
这个问题第14个回答:
你这种属于特殊的情况,不要担心数据库配置的问题
首先同时select distinct语句和order by语句的时候要求:order by子句出现的字段必须在select子句中出现
而在你的sql语句中,你的sql语句并没有ch.EndDate字段,而是将它重命名为:EndDate
如果你将ch.去除就不会出现这个问题。
个人建议对于这种情况order by子句不要使用『表名.字段名』的格式,直接用字段名称就可以
(如果重命名了就用已重命名的名称)
这个问题第15个回答:
LS说的是,但是有时候不小心出错了,自己本地由于没报错也发现不了,装到服务器上也出问题了。比较郁闷。