56 votes

Le 'Système.Web.De sécurité.SqlMembershipProvider exige un schéma de base de données compatible avec la version du schéma de '1'

J'ai un Serveur SQL server 2008 DB avec de nombreux tableaux remplis avec les données et j'ai utilisé SQL Server Management Studio pour générer un dump SQL en utilisant l'Assistant de Script : les Tâches -> Générer des Scripts -> Script Tous les objets de la base de données sélectionnée et également de sélectionner l'option de Données de Script. J'ai fait en sorte de changer la valeur de "Script pour la Version du Serveur" à "SQL Server 2008". Puis j'ai créé une nouvelle DB et a couru le dump SQL sur la nouvelle bd de générer une copie à l'identique de l'ancienne DB. Ensuite, j'ai attribué des autorisations pour mon utilisateur par défaut pour la nouvelle bd. Puis j'ai changé la chaîne de connexion sur mon ASP.NET application à utiliser la nouvelle bd. Mais quand je le lance, il lève l'exception suivante:

            Server Error in '/myapp' Application.
            The 'System.Web.Security.SqlMembershipProvider' requires a database schema compatible with schema version '1'.  However, the current database schema is not compatible with this version.  You may need to either install a compatible schema with aspnet_regsql.exe (available in the framework installation directory), or upgrade the provider to a newer version.
            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.Configuration.Provider.ProviderException: The 'System.Web.Security.SqlMembershipProvider' requires a database schema compatible with schema version '1'.  However, the current database schema is not compatible with this version.  You may need to either install a compatible schema with aspnet_regsql.exe (available in the framework installation directory), or upgrade the provider to a newer version.

            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:

            [ProviderException: The 'System.Web.Security.SqlMembershipProvider' requires a database schema compatible with schema version '1'.  However, the current database schema is not compatible with this version.  You may need to either install a compatible schema with aspnet_regsql.exe (available in the framework installation directory), or upgrade the provider to a newer version.]
               System.Web.Util.SecUtility.CheckSchemaVersion(ProviderBase provider, SqlConnection connection, String[] features, String version, Int32& schemaVersionCheck) +1977772
               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

105voto

arunendra Points 621

J'ai trouvé un moyen très simple, il suffit de copier ces données dans l' aspnet_SchemaVersions tableau

common              1   True
health monitoring   1   True
membership          1   True
personalization     1   True
profile             1   True
role manager        1   True

J'ai dû utiliser un peu d'espaces pour rendre les données alignées, ignorer les espaces vides

48voto

Tobiasopdenbrouw Points 5261

Si vraiment vous n'avez rien oublié (vues, SP, etc. etc. etc.), ensuite, google indique que 'idiot' des solutions telles que la fermeture du projet et de la ré-ouverture, de reconstruction, d'ou:

La chose qui fait le tour passait par la ASP.NET (utilitaire de Configuration de Visual Studio - sous menu Site web), la prise de l'application en mode hors connexion puis de nouveau en ligne. C'est en fait tout à fait un changement sur le web.config (pas exactement sûr de ce que le changement a été). Donc, après la prise de vue en mode hors connexion, j'ai dû télécharger web.la configuration de la solution hébergée. A ensuite pris la demande de retour en ligne, recopiée web.config, etc.

Peut-être la réponse.

39voto

GibboK Points 9196

J'ai eu un problème similaire et j'ai été capable de la résoudre en ajoutant la valeur par défaut à la table aspnet_SchemaVersions. Ces valeurs par défaut n'ont pas été ajoutés à la base de données générée à l'aide de Tâches -> Générer des Scripts.

Ici utile de poste

INSERT INTO dbo.aspnet_SchemaVersions 
VALUES
('common', 1, 1),
('membership', 1, 1),
('role manager', 1, 1);
GO

13voto

Phill Q Points 81

Le redémarrage de l'application de la piscine a fonctionné pour moi

6voto

Fritz Points 61

Je ne suis pas du tout un SQL ou ASP.net gourou ou un programmeur, a obtenu le poste de travail par accident, mais j'ai eu le même problème et l'erreur était stupide:

Dans mon Web.Conf les chaînes de connexion serait généralement ressembler à quelque chose comme ceci:

<add name="AgriConnectionString" connectionString="Data Source=.\SQLEXPRESS; Initial Catalog=AgriBranch; pooling=true; Connection Timeout=120; Integrated Security=false;Persist Security Info=True; User ID=UserID; Password=PASS***WORD" providerName="System.Data.SqlClient" />

Encore hier, j'ai accidentellement eu ma source de ressembler à ce qui "Data Source=./SQLEXPRESS".

Et j'ai eu le même message d'erreur tel que discuté.

Cette erreur pourrait aussi expliquer pourquoi lors de la prise du site en mode hors connexion et de retour en ligne avec Visual Studio utilitaire ou lorsque le recompilant de corriger l'erreur.

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