'row_number'不是可识别的函数名称.关键字"AS"附近的语法不正确

Wim*_*ink 2 c# dynamic-data-site entity-model

我创建了一个带有SQL Server数据库的简单项目,该数据库包含许多表和大量索引,但没有什么真正复杂的.没有触发器,没有存储过程,没有额外的"数据库魔术".代码是用C#编写的,使用实体模型和动态数据站点来快速设置基础知识,因此一些键入的猴子可以投入工作并执行一些基本数据输入,同时我将修改项目以使其更加成熟.

在SQL Server 2005上测试过,一切正常.所以我通过Visual Studio进行了设置,并将其发送给键入Monkeys及其管理员.他们所要做的就是:1)创建一个新的数据库.2)执行数据库的Create脚本.3)安装我给他们的设置.4)修改连接字符串,它恰好放在特殊的配置文件中以方便使用.5)使用Web界面并在出现问题时通知我.

出了点问题.完整的错误:第1行:''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

我的代码中没有使用'row_number'.我只是使用Linq进行查询.此外,由于实体模型,我甚至不必担心做任何SQL的东西.(尽管我很擅长.)

我的第一个猜测是他们使用了错误的连接字符串.他们可能正在SQL Server上安装这个应用程序(它应该仍然可以工作),但它们并没有完全改变连接字符串,现在我的项目认为它正在使用SQL Server 2005.(或者其他什么.)我是对的还是由于某些原因引起的其他讨厌的bug?

完整错误:

[SqlException(0x80131904):第1行:'('.''row_number'附近的语法不正确不是可识别的函数名.关键字'AS'附近的语法不正确.]
System.Data.SqlClient.SqlConnection.OnError(SqlException exception,Boolean breakConnection)+1950890 System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception,Boolean breakConnection)+4846875 System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj)+194
System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior, SqlCommand cmdHandler,SqlDataReader dataStream,BulkCopySimpleResultSet bulkCopyHandler,TdsParserStateObject stateObj)+2392
System.Data.SqlClient.SqlDataReader.ConsumeMetaData()+33 System.Data.SqlClient.SqlDataReader.get_MetaData()+83 System.Data.SqlClient.SqlCommand.FinishExecuteReader( SqlDataReader ds,RunBehavior runBehavior,String resetOptionsString)+297
System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior,RunBehavior runBehavior,Boolean returnStream,Boolean async)+954 System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior,RunBehavior runBehavior,Boolean returnStream,String method,DbAsyncResult result)+162
System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior,RunBehavior runBehavior, Boolean returnStream,String method)+32 System.Data.SqlClient.SqlCommand.ExecuteReader(CommandBehavior behavior,String method)+141
System.Data.SqlClient.SqlCommand.ExecuteDbDataReader(CommandBehavior behavior)+12
System.Data.Common.DbCommand.ExecuteReader (CommandBehavior行为)+10
System.Data.EntityClient.EntityCommandDefinition.ExecuteStoreCommands(EntityCommand entityCommand,CommandBehavior behavior)+387

[EntityCommandExecutionException:执行命令定义时发生错误.有关详细信息,请参阅内部异常.]
System.Data.EntityClient.EntityCommandDefinition.ExecuteStoreCommands(EntityCommand entityCommand,CommandBehavior behavior)+423
System.Data.Objects.Internal.ObjectQueryExecutionPlan.Execute(ObjectContext context,ObjectParameterCollection parameterValues)+743
System.Data. Objects.ObjectQuery 1.GetResults(Nullable1 forMergeOption)+157
System.Data.Objects.ObjectQuery`1.GetIListSourceListInternal()+ 13 System.Data.Objects.ObjectQuery.System.ComponentModel.IListSource.GetList()+ System.Web.UI.WebControls. EntityDataSourceView.ExecuteSelect(DataSourceSelectArguments arguments,Creator qbConstructor)+1168 System.Web.UI.WebControls.EntityDataSourceView.ExecuteSelect(DataSourceSelectArguments arguments)+102
System.Web.UI.DataSourceView.Select(DataSourceSelectArguments arguments,DataSourceViewSelectCallback callback)+19 System.Web .UI.WebControls.DataBoundControl.PerformSelect()+ 142 System.Web.UI.WebControls.BaseDataBoundControl.DataBind()+73 System.Web.UI.WebControls.GridView.DataBind()+ System.Web.UI.WebControls.BaseDataBoundControl.EnsureDataBound()+82 System.Web.UI.WebControls.CompositeDataBoundControl.CreateChildControls()+72 System.Web.UI.Control.EnsureChildControls()+87 System.Web.UI.Control.PreRenderRecursiveInternal()+ 44 System.Web.UI.Control.PreRenderRecursiveInternal()+ 171 System.Web.UI.Control.PreRenderRecursiveInternal()+ 171 System.Web.UI.Control.PreRenderRecursiveInternal() +171 System.Web.UI.Control.PreRenderRecursiveInternal()+ 171 System.Web.UI.Control.PreRenderRecursiveInternal()+ 171 System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint,Boolean includeStagesAfterAsyncPoint)+842


此应用程序以前构建在SQL Server 2000系统上,然后它也工作得很好.但是,测试数据库升级到2005,而生产数据库仍然使用2000.我希望这不会导致问题,但我的假设是否正确?

小智 5

我知道这是一个老线程,但我认为它仍然有一些重要性.

我遇到了同样的问题.我正在开发sql2008服务器并部署到sql2000服务器.不要在2000机器上进行开发,而是在wordpad中打开.edmx文件并将清单标记更改为"2000".然后重建并发布.比在不同的机器上开发容易得多.