需要帮助我的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)
如果它抛出错误,您或您的管理员必须首先打开访问数据库端口到您的工作站。
对于我来说,我得到这个超时错误,因为我的客户端发送了太多的数据,执行将超时。