Членство в ASP.NET; что-то вызывает dbo.aspnet_CheckSchemaVersion - PullRequest
0 голосов
/ 09 февраля 2010

Я использую членство в ASP.NET. Я запускаю его на общем хостинг-сайте, где у меня есть схема БД. В сценариях для генерации БД на сервере я изменил схему с 'dbo' на эту другую схему; на столах, представлениях и SP. Все работает хорошо, со всем, кроме членства; Я могу связаться с БД и подтянуть записи.

Однако при входе в систему с ошибкой появляется сообщение «Не удалось найти хранимую процедуру« dbo.aspnet_CheckSchemaVersion ».» Это, конечно, называется «DBxx.aspnet_CheckSchemaVersion» в моей базе данных. Откуда это вызывается и как я могу заставить его вызвать правильную схему?

1 Ответ

2 голосов
/ 18 февраля 2010

Он вызывается в System.Web.Util.SecUtility и жестко закодирован. Если вы не хотите заново изобрести колесо , вам необходимо заново подготовить базу данных. Я сделал это. Это не операция на головном мозге, но большая работа, и интерес к разделению базы данных не соответствует моей книге.

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;
            }
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...