Можно ли использовать доверенное соединение (SSPI) с API-интерфейсом SQLDMO? - PullRequest
4 голосов
/ 01 апреля 2011

Я использую API-интерфейс DMO через .NET, чтобы предоставить альтернативный интерфейс для функций планирования заданий в агенте SQL Server 2000. Рабочий код выглядит примерно так:

using SQLDMO;

internal class TestDmo {
    public void StartJob() {
        SQLServerClass sqlServer = new SQLServerClass();
        sqlServer.Connect("MyServerName", "sql_user_id", "p@ssword"); // no trusted/SSPI overload?

        foreach (Job job in sqlServer.JobServer.Jobs) {
            if (!job.Name.Equals("MyJob")) continue;

            job.Start(null);
        }
    }
}

Все работает в вышеперечисленной форме (проверка подлинности SQL Server с использованием uid / pwd), но я также хотел бы предоставить возможность аутентификации в качестве доверенного пользователя (он же SSPI, Trusted Connection)

Возможно ли это в API DMO? Если так, то как?

Примечание: метод SQLServerClass.Connect, похоже, не перегружен, я уже пытался передать нулевые значения для идентификатора пользователя и пароля, но безрезультатно, Google еще не помог. Есть идеи?

Ответы [ 3 ]

4 голосов
/ 01 апреля 2011

Из документации :

object.Connect ([Имя_сервера], [Логин], [Пароль])

[...]

Используйте аргументы Login и Password , чтобы указать значения, используемые для аутентификации SQL Server.Чтобы использовать проверку подлинности Windows для подключения, установите для свойства LoginSecure значение TRUE, прежде чем вызывать метод Connect .Когда LoginSecure имеет значение ИСТИНА, любые значения, предоставленные в аргументах Логин и Пароль , игнорируются.

Таким образом, вы должны установитьсвойство LoginSecure до true перед вызовом Connect.Тогда не имеет значения, какие значения вы передаете для двух последних параметров.

2 голосов
/ 01 апреля 2011

Установите SQLServerClass.LoginSecure = true и оставьте имя пользователя и пароль пустыми.

Посмотрите здесь для получения дополнительной информации. Я только заметил, что LoginSecure устарела, хотя. Судя по всему, SQL-DMO был заменен SMO.

2 голосов
/ 01 апреля 2011

Конечно, вы можете использовать свойство LoginSecure:

SQLServerClass sqlServer = new SQLServerClass();
sqlServer.LoginSecure = true;
sqlServer.Connect("MyServerName", null, null);

(на самом деле, я не помню, нужно ли указывать пустые или пустые строки ...)

...