5

私はSqlMembershipProviderでASP.NET Webフォームアプリケーションを開発しています。 Azureでも実行されているので、テーブルとSPにはKB2006191 Updated ASP.NET scripts for use with SQL Azureを使用します。AzureとスタンドアロンSQLサーバーの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.

編集:

:私は実際に失敗した1つのSQL文に問題が決裂した

(でもハードコードI @UserIdの値であれば)オリジナル

DELETE FROM dbo.aspnet_Users WHERE UserId = @UserId 

私はdownloading a Cumulative Update Package and setting trace flag 4199でSQL Serverのインストールを修正しようとしました。しかし、これは役に立たなかった。正直言って、私がパッチを適切に適用したかどうかはあまりよく分かりません。私はこれについてさらに研究しています。

また、私はWeb上でいくつかのヒントを見つけたので、SPを少し書き直そうとしました。これはいずれにも役立たず、とにかく同じクエリがスタンドアロンSQLサーバーの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 Serverの間でSQLメンバーシップ、役割とセッションのプロバイダを有効にする正式にサポートされている方法です。

+0

私たちは普遍的なプロバイダを使用し、彼らは素晴らしい仕事をしています。 ASP.Net 4.0以降でのみ動作することに注意してください。 –

+0

+1(そして答え)は本当の改善です。実際の問題は、aspnet_Usersへの外部キー参照を持つ自分のテーブルの1つのカラムをインデックスすることで修正されました。しかし、これは一般的には適応的ではありません。 –

関連する問題