Powershell
SQL Server 2019 System.Data.SqlClient 命名空間查詢
我在 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