本节书摘来自异步社区出版社《PowerShell V3—SQL Server 2012数据库自动化运维权威指南》一书中的第2章,第2.11节,作者:【加拿大】Donabel Santos,更多章节内容可以访问云栖社区“异步社区”公众号查看。
本方案展示了如何用编程方式修改SQL Server数据库所有者。
在这个任务中,假设你已经创建了TestDB数据库,已经在你的测试虚拟机VM中创建了Windows帐号QUERYWORKSaterra。
如果还没有,按照创建数据库方案中的步骤创建一个TestDB数据库。
1.通过“Start | Accessories | Windows PowerShell | Windows PowerShell ISE”打开PowerShell控制台。
2.导入SQLPS模块,创建一个新的SMO服务器对象。
#import SQL Server module Import-Module SQLPS –DisableNameChecking #replace this with your instance name $instanceName = "KERRIGAN" $server = New-Object -TypeName Microsoft.SqlServer.Management.Smo.Server-ArgumentList $instanceName3.添加如下脚本并运行。
#create database handle $dbName = "TestDB" $db = $server.Databases[$dbName] #display current owner $db.Owner #change owner #SetOwner requires two parameters: #loginName and overrideIfAlreadyUser $db.SetOwner("QUERYWORKS\aterra", $true) #refresh db $db.Refresh() #check Owner value $db.Owner4.做好检查。
(1)打开SSMS。
(2)展开到TestDB数据库。
(3)右键选择“Properties”。
(4)选择“Options”。
用PowerShell修改数据库所有者是一个简短而直接的任务。首先,创建一个数据库句柄。
唯一的其他操作是调用Microsoft.SqlServer.Management.Smo.Database类的SetOwner方法,它需要两个参数:
LoginNameOverrideIfAlreadyUserOverrideIfAlreadyUser选项可被设置为true或false。如果设置为true,意味着当前登录的用户已经在目标数据库中存在了,该用户将被删除和重建作为所有者。如果设置为false,登录用户已经匹配到了该数据库,那SetOwner方法将输出错误。
修改数据库属性方案
