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 to share