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


87

WinHost.comを使用してサイトをホストしています。SQLデータベース/メンバーシップシステムはローカルコンピューターで完全に機能しますが、サーバーにアップロードすると機能しません。すべての手順を正しく実行しました。また、サービスのサポートに連絡しましたが、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 

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

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

バエル


ストアドプロシージャ名をさらに修飾する必要があるか、所有者がdboではない可能性があります
David

どのバージョンのSQLServerを使用していますか?
Naeem Sarfraz 2010

回答:


164

aspnet_regsql.exeWinHost.comのSQLサーバーに対して実行しましたか?

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.30319Enterキーを押し、「aspnet_regsql.exe」ファイルを見つけます。このエラーを解決するために従うことができるウィザードが開きます。

このエラーは主に、asp.netmvcプロジェクトでロールを有効にしていない場合に発生します。開始時にaspnetIDテーブルが自動的に作成されます。

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


17
セキュリティを統合している場合は、「-U」(ユーザー名)および「-P」(パスワード)フラグの代わりに「-E」フラグを使用してください。
dance2die 2012

ありがとうございました!!!追加するだけで、コマンドライン引数なしでこれを実行してGUIを取得できます。これは、haxxorほどではありませんが、機能します:)
JMK

@gabriel aspnet_regsql.exeを実行する方法は?
Jam Ville

2
@IvorySantos:実行可能ファイルの通常のパスについて質問している場合は、「%windir%\ Microsoft.NET \ Framework \ v4.0.30319」などです。msdn.microsoft.com/en-us/library/ms229862.ASPXの
kristinalim

@Gabrielにご協力いただき、ありがとうございます。
jay_t55 2014

28

スタートメニューのVisualStudioツールフォルダーからVisualStudioコマンドプロンプトを開き、次のように入力します。 aspnet_regsql

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


2
こんにちは、aspnet_regsqlを実行しています。問題を修正できました。問題は、この--aspnet_regsql--が何をするかということです。
Lucian Bumb 2015年

10

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

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

5

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


私が持っていたInitial Catalog=masterの代わりにInitial Catalog=YourDatabaseName
デヴィッド・チン

ありがとう!それは私のためにそれを修正しました。
Dan Csharpster 2017年

3

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

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


1
AdaTheDevに感謝します。通話を別のものに変更する方法を教えてください。たとえば、コードのどこにあるのでしょうか... web.config?
jay_t55 2010年

3

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

古いロールマネージャーを意図的に使用しているのにエラーが発生する場合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-基本/


1

つまり、ホスティングから割り当てられた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つのオプションは、より簡単に試すことができるpherapsで、ローカルSQLサーバーデータベースのdbo参照をホスティングデータベースのユーザー名に置き換えてから、mdfファイルをアップロードして添付することです。

それが役に立てば幸い

トーマス


え?あなたの世界の空は何色ですか?lolzalot。おいは、データベースをプロビジョニングするか、接続文字列を修正するだけです。これ以上の答えはありませんでした。
スカイサンダース

1
彼が「すべての手順を正しく実行しました」と書いたとき、私は彼がすでにaspnet_regsql.exeを試し、接続文字列を再確認したと思いました。私が知っているホスティングプロバイダーはaspnet_regsql.exeを許可していないので、私のものはその場合の実用的なソリューションです。
トーマス
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.