Не удалось найти хранимую процедуру 'dbo.aspnet_CheckSchemaVersion'

Я использую 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 

Может кто-нибудь, пожалуйста, скажите мне, почему произошла эта ошибка (очевидно, что она не может найти что-то...), и как я могу это исправить?

Спасибо вам всем

Bael

9 ответов

Решение

Ты бежал aspnet_regsql.exe против sql сервера WinHost.com?

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

Если вы не знаете, где выполнить указанную выше команду, вы можете просто запустить исполняемый файл "aspnet_regsql.exe".

Чтобы найти этот файл, откройте окно командной строки RUN, нажав клавишу Windows + r, и введите ниже команду %windir%\Microsoft.NET\Framework\v4.0.30319 и нажмите ввод, затем найдите файл "aspnet_regsql.exe". Откроется мастер, который вы можете использовать, чтобы устранить эту ошибку.

Эта ошибка чаще всего возникает, когда вы не включили роли в своем проекте asv.net mvc. При запуске до автоматического создания таблицы идентификации aspnet.

Вам нужно убедиться, что вы запустите это, чтобы таблицы и объекты создавались на SQL-сервере WinHost.com.

Откройте командную строку Visual Studio из папки инструментов Visual Studio из меню "Пуск" и введите aspnet_regsql

и следуйте указаниям мастера, чтобы зарегистрировать базу данных для поставщиков членства и роли asp.net.

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

  1. Копирование таблиц, хранимых процедур и представлений с локального сервера SQL Server с использованием SQL Management Studio или аналогичного приложения.
  2. Используйте инструмент aspnet_regsql.exe, чтобы установить сценарии заново с помощью инструкций, приведенных в этом посте (я не верю, что вы можете использовать этот инструмент для удаленной базы данных, если она заблокирована. Поэтому вам придется экспортировать сценарии и запустить их вручную)

У меня та же проблема - я копирую / вставляю connectionString из SQL Object manager в Visual Studio и забудьте ввести Initial Catalog=YourDatabaseName,

У меня была точно такая же ошибка, когда я включил <roleManager> полагая, что я включил ASP.NET Identity 2. Они не совпадают! <roleManager> включил старую версию управления идентификацией, которая использует структуру таблицы, отличную от ASP.NET Identity 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-basics/

Проверьте схему, к которой принадлежит хранимая процедура на вашем хосте - возможно, она отсутствует в схеме "dbo".

например, если он находится внутри SomeOtherSchema, ваш вызов должен быть "SomeOtherSchema.aspnet_CheckSchemaVersion"

Короче говоря, вы должны перекомпилировать dll провайдера aspnet, используя имя пользователя sql, назначенное вам с вашего хостинга.

  • Загрузите 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 в удаленную базу данных.

Другой вариант, который проще попробовать - это заменить ссылки dbo в вашей локальной базе данных сервера sql именем пользователя вашей базы данных хостинга, а затем загрузить и прикрепить файл mdf.

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

Томас

Самое простое решение - добавить в файл web.config

        <modules>
          <remove name="RoleManager" />

</modules>

Как упомянул Gabriel McAdams , я использовал aspnet_regsql.exe но потому что я использую Integrated Security=True в строке подключения я использовал разные флаги, а также заметил, что флаг -S относится к имени экземпляра SQL Server (в моем случае localhost\SQLEXPRESS) вместо имени сервера:

      C:\Windows\Microsoft.NET\Framework\v4.0.30319>aspnet_regsql  -S DBInstanceName -E -A all -d DBName
Другие вопросы по тегам