找不到存储过程“dbo.aspnet_CheckSchemaVersion”

我使用WinHost.com来托pipe我的网站。 SQL数据库/成员身份系统在我的本地计算机上完美工作,但是当上传到服务器时,它不起作用。 我已经正确地执行了所有步骤。 我已经联系了我的服务的支持,但已经超过了2周,没有回复。

当我尝试在我的网站上的会员页面上login或注册新用户时,我不断收到此错误。

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 

有人可以告诉我为什么这个错误已经发生(显然它找不到东西…),我怎么能解决它?

谢谢你们

巴尔

你是否对WinHost.com的sql服务器运行aspnet_regsql.exe

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

您将需要确保您运行这个,以便在WinHost.com的SQL服务器上创build表和对象。

从开始菜单的Visual Studio工具文件夹打开Visual Studio命令提示符并键入aspnet_regsql

并按照向导为asp.net成员资格和angular色提供程序注册数据库。

我以前见过这个。 您正在使用的数据库没有成员资格,angular色pipe理和configuration文件function所需的数据库元素。 所以你有几个select:

  1. 使用SQL Management Studio或类似的应用程序从本地SQL Server跨表,存储过程和视图进行复制
  2. 使用aspnet_regsql.exe工具按照这篇文章中的说明重新安装脚本(我不相信如果它被locking,你可以在远程数据库上使用这个工具,所以你必须导出脚本并运行他们手动)

我有同样的问题,我从Visual Studio中的SQL Object manager复制/粘贴connectionString,忘记键入Initial Catalog=YourDatabaseName

检查存储过程在主机上所属的模式 – 可能不在“dbo”模式中。

例如,如果它在SomeOtherSchema内,你的呼叫将需要是“SomeOtherSchema.aspnet_CheckSchemaVersion”

当我启用<roleManager>相信我启用ASP.NET身份2时,我有完全相同的错误。 他们是不一样的! <roleManager>启用了一个老版本的身份pipe理,它使用不同的表格结构到ASP.NET Identity 2(不需要“启用”方式 – 它就在那里)。

如果您故意使用旧的angular色pipe理器并仍然收到错误,则可能会查看默认的localdb而不是数据库,在这种情况下,您可以修改<roleManager>以指向您想要的任何连接string:

  <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/

总之,你应该重新编译的aspnet提供程序的DLL使用您从您的托pipe分配的SQL用户名。

  • 下载http://download.microsoft.com/download/a/b/3/ab3c284b-dc9a-473d-b7e3-33bacfcc8e98/ProviderToolkitSamples.msi
  • 使用您的托pipe数据库用户名replace源代码中所有对dbo的引用
  • 编译(您需要Visual Studio)并将ProviderToolkitSampleProviders.dll放在Bin文件夹中
  • 在你的web.config中,用“Microsoft.Samples。,ProviderToolkitSampleProviders”replace每一行的“type”属性
  • 用你的主机数据库用户名代替你本地的sql server所有的dbo引用
  • 导出sql对象创build脚本并在远程数据库上运行它们
  • 将logging从本地sql表aspnet_SchemaVersions复制到远程数据库

另一个选项,比较简单的尝试,是用您的托pipe数据库用户名replace本地sql服务器数据库中的dbo引用,然后上传并附加您的mdf文件。

希望它有帮助

托马斯