C# 是否可以将可信连接(SSPI)与SQLDMOAPI一起使用?

C# 是否可以将可信连接(SSPI)与SQLDMOAPI一起使用?,c#,.net,sql-server,sql-server-2000,sqldmo,C#,.net,Sql Server,Sql Server 2000,Sqldmo,我正在通过.NET使用DMOAPI为SQLServer2000代理上的作业调度功能提供一个替代接口。工作代码如下所示: using SQLDMO; internal class TestDmo { public void StartJob() { SQLServerClass sqlServer = new SQLServerClass(); sqlServer.Connect("MyServerName", "sql_user_id", "p@sswo

我正在通过.NET使用DMOAPI为SQLServer2000代理上的作业调度功能提供一个替代接口。工作代码如下所示:

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和密码传递空值,但没有效果,Google也没有任何帮助。有什么想法吗?

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

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

(实际上,我不记得是否必须输入null或空字符串…

设置
SQLServerClass.LoginSecure=true
,并将用户名和密码保留为null

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

来自:

连接([ServerName]、[Login]、[Password])

[……]

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


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

不管是将它们保留为null还是传递空字符串。一旦您设置LoginSecure=true,用户名和密码值将被忽略。+1感谢您的回答。但复选标记是基于时间戳的。这个答案提前了两三分钟到达。@Paul Sasik-事实上,我认为你错了,我的答案是17:14:14,Heinzi的答案是17:17:46,但没有什么不快。SMO是更新、更好、更流畅的API,但它与MS SQL 2k的向后兼容性有点问题。我需要使用DMO,以避免不同的兼容性设置给系统带来负担。@Paul Sasik:这很公平。:-)+谢谢你的回答。但复选标记是基于时间戳的。答案提前了两三分钟到达。@Paul Sasik:好吧,如果你看的是时间戳,这就是答案:Heinzi:1-April 17:17:46;塞萨尔:1-April 17:14:55;西蒙·穆里埃:17:14:14。西蒙是第一个,然后是我,海因茨是最后一个。:-)谢谢你的回答。现在,我需要在SSPI/可信连接/集成安全术语系列中添加另一个术语:LoginSecure