Reputation: 93
I'm trying to set a SQL Server database owner using C# and SMO. If the database does not exist, I can assign its owner. But if I want to set the owner of an existing database, I get an error.
Working code for new database:
Server server = new Server("WINSERVER\\SQLEXPR");
server.ConnectionContext.LoginSecure = true;
Database database = new Database(server, "MyDatabase");
db.Create();
database.SetOwner("SOMEOWNER", true)
database.Refresh();
Not working code for an existing database:
Server server = new Server("WINSERVER\\SQLEXPR");
server.ConnectionContext.LoginSecure = true;
Database database = new Database(server, "MyDatabase");
database.SetOwner("SOMEOWNER", true)
database.Refresh();
Error:
Microsoft.SqlServer.Management.Smo.InvalidSmoOperationException: You cannot execute this operation since the object has not benn created.
Upvotes: 3
Views: 1159
Reputation: 5862
Server server = new Server("WINSERVER\\SQLEXPR");
server.ConnectionContext.LoginSecure = true;
// changed line below
Database database = server.Databases["MyDatabase"];
database.SetOwner("SOMEOWNER", true)
database.Refresh();
No need to create a new Database
object, just pull it from the database collection on the server already.
Upvotes: 4