ASP.NET メンバーシップ;何かが dbo.aspnet_CheckSchemaVersion を呼び出しています
-
19-09-2019 - |
質問
ASP.NET メンバーシップを使用しています。私はそれを共有ホスティングサイトで実行しており、そこにDBスキーマがあり、それを実行しています。サーバー上に DB を生成するスクリプトで、スキーマを「dbo」からこの別のスキーマに変更しました。テーブル、ビュー、SP 上で。メンバーシップ以外はすべて正常に動作します。DBに接続してレコードを取得することができます。
ただし、メンバーシップ ログインは次のメッセージが表示されて失敗します。「ストアドプロシージャ「dbo.aspnet_checkschemaversion」を見つけることができませんでした。」もちろん、これは私のデータベースで「dbxx.aspnet_checkschemaversion」と呼ばれます。これはどこから呼び出されているのでしょうか?また、正しいスキーマを呼び出すにはどうすればよいですか?
解決
これは 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;
}
}
}
}
所属していません StackOverflow