Is it possible to use a trusted connection (SSPI) with the SQLDMO API?

997 Views Asked by At

I am using the DMO API via .NET to provide an alternative interface to job scheduling functionality on SQL Server 2000 Agent. The working code looks something like this:

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);
        }
    }
}

Everything works in the above-listed form (SQL Server authentication with uid/pwd provided) but I would also like to provide an option to authenticate as a trusted user (aka SSPI, Trusted Connection)

Is this possible in the DMO API? If so how?

Note: The SQLServerClass.Connect method does not seem to have any overloads, I already tried to pass null values for the user id and password to no avail and the Googles has not been helpful yet. Any ideas?

3

There are 3 best solutions below

1
On BEST ANSWER

From the documentation:

object.Connect( [ ServerName ] , [ Login ] , [ Password ] )

[...]

Use the Login and Password arguments to specify values used for SQL Server Authentication. To use Windows Authentication for the connection, set the LoginSecure property to TRUE prior to calling the Connect method. When LoginSecure is TRUE, any values provided in the Login and Password arguments are ignored.

Thus, you have to set the LoginSecure property to true before calling Connect. Then, it does not matter which values you pass for the last two parameters.

3
On

Sure, you can use the LoginSecure property:

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

(actually, I don't remember if you must pas null or empty strings...)

4
On

Set SQLServerClass.LoginSecure = true and leave user name and password null.

Have a look here for more information. I just noticed that LoginSecure is deprecated, though. Apparently, SQL-DMO has been superseded by SMO.