2012-01-03 7 views
1

のロールをリカバリします。私は間違ったコマンドを使いました。テーブルaspnet_UsersInRolesからユーザーの役割を削除したかったのです。 私が誤って間違ったコマンドを使用ただし、コマンドがロールを削除し、テーブル

Roles.RemoveUserFromRole(userName, origin_role); 

かもしれないと推測します。

Roles.DeleteRole(origin_role,false); 

元々、テーブルには4つの役割があります。テーブルのRoleIdには2つしかありません

61572264-4935-461d-9d8c-71f147f28c34 
c09f25e6-fd6a-447b-8e0d-eba0cfc94e40 

どのようにしてそれらを見つけて回復できますか? 多くの多くのありがとう。

答えて

0

以下に、あなたが呼び出した関数のソースコードがあります。 dbo.aspnet_Roles_DeleteRoleストアドプロシージャを呼び出します。 現時点ではasp.netのメンバーシップデータベースにアクセスできません。そうでなければ、私はあなたを確認します。 ストアドプロシージャが何をしているか確認したいかもしれませんが、ssyladinが述べたように、何も回復できないと思っています(throwOnPopulatedRole引数をfalseにしたので)。

public override bool DeleteRole(string roleName, bool throwOnPopulatedRole) 
     { 
      SecUtility.CheckParameter(ref roleName, true, true, true, 256, "roleName"); 
      try { 
       SqlConnectionHolder holder = null; 

       try { 
        holder = SqlConnectionHelper.GetConnection(_sqlConnectionString, true); 
        CheckSchemaVersion(holder.Connection); 

        SqlCommand cmd  = new SqlCommand("dbo.aspnet_Roles_DeleteRole", holder.Connection); 

        cmd.CommandType = CommandType.StoredProcedure; 
        cmd.CommandTimeout = CommandTimeout; 

        SqlParameter p = new SqlParameter("@ReturnValue", SqlDbType.Int); 
        p.Direction = ParameterDirection.ReturnValue; 
        cmd.Parameters.Add(p); 
        cmd.Parameters.Add(CreateInputParam("@ApplicationName", SqlDbType.NVarChar, ApplicationName)); 
        cmd.Parameters.Add(CreateInputParam("@RoleName", SqlDbType.NVarChar, roleName)); 
        cmd.Parameters.Add(CreateInputParam("@DeleteOnlyIfRoleIsEmpty", SqlDbType.Bit, throwOnPopulatedRole ? 1 : 0)); 
        cmd.ExecuteNonQuery(); 
        int returnValue = GetReturnValue(cmd); 

        if(returnValue == 2) 
        { 
         throw new ProviderException(SR.GetString(SR.Role_is_not_empty)); 
        } 

        return (returnValue == 0); 
       } 
       finally 
       { 
        if(holder != null) 
        { 
         holder.Close(); 
         holder = null; 
        } 
       } 
      } 
      catch 
      { 
       throw; 
      } 
     } 
1

嫌なことに言いますが、あなたはホースしています。既定のASP.Netプロバイダーには、監査やソフト削除は一切含まれていません。データベースのバックアップがある場合は、そのバックアップから探索/復元することができます。

関連する問題