web-dev-qa-db-fra.com

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’appartenance 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. Et j'ai contacté le support technique pour mon service mais cela fait plus de deux semaines et aucune réponse.

Je continue à avoir 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, s'il vous plaît, pourquoi cette erreur s'est produite (évidemment, il ne trouve rien ...) et comment je peux le réparer?

Merci à tous

Bael

84
jay_t55

Avez-vous exécutez 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".

Pour localiser ce fichier, ouvrez votre boîte de commande RUN en appuyant sur Windows Key + r et mettez la commande ci-dessous dans cette %windir%\Microsoft.NET\Framework\v4.0.30319 et appuyez sur Entrée, puis recherchez le fichier 'aspnet_regsql.exe'. Il ouvrira un assistant que vous pourrez suivre pour résoudre cette erreur.

Cette erreur survient généralement lorsque vous n'avez pas activé les rôles dans votre projet asp.net mvc. Au démarrage, la table d'identité aspnet a été créée automatiquement.

Vous devrez vous assurer de l'exécuter pour que les tables et les objets soient créés sur le serveur SQL de WinHost.com.

159
Gabriel McAdams

Ouvrez la commande visual studio Invite dans le dossier Outils Visual Studio du 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ôle asp.net.

28
Nitin Sawant

J'ai déjà vu ça auparavant. La base de données que vous utilisez ne contient pas les éléments de base de données requis pour les fonctionnalités d'appartenance, de gestion des rôles et de profil. Donc, vous avez deux options:

  1. Copiez sur les tables, les procédures stockées et les vues à partir de votre serveur SQL local à l'aide de SQL Management Studio ou d'une application similaire
  2. Utilisez l'outil outil aspnet_regsql.exe pour installer les scripts de nouveau conformément aux instructions de ce post (je ne crois pas que vous puissiez le faire.) utilisez l'outil sur une base de données distante si elle est verrouillée. Vous devrez donc exporter les scripts et les exécuter manuellement)
10
Naeem Sarfraz

J'ai le même problème - je copie/colle connectionString de SQL Object manager dans Visual Studio et oubliez de taper Initial Catalog=YourDatabaseName.

5
FSou1

J'ai eu exactement la même erreur quand j'avais activé <roleManager> croyant que j'activais ASP.NET Identity 2. Ce ne sont pas les mêmes! Le <roleManager> a activé une ancienne version de la gestion des identités qui utilise une structure de table différente de celle d’ASP.NET Identity 2 (qui n’a pas besoin d’être activée, c’est juste là).

Si vous utilisez intentionnellement l'ancien gestionnaire de rôles et obtenez toujours l'erreur, vous pouvez rechercher la valeur par défaut localdb à la place de votre base de données. Dans ce cas, vous pouvez modifier <roleManager> pour pointer sur la chaîne de connexion souhaitée:

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

  </roleManager>

Si vous souhaitez utiliser ASP.NET Identity 2, voici un article:
http://johnatten.com/2014/04/20/asp-net-mvc-and-identity-2-0-understanding-the-basics/

3
noelicus

Vérifiez le schéma auquel la procédure stockée appartient sur votre hôte. Il est possible que ce ne soit pas dans le schéma "dbo".

par exemple. s'il se trouve dans SomeOtherSchema, votre appel doit être "SomeOtherSchema.aspnet_CheckSchemaVersion".

3
AdaTheDev

En bref, vous devez recompiler la dll du fournisseur aspnet en utilisant le nom d'utilisateur SQL attribué à votre hébergement.

  • Téléchargez le http://download.Microsoft.com/download/a/b/3/ab3c284b-dc9a-473d-b7e3-33bacfcc8e98/ProviderToolkitSamples.msi
  • Remplacez à partir du code source toutes les références à dbo par votre nom d'utilisateur de la base d'hébergement
  • Compilez (vous avez besoin de Visual Studio) et placez le fichier ProviderToolkitSampleProviders.dll dans le dossier Bin.
  • Dans votre web.config, remplacez l'attribut "type" de chaque ligne par "Microsoft.Samples., ProviderToolkitSampleProviders".
  • Remplacez dans votre serveur SQL local toutes les références dbo par votre nom d'utilisateur de la base d'hébergement
  • Exporter le script de création d'objet SQL 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, pheraps simple à essayer, consiste à remplacer les références dbo de votre base de données de serveur SQL locale par votre nom d’utilisateur de la base de données d’hébergement, puis de télécharger et de joindre votre fichier mdf.

J'espère que ça aide

Thomas

1
Thomas