5

我正在研究ASP.NET Web Forms應用程序SqlMembershipProvider。由於它也在Azure上運行,因此我使用KB2006191 Updated ASP.NET scripts for use with SQL Azure來創建表和SP。Azure和獨立SQL Server上的SqlMembership

顯然,它們無法順利使用獨立的SQL Server 2008 R2 SP1。特別是dbo.aspnet_Users_DeleteUser觸發一個內部錯誤:

Msg 8624, Level 16, State 1, Procedure aspnet_Users_DeleteUser, Line 111 Internal Query Processor Error: The query processor could not produce a query plan. For more information, contact Customer Support Services.

編輯:

我打破了這個問題,其實際失效一個SQL語句(即使我硬編碼爲@UserId的值):

DELETE FROM dbo.aspnet_Users WHERE UserId = @UserId 

原文:

我試圖通過downloading a Cumulative Update Package and setting trace flag 4199修復我的SQL Server安裝。但是,這並沒有幫助。說實話,我不太確定我是否正確應用了這個補丁。我正在對此進行進一步研究。

此外,我試圖重寫SP一點,因爲我在網上發現了一些提示。這也沒有幫助,無論如何,獨立SQL Server的aspnet_regsql生成相同的查詢。其實,我試圖把這個擺脫子查詢的周圍線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?

回答

3

根據Scott Hanselmanthis blog post,該ASP.NET Universal Providers For SqlExpress 1.1包(System.Web.Providers)是支持跨SQL Azure和SQL獨立服務器的SQL成員,角色和會議提供的官方支持的方法。

+0

我們使用通用提供商,他們工作得很好。請注意,它們只適用於ASP.Net 4.0+。 – 2012-02-28 18:52:29

+0

+1(和答案)以獲得真正的改進。我現在通過索引我自己的表中有一個列的列來解決我的實際問題,該表中有一個對aspnet_Users的外鍵引用。然而,這通常不是適應性的。 – 2012-02-29 07:20:58