gpt4 book ai didi

powershell - 从 powershell 运行 SQL 脚本文件

转载 作者:行者123 更新时间:2023-12-02 23:28:42 24 4
gpt4 key购买 nike

我正在尝试从 PowerShell 运行存储在文本文件中的查询。我使用以下方法来做到这一点;

Invoke-Expression 'sqlcmd -d TestDB -U $user -P $pw -i "E:\SQLQuery1.sql"'

如果从 .sql 文件执行查询时发生错误或异常,如何在 Powershell 脚本中捕获该错误或异常?如何获取脚本输出?

注意:我无法使用invoke-sqlcmd

最佳答案

回答问题

If some error or exception occurred when executing .sql file how can I get that into my PowerShell script? How can I get the script output?"

Invoke-Expression 返回所执行表达式的输出。但是,它可能只捕获 STDOUT,而不是 STDERR (我没有测试,因为我不使用此方法),因此您可能不会收到实际的错误消息.

来自帮助:

The Invoke-Expression cmdlet evaluates or runs a specified string as a command and returns the results of the expression or command

更好的途径是使用已有的 PowerShell 方法 - 如果您安装了任何 SQL Server 2008(或更高版本)组件/工具(如 SSMS),则安装 Invoke-SQLCmd 。如果您有 SQL Server 2012,则非常简单:import-module sqlps。对于 2008,您需要添加一个管理单元 add-pssnapin SqlServerCmdletSnapin。由于您有 sqlcmd.exe,PowerShell 组件应该已经存在。

如果所有其他方法都失败,请转到 System.Data.SQLClient 路线:

$Conn=New-Object System.Data.SQLClient.SQLConnection "Server=YOURSERVER;Database=TestDB;User Id=$user;password=$pw";
$Conn.Open();
$DataCmd = New-Object System.Data.SqlClient.SqlCommand;
$MyQuery = get-content "e:\SQLQuery1.sql";
$DataCmd.CommandText = $MyQuery;
$DataCmd.Connection = $Conn;
$DAadapter = New-Object System.Data.SqlClient.SqlDataAdapter;
$DAadapter.SelectCommand = $DataCmd;
$DTable = New-Object System.Data.DataTable;
$DAadapter.Fill($DTable)|Out-Null;
$Conn.Close();
$Conn.Dispose();
$DTable;

通过此功能和 Invoke-SQLCmd,您将能够使用 try/catch 来发现并处理发生的任何错误。

关于powershell - 从 powershell 运行 SQL 脚本文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18117324/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com