Фиксация осиротевших пользователей с SQL SMO?

Хорошо наследование...

предполагают, что у Вас есть это классы:

class A {
   public int Foo(){ return 5;}
   public virtual int Bar(){return 5;}
}
class B : A{
   public new int Foo() { return 1;}     //shadow
   public override int Bar() {return 1;} //override
}

тогда, когда Вы называете это:

A clA = new A();
B clB = new B();

Console.WriteLine(clA.Foo()); // output 5
Console.WriteLine(clA.Bar()); // output 5
Console.WriteLine(clB.Foo()); // output 1
Console.WriteLine(clB.Bar()); // output 1

//now let's cast B to an A class
Console.WriteLine(((A)clB).Foo()); // output 5 <<<-- shadow
Console.WriteLine(((A)clB).Bar()); // output 1

предположим у Вас есть базовый класс, и Вы используете базовый класс во всем своем коде вместо наследованных классов, и Вы используете тень, это возвратит значения возвраты базового класса вместо следующего дерево наследования реального типа объекта.

код Выполнения здесь

Надежда я имею смысл:)

8
задан Yoopergeek 10 September 2009 в 19:15
поделиться

2 ответа

К сожалению, SMO ненамного лучше SQL-DMO для предоставления методов, которые должны быть доступны. Вам нужно будет использовать встроенный SQL:

db.ExecuteNonQuery("sp_change_users_login 'auto_fix', 'ORPHANED_USERNAME'")

или

db.ExecuteNonQuery("sp_change_users_login 'update_one', 'ORPHANED_USERNAME', 'ORPHANED_USERNAME'")
5
ответ дан 5 December 2019 в 21:20
поделиться

Из T-SQL ALTER LOGIN ... WITH LOGIN = ...

LOGIN = login_name

Переназначает пользователя в другой логин, изменив пользователя Идентификатор безопасности (SID) для соответствия логин SID.

Я не пробовал, потому что я бы синхронизировал SID между серверами (и в наши дни редко использую логины SQL)

Однако это соответствует методу User.Alter .

Итак, это может сработать ...

Если ему не нравится использовать тот же логин, я думаю, вы можете сопоставить его с другим логином и обратно.

2
ответ дан 5 December 2019 в 21:20
поделиться
Другие вопросы по тегам:

Похожие вопросы: