5

Я работаю над приложением ASP.NET Web Forms с SqlMembershipProvider. Поскольку он работает и на Azure, я использую KB2006191 Updated ASP.NET scripts for use with SQL Azure для таблиц и SP.SqlMembership как на Azure, так и на автономном SQL Server

Очевидно, что они не работают плавно с автономным 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.

Edit:

я сломалась вопрос к одному SQL заявление, которое на самом деле не удается (даже если я жестко закодировать значение для @UserId):

DELETE FROM dbo.aspnet_Users WHERE UserId = @UserId 

Оригинал:

Я попытался исправить мою установку SQL Server на downloading a Cumulative Update Package and setting trace flag 4199. Однако это не помогло. Честно говоря, я не слишком уверен, правильно ли я применил исправление. Я занимаюсь дальнейшим исследованием этого.

Кроме того, я попытался немного переписать пакет, так как нашел несколько советов в Интернете. Это тоже не помогло, и один и тот же запрос генерируется 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?

ответ

3

Согласно Scott Hanselman и this blog post, в ASP.NET Universal Providers For SqlExpress 1.1 пакете (System.Web.Providers) является официально поддерживаемым методом включения членства SQL, роль и сеансовыми поставщиков через SQL Azure и автономный SQL Server.

+0

Мы используем универсальные провайдеры, и они отлично работают. Обратите внимание, что они работают только для ASP.Net 4.0+. –

+0

+1 (и ответ) для реального улучшения. Теперь я исправил свою фактическую проблему, указав столбец в одной из моих собственных таблиц, у которой была ссылка с внешним ключом на 'aspnet_Users'. Однако это не является обычно адаптивным. –