4

我通过 .NET 使用 DMO API 来为 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);
        }
    }
}

一切都以上面列出的形式工作(提供了 uid/pwd 的 SQL Server 身份验证),但我还想提供一个选项来作为受信任用户进行身份验证(又名 SSPI,受信任的连接)

这在 DMO API 中可行吗?如果有怎么办?

注意:SQLServerClass.Connect 方法似乎没有任何重载,我已经尝试为用户 id 和密码传递 null 值,但无济于事,谷歌还没有提供帮助。有任何想法吗?

4

3 回答 3

4

文档中

object.Connect( [ 服务器名 ] , [ 登录 ] , [ 密码 ] )

[...]

使用LoginPassword参数指定用于 SQL Server 身份验证的值。要对连接使用 Windows 身份验证,请在调用Connect方法之前将LoginSecure属性设置为 TRUE。LoginSecure为 TRUE 时,将忽略LoginPassword参数中提供的任何值。

因此,您必须在调用 Connect 之前将该LoginSecure属性设置为。true然后,为最后两个参数传递的值无关紧要。

于 2011-04-01T17:17:46.440 回答
2

当然,您可以使用 LoginSecure 属性:

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

(实际上,我不记得您是否必须传递空字符串或空字符串......)

于 2011-04-01T17:14:14.737 回答
2

设置SQLServerClass.LoginSecure = true并保留用户名和密码为空。

这里查看更多信息。不过,我只是注意到它LoginSecure已被弃用。显然,SQL-DMO 已被 SMO 取代。

于 2011-04-01T17:14:55.790 回答