Ik probeer al dagen een verbinding tot stand te brengen met een postgreSQL DB maar slaag er maar niet in. Alvorens ik huilend door het raam van de tiende verdieping spring toch even hier langskomen. Probleem in een notendop: ik ben echt niet vertrouwd genoeg met databases 
Het loopt ergens fout met die Provider. Ik heb psqlodbc geïnstalleerd en de driver is zichtbaar bij ODBC in Windows en werkt; met een GUI zoals navicat kan ik aan alles aan; maar in mijn script loop ik altijd maar aan tegen volgende probleem:
Ik heb alle mogelijke namen van die driver al gegeven: PostgreSQL30, PostgreSQL, PostgreSQL.1, PostgreSQL ANSI, PostgreSQL Unicode,... en de error blijft dezelfde.
Google helpt niet echt: de meeste mensen met dit probleem hebben gewoon geen driver geïnstalleerd (wat hier wél het geval is). De combinatie met PowerShell geeft zelfs géén hits. Voor MS SQL vind ik alles wat ik wil, maar in het combineren van PostgreSQL met PowerShell ben ik blijkbaar een pionier
Nu: ik vermoed dat de oplossing voor de hand ligt, maar dan wel voor iemand die dagelijks met DBs werkt. Wat bij mij niet het geval is: dit is uitzonderlijk dat mijn scripts beroep moeten doen op een externe DB (in casu: om via netdisco op basis van hostname "IP", "domain" en "last seen" terug te krijgen.
PS. Dit staat in PRG ipv. in WOS omdat de dotnetters vooral hier rondlopen.
PowerShell:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
| [system.reflection.assembly]::LoadWithPartialName("System.Data") $SqlProvider = "PostgreSQL30 Unicode" $SqlServer = "netdisco.blablabla.com" $SqlDBName = "netdisco" $SqlPort = 5432 $SqlTable = "node_nbt" $SqlColumn = "nbname" $SqlSelection = "ip,domain,time_last" $SqlQuery = "SELECT $SqlSelection FROM $SqlTable WHERE $SqlColumn = '$HostName'" $SqlUserName = "blabla" $SqlPassword = "blabla" $SqlConnection = New-Object System.Data.OleDB.OleDBConnection $SqlConnection.ConnectionString = "Provider=$SqlProvider;Data Source=$SqlServer;Location=$SqlDBName;UID=$SqlUserName;Password=SqlPassword;Timeout=1000;" $SqlConnection.Open() |
Het loopt ergens fout met die Provider. Ik heb psqlodbc geïnstalleerd en de driver is zichtbaar bij ODBC in Windows en werkt; met een GUI zoals navicat kan ik aan alles aan; maar in mijn script loop ik altijd maar aan tegen volgende probleem:
code:
1
2
3
4
5
6
| PS C:\ $SqlConnection.Open() Exception calling "Open" with "0" argument(s): "The 'PostgreSQL30 Unicode' provider is not registered on the local machine." At line:1 char:20 + $SqlConnection.Open <<<< () + CategoryInfo : NotSpecified: (:) [], MethodInvocationException + FullyQualifiedErrorId : DotNetMethodException |
Ik heb alle mogelijke namen van die driver al gegeven: PostgreSQL30, PostgreSQL, PostgreSQL.1, PostgreSQL ANSI, PostgreSQL Unicode,... en de error blijft dezelfde.
Google helpt niet echt: de meeste mensen met dit probleem hebben gewoon geen driver geïnstalleerd (wat hier wél het geval is). De combinatie met PowerShell geeft zelfs géén hits. Voor MS SQL vind ik alles wat ik wil, maar in het combineren van PostgreSQL met PowerShell ben ik blijkbaar een pionier
PS. Dit staat in PRG ipv. in WOS omdat de dotnetters vooral hier rondlopen.