使用"0"参数调用"ExecuteReader"的异常:"错误 [57014]



需要帮助我的Powershell。我得到错误

Exception calling "ExecuteReader" with "0" argument(s): "ERROR [57014] ERROR: canceling statement due to statement timeout; Error while executing the query" At line:1 char:1

我的PowerShell如下:

$datetime = (Get-Date).ToString(); 
$sw = [Diagnostics.Stopwatch]::StartNew() 
$DBConnectionString ="Dsn=PostgreSQL;database=test;server=10.x.x.xx;port=5432;uid=xxx;pwd=xxx" 
$DBConn = New-Object System.Data.Odbc.OdbcConnection; $DBConn.ConnectionString = $DBConnectionString; 
$DBConn.Open(); 
$DBCmd = $DBConn.CreateCommand(); 
$DBCmd.CommandText= get-content "C:data1.sql" 
$rdr=$DBCmd.ExecuteReader(); 
$instance = "DBDBTEST" 
$userId = "sa" 
$password = "xxxx" 
$sqlconn = "Data Source=$instance;Integrated Security=SSPI;Initial Catalog=Conversion; User Id=$userId; Password=$password"; 
$sqlbc = new-object system.data.sqlclient.Sqlbulkcopy($sqlconn); 
$sqlbc.BulkCopyTimeout = 0; 
$sqlbc.DestinationTableName="Table"; 
$sqlbc.WriteToServer($rdr); 
$sw.Stop(); 
Write-Host "[$($datetime)] [data1] Elapsed time $($sw.Elapsed.TotalMilliseconds) miliseconds"

非常感谢你的帮助

数据库超时意味着数据库网络可访问性(如防火墙)或数据库宕机问题。首先尝试检查TCP连接到DB:

New-Object System.Net.Sockets.TcpClient('10.x.x.xx', 5432)

如果它抛出错误,您或您的管理员必须首先打开访问数据库端口到您的工作站。

对于我来说,我得到这个超时错误,因为我的客户端发送了太多的数据,执行将超时。

最新更新