PowerShell应用的-(SMO) 类库

[System.Reflection.Assembly]::LoadWithPartialName()

此是一个其实被的事例,脚本的机能,重如果查询出某一个实例中的默认数据库路径,实例登录账号、数据库列表。

 

[System.Reflection.Assembly]::LoadWithPartialName(“Microsoft.SqlServer.Smo”)
| Out-Null #加载程序集Microsoft.SqlServer.Smo
[System.Reflection.Assembly]::LoadWithPartialName(“Microsoft.SqlServer.ConnectionInfo”)
| Out-Null  #加载程序集Microsoft.SqlServer.ConnectionInfo

[System.Reflection.Assembly]::Load()不可以选拔。在PowerShell
2.0挨倒以到 

 


SQL Server 1

<Scripts04>

这里只是列出settings和configuration
options的一模一样略片段情节。假使想了然再多之音讯可以通过get-member获取相应的性能,再出口及PowerShell控制台。大家无招好查询settings和configuration
options的情,还可改其的始末。

 

询问及改动实例设置(instance settings)和安排选(configuration
options)

 

<Scripts03>假诺大家利用的凡编辑器是Windows PowerShell
ISE,一样可以实施所选的片代码。

$serverInstance="WINSERVER01\SQL2008DE01" #SQL Server实例名
$userName="sa" #登录账号
$password="sql20081" #登录密码

[System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SqlServer.Smo") | Out-Null #加载程序集Microsoft.SqlServer.Smo
[System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SqlServer.ConnectionInfo") | Out-Null  #加载程序集Microsoft.SqlServer.ConnectionInfo
$ServerConnection =new-object "Microsoft.SqlServer.Management.Common.ServerConnection" $serverInstance,$userName, $password 
$Server=New-Object "Microsoft.SqlServer.Management.Smo.Server" $ServerConnection

Try
{
    $ServerConnection.Connect()
    Write-Host "实例" $serverInstance "连接OK!" 
}
Catch
{
    Write-Error "实例" $serverInstance "无法连接!" 
}

SQL Server 2

SMO类库描述

SQL Server 3

if ($ServerConnection.IsOpen -eq $true)
{
    $Settings=$Server.Settings
    $Configuration=$Server.Configuration

    #显示设置
    $Settings

    #显示配置选项
    "MinServerMemory : " + [int]$Configuration.MinServerMemory.RunValue +"MB"
    "MaxServerMemory : " + [int]$Configuration.MaxServerMemory.RunValue +"MB"
    "IsSqlClrEnabled : " + [boolean]$Configuration.IsSqlClrEnabled.RunValue
    "RemoteDacConnectionsEnabled : " + [boolean]$Configuration.RemoteDacConnectionsEnabled.RunValue


}

实在使用例子


e.g.<Scripts02>查询部分:

SQL Server 4

SQL Server,在命名空间Microsoft.SqlServer.Management.Smo下提供有增长的类库,来讲述SQL
Server数据库引擎大旨目的,包含实例(instances)、数据库(databases),表(tables),存储过程(stored
procedures)和视图(views)。它可以吧我们兑现:

 我那里看

脚我们测试之中一两单例描述其的应用。

<#===========================================#>

$serverInstance="WINSERVER01\SQL2008DE01" 
$userName="sa"
$password="sql20081"


<#===========================================#>
[System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SqlServer.Smo") | Out-Null
[System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SqlServer.ConnectionInfo") | Out-Null

$ServerConnection =new-object "Microsoft.SqlServer.Management.Common.ServerConnection" $serverInstance,$userName, $password  

Try
{$ServerConnection.Connect()}
Catch
{Write-Error $_}

if($ServerConnection.IsOpen -eq $True)
{    

    $Server=New-Object "Microsoft.SqlServer.Management.Smo.Server" $ServerConnection
    Write-Host
    Write-Host "Server Name  :" $Server.Name
    Write-Host
    Write-Host "======================= Settings ================================"
    Write-Host "DefaultFile  : " $Server.Settings.DefaultFile
    Write-Host "DefaultLog   : " $Server.Settings.DefaultLog
    Write-Host

    Write-Host "======================= Configuration ================================"
    "XPCmdShellEnabled              : "+ [boolean]$Server.Configuration.XPCmdShellEnabled.RunValue
    "DatabaseMailEnabled            : "+ [boolean]$Server.Configuration.DatabaseMailEnabled.RunValue
    "IsSqlClrEnabled                : "+ [boolean]$Server.Configuration.IsSqlClrEnabled.RunValue
    "SqlMailXPsEnabled              : "+ [boolean]$Server.Configuration.SqlMailXPsEnabled.RunValue
    "DatabaseMailEnabled            : "+ [boolean]$Server.Configuration.DatabaseMailEnabled.RunValue
    "OleAutomationProceduresEnabled : "+ [boolean]$Server.Configuration.OleAutomationProceduresEnabled.RunValue
    "AdHocDistributedQueriesEnabled : "+ [boolean]$Server.Configuration.AdHocDistributedQueriesEnabled.RunValue
    Write-Host
    Write-Host "======================= Logins ================================"
    $Server.Logins | Format-Table -AutoSize -Wrap -Property Name,CreateDate,IsDisabled,LoginType,IsSystemObject

    Write-Host
    Write-Host "======================= DataBases ================================"
    $Server.Databases| Sort-Object -Property @{Expression="IsSystemObject";Descending=$True},@{Expression="ID";Ascending=$True}  | Format-Table -AutoSize -Wrap -Property Name,IsSystemObject,Size,Status,CreateDate,PrimaryFilePath
}    

 

SQL Server 5

<Scripts01>中代码:

<Scripts03>代码中,表明某些改动设置的时候,最终要调用实例对象$Server的Alter()方法,不然不会应用到SQL
Server实例中。我们这里可以检查修改后底实例消息:

  • 连接SQL Server实例
  • 询问以及改动实例设置(instance settings)和布置选(configuration
    options)
  • 查询及改动数据库对象
  • 每当SQL Server实例执行DDL(data definition language)操作
  • 变更数据库对象脚本
  • 执行数据库维护任务,如备份和復苏操作

e.g.<Scripts01>


SQL Server 6

 

e.g.<Scripts03>修改部分:

小结

叙加载的程序集,我们于使命名空间Microsoft.SqlServer.Smo下的顺序类库都需事先加载对应之主次集。如这里运用的类Microsoft.SqlServer.Management.Smo.Server对应的次第集是Microsoft.SqlServer.Smo,类Microsoft.SqlServer.Management.Common.ServerConnection,对应的程序集是Microsoft.SqlServer.ConnectionInfo。

 

老是SQL
Server实例,大家要采取到命名空间Microsoft.SqlServer.Management.Smo空间下之Server类。

[System.Reflection.Assembly]::LoadWithPartialName()

#修改设置
$Settings.DefaultFile="E:\DATA" #修改前是“ E:\DATA\SQL2008DE01”
$Settings.DefaultLog="E:\DATA" #修改前是“ E:\DATA\SQL2008DE01”

$Configuration.IsSqlClrEnabled.ConfigValue=0 #修改前是1
$Server.Alter()

当大家连年达SQL
Server实例后,我们好供类Server提供的性Settings和性质configuration
options,来修改设置与布局选项。我例子沿用下面的例证,继续。

连接SQL Server实例

以.Net Framework 2.0自此一度不合时宜。这是自身倍感比纠结的 地点。

看MSDN的时候,提到

 

如上是举事例简单描述如何通过PowerShell
2.0,调用命名空间Microsoft.SqlServer.Management.Smo下的类库,管理数据库实例。在实的观被,我们相见更复杂的采纳。不管怎样,我们需要使用至SMO类库,具体的用法可以参考:http://technet.microsoft.com/en-us/library/gg720307.aspx


相关文章