【问题标题】:EF4 & SQL Server 2000EF4 和 SQL Server 2000
【发布时间】:2011-04-18 13:14:44
【问题描述】:

我已经使用 EF4 和 SQL Server 2005 开发了我的网站,但是当移动到临时站点时,发现他们使用的是 SQL Server 2000。

现在我收到了这个错误,我认为这与 SQL Server 2000 有关:

Incorrect syntax near '('. 'row_number' is not a recognized function name.

有没有办法解决这个问题?

谢谢

【问题讨论】:

  • 您能否向我们提供有关您正在运行的查询的更多信息,以便我们尝试提出不使用 row_number 函数的替代查询?
  • 创建查询的是 EF4...
  • 我刚刚做了同样的事情,正要问同样的问题。现在我正在考虑必须完全重新编码我的数据层。
  • 遇到完全相同的问题,我希望在某个地方可以解决。否则看很多重写。问题是,开发机器有SQL Server 2005 express,我在发布的时候才意识到这个问题! 叹息
  • 没有解决方法 - 我必须升级 SQL Server

标签: sql sql-server asp.net-mvc


【解决方案1】:

【讨论】:

  • 不支持 = 没办法。
  • 查看stackoverflow.com/questions/1600630/…了解更多详情
  • 我会尝试说服企业/您的客户升级到 SQL 2008(至少2005)。 Microsoft 已正式停止支持 SQL 2000(尽管他们可能会提供 extended support)。我们最近不得不将我们所有的服务器升级到 SQL2008(从 2000 年开始)。这是非常值得的努力。
  • @tobias86: 对 SQL Server 2005 的常规支持将在 本月 到期 - 所以如果您升级,请转到 2008 或 2008 R2 - 其他任何东西都没有任何意义,真的.. .
  • @marc_s: 好了 :) 我是 R2 的忠实粉丝。
【解决方案2】:

我遇到了完全相同的问题,根据 StackOverflow 上的 cmets/responses,我几乎放弃了并将其轻弹给客户端以将他们的数据库升级到 > 2000 版本。不幸的是,由于许多其他问题,这对他们来说是不可能的。我不得不四处搜索解决方案,并从某个地方找到了解决方法。

这就是我所做的。

  • 右键单击 ModelName.EDMX 文件 -> 打开方式
  • 选定的 XML(文本)编辑器
  • 找到 ProviderManifestToken="2005" 并将其替换为 ProviderManifestToken="2000"
  • 已发布更改,瞧!

现在我说这是一种变通方法(不是解决方案)的原因是因为

  1. 如果您再次从数据库更新模型并且您的开发 机器数据库> = 2000(这很可能是SQL的情况 根据this article,MS 根本不支持 2000 连接)XML 中的此值将自动更改

  2. 此外,在此更改后由 EF 生成的查询已在 我的情况,但我不能保证所有的查询 由您的应用程序生成的可以正常工作

【讨论】:

    【解决方案3】:

    Row_Number() 返回返回的每一行的序号。你是调用Row_number(),还是实体框架?

    无论哪种方式,您都可以编写一个重新实现 ROW_NUMBER 的用户定义函数。 Stackoverflow 在这里发帖: ROW_NUMBER Alternative for SQL Server 2000

    不确定从长远来看这会带来什么好处;您可能会发现您绕过这个问题只是遇到了 EF 在 SQL 2000 上不起作用的下一个原因。但是,尝试几分钟可能是值得的。

    【讨论】:

    • 创建查询的是 EF4
    猜你喜欢
    • 1970-01-01
    • 2011-11-20
    • 2015-08-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-03
    • 2010-09-26
    • 1970-01-01
    相关资源
    最近更新 更多