Не удалось найти хранимую процедуру '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
может кто-нибудь, пожалуйста, скажите мне, почему эта ошибка произошла (очевидно, он не может найти что-то...), и как я могу это исправить?
спасибо всем
Bael
7 ответов:
ты
aspnet_regsql.exe
против WinHost.com ' s sql server?aspnet_regsql.exe -S DBServerName -U DBLogin -P DBPassword -A all -d DBName
вам нужно будет убедиться, что вы запустите это так, чтобы таблицы и объекты были созданы на WinHost.com S SQL server.
Откройте командную строку visual studio из папки Visual studio tools в меню Пуск и типа
aspnet_regsql
и следуйте инструкциям мастера для регистрации базы данных asp.net поставщики членства и ролей.
Я видел это раньше. Используемая база данных не содержит необходимых элементов базы данных для функций членства, управления ролями и профилей. Так что у вас есть несколько вариантов:
- копирование через таблицы, хранимые процедуры и представления из локального SQL Server с помощью SQL Management Studio или аналогичного приложения
- использовать aspnet_regsql.инструмент exe чтобы установить скрипты заново в соответствии с инструкциями в этом post(Я не верю, что вы можете использовать средство против удаленной базы данных, если она закрыта. Так что вам придется экспортировать скрипты и запускать их вручную)
у меня та же проблема - я копирую/вставляю connectionString из
SQL Object manager
в Visual Studio и забудьте типаInitial Catalog=YourDatabaseName
.
Проверьте схему, к которой принадлежит хранимая процедура на вашем хосте - возможно, она не находится в схеме "dbo".
например, если это в пределах какой-то другой системы, ваш вызов должен быть "какой-то другой системой.aspnet_CheckSchemaVersion"
у меня была точно такая же ошибка, когда я позволил
<roleManager>
полагая, что я включаю ASP.NET идентичность 2. они не то же самое! The<roleManager>
включена старая версия управления удостоверениями, которая использует другую структуру таблиц для ASP.NET Identity 2 (который, кстати, не нуждается в "включении" - он просто есть).если вы намеренно используете старый role-manager и все еще получаете ошибку, вы можете смотреть на значение по умолчанию
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 идентичность 2, Вот статья о it:
http://johnatten.com/2014/04/20/asp-net-mvc-and-identity-2-0-understanding-the-basics/
короче говоря, вы должны перекомпилировать библиотеку DLL поставщика aspnet, используя имя пользователя sql, которое вам было назначено с вашего хостинга.
- скачать http://download.microsoft.com/download/a/b/3/ab3c284b-dc9a-473d-b7e3-33bacfcc8e98/ProviderToolkitSamples.msi
- заменить из исходного кода все ссылки на dbo с вашего хостинга имя пользователя базы данных
- компиляция (вам нужна Visual Studio) и место ProviderToolkitSampleProviders.файл DLL в папка Bin
- в интернете.конфигурация заменить "тип" атрибут каждой строки с "Microsoft.Образцы., ProviderToolkitSampleProviders"
- замените в локальном sql server все ссылки dbo на имя пользователя базы данных хостинга
- экспортируйте сценарий создания объектов sql и запустите их в удаленной базе данных
- скопируйте записи из локальной таблицы sql aspnet_SchemaVersions в удаленную базу данных
другой вариант, pheraps проще попробовать, чтобы заменить ссылки dbo в локальной базе данных sql server с именем пользователя базы данных хостинга, а затем загрузить и прикрепить файл mdf.
надеюсь, это поможет
Томас