[sql] 저장 프로 시저 ‘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
답변
aspnet_regsql.exe
WinHost.com의 SQL 서버에 대해 실행 했습니까 ?
aspnet_regsql.exe -S DBServerName -U DBLogin -P DBPassword -A all -d DBName
위의 명령을 어디에서 실행해야할지 모르는 경우 ‘aspnet_regsql.exe’실행 파일을 실행하면됩니다.
이 파일을 찾으려면 Windows 키 + r을 눌러 RUN 명령 상자를 열고 그 안에 명령을 %windir%\Microsoft.NET\Framework\v4.0.30319
입력하고 Enter 키를 누른 다음 ‘aspnet_regsql.exe’파일을 찾으십시오. 이 오류를 해결하기 위해 따를 수있는 마법사가 열립니다.
이 오류는 주로 aspnet ID 테이블이 자동으로 생성되기 전에 asp.net mvc 프로젝트에서 역할을 활성화하지 않았을 때 발생합니다.
테이블과 개체가 WinHost.com의 SQL 서버에 생성되도록이 작업을 실행해야합니다.
답변
시작 메뉴의 Visual Studio 도구 폴더에서 Visual Studio 명령 프롬프트를 열고 다음을 입력합니다.
aspnet_regsql
마법사를 따라 asp.net 멤버십 및 역할 공급자에 대한 데이터베이스를 등록합니다.
답변
나는 이것을 전에 본 적이 있습니다. 사용중인 데이터베이스에 멤버십, 역할 관리 및 프로필 기능에 필요한 데이터베이스 요소가 없습니다. 따라서 몇 가지 옵션이 있습니다.
- SQL Management Studio 또는 유사한 응용 프로그램을 사용하여 로컬 SQL Server에서 테이블, 저장 프로 시저 및 뷰를 복사합니다.
- 이 게시물 의 지침에 따라 aspnet_regsql.exe 도구 를 사용하여 새로 스크립트를 설치합니다 (잠긴 경우 원격 데이터베이스에 대해 도구를 사용할 수 없다고 생각합니다. 따라서 스크립트를 내보내고 실행해야합니다. 수동으로)
답변
동일한 문제가 있습니다 SQL Object manager
. Visual Studio에서 connectionString을 복사 / 붙여 넣기 하고 Initial Catalog=YourDatabaseName
.
답변
저장 프로 시저가 호스트에서 속한 스키마를 확인하십시오. “dbo”스키마에 없을 수도 있습니다.
예를 들어 SomeOtherSchema 내에있는 경우 호출은 “SomeOtherSchema.aspnet_CheckSchemaVersion”이어야합니다.
답변
내가 <roleManager>
ASP.NET Identity 2를 활성화 한다고 믿었을 때 똑같은 오류가 발생했습니다 . 그들은 동일하지 않습니다! 는 <roleManager>
(- 그냥 거기 방법으로 “사용”을 필요로하지 않는다) ASP.NET 신원 2에 다른 테이블 구조를 사용하는 ID 관리의 이전 버전을 사용 가능.
의도적으로 이전 역할 관리자를 사용하고 있는데도 여전히 오류가 발생 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- 기초/
답변
간단히 말해 호스팅에서 할당 한 sql 사용자 이름을 사용하여 aspnet 공급자 dll을 다시 컴파일해야합니다.
- http://download.microsoft.com/download/a/b/3/ab3c284b-dc9a-473d-b7e3-33bacfcc8e98/ProviderToolkitSamples.msi 다운로드
- 소스 코드에서 dbo에 대한 모든 참조를 호스팅 데이터베이스 사용자 이름으로 바꿉니다.
- 컴파일 (Visual Studio 필요)하고 Bin 폴더에 ProviderToolkitSampleProviders.dll을 배치합니다.
- web.config에서 모든 줄의 “type”속성을 “Microsoft.Samples., ProviderToolkitSampleProviders”로 바꿉니다.
- 로컬 SQL 서버에서 모든 dbo 참조를 호스팅 데이터베이스 사용자 이름으로 바꿉니다.
- SQL 개체 생성 스크립트를 내보내고 원격 데이터베이스에서 실행
- 로컬 SQL 테이블 aspnet_SchemaVersions에서 원격 데이터베이스로 레코드를 복사합니다.
시도하기 더 쉬운 pheraps의 또 다른 옵션은 로컬 SQL Server 데이터베이스의 dbo 참조를 호스팅 데이터베이스 사용자 이름으로 바꾼 다음 mdf 파일을 업로드하고 첨부하는 것입니다.
도움이되기를 바랍니다.
도마