如何设置现有SQL Server数据库的所有者

时间:2015-08-05 18:02:15

标签: c# sql sql-server database smo

我尝试使用C#和SMO设置SQL Server数据库所有者。如果数据库不存在,我可以分配其所有者。但是,如果我想设置现有数据库的所有者,我会收到错误。

新数据库的工作代码:

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

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

不适用于现有数据库的代码:

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

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

错误:

  

Microsoft.SqlServer.Management.Smo.InvalidSmoOperationException:您无法执行此操作,因为该对象尚未创建。

1 个答案:

答案 0 :(得分:3)

Server server = new Server("WINSERVER\\SQLEXPR");
server.ConnectionContext.LoginSecure = true;

// changed line below
Database database = server.Databases["MyDatabase"];

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

无需创建新的Database对象,只需从服务器上的数据库集合中提取它即可。