Исключение, вызывающее «ExecuteReader» с аргументом(ами) «0»: «ОШИБКА [57014]

#postgresql #powershell

Вопрос:

Нужна помощь с моим 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"
 

Очень ценю вашу помощь

Комментарии:

1. Dsn=PostgreSQL Я удалил неверный тег SQL Server.

2. В соответствии с полученной вами ошибкой, как долго это будет продолжаться, прежде чем произойдет ошибка? Вы изучали CommandTimeout свойство соединения?

Ответ №1:

Тайм-ауты базы данных означают доступность сети базы данных (например, брандмауэры) или проблемы с отключением базы данных большую часть времени. Прежде всего попробуйте проверить подключение TCP к БД:

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

Если он выдает ошибки, вы или ваши администраторы должны сначала открыть доступ к порту БД на вашей рабочей станции.

Комментарии:

1. У меня есть пинг и телнет, все прошло успешно. но все равно получаю эту ошибку

2. Можете ли вы получить доступ к БД из других клиентов Postgres, таких как pgAdmin, со своей рабочей станции?