0

Azureアカウントにサインアップし、データベースと一緒にWebサイトを展開しました。これらはすべて非常にスムーズに進みました。

最初は無料サービスで利用していましたが、パフォーマンスの問題が発生した後、共有モデル(同じパフォーマンス)にアップグレードしました。「リンクされたリソース」データベースは、Webエディションのデータベースです。ポータルでは、次のようになります。

ここに画像の説明を入力してください

次のコードは、私のWebサイトの管理者部分でキャッシュの無効化を有効にするために使用されます。

ConnectionStringSettings Config = ConfigurationManager.ConnectionStrings["MyConnectionString"];
System.Web.Caching.SqlCacheDependencyAdmin.EnableNotifications(Config.ConnectionString);
System.Web.Caching.SqlCacheDependencyAdmin.EnableTableForNotifications(Config.ConnectionString, "MyTable");

これは、ローカルのSqlServer Expressと、ホスティングプロバイダーの1つにあるライブデータベースで機能します。Azureでのみ、次の例外が発生します。

System.Data.SqlClient.SqlException (0x80131904): Could not find stored procedure 'sp_addrole'.
Cannot find the user 'aspnet_ChangeNotification_ReceiveNotificationsOnlyAccess', because it does not exist or you do not have permission.
   at System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection, Action`1 wrapCloseInAction)
   at System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection, Action`1 wrapCloseInAction)
   at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj, Boolean callerHasConnectionLock, Boolean asyncClose)
   at System.Data.SqlClient.TdsParser.TryRun(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj, Boolean& dataReady)
   at System.Data.SqlClient.SqlCommand.RunExecuteNonQueryTds(String methodName, Boolean async, Int32 timeout)
   at System.Data.SqlClient.SqlCommand.InternalExecuteNonQuery(TaskCompletionSource`1 completion, String methodName, Boolean sendToPipe, Int32 timeout, Boolean asyncWrite)
   at System.Data.SqlClient.SqlCommand.ExecuteNonQuery()
   at System.Web.Caching.SqlCacheDependencyAdmin.SetupNotifications(Int32 flags, String table, String connectionString)

したがって、ストアドプロシージャと「ユーザー」(?)が欠落しているようです。Web版にはデフォルトでこれらの機能があると思いますか?

Expressエディションが利用可能であれば、それを選択していましたが、Azureのコントロールパネルから[Webエディション]と[Businessエディション]のどちらかを選択するしかありません。

これを機能させる方法はありますか?

4

1 に答える 1

1

SQLデータベースを使用しており、ストアドプロシージャsp_addroleを呼び出しています。エラーに反映されているため、このストアドプロシージャは使用できません。

以下のリンクを見ると、SQLデータベースでsp_addroleがサポートされていないことがわかります:http: //msdn.microsoft.com/en-us/library/windowsazure/ee336237.aspx#sqlazure

The following table lists the security stored procedures that 
Windows Azure SQL Database does not support:

sp_addrole sp_dropremotelogin sp_helpuser 

したがって、本当に必要なのは、コードから直接使用するのではなく、最初にSQLデータベースでそのような作業項目を直接実行することです。

于 2013-03-15T22:48:25.403 に答える