私は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?
私たちは普遍的なプロバイダを使用し、彼らは素晴らしい仕事をしています。 ASP.Net 4.0以降でのみ動作することに注意してください。 –
+1(そして答え)は本当の改善です。実際の問題は、aspnet_Usersへの外部キー参照を持つ自分のテーブルの1つのカラムをインデックスすることで修正されました。しかし、これは一般的には適応的ではありません。 –