Tidak dapat menemukan prosedur tersimpan 'dbo.aspnet_CheckSchemaVersion'

87

Saya menggunakan WinHost.com untuk meng-host situs saya. Database SQL / sistem keanggotaan bekerja dengan sempurna di komputer lokal saya, tetapi ketika diunggah ke server itu tidak berfungsi. Saya telah mengikuti semua langkah dengan benar. Dan saya telah menghubungi dukungan untuk layanan saya tetapi sudah lebih dari 2 minggu dan tidak ada jawaban.

Saya terus mendapatkan kesalahan ini ketika saya mencoba masuk atau mendaftarkan pengguna baru di halaman keanggotaan saya di situs saya.

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 

Adakah yang bisa memberi tahu saya mengapa kesalahan ini terjadi (jelas tidak dapat menemukan sesuatu ...), dan bagaimana saya bisa memperbaikinya?

Terima kasih semua

Bael

jay_t55
sumber
Apakah mungkin bahwa Anda perlu lebih memenuhi syarat nama proc yang disimpan atau pemiliknya tidak dbo
David
Versi SQL Server apa yang Anda gunakan?
Naeem Sarfraz

Jawaban:

165

Apakah Anda menjalankan aspnet_regsql.exeserver sql WinHost.com?

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

Jika Anda tidak tahu di mana harus menjalankan perintah di atas maka Anda cukup menjalankan file yang dapat dieksekusi 'aspnet_regsql.exe'.

Untuk menemukan file ini, buka Kotak Perintah RUN Anda dengan menekan Tombol Windows + r dan letakkan perintah di bawah ini %windir%\Microsoft.NET\Framework\v4.0.30319dan Tekan enter lalu cari file 'aspnet_regsql.exe'. Ini akan membuka wizard yang dapat Anda ikuti untuk mengatasi kesalahan ini.

Kesalahan ini sebagian besar terjadi ketika Anda tidak mengaktifkan Peran dalam proyek mvc asp.net Anda Saat memulai sebelum tabel identitas aspnet dibuat secara otomatis.

Anda harus memastikan bahwa Anda menjalankan ini sehingga tabel dan objek dibuat pada server SQL WinHost.com.

Gabriel McAdams
sumber
17
Jika Anda memiliki keamanan terintegrasi, gunakan tanda "-E" daripada tanda "-U" (nama pengguna) dan "-P" (sandi).
dance2die
TERIMA KASIH!!! Sebagai tambahan, Anda dapat menjalankan ini tanpa argumen baris perintah untuk mendapatkan GUI, tidak cukup sebagai haxxor tetapi melakukan pekerjaan itu :)
JMK
@ gabriel Bagaimana cara menjalankan aspnet_regsql.exe?
Jam Ville
2
@IvorySantos: Jika Anda bertanya tentang jalur biasa untuk eksekusi, misalnya "% windir% \ Microsoft.NET \ Framework \ v4.0.30319". Lihat "Menemukan Versi yang Benar dari Aspnet_regsql.exe" di msdn.microsoft.com/en-us/library/ms229862.ASPX
kristinalim
Terima kasih atas bantuan Anda @Gabriel, ini sangat dihargai.
jay_t55
28

Buka command prompt visual studio dari folder alat Visual studio dari menu mulai dan ketik aspnet_regsql

dan ikuti wizard untuk mendaftarkan database untuk keanggotaan asp.net dan penyedia peran.

Nitin S
sumber
2
Hai sobat, menjalankan aspnet_regsql Saya dapat memperbaiki masalah saya dan sekarang pertanyaannya adalah apa ini --aspnet_regsql - Lakukan?
Lucian Bumb
10

Saya pernah melihat ini sebelumnya. Database yang Anda gunakan tidak memiliki elemen database yang diperlukan untuk fitur keanggotaan, manajemen peran, dan profil. Jadi, Anda punya beberapa opsi:

  1. Salin seluruh tabel, prosedur tersimpan & tampilan dari SQL Server lokal Anda menggunakan SQL Management Studio atau aplikasi serupa
  2. Gunakan alat aspnet_regsql.exe untuk menginstal skrip dari yang baru sesuai petunjuk di posting ini (saya tidak percaya Anda dapat menggunakan alat ini terhadap database jarak jauh jika dikunci. Jadi Anda harus mengekspor skrip dan menjalankan mereka secara manual)
Naeem Sarfraz
sumber
5

Saya memiliki masalah yang sama - saya menyalin / menempel connectionString dari SQL Object managerdalam Visual Studio dan lupa mengetik Initial Catalog=YourDatabaseName.

Maxim Zhukov
sumber
Saya Initial Catalog=masterbukannyaInitial Catalog=YourDatabaseName
David Ching
Terima kasih! Itu memperbaikinya untuk saya.
Dan Csharpster
3

Periksa skema tempat prosedur tersimpan milik host Anda - bisa jadi tidak ada dalam skema "dbo".

misalnya jika dalam SomeOtherSchema, panggilan Anda harus "SomeOtherSchema.aspnet_CheckSchemaVersion"

AdaTheDev
sumber
1
Terima kasih AdaTheDev. Bisakah Anda memberi tahu saya bagaimana saya akan mengubah panggilan ke hal lain? Seperti, di manakah dalam kode itu ... web.config?
jay_t55
3

Saya mengalami kesalahan yang persis sama ketika saya mengaktifkannya dengan <roleManager>keyakinan bahwa saya mengaktifkan ASP.NET Identity 2. Mereka tidak sama! The <roleManager>diaktifkan versi lama manajemen identitas yang menggunakan struktur tabel yang berbeda untuk ASP.NET Identitas 2 (yang tidak perlu "memungkinkan" dengan cara - itu hanya ada).

Jika Anda sengaja menggunakan role-manager lama dan masih mendapatkan kesalahan, Anda mungkin melihat default dan localdbbukan database Anda, dalam hal ini Anda dapat mengubah <roleManager>untuk menunjuk ke string koneksi apa pun yang Anda inginkan:

  <roleManager
      enabled="true"
      cacheRolesInCookie="true"
      defaultProvider="OurSqlRoleProvider"
     >
      <providers>
          <add
             connectionStringName="DefaultConnection"
             applicationName="/"
             name="OurSqlRoleProvider"
             type="System.Web.Security.SqlRoleProvider" />
      </providers>

  </roleManager>

Jika Anda setelah menggunakan ASP.NET Identity 2, berikut adalah artikel tentangnya:
http://johnatten.com/2014/04/20/asp-net-mvc-and-identity-2-0-understanding-the- dasar /

noelicus
sumber
1

Singkatnya Anda harus mengkompilasi ulang dll penyedia aspnet menggunakan nama pengguna sql yang Anda tetapkan dari hosting Anda.

  • Unduh http://download.microsoft.com/download/a/b/3/ab3c284b-dc9a-473d-b7e3-33bacfcc8e98/ProviderToolkitSamples.msi
  • Ganti dari kode sumber semua referensi ke dbo dengan nama pengguna database hosting Anda
  • Kompilasi (Anda memerlukan Visual Studio) dan tempatkan ProviderToolkitSampleProviders.dll di folder Bin
  • Di web.config Anda, ganti atribut "type" dari setiap baris dengan "Microsoft.Samples., ProviderToolkitSampleProviders"
  • Ganti di server sql lokal Anda semua referensi dbo dengan nama pengguna database hosting Anda
  • Ekspor skrip pembuatan objek sql dan jalankan di database jarak jauh
  • Salin catatan dari tabel sql lokal Anda aspnet_SchemaVersions ke database jarak jauh

Pilihan lain, pheraps yang lebih sederhana untuk dicoba, adalah mengganti referensi dbo di database sql server lokal Anda dengan nama pengguna database hosting Anda, lalu unggah dan lampirkan file mdf Anda.

Semoga membantu

Thomas

Thomas
sumber
Hah? apa warna langit di duniamu? lolzalot. Bung hanya perlu menyediakan database-nya atau memperbaiki string koneksinya. Tidak ada jawaban yang lebih baik dari ini.
Sky Sanders
1
Ups ketika dia menulis "Saya telah mengikuti semua langkah dengan benar" Saya pikir dia sudah mencoba aspnet_regsql.exe dan memeriksa ulang string koneksi. Penyedia hosting yang saya tahu tidak mengizinkan aspnet_regsql.exe jadi milik saya adalah solusi yang berfungsi untuk kasus itu.
Thomas