【问题标题】:SqlMembership on both Azure and Standalone SQL ServerAzure 和独立 SQL Server 上的 SqlMembership
【发布时间】:2012-03-17 21:03:52
【问题描述】:

我正在使用SqlMembershipProvider 开发一个 ASP.NET Web 窗体应用程序。因为它也在 Azure 上运行,所以我将 KB2006191 Updated ASP.NET scripts for use with SQL Azure 用于表和 SP。

显然,它们不能与独立的 SQL Server 2008 R2 SP1 一起顺利运行。尤其是dbo.aspnet_Users_DeleteUser 会引发内部错误:

消息 8624,级别 16,状态 1,过程 aspnet_Users_DeleteUser,第 111 行 内部查询处理器错误:查询处理器无法生成查询计划。如需更多信息,请联系客户支持服务。

编辑:

我将问题分解为一个实际失败的 SQL 语句(即使我硬编码了 @UserId 的值):

DELETE FROM dbo.aspnet_Users WHERE UserId = @UserId

原文:

我尝试通过downloading a Cumulative Update Package and setting trace flag 4199 修复我的 SQL Server 安装。然而,这并没有帮助。老实说,我不太确定我是否正确应用了补丁。我正在对此进行进一步研究。

另外,我在网上找到了一些提示,我尝试稍微重写 SP。这也无济于事,aspnet_regsql 还是为独立的 SQL Server 生成了相同的查询。实际上,我试图通过转动这个来摆脱第 111 行周围的子查询:

IF ((@TablesToDeleteFrom & 1) <> 0 AND
    (@TablesToDeleteFrom & 2) <> 0 AND
    (@TablesToDeleteFrom & 4) <> 0 AND
    (@TablesToDeleteFrom & 8) <> 0 AND
    (EXISTS (SELECT UserId FROM dbo.aspnet_Users WHERE @UserId = UserId)))

...进入这个:

IF ((@TablesToDeleteFrom & 15) <> 0)

是否有人遇到过处理成员资格以及 Azure 和独立 SQL Server 的类似问题?

【问题讨论】:

    标签: asp.net sql-server azure-sql-database sqlmembershipprovider


    【解决方案1】:

    根据Scott Hanselmanthis blog postASP.NET Universal Providers For SqlExpress 1.1 包 (System.Web.Providers) 是官方支持的跨 SQL Azure 和独立 SQL Server 启用 SQL 成员资格、角色和会话提供程序的方法。

    【讨论】:

    • 我们使用通用提供程序,它们工作得很好。请注意,它们仅适用于 ASP.Net 4.0+。
    • +1(和答案)以获得真正的改进。我现在通过在我自己的一个表中索引一个列来解决我的实际问题,该表具有对aspnet_Users 的外键引用。然而,这通常不是自适应的。
    猜你喜欢
    • 2011-10-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-11
    • 1970-01-01
    相关资源
    最近更新 更多