《PowerShell V3——SQL Server 2012数据库自动化运维权威指南》——2.11 修改数据库所有者...

    xiaoxiao2024-06-04  115

    本节书摘来自异步社区出版社《PowerShell V3—SQL Server 2012数据库自动化运维权威指南》一书中的第2章,第2.11节,作者:【加拿大】Donabel Santos,更多章节内容可以访问云栖社区“异步社区”公众号查看。

    2.11 修改数据库所有者

    本方案展示了如何用编程方式修改SQL Server数据库所有者。

    2.11.1 准备

    在这个任务中,假设你已经创建了TestDB数据库,已经在你的测试虚拟机VM中创建了Windows帐号QUERYWORKSaterra。

    如果还没有,按照创建数据库方案中的步骤创建一个TestDB数据库。

    2.11.2 如何做…

    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.Owner

    4.做好检查。

    (1)打开SSMS。

    (2)展开到TestDB数据库。

    (3)右键选择“Properties”。

    (4)选择“Options”。

    2.11.3 如何实现…

    用PowerShell修改数据库所有者是一个简短而直接的任务。首先,创建一个数据库句柄。

    唯一的其他操作是调用Microsoft.SqlServer.Management.Smo.Database类的SetOwner方法,它需要两个参数:

    LoginNameOverrideIfAlreadyUserOverrideIfAlreadyUser选项可被设置为true或false。如果设置为true,意味着当前登录的用户已经在目标数据库中存在了,该用户将被删除和重建作为所有者。如果设置为false,登录用户已经匹配到了该数据库,那SetOwner方法将输出错误。

    2.11.4 可参阅…

    修改数据库属性方案

    最新回复(0)