ไม่พบกระบวนงานที่เก็บไว้ "dbo.aspnet_CheckSchemaVersion"


87

ฉันใช้ 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 

ใครช่วยบอกหน่อยได้ไหมว่าทำไมเกิดข้อผิดพลาด (เห็นได้ชัดว่าไม่พบบางอย่าง ... ) และฉันจะแก้ไขได้อย่างไร

ขอบคุณทุกคน

มะตูม


เป็นไปได้ไหมที่คุณจะต้องมีคุณสมบัติเพิ่มเติมสำหรับชื่อ proc ที่เก็บไว้หรือเจ้าของไม่ใช่ dbo
David

คุณใช้ SQL Server เวอร์ชันใด
Naeem Sarfraz

คำตอบ:


165

คุณทำงานaspnet_regsql.exeกับเซิร์ฟเวอร์ sql ของ WinHost.com หรือไม่?

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

หากคุณไม่ทราบว่าจะเรียกใช้คำสั่งดังกล่าวจากที่ใดคุณสามารถเรียกใช้ไฟล์ปฏิบัติการ 'aspnet_regsql.exe' ได้

ในการค้นหาไฟล์นี้ให้เปิดกล่องคำสั่ง RUN ของคุณโดยกด Windows Key + r และใส่คำสั่งด้านล่างในนั้น%windir%\Microsoft.NET\Framework\v4.0.30319และกด Enter จากนั้นค้นหาไฟล์ 'aspnet_regsql.exe' จะเปิดตัวช่วยที่คุณสามารถทำตามเพื่อแก้ไขข้อผิดพลาดนี้

ข้อผิดพลาดนี้ส่วนใหญ่เกิดขึ้นเมื่อคุณไม่ได้เปิดใช้งาน Roles ในโปรเจ็กต์ asp.net mvc ของคุณเมื่อเริ่มต้นก่อนสร้างตารางข้อมูลประจำตัว aspnet โดยอัตโนมัติ

คุณจะต้องแน่ใจว่าคุณได้รันสิ่งนี้เพื่อให้ตารางและวัตถุถูกสร้างขึ้นบนเซิร์ฟเวอร์ SQL ของ WinHost.com


17
หากคุณมีการรักษาความปลอดภัยในตัวให้ใช้แฟล็ก "-E" แทนแฟล็ก "-U" (ชื่อผู้ใช้) และ "-P" (รหัสผ่าน)
dance2die

ขอขอบคุณ!!! เพียงแค่เพิ่มคุณสามารถเรียกใช้สิ่งนี้โดยไม่มีอาร์กิวเมนต์บรรทัดคำสั่งเพื่อรับ GUI ไม่ได้เป็น haxxor แต่ทำงานได้ดี :)
JMK

@gabriel วิธีเรียกใช้ aspnet_regsql.exe
แจ่มวิลล์

2
@IvorySantos: หากคุณกำลังถามเกี่ยวกับเส้นทางปกติสำหรับไฟล์ปฏิบัติการเช่น "% windir% \ Microsoft.NET \ Framework \ v4.0.30319" ดู "การค้นหาเวอร์ชันที่ถูกต้องของ Aspnet_regsql.exe" บนmsdn.microsoft.com/en-us/library/ms229862.ASPX
kristinalim

ขอบคุณสำหรับความช่วยเหลือของคุณ @Gabriel เป็นที่ชื่นชมมาก
jay_t55

28

เปิดพรอมต์คำสั่ง visual studio จากโฟลเดอร์ Visual studio tools จากเมนูเริ่มแล้วพิมพ์ aspnet_regsql

และทำตามวิซาร์ดเพื่อลงทะเบียนฐานข้อมูลสำหรับการเป็นสมาชิก asp.net และผู้ให้บริการบทบาท


2
สวัสดีเพื่อนเรียกใช้ aspnet_regsql ฉันสามารถแก้ไขปัญหาของฉันได้และตอนนี้คำถามคือสิ่งนี้ --aspnet_regsql - ทำอย่างไร
Lucian Bumb

10

ฉันเคยเห็นสิ่งนี้มาก่อน ฐานข้อมูลที่คุณใช้ไม่มีองค์ประกอบฐานข้อมูลที่จำเป็นสำหรับคุณสมบัติการเป็นสมาชิกการจัดการบทบาทและโปรไฟล์ คุณมีสองตัวเลือก:

  1. คัดลอกข้ามตารางขั้นตอนที่จัดเก็บและมุมมองจาก SQL Server ในเครื่องของคุณโดยใช้ SQL Management Studio หรือแอปพลิเคชันที่คล้ายกัน
  2. ใช้เครื่องมือ aspnet_regsql.exeเพื่อติดตั้งสคริปต์จากใหม่ตามคำแนะนำในโพสต์ นี้(ฉันไม่เชื่อว่าคุณสามารถใช้เครื่องมือกับฐานข้อมูลระยะไกลได้หากถูกล็อกดังนั้นคุณจะต้องส่งออกสคริปต์และเรียกใช้ ด้วยตนเอง)

5

ฉันมีญหาเดียวกันผมคัดลอก / วาง ConnectionString จากSQL Object managerใน Visual Studio Initial Catalog=YourDatabaseNameและลืมประเภท


ฉันมีInitial Catalog=masterแทนInitial Catalog=YourDatabaseName
เดวิดชิง

ขอบคุณ! ที่แก้ไขให้ฉัน
Dan Csharpster

3

ตรวจสอบสคีมาที่กระบวนงานเก็บไว้เป็นของบนโฮสต์ของคุณซึ่งอาจเป็นไปได้ว่าไม่ได้อยู่ในสคีมา "dbo"

เช่นถ้าอยู่ใน SomeOtherSchema การโทรของคุณจะต้องเป็น "SomeOtherSchema.aspnet_CheckSchemaVersion"


1
ขอบคุณ AdaTheDev คุณช่วยบอกฉันได้ไหมว่าฉันจะเปลี่ยนสายไปเป็นอย่างอื่นได้อย่างไร ชอบตรงไหนในโค้ดมันจะเป็น ... web.config?
jay_t55

3

ฉันมีข้อผิดพลาดเดียวกันทุกประการเมื่อฉันเปิดใช้งานโดย<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-understand-the- พื้นฐาน /


1

ในระยะสั้นคุณควรคอมไพล์ 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 ไปยังฐานข้อมูลระยะไกล

อีกทางเลือกหนึ่งที่ง่ายกว่าในการลองใช้ pherap คือแทนที่การอ้างอิง dbo ในฐานข้อมูลเซิร์ฟเวอร์ sql ในพื้นที่ของคุณด้วยชื่อผู้ใช้ฐานข้อมูลโฮสติ้งของคุณจากนั้นอัปโหลดและแนบไฟล์ mdf ของคุณ

หวังว่าจะช่วยได้

โทมัส


ฮะ? ท้องฟ้าในโลกของคุณเป็นสีอะไร? lolzalot. เพื่อนต้องการจัดเตรียมฐานข้อมูลหรือแก้ไขสตริงการเชื่อมต่อ ไม่มีคำตอบใดจะดีไปกว่านี้
Sky Sanders

1
อ๊ะเมื่อเขาเขียนว่า "ฉันทำตามขั้นตอนทั้งหมดถูกต้องแล้ว" ฉันคิดว่าเขาได้ลองใช้ aspnet_regsql.exe แล้วและตรวจสอบสตริงการเชื่อมต่ออีกครั้ง ผู้ให้บริการโฮสติ้งที่ฉันรู้ว่าไม่อนุญาต aspnet_regsql.exe ดังนั้นของฉันจึงเป็นโซลูชันที่ใช้งานได้สำหรับกรณีนั้น
Thomas
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.