web-dev-qa-db-ja.com

ストアドプロシージャ 'dbo.aspnet_CheckSchemaVersion'が見つかりませんでした

WinHost.comを使用してサイトをホストしています。 SQL Database/membershipシステムはローカルコンピューターで完全に動作しますが、サーバーにアップロードすると動作しません。すべての手順を正しく実行しました。また、サービスのサポートに連絡しましたが、2週間以上経過しており、返信がありません。

サイトのメンバーシップページでログインまたは新しいユーザーを登録しようとすると、このエラーが発生し続けます。

Server Error in '/' Application.
--------------------------------------------------------------------------------

Could not find stored procedure 'dbo.aspnet_CheckSchemaVersion'. 
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code. 

Exception Details: System.Data.SqlClient.SqlException: Could not find stored procedure 'dbo.aspnet_CheckSchemaVersion'.

Source Error: 

An unhandled exception was generated during the execution of the current web request. Information regarding the Origin and location of the exception can be identified using the exception stack trace below.  

Stack Trace: 


[SqlException (0x80131904): Could not find stored procedure 'dbo.aspnet_CheckSchemaVersion'.]
   System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection) +1953274
   System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection) +4849707
   System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj) +194
   System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj) +2392
   System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds, RunBehavior runBehavior, String resetOptionsString) +204
   System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, Boolean async) +954
   System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method, DbAsyncResult result) +162
   System.Data.SqlClient.SqlCommand.InternalExecuteNonQuery(DbAsyncResult result, String methodName, Boolean sendToPipe) +175
   System.Data.SqlClient.SqlCommand.ExecuteNonQuery() +137
   System.Web.Util.SecUtility.CheckSchemaVersion(ProviderBase provider, SqlConnection connection, String[] features, String version, Int32& schemaVersionCheck) +378
   System.Web.Security.SqlMembershipProvider.CheckSchemaVersion(SqlConnection connection) +89
   System.Web.Security.SqlMembershipProvider.GetPasswordWithFormat(String username, Boolean updateLastLoginActivityDate, Int32& status, String& password, Int32& passwordFormat, String& passwordSalt, Int32& failedPasswordAttemptCount, Int32& failedPasswordAnswerAttemptCount, Boolean& isApproved, DateTime& lastLoginDate, DateTime& lastActivityDate) +815
   System.Web.Security.SqlMembershipProvider.CheckPassword(String username, String password, Boolean updateLastLoginActivityDate, Boolean failIfNotApproved, String& salt, Int32& passwordFormat) +105
   System.Web.Security.SqlMembershipProvider.CheckPassword(String username, String password, Boolean updateLastLoginActivityDate, Boolean failIfNotApproved) +42
   System.Web.Security.SqlMembershipProvider.ValidateUser(String username, String password) +78
   System.Web.UI.WebControls.Login.AuthenticateUsingMembershipProvider(AuthenticateEventArgs e) +60
   System.Web.UI.WebControls.Login.OnAuthenticate(AuthenticateEventArgs e) +119
   System.Web.UI.WebControls.Login.AttemptLogin() +115
   System.Web.UI.WebControls.Login.OnBubbleEvent(Object source, EventArgs e) +101
   System.Web.UI.Control.RaiseBubbleEvent(Object source, EventArgs args) +37
   System.Web.UI.WebControls.Button.OnCommand(CommandEventArgs e) +118
   System.Web.UI.WebControls.Button.RaisePostBackEvent(String eventArgument) +166
   System.Web.UI.WebControls.Button.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument) +10
   System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument) +13
   System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData) +36
   System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +1565




--------------------------------------------------------------------------------
Version Information: Microsoft .NET Framework Version:2.0.50727.4200; ASP.NET Version:2.0.50727.4016 

誰かがこのエラーが発生した理由(明らかに何かを見つけることができない...)と、それを修正する方法を教えてもらえますか?

皆さん、ありがとうございました

バエル

84
jay_t55

WinHost.comのsqlサーバーに対してaspnet_regsql.exeを実行しましたか?

aspnet_regsql.exe -S DBServerName -U DBLogin -P DBPassword -A all -d DBName

上記のコマンドを実行する場所がわからない場合は、単に「aspnet_regsql.exe」実行可能ファイルを実行できます。

このファイルを見つけるには、Windowsキー+ rを押してRUNコマンドボックスを開き、%windir%\Microsoft.NET\Framework\v4.0.30319の下にコマンドを入力してEnterキーを押し、 'aspnet_regsql.exe'ファイルを見つけます。このエラーを解決するために従うことができるウィザードが開きます。

このエラーは、aspnet net tableが自動的に作成される前に、asp.net mvcプロジェクトでロールを有効にしなかった場合にほとんど発生します。

テーブルとオブジェクトがWinHost.comのSQLサーバー上に作成されるように、これを実行することを確認する必要があります。

159
Gabriel McAdams

[スタート]メニューの[Visual Studioツール]フォルダーから[Visual Studioコマンドプロンプト]を開き、aspnet_regsql

ウィザードに従って、asp.netメンバーシップおよびロールプロバイダーのデータベースを登録します。

28
Nitin Sawant

これは前に見たことがあります。使用しているデータベースには、メンバーシップ、ロール管理、およびプロファイル機能に必要なデータベース要素がありません。したがって、いくつかのオプションがあります。

  1. SQL Management Studioまたは同様のアプリケーションを使用して、ローカルのSQL Serverからテーブル、ストアドプロシージャ、およびビューにコピーします。
  2. aspnet_regsql.exeツール を使用して、この手順に従ってスクリプトを新たにインストールします post(信じられないロックされている場合は、リモートデータベースに対してツールを使用するため、スクリプトをエクスポートして手動で実行する必要があります)
10
Naeem Sarfraz

同じ問題があります-Visual StudioでSQL Object managerからconnectionStringをコピーして貼り付け、Initial Catalog=YourDatabaseNameと入力するのを忘れます。

5
FSou1

ASP.NET Identity 2を有効にしていたと信じて<roleManager>を有効にしたとき、まったく同じエラーが発生しました。これらは同じではありません!<roleManager>は、ASP.NET Identity 2とは異なるテーブル構造を使用するID管理の古いバージョンを有効にしました(これは、「有効にする」必要はありません-そこにあります)。

古いロールマネージャーを意図的に使用しているにもかかわらずエラーが発生する場合は、データベースではなくデフォルトのlocaldbを参照している可能性があります。その場合は、<roleManager>を変更して接続文字列あなたが欲しい:

  <roleManager
      enabled="true"
      cacheRolesInCookie="true"
      defaultProvider="OurSqlRoleProvider"
     >
      <providers>
          <add
             connectionStringName="DefaultConnection"
             applicationName="/"
             name="OurSqlRoleProvider"
             type="System.Web.Security.SqlRoleProvider" />
      </providers>

  </roleManager>

ASP.NET Identity 2を使用している場合は、次の記事を参照してください。
http://johnatten.com/2014/04/20/asp-net-mvc-and-identity-2-0-understanding-the-basics/

3
noelicus

ホストでストアドプロシージャが属するスキーマを確認します。「dbo」スキーマにない可能性があります。

例えばSomeOtherSchema内にある場合、呼び出しは "SomeOtherSchema.aspnet_CheckSchemaVersion"である必要があります。

3
AdaTheDev

要するに、ホスティングから割り当てられたsqlユーザー名を使用してaspnetプロバイダーdllを再コンパイルする必要があります。

  • ダウンロード http://download.Microsoft.com/download/a/b/3/ab3c284b-dc9a-473d-b7e3-33bacfcc8e98/ProviderToolkitSamples.msi
  • ソースコードからdboへのすべての参照をホスティングデータベースのユーザー名に置き換えます
  • コンパイルし(Visual Studioが必要)、ProviderToolkitSampleProviders.dllをBinフォルダーに配置します
  • Web.configで、すべての行の「type」属性を「Microsoft.Samples。、ProviderToolkitSampleProviders」に置き換えます
  • ローカルSQLサーバーですべてのdbo参照をホスティングデータベースのユーザー名に置き換えます
  • SQLオブジェクト作成スクリプトをエクスポートし、リモートデータベースで実行します
  • ローカルSQLテーブルaspnet_SchemaVersionsからリモートデータベースにレコードをコピーします

試してみるのが簡単なフェラップのもう1つのオプションは、ローカルSQLサーバーデータベースのdbo参照をホスティングデータベースのユーザー名に置き換えてから、mdfファイルをアップロードして添付することです。

それが役に立てば幸い

トーマス

1
Thomas