• 通过PowerShell操作SQLConnection .NET类


    .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]


    执行结果类似于下图所示:

    powershellrecevied1

    前面的例子中使用了四个类:

    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”的执行结果如下图所示:
    powershellrecevied2

    用户也块可以用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的执行结果如下图所示:

    powershellrecevied3 
    

    因为很多时候用户需要知道已安装的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”命令的返回结果:

    powershellrecevied4

    本文通过SqlConnection这个.NET类连接SQL Server以及访问SQL Server数据库的方法,除此以外还有另外一种方式连接到数据库并获取数据那就是SQL SMO,后续的文章将会详细介绍。

    作者: 付海军
    出处:http://fuhj02.cnblogs.com
    版权:本文版权归作者和博客园共有
    转载:欢迎转载,为了保存作者的创作热情,请按要求【转载】,谢谢
    要求:未经作者同意,必须保留此段声明;必须在文章中给出原文连接;否则必究法律责任
    个人网站: http://txj.shell.tor.hu

  • 相关阅读:
    【某集训记录】
    【bzoj 4407】于神之怒加强版
    【bzoj 3529】【sdoi 2014】数表
    PHP消息队列实现及应用
    (转)PHP DB 数据库连接类
    站点http升级到https
    虚拟主机发送邮件出现getmypid禁用的解决方案
    企业微信API集成登录以及其他操作开发
    微信小程序发送模版消息常见错误解决方案
    (转) Laravel自带SMTP邮件组件实现发送邮件(QQ、163、企业邮箱都可)
  • 原文地址:https://www.cnblogs.com/fuhj02/p/1754857.html
Copyright © 2020-2023  润新知