0

Azure 계정에 가입하고 매우 원활하게 진행된 데이터베이스와 함께 웹 사이트를 배포했습니다.Azure에서 ASP.net에 대한 SqlServer 캐시 무효화 설정

처음에는 무료 서비스를 사용했지만 성능 문제가 발생한 후에는 동일한 성능의 공유 모델로 업그레이드했습니다. "링크 된 자원"데이터베이스는 웹 에디션 데이터베이스입니다. 포털에서 그것은 다음과 같습니다

enter image description here

다음 코드는 내 웹 사이트의 관리 부분에 캐시 무효화를 활성화하는 데 사용됩니다 : 그것은 내 로컬 SQLSERVER 익스프레스에서 작동

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

로 내 호스팅 제공 업체 중 한 곳의 라이브 데이터베이스와 마찬가지로 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) 

그래서 저장 프로 시저처럼 보이고 'user'(?)가 누락되었습니다. 나는 웹 에디션이 기본적으로 이러한 기능을 가질 것으로 기대합니까?

Azure 제어판에서 "Web Edition"과 "Business Edition"중 하나만 선택할 수 있습니다.

이 방법을 얻으려면 어떤 방법이 있으십니까?

+0

Windows Azure 웹 사이트 (WAWS) 또는 클라우드 서비스 (WACS)를 사용 중인지 확실하지 않습니다. WAWS를 사용하면 구성 할 수있는 것에 대한 제한이 있습니다. WACS를 사용하면 확실히 할 수 있습니다. 배포 유형을 명확히하면 확실히 도움이 될 것입니다. – AvkashChauhan

+0

Azure라고 생각합니다. 포털의 스크린 샷을 추가했습니다. 나는 마이크로 소프트가 두 가지 클라우드 서비스를 가지고 있다는 것을 몰랐다. 왜 그들은 그렇게 할 것인가? 나머지 사람들 앞에 머물기 위해서는 내부 경쟁이 필요합니까? :-) –

+0

Azure 웹 사이트와 Azure Cloud 서비스는 내부적으로 매우 다르지만 외부와 비슷합니다. 당신은 Windows Azure 웹 사이트가 있습니다. – AvkashChauhan

답변

1

SQL 데이터베이스를 사용하고 저장 프로 시저 sp_addrole을 사용하고 있습니다. 이 저장 프로 시저를 사용할 수 없다는 오류에 반영됩니다.

당신이 sp_addrole을 볼 수 아래 링크를 보면은 SQL 데이터베이스에 SP를 지원하지 않습니다 : 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 데이터베이스에서 직접 수행 등의 작업 항목을 가지고있다 코드에서 직접 사용하십시오.

+0

감사합니다. 유용한 링크입니다. SQL 직접적으로 무엇을 의미합니까? SSMS를 통해 데이터베이스에 액세스 할 수 있습니다. 수동으로 사용자와 역할을 추가하고 EnableNotifications 프로 시저를 다시 실행 해 볼 수도 있습니다. 이것이 의미하는 것입니까? 그건 그렇고, 당신은 어떤 종류의 캐싱이 의미하는지 알고 있습니까? (http://www.windowsazure.com/en-us/pricing/details/#header-8)? (아래 CDN 물건까지 스크롤). $ 45, - 한 달에 128Mb에 대해 나에게 '캐시'의 할당량처럼 들립니다. 이것은 캐싱이 기본적으로 지원되지 않는다는 것을 의미합니까? 이 경우 결국 무효화 할 것이 없습니다. –

+1

예, SSMS를 사용할 수 있습니다. 링크의 가격은 Azure 웹 사이트에서 액세스 할 수있는 공유 케이스에 대한 것입니다. "역할 기반 캐싱"이라고하는 또 다른 캐싱이 있으며 이는 Azure Cloud Service에만 해당됩니다. 이 링크는 공유 캐시에 유용합니다. http://msdn.microsoft.com/en-us/library/windowsazure/hh697519.aspx – AvkashChauhan