sql-server - SQL Server SMO,应该在每次修改内容时调用刷新吗?

标签 sql-server powershell smo

我正在玩SMO,并尝试使用它将数据库所有者更改为sa。该代码是

# To simplify our discussing, let's say we have a function Get-SMOServer
$s = Get-SMOServer -Instance myserver\myinstance
$s.databases | ?{$_.owner -ne "sa"} | %{$_.setowner("sa", $true)}

此时,当我从SSMS检查数据库所有者时,所有者已经更改。但是,如果我从$s.databases检查它,我仍然会得到旧数据,直到执行以下操作:
$s.databases | %{$_.refresh()}

然后,我可以从$s.databases获得正确的结果。
我检查了SMO对象,发现其中许多具有refresh()函数。我的问题是,每次修改某个对象时都应该调用refresh()吗?如何查找具有refresh()成员的所有对象类型?

谢谢

最佳答案

您可以查看SMO组件。我正在使用随2008 R2一起提供的SMO:

$assm = add-type -AssemblyName "Microsoft.SqlServer.Smo, Version=10.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91" -EA Stop -PassThru

$assm | %{$hasRefreshMethod = $null; $hasRefreshMethod = $_.GetMethods() | ?{$_.name -eq "Refresh"}; new-object psobject -property @{Name=$_.Name; HasRefreshMethod=$($hasRefreshMethod -ne $null)}}

关于sql-server - SQL Server SMO,应该在每次修改内容时调用刷新吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18341396/

相关文章:

sql-server - 什么时候应该在 sql server 中使用表变量和临时表?

powershell - 安装模块 : The term 'Install-Module' is not recognized as the name of a cmdlet

javascript - JSON.parse() : SyntaxError: Unexpected token � in JSON at position 0

.net - 在 Powershell 中使用 xml.document 保留多行属性和缩进

.net - 在 dacpac 文件中包含 DLL

sql-server - 下划线之间的子字符串 - SQL Server 2008

mysql - SQL : Selecting the time range between two column

.net - Management Studio 和 TableAdapter 之间存储过程的执行时间差异很大

hyperlink - Nofollow 所有外部链接 - 是或否?

c# - 如何在 SQL Server 中使用 SMO 删除和重新创建主键索引?