PowerShell查询sql server

function Invoke-SQL1:

function Invoke-SQL {
    param(
        [string] $dataSource = ".\SQLEXPRESS",
        [string] $database = "MasterData",
        [string] $sqlCommand = $(throw "Please specify a query.")
      )

    $connectionString = "Data Source=$dataSource; " +
            "Integrated Security=SSPI; " +
            "Initial Catalog=$database"

    $connection = new-object system.data.SqlClient.SQLConnection($connectionString)
    $command = new-object system.data.sqlclient.sqlcommand($sqlCommand,$connection)
    $connection.Open()

    $adapter = New-Object System.Data.sqlclient.sqlDataAdapter $command
    $dataset = New-Object System.Data.DataSet
    $adapter.Fill($dataSet) | Out-Null

    $connection.Close()
    $dataSet.Tables

}

function SQL2:

function sql($sqlText, $database = "master", $server = ".")
{
    $connection = new-object System.Data.SqlClient.SQLConnection("Data Source=$server;Integrated Security=SSPI;Initial Catalog=$database");
    $cmd = new-object System.Data.SqlClient.SqlCommand($sqlText, $connection);

    $connection.Open();
    $reader = $cmd.ExecuteReader()

    $results = @()
    while ($reader.Read())
    {
        $row = @{}
        for ($i = 0; $i -lt $reader.FieldCount; $i++)
        {
            $row[$reader.GetName($i)] = $reader.GetValue($i)
        }
        $results += new-object psobject -property $row
    }
    $connection.Close();

    $results
}

SQL Query3:

$ServerName = "_ServerName_"
$DatabaseName = "_DatabaseName_"
$Query = "SELECT * FROM Table WHERE Column = ‘‘"

#Timeout parameters
$QueryTimeout = 120
$ConnectionTimeout = 30

#Action of connecting to the Database and executing the query and returning results if there were any.
$conn=New-Object System.Data.SqlClient.SQLConnection
$ConnectionString = "Server={0};Database={1};Integrated Security=True;Connect Timeout={2}" -f $ServerName,$DatabaseName,$ConnectionTimeout
$conn.ConnectionString=$ConnectionString
$conn.Open()
$cmd=New-Object system.Data.SqlClient.SqlCommand($Query,$conn)
$cmd.CommandTimeout=$QueryTimeout
$ds=New-Object system.Data.DataSet
$da=New-Object system.Data.SqlClient.SqlDataAdapter($cmd)
[void]$da.fill($ds)
$conn.Close()
$ds.Tables

from:http://stackoverflow.com/questions/8423541/how-do-you-run-a-sql-server-query-from-powershell

时间: 2024-10-09 21:39:48

PowerShell查询sql server的相关文章

[转]查询 SQL Server 系统目录常见问题

查询 SQL Server 系统目录常见问题 http://msdn.microsoft.com/zh-cn/library/ms345522.aspx#_FAQ4 下列部分按类别列出常见问题. 数据类型 如何找到指定表中列的数据类型? 如何找到指定表中的 LOB 数据类型? 如何找到依赖于指定数据类型的列? 如何找到依赖于指定 CLR 用户定义类型或别名数据类型的计算列? 如何找到依赖于指定 CLR 用户定义类型或别名类型的参数? 如何找到依赖于指定 CLR 用户定义类型的 CHECK 约束?

PowerShell 导入 SQL Server 的 PS 模块

接触过UNIX或者Linux 的朋友都知道此类系统有着功能强大.无所不能的壳程序,称之为Shell.微软公司于2006年第四季度正式发布PowerShell,它的出现标志着, 微软公司向服务器领域迈出了重要的一步, 不仅提供简便的图形化操作界面,同时提供类似于Unix, Linux等操作系统中强大的Shell管理模式. 经过几年的努力,微软已逐步开发各服务器端产品对PowerShell 的支持.不懂PowerShell必将会被淘汰,今天我们就来看看SQL Server对PowerShell的支持

查询SQL server 数据库连接数 并且断开连接

一个生产环境,一个线上的环境,在线上环境出现的数据问题在生产环境中没有出现,因此需要将线上的数据库还原到生产环境,但是每次还原的时候总是出现 辞数据库正在使用,无法还原,但是肉眼是看不到,所以需要查询出来数据库连接并且强制断开. 1.查询 SQL server 允许同时连接的用户的最大数 SELECT @@MAX_CONNECTIONS 2.查询指定数据库的当前连接信息 SELECT * FROM master.dbo.sysprocesses WHERE dbid IN ( SELECT db

Oracle数据库,忽略大小写Like模糊查询(SQL Server,MySql原理相同)

背景 在使用Oracle或者其它数据库时,使用like 关键字进行模糊查询是大家经常使用的功能,在纯中文环境中使用非常好用,还有一些通配符可以使用,但是在纯英文环境中,会出现大小需要精确匹配的问题,主要原因还是字符串的问题 FL like '%{0}%' and 这里like后是一个字符串,这样必然会有大小敏感的问题.比如如下的大小混编的字段 解决方案 方案1 使用Oracle系统函数对需要查询的列字符串进行小写转换(大写也行,变量相关部分都是大写转换),如下所示: select * from

[转]如何查询SQL Server连接数

1.获取SQL Server允许同时用户连接的最大数 SELECT @@MAX_CONNECTIONS 2.获取当前指定数据库的连接信息 SELECT * FROM master.dbo.sysprocesses WHERE dbid IN ( SELECT dbid FROM master.dbo.sysdatabases WHERE NAME='YourDataBaseName' )--根据需要更改YourDataBaseName SELECT * FROM master.dbo.syspr

Powershell 查询SQL数据库资料

豆子对SQL Server自带的sqlps模块并不熟悉.昨天发现Don Jones提供的一个SQL模块,理论上支持任何兼容ODBC Driver的数据库(MySQL, MSSQL, Oracle 等等),原理就是调用.Net框架的一些底层函数.使用起来很方便顺手,也不需要学习新的技能. https://technet.microsoft.com/zh-cn/magazine/hh855069.aspx 下载以后,发现这个模块其实就只包括了两个函数,一个用来查询,另外一个用来修改删除.两个函数都只

查询SQL SERVER数据库日志工具

在SQL SERVER中查看操作日志,一直是一个比较麻烦的事情,因为微软并没有提供直接的系统工具可以查看日志内容,虽然可以通过非正式的隐藏接口dbcc log 获取日志的非解析编码但是要还原是个非常麻烦的事情.</DIV> <DIV>在SQL SERVER 2000到2005的时代可以通过LogExplor获取SQL SERVER 数据库内容,但是到了2008数据库后,发现LogExplor公司不再开发后续版本了,晚上在网上搜索了以下,发现一个非常好的工具ApexSQL Log.;

查询sql server占用内存的情况

se master go select * from sysperfinfo where counter_name like '%Total Server Memory (KB)%' go

[20141121]无法通过powershell读取sql server性能计数器问题

背景: 全新服务器,需要增加性能监控,发现无法通过powershell读取性能指标 解决方法: Open the Registry Editor by going to the Start Menu and selecting Run…, then type “regedit”, and click the OK button. Navigate to the HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurePipeServer