#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, со своей рабочей станции?