2010-02-09 5 views
0

J'utilise l'adhésion ASP.NET. Je l'utilise sur un site d'hébergement partagé où j'ai un schéma db. Dans les scripts pour générer la base de données sur le serveur, j'ai changé le schéma de 'dbo' à cet autre schéma; sur les tables, les vues et les SP. Chose bien, avec tout sauf l'adhésion; Je suis en mesure de contacter la DB et de remonter les dossiers. Cependant, le login d'adhésion échoue avec le message: "Impossible de trouver la procédure stockée" dbo.aspnet_CheckSchemaVersion "." Ceci est bien sûr appelé 'DBxx.aspnet_CheckSchemaVersion' dans ma base de données. D'où cet appel est-il appelé et comment puis-je le faire appeler le schéma correct?Adhésion ASP.NET; Quelque chose appelle dbo.aspnet_CheckSchemaVersion

Répondre

2

Il est appelé dans System.Web.Util.SecUtility et il est codé en dur. Sauf si vous voulez re-invent the wheel vous devez re-provisionner votre base de données. Je l'ai fait. Ce n'est pas une chirurgie du cerveau, mais c'est beaucoup de travail et l'intérêt de séparer une base de données n'est pas admissible dans mon livre.

internal static void CheckSchemaVersion(ProviderBase provider, SqlConnection connection, string[] features, string version, ref int schemaVersionCheck) 
{ 
    if (connection == null) 
    { 
     throw new ArgumentNullException("connection"); 
    } 
    if (features == null) 
    { 
     throw new ArgumentNullException("features"); 
    } 
    if (version == null) 
    { 
     throw new ArgumentNullException("version"); 
    } 
    if (schemaVersionCheck == -1) 
    { 
     throw new ProviderException(SR.GetString("Provider_Schema_Version_Not_Match", new object[] { provider.ToString(), version })); 
    } 
    if (schemaVersionCheck == 0) 
    { 
     lock (provider) 
     { 
      if (schemaVersionCheck == -1) 
      { 
       throw new ProviderException(SR.GetString("Provider_Schema_Version_Not_Match", new object[] { provider.ToString(), version })); 
      } 
      if (schemaVersionCheck == 0) 
      { 
       SqlCommand command = null; 
       SqlParameter parameter = null; 
       foreach (string str in features) 
       { 
        command = new SqlCommand("dbo.aspnet_CheckSchemaVersion", connection); 
        command.CommandType = CommandType.StoredProcedure; 
        parameter = new SqlParameter("@Feature", str); 
        command.Parameters.Add(parameter); 
        parameter = new SqlParameter("@CompatibleSchemaVersion", version); 
        command.Parameters.Add(parameter); 
        parameter = new SqlParameter("@ReturnValue", SqlDbType.Int); 
        parameter.Direction = ParameterDirection.ReturnValue; 
        command.Parameters.Add(parameter); 
        command.ExecuteNonQuery(); 
        if (((parameter.Value != null) ? ((int) parameter.Value) : -1) != 0) 
        { 
         schemaVersionCheck = -1; 
         throw new ProviderException(SR.GetString("Provider_Schema_Version_Not_Match", new object[] { provider.ToString(), version })); 
        } 
       } 
       schemaVersionCheck = 1; 
      } 
     } 
    } 
} 
Questions connexes