你如何从 PowerShell 运行 SQL Server 查询?

16 浏览
0 Comments

你如何从 PowerShell 运行 SQL Server 查询?

有没有办法在我的本地计算机上使用Powershell对SQL Server执行任意查询?

admin 更改状态以发布 2023年5月21日
0
0 Comments

您可以使用Invoke-Sqlcmd cmdlet。

Invoke-Sqlcmd -Query "SELECT GETDATE() AS TimeOfQuery;" -ServerInstance "MyComputer\MyInstance"

http://technet.microsoft.com/en-us/library/cc281720.aspx

0
0 Comments

对于其他需要仅使用标准.NET和PowerShell进行此操作(无需安装其他SQL工具)的人,这是我使用的函数:

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
}

我使用这个函数已经很长时间了,我不知道哪些部分是谁编写的。这是从其他示例中提炼出来的,但简化了清晰和只包含所需的内容,没有额外的依赖项或特性。

我经常使用并分享这个功能,以至于我已经将其转化为一个脚本模块在GitHub上,因此您现在可以进入模块目录并执行git clone https://github.com/ChrisMagnuson/InvokeSQL,从那时起,当您使用它时,invoke-sql将自动加载(假设您使用PowerShell v3或更高版本)。

0