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

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

Спасибо всем

Баел

Ответ 1

Вы запустили aspnet_regsql.exe на сервере WinHost.com sql?

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

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

Ответ 2

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

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

Ответ 3

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

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

Ответ 4

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

Ответ 5

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

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

Ответ 6

У меня была такая же ошибка, когда я включил <roleManager>, полагая, что я включил идентификатор ASP.NET 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/

Ответ 7

Короче вы должны перекомпилировать 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 замените "тип" атрибут каждой строки с "Microsoft.Samples., ProviderToolkitSampleProviders "
  • Замените в своем локальном сервере sql все ссылки dbo с вашим именем пользователя базы хостинга
  • Экспортируйте создание объекта sql script и запустите их в удаленной базе данных
  • Скопируйте записи из локальной таблицы sql aspnet_SchemaVersions в удаленную базу данных

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

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

Томас