How to set the owner of an existing SQL Server database

I am trying to set the owner of a SQL Server database using C # and SMO. If the database does not exist, I can assign an 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();

      

Code doesn't work for existing database:

Server server = new Server("WINSERVER\\SQLEXPR");
server.ConnectionContext.LoginSecure = true;
Database database = new Database(server, "MyDatabase");

database.SetOwner("SOMEOWNER", true)
database.Refresh();

      

Mistake:

Microsoft.SqlServer.Management.Smo.InvalidSmoOperationException: You cannot perform this operation because the object was not created by benn.

+3


source to share


1 answer


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 object Database

, just pull it from the database collection on the server.

+3


source







All Articles