我通过.NET使用DMO,为SQL Server2000代理上的作业调度功能提供替代接口。工作代码如下所示:
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也没有什么帮助。有什么想法吗?
发布于 2011-04-02 01:17:46
来自the documentation
object.Connect( ServerName、登录名、密码)
..。
使用Login和Password参数指定用于SQL Server身份验证的值。若要对连接使用Windows身份验证,请在调用LoginSecure方法之前将Connect属性设置为TRUE。当LoginSecure为TRUE时,将忽略登录和密码参数中提供的任何值。
因此,在调用连接之前,必须将LoginSecure属性设置为true。这样,您为最后两个参数传递的值就不再重要了。
发布于 2011-04-02 01:14:15
当然,您可以使用LoginSecure属性:
SQLServerClass sqlServer = new SQLServerClass();
sqlServer.LoginSecure = true;
sqlServer.Connect("MyServerName", null, null);(实际上,我不记得是否必须传递null或空字符串...)
发布于 2011-04-02 01:14:56
设置SQLServerClass.LoginSecure = true并保留用户名和密码为空。
有关更多信息,请查看here。不过,我只是注意到LoginSecure已经被弃用了。显然,SQL-DMO已经被SMO所取代。
https://stackoverflow.com/questions/5516463
复制相似问题