PowerShell 2.0 实践(十四)管理 SQL Server 2008 R2(2)

上一次我们熟悉了SQL Server 2008 R2的新特性与PowerShell与SQL Server相关的扩展,这些扩展背后实际上还是使用的SMO(SQL Server对象模型),可以在MSDN上查看。SQL Server 的PowerShell扩展可以在这里查看。本次我们继续来测试相关的命令,学习SMO中的对象。

测试脚本下载

本系列所有测试脚本均在Windows Server 2008 R2 DataCenter (PowerShell 2.0) + PowerGUI Script Editor Free Edition x64中测试通过。

SQL Server系列使用了SQL Server 2008 R2 DataCenter x64

转载请注明出处:http://www.cnblogs.com/brooks-dotnet/archive/2010/10/13/1850621.html

 

1、查询本机默认实例下所有的数据库、包含的表、存储过程、视图、触发器、用户自定义函数:

Set-Location SQLSERVER:\SQL\BrooksPC\DEFAULT\Databases

Get-ChildItem | SELECT DisplayName, Tables, StoredProcedures, Views, Triggers, UserDefinedFunctions | Format-Table

运行结果:

其实SQLSERVER:\SQL\BrooksPC\DEFAULT\Databases目录下包含的内容远不止这些,还有数据库用户、程序集等很多重要的对象。

 

还可以查看远程数据库上的对象:

家里使用了无线路由,连接另一台笔记本。

Set-Location SQLSERVER:\SQL\192.168.0.101\DEFAULT\Databases

Get-ChildItem | Select Name, Tables

运行结果:

 

需要注意的是若目录中包含特殊字符,则需要编码、解码:(参见MSDN

 

Character

\

/

:

%

<

>

*

?

[

]

|

Hexadecimal Encoding

%5C

%2F

%3A

%25

%3C

%3E

%2A

%3F

%5B

%5D

%7C

 

例如:

Set-Location (Encode-SqlName "Table:Test")

 

Set-Location (Decode-SqlName "Table%3ATest")

 

 

若一些特殊字符在SQL Server中合法却在PowerShell中有特殊含义,如注释:#
					

 

 

则需要用`转义:
					

 

Set-LocationSQLSERVER:\SQL\BrooksPC\DEFAULT\Databases\`#MyTempTable

 

Get-ChildItem
					

 

 

2、执行SQL语句:

Invoke-Sqlcmd可以执行SQL或XQuery语句:

Invoke-Sqlcmd -Query "SELECT @@VERSION;"

运行结果:

GUI中可以看到完整结果:

同样可以远程执行SQL语句:

Invoke-Sqlcmd -Query "SELECT @@VERSION;" -HostName 192.168.0.101

运行结果:

 

查询Northwind中的Customer表:

Invoke-Sqlcmd -Query "SELECT * FROM dbo.Customers;" -ServerInstance "192.168.0.101" -Database "Northwind" -Username "sa" -Password "******" | Format-Table

运行结果:

 

调用存储过程:

Invoke-Sqlcmd -Query "EXECUTE sp_PKeys 'Customers';" -ServerInstance "192.168.0.101" -Database "Northwind" -Username "sa" -Password "******" | Format-Table

运行结果:

 

小结:

本次进一步熟悉了SQL Server 目录中的结构以及获取本地及远程数据库服务的方法,通过Invoke-Sqlcmd可以调用SQL语句进行查询,支持本地及远程数据库实例。后续篇章将继续练习SMO、SQL Server目录的用法。

posted @ 2010-10-13 22:53  徐州瑞步科技  阅读(2699)  评论(2编辑  收藏  举报