Powershell

SQL Server 2019 System.Data.SqlClient 命名空間查詢

  • December 17, 2020

我在 SQL 2019 企業版的 System.Data.SqlClient 命名空間中使用 .NET 類,並通過在 PowerShell 中創建函式成功執行 TSQL 命令。

function SqlQuery($server, $database, $query)
{
$connection = New-Object System.Data.SqlClient.SqlConnection
$connection.ConnectionString = "Server=$server;Database=$database;Integrated Security=True;"
$connection.Open()
$command = $connection.CreateCommand()
$command.CommandText = $query
$result = $command.ExecuteReader()
$table = new-object “System.Data.DataTable”
$table.Load($result)
$connection.Close()
return $table
}

SqlQuery $Server $Database "SELECT * FROM Staff"

我有一些相當大的 T-SQL 程式碼儲存在離散文件中,我想針對這個實例執行這些程式碼。是否可以利用該函式呼叫儲存在文件系統文件中的 T-SQL 腳本?

可以呼叫 T-SQL 腳本而不是將其包含在 PowerShell 腳本的主體中

當然。只需使用get-content讀取文件內容並將其傳遞給函式:

function SqlQuery($server, $database, $query)
{
$connection = New-Object System.Data.SqlClient.SqlConnection
$connection.ConnectionString = "Server=$server;Database=$database;Integrated Security=True;"
$connection.Open()
$command = $connection.CreateCommand()
$command.CommandText = $query
$result = $command.ExecuteReader()
$table = new-object “System.Data.DataTable”
$table.Load($result)
$connection.Close()
return $table
}

$server = "localhost"
$database = "tempdb"
$sql = get-content "c:\test\foo.sql"

SqlQuery $Server $Database $sql

如果 sql 文件包含多個批處理,您需要自己分解它,或者使用 SqlServer 模組中的Invoke-Sqlcmd cmdlet,您可以使用它安裝

install-module SqlServer

引用自:https://dba.stackexchange.com/questions/281521