Не удалось найти хранимую процедуру '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 79

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 поставщики членства и ролей.

Я видел это раньше. Используемая база данных не содержит необходимых элементов базы данных для функций членства, управления ролями и профилей. Так что у вас есть несколько вариантов:

  1. копирование через таблицы, хранимые процедуры и представления из локального SQL Server с помощью SQL Management Studio или аналогичного приложения
  2. использовать 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.

надеюсь, это поможет

Томас