Majkel
Majkel

Reputation: 93

How to set owner of existing SQL Server database

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

Answers (1)

Thomas Stringer
Thomas Stringer

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

Related Questions