87 votes

Impossible de trouver la procédure stockée 'dbo.aspnet_CheckSchemaVersion'.

J'utilise WinHost.com pour héberger mon site. La base de données SQL et le système d'adhésion fonctionnent parfaitement sur mon ordinateur local, mais lorsqu'ils sont téléchargés sur le serveur, ils ne fonctionnent pas. J'ai suivi toutes les étapes correctement. J'ai contacté l'assistance technique pour mon service, mais cela fait plus de deux semaines et je n'ai toujours pas reçu de réponse.

Je continue à obtenir cette erreur lorsque j'essaie de me connecter ou d'enregistrer un nouvel utilisateur sur ma page d'adhésion sur mon site.

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 

Quelqu'un peut-il me dire pourquoi cette erreur s'est produite (manifestement, il ne peut pas trouver quelque chose...), et comment je peux la corriger ?

Merci à tous

Bael

0 votes

Il est possible que vous deviez préciser le nom de la procédure stockée ou que le propriétaire ne soit pas dbo.

0 votes

Quelle version de SQL Server utilisez-vous ?

165voto

Gabriel McAdams Points 22323

Est-ce que tu as couru aspnet_regsql.exe contre le serveur sql de WinHost.com ?

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

Si vous ne savez pas où exécuter la commande ci-dessus, vous pouvez simplement exécuter le fichier exécutable 'aspnet_regsql.exe'.

Afin de localiser ce fichier, ouvrez votre boîte de commande d'exécution en appuyant sur la touche Windows + r et tapez la commande suivante dans celle-ci %windir%\Microsoft.NET\Framework\v4.0.30319 et appuyez sur Entrée puis trouvez le fichier 'aspnet_regsql.exe'. Un assistant s'ouvrira et vous pourrez le suivre pour résoudre cette erreur.

Cette erreur se produit principalement lorsque vous n'avez pas activé les rôles dans votre projet asp.net mvc au démarrage avant la création automatique de la table d'identité aspnet.

Vous devrez vous assurer que vous exécutez cette opération afin que les tables et les objets soient créés sur le serveur SQL de WinHost.com.

18 votes

Si vous avez intégré la sécurité, utilisez l'indicateur "-E" au lieu des indicateurs "-U" (nom d'utilisateur) et "-P" (mot de passe).

0 votes

MERCI ! !! Juste pour ajouter, vous pouvez l'exécuter sans arguments de ligne de commande pour obtenir une interface graphique, pas tout à fait comme haxxor mais fait le travail :)

0 votes

@gabriel Comment exécuter aspnet_regsql.exe ?

29voto

Nitin Sawant Points 1913

Ouvrez l'invite de commande de Visual Studio à partir du dossier Outils de Visual Studio dans le menu Démarrer. et tapez aspnet_regsql

et suivez l'assistant pour enregistrer la base de données pour les fournisseurs d'adhésion et de rôles asp.net.

2 votes

Salut mon pote, en utilisant aspnet_regsql j'ai pu résoudre mon problème et maintenant la question est de savoir ce que ce --aspnet_regsql -- fait ?

10voto

Naeem Sarfraz Points 2907

J'ai déjà vu ça avant. La base de données que vous utilisez ne possède pas les éléments de base de données requis pour les fonctions d'adhésion, de gestion des rôles et de profil. Vous avez donc plusieurs options :

  1. Copiez les tables, procédures stockées et vues de votre serveur SQL local en utilisant SQL Management Studio ou une application similaire.
  2. Utilisez le Outil aspnet_regsql.exe d'installer les scripts à partir d'une nouvelle version selon les instructions de cette poste (Je ne pense pas que vous puissiez utiliser l'outil contre une base de données distante si elle est verrouillée. Vous devrez donc exporter les scripts et les exécuter manuellement).

3voto

AdaTheDev Points 53358

Vérifiez le schéma auquel la procédure stockée appartient sur votre hôte - il se peut qu'elle ne soit pas dans le schéma "dbo".

par exemple si c'est dans SomeOtherSchema, votre appel devrait être "SomeOtherSchema.aspnet_CheckSchemaVersion".

1 votes

Merci à AdaTheDev. Pouvez-vous s'il vous plaît me dire comment je m'y prendrais pour changer l'appel à quelque chose d'autre ? Par exemple, à quel endroit du code ce serait... web.config ?

1voto

Thomas Points 124

En bref, vous devez recompiler la dll du fournisseur aspnet en utilisant le nom d'utilisateur sql qui vous a été attribué par votre hébergement.

  • Télécharger le http://download.microsoft.com/download/a/b/3/ab3c284b-dc9a-473d-b7e3-33bacfcc8e98/ProviderToolkitSamples.msi
  • Remplacer à partir du code source tous les références à dbo avec votre hébergement nom d'utilisateur de la base de données
  • Compilez (vous avez besoin de Visual Studio) et placez le ProviderToolkitSampleProviders.dll dans le le dossier Bin
  • Dans votre web.config, remplacez l'attribut "type" de l'objet de chaque ligne par "Microsoft.Samples, ProviderToolkitSampleProviders".
  • Remplacez dans votre serveur sql local toutes les références dbo par le nom d'utilisateur de la base de données de votre hébergement.
  • Exporter la création de l'objet sql script et les exécuter sur la base de données distante.
  • Copiez les enregistrements de votre table sql locale aspnet_SchemaVersions vers la base de données distante.

Une autre option, peut-être plus simple à essayer, est de remplacer les références dbo dans votre base de données sql server locale par le nom d'utilisateur de votre base de données d'hébergement, puis de télécharger et de joindre votre fichier mdf.

J'espère que cela vous aidera

Thomas

0 votes

Huh ? de quelle couleur est le ciel dans votre monde ? lolzalot. Le mec a juste besoin de provisionner sa base de données ou de réparer sa chaîne de connexion. Aucune réponse n'aurait été meilleure que celle-ci.

1 votes

Oups, quand il a écrit "J'ai suivi toutes les étapes correctement", je pensais qu'il avait déjà essayé aspnet_regsql.exe et vérifié deux fois la chaîne de connexion. Un hébergeur que je connais n'autorise pas aspnet_regsql.exe, donc la mienne est une solution qui fonctionne dans ce cas.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X