SMO类库描述
在命名空间Microsoft.SqlServer.Management.Smo下提供有丰富的类库,来描述SQL Server数据库引擎核心对象,包含实例(instances)、数据库(databases),表(tables),存储过程(stored procedures)和视图(views)。它能为我们实现:
- 连接SQL Server实例
- 查询和修改实例设置(instance settings)和配置选项(configuration options)
- 查询和修改数据库对象
- 在SQL Server实例执行DDL(data definition language)操作
- 生成数据库对象脚本
- 执行数据库维护任务,如备份和还原操作
下面我们测试其中一两个例子描述它的应用。
连接SQL Server实例
连接SQL Server实例,我们需要应用到命名空间Microsoft.SqlServer.Management.Smo空间下的Server类。
e.g.<Scripts01>
<Scripts01>中代码:
[System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SqlServer.Smo") | Out-Null #加载程序集Microsoft.SqlServer.Smo
[System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SqlServer.ConnectionInfo") | Out-Null #加载程序集Microsoft.SqlServer.ConnectionInfo
描述加载的程序集,我们在应用命名空间Microsoft.SqlServer.Smo下的各个类库都需要先加载对应的程序集。如这里用到的类Microsoft.SqlServer.Management.Smo.Server对应的程序集是Microsoft.SqlServer.Smo,类Microsoft.SqlServer.Management.Common.ServerConnection,对应的程序集是Microsoft.SqlServer.ConnectionInfo。
我这里看到
看MSDN的时候,提到
在.Net Framework 2.0之后已过时。这是我感觉比较纠结的 位置。
查询和修改实例设置(instance settings)和配置选项(configuration options)
当我们连接上SQL Server实例后,我们可以提供类Server提供的属性Settings和属性configuration options,来修改设置和配置选项。我例子沿用上边的例子,继续。
e.g.<Scripts02>查询部分:
boolean]$Configuration.RemoteDacConnectionsEnabled.RunValue
}
这里只是列出settings和configuration options的一小部分内容。如果想了解更多的信息可以通过get-member获取对应的属性,再输出到PowerShell控制台。我们不引可以查询settings和configuration options的内容,还可以修改它们的内容。
e.g.<Scripts03>修改部分:
Alter()
<Scripts03>如果我们使用的是编辑器是Windows PowerShell ISE,一样可以执行所选的部分代码。
<Scripts03>代码中,说明一点修改设置的时候,最后必须调用实例对象$Server的Alter()方法,不然不会应用到SQL Server实例中。我们这里可以检查修改后的实例信息:
实际应用例子
这里是一个实际中的例子,脚本的功能,主要是查询出某一个实例中的默认数据库路径,实例登录账号、数据库列表。
<Scripts04>
Size,Status,CreateDate,PrimaryFilePath
}
小结
以上是举例子简单描述如何通过PowerShell 2.0,调用命名空间Microsoft.SqlServer.Management.Smo下的类库,管理数据库实例。在真实的场景中,我们碰到更复杂的应用。不管如何,我们需要应用到SMO类库,具体的用法可以参阅:http://technet.microsoft.com/en-us/library/gg720307.aspx