'Dbo.aspnet_CheckSchemaVersion' saklı yordamı bulunamadı


87

Sitemi barındırmak için WinHost.com kullanıyorum. SQL Veritabanı / üyelik sistemi yerel bilgisayarımda mükemmel çalışıyor, ancak sunucuya yüklendiğinde çalışmıyor. Tüm adımları doğru takip ettim. Hizmetim için destekle iletişime geçtim ancak 2 haftadan fazla oldu ve yanıt gelmedi.

Sitemdeki üyelik sayfamda oturum açmaya veya yeni bir kullanıcı kaydetmeye çalıştığımda bu hatayı almaya devam ediyorum.

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 

Birisi bana bu hatanın neden oluştuğunu (belli ki bir şey bulamıyor ...) ve bunu nasıl düzeltebileceğimi söyleyebilir mi?

Hepinize teşekkür ederim

Bael


Depolanan proc adını daha fazla nitelendirmeniz gerekebilir veya sahibi dbo değildir
David,

SQL Server'ın hangi sürümünü kullanıyorsunuz?
Naeem Sarfraz

Yanıtlar:


165

aspnet_regsql.exeWinHost.com'un sql sunucusuna karşı mı çalıştınız?

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

Yukarıdaki komutu nerede çalıştıracağınızı bilmiyorsanız, 'aspnet_regsql.exe' çalıştırılabilir dosyasını çalıştırabilirsiniz.

Bu dosyayı bulmak için Windows Tuşu + r tuşlarına basarak RUN Komut Kutunuzu açın ve aşağıdaki komutu yazın. %windir%\Microsoft.NET\Framework\v4.0.30319 ve enter tuşuna basın ve ardından 'aspnet_regsql.exe' dosyasını bulun. Bu hatayı gidermek için izleyebileceğiniz bir sihirbaz açılacaktır.

Bu hata çoğunlukla aspnet kimlik tablosu otomatik olarak oluşturulmadan önce asp.net mvc projenizde Rolleri etkinleştirmediğinizde oluşur.

WinHost.com'un SQL sunucusunda tabloların ve nesnelerin oluşturulması için bunu çalıştırdığınızdan emin olmanız gerekir.


17
Entegre güvenliğiniz varsa, "-U" (kullanıcı adı) ve "-P" (şifre) bayrakları yerine "-E" işaretini kullanın.
dance2die

TEŞEKKÜR EDERİM!!! Eklemek gerekirse, bunu bir GUI elde etmek için komut satırı değiştirgeleri olmadan çalıştırabilirsiniz, haxxor kadar değil ama işi yapar :)
JMK

@gabriel aspnet_regsql.exe nasıl çalıştırılır?
Jam Ville

2
@IvorySantos: Çalıştırılabilir dosyanın olağan yolunu soruyorsanız, örneğin "% windir% \ Microsoft.NET \ Framework \ v4.0.30319" şeklindedir. Msdn.microsoft.com/en-us/library/ms229862.ASPX
kristinalim

Yardımınız için teşekkürler @Gabriel, çok minnettarım.
jay_t55

28

Başlat menüsünden Visual studio araçları klasöründen visual studio komut istemini açın ve yazın aspnet_regsql

ve asp.net üyeliği ve rol sağlayıcıları için veritabanını kaydetmek üzere sihirbazı izleyin.


2
Merhaba dostum, aspnet_regsql çalıştırıyor Sorunumu çözebildim ve şimdi soru şu --aspnet_regsql - Ne yapmalı?
Lucian Bumb

10

Bunu daha önce görmüştüm. Kullandığınız veritabanı üyelik, rol yönetimi ve profil özellikleri için gerekli veritabanı öğelerine sahip değil. Yani birkaç seçeneğiniz var:

  1. SQL Management Studio veya benzer bir uygulama kullanarak yerel SQL Server'ınızdan tablolar, depolanmış prosedürler ve görünümler arasında kopyalayın
  2. Kullanım Aspnet_regsql.exe aracını bunda yeniden gelen talimatlara göre komut dosyalarını yüklemek için yazı ben kilitli olup olmadığını size uzak bir veritabanına karşı aracını kullanabilirsiniz inanmıyorum (. Eğer gerekecek Yani senaryo ve çalıştırmak ihracat manuel olarak)

5

Aynı sorunu yaşıyorum SQL Object manager- Visual Studio'daki bağlantı dizesini kopyala / yapıştır ve yazmayı unutuyorum Initial Catalog=YourDatabaseName.


Initial Catalog=masterInitial Catalog=YourDatabaseName
David Ching

Teşekkürler! Bu benim için sorunumu çözdü.
Dan Csharpster

3

Ana makinenizde saklı yordamın ait olduğu şemayı kontrol edin - "dbo" şemasında olmayabilir.

örneğin, SomeOtherSchema içindeyse, aramanızın "SomeOtherSchema.aspnet_CheckSchemaVersion" olması gerekir


1
Teşekkürler AdaTheDev. Aramayı başka bir şeye nasıl değiştireceğimi söyler misin lütfen? Mesela, kodun neresi olurdu ... web.config?
jay_t55

3

<roleManager>ASP.NET Identity 2'yi etkinleştirdiğime inanmayı etkinleştirdiğimde tam olarak aynı hatayı aldım . Bunlar aynı değil! <roleManager>(- sadece orada bu arada "sağlayan" gerekmez) ASP.NET Kimlik 2 farklı tablo yapısını kullanan kimlik yönetimi eski bir sürümünü sağladı.

Kasıtlı olarak eski rol yöneticisini kullanıyorsanız ve hala hatayı localdbalıyorsanız, veritabanınız yerine varsayılana bakıyor olabilirsiniz , bu durumda istediğiniz <roleManager>herhangi bir bağlantı dizesini işaret edecek şekilde değişiklik yapabilirsiniz :

  <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'yi kullandıktan sonra, işte bununla ilgili bir makale:
http://johnatten.com/2014/04/20/asp-net-mvc-and-identity-2-0-understanding-the- temeller /


1

Kısacası, aspnet sağlayıcı dll'yi barındırma sisteminizden atadığınız sql kullanıcı adını kullanarak yeniden derlemelisiniz.

  • Http://download.microsoft.com/download/a/b/3/ab3c284b-dc9a-473d-b7e3-33bacfcc8e98/ProviderToolkitSamples.msi dosyasını indirin
  • Kaynak koddaki tüm dbo referanslarını barındırma veritabanı kullanıcı adınızla değiştirin
  • Derleyin (Visual Studio'ya ihtiyacınız var) ve ProviderToolkitSampleProviders.dll dosyasını Bin klasörüne yerleştirin
  • Web.config dosyanızda her satırın "type" özniteliğini "Microsoft.Samples., ProviderToolkitSampleProviders" ile değiştirin.
  • Yerel sql sunucunuzdaki tüm dbo referanslarını barındırma veritabanı kullanıcı adınızla değiştirin
  • Sql nesne oluşturma komut dosyasını dışa aktarın ve uzak veritabanında çalıştırın
  • Kayıtları yerel sql tablonuzdan aspnet_SchemaVersions uzak veritabanına kopyalayın

Diğer bir seçenek, pheraps'ı denemek daha kolaydır, yerel sql sunucu veritabanınızdaki dbo referanslarını barındırma veritabanı kullanıcı adınızla değiştirmek, ardından mdf dosyanızı karşıya yüklemek ve eklemektir.

Umarım yardımcı olur

Thomas


ha? dünyanızda gökyüzü ne renk? lolzalot. Dostum sadece veritabanını sağlamalı veya bağlantı dizesini düzeltmeli. Hiçbir cevap bundan daha iyi olamazdı.
Sky Sanders

1
Ooops, "Tüm adımları doğru bir şekilde izledim" yazdığında, aspnet_regsql.exe'yi denediğini ve bağlantı dizesini iki kez kontrol ettiğini düşündüm. Tanıdığım bir barındırma sağlayıcısı aspnet_regsql.exe'ye izin vermiyor, bu yüzden benimki bu durum için çalışan bir çözüm.
Thomas
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.