.NET类System.Data.SqlClient.SqlConnection用于建立到SQL Server数据库的连接。用过户可以用这个类通过PowerShell连接到SQL Server,查找数据以及执行存储过程。
下面的例子通过默认实例查询SQL Server版本号
#Let’s set the location to the script folder C:\Scripts
Set-Location C:\Scripts
$SqlConnection = New-Object System.Data.SqlClient.SqlConnection
$SqlConnection.ConnectionString = “Server=WIN-SQL;Database=master;IntegratedSecurity=True”
$SqlCmd = New-Object System.Data.SqlClient.SqlCommand
$SqlCmd.CommandText = “Select @@version as SQLServerVersion”
$SqlCmd.Connection = $SqlConnection
$SqlAdapter = New-Object System.Data.SqlClient.SqlDataAdapter
$SqlAdapter.SelectCommand = $SqlCmd
$DataSet = New-Object System.Data.DataSet
$SqlAdapter.Fill($DataSet)
$SqlConnection.Close()
$DataSet.Tables[0]
执行结果类似于下图所示:
前面的例子中使用了四个类:
System.Data.SqlClient.SqlConnection
System.Data.SqlClient.SqlCommand
System.Data.SqlClient.SqlDataAdapter
System.Data.DataSet
SqlConnection类用于创建针对SQL Server数据库的 连接,SQLCommand类用于对SQL Server数据库创建Transact-SQL语句或存储过程,SQLDataAdapter类用户创建一系列用于填充dataset类的数据命令和数据库连接。数据集代表内存缓存的数据。通常情况下,脚本首先通过WIN-SQL的默认实例创建连接,接下来创建命令对象并设置T-SQL语句”select @@version”,随后创建数据适配器,用SqlCommand获得的结果填充数据集,最后显示数据集。
同样也能用PowerShell通过类似的.NET框架类System.Data.SqlClient.SqlConnection连接到SQL Server命名实例,如下:
$SqlConnection = New-Object System.Data.SqlClient.SqlConnection
$SqlConnection.ConnectionString = “Server=WIN-SQL;Database=master;
Integrated Security=True”
$SqlCmd = New-Object System.Data.SqlClient.SqlCommand
$SqlCmd.CommandText = “select @@version as SQLServerVersion”
$SqlCmd.Connection = $SqlConnection
$SqlAdapter = New-Object System.Data.SqlClient.SqlDataAdapter
$SqlAdapter.SelectCommand = $SqlCmd
$DataSet = New-Object System.Data.DataSet
$SqlAdapter.Fill($DataSet)
$SqlConnection.Close()
$DataSet.Tables[0]
需要强调的是WIN-SQL是主机名。
T-SQL命令”select @@version as SQLServerVersion”的执行结果如下图所示:
用户也块可以用PowerShell通过同名的.NET框架类库System.Data.SqlClient.SqlConnection执行存储过程并通过SQL Server命名实例返回查询结果,代码如下:
$SqlConnection = New-Object System.Data.SqlClient.SqlConnection
$SqlConnection.ConnectionString = “Server=WIN-SQL;Database=master; Integrated Security=True”
$SqlCmd = New-Object System.Data.SqlClient.SqlCommand
$SqlCmd.CommandText = “sp_who”
$SqlCmd.Connection = $SqlConnection
$SqlAdapter = New-Object System.Data.SqlClient.SqlDataAdapter
$SqlAdapter.SelectCommand = $SqlCmd
$DataSet = New-Object System.Data.DataSet
$SqlAdapter.Fill($DataSet)
$SqlConnection.Close()
$DataSet.Tables[0]
能够看到执行存储过程sp_who的执行结果如下图所示:
因为很多时候用户需要知道已安装的SQL Server的版本,下面会创建名为Get-SQLVersion.ps1的脚本,能够用于返回任何SQL Server实例的版本号,以下是脚本的完整代码:
Param (
[string] $SQLSERVER
)
$SqlConnection = New-Object System.Data.SqlClient.SqlConnection
$SqlConnection.ConnectionString = “Server=$SQLSERVER;Database=master;Integrated
Security=True”
$SqlCmd = New-Object System.Data.SqlClient.SqlCommand
$SqlCmd.CommandText = “Select @@version as SQLServerVersion”
$SqlCmd.Connection = $SqlConnection
$SqlAdapter = New-Object System.Data.SqlClient.SqlDataAdapter
$SqlAdapter.SelectCommand = $SqlCmd
$DataSet = New-Object System.Data.DataSet
$SqlAdapter.Fill($DataSet)
$SqlConnection.Close()
$DataSet.Tables[0]
用户可以通过传递SQL Server实例名的方式调用该脚本,如:
.\Get-SQLVersion.ps1 “WIN-SQL”
.\Get-SQLVersion.ps1 “WIN-SQL\SQL2008”
下图是”select @@verson”命令的返回结果:
本文通过SqlConnection这个.NET类连接SQL Server以及访问SQL Server数据库的方法,除此以外还有另外一种方式连接到数据库并获取数据那就是SQL SMO,后续的文章将会详细介绍。
作者: 付海军
版权:本文版权归作者所有
转载:欢迎转载,为了保存作者的创作热情,请按要求【转载】,谢谢
要求:未经作者同意,必须保留此段声明;必须在文章中给出原文连接;否则必究法律责任
个人网站: http://txj.shell.tor.hu