2016-04-07 4 views
0

Я использую следующий код Power Shell для подключения к экземпляру HANA с хоста, на котором установлен клиент HANA -Подключение SAP HANA БД из PowerShell

function Get-OLEDBData ($connectstring, $sql) { 
    $OLEDBConn = New-Object System.Data.OleDb.OleDbConnection($connectstring) 
    $OLEDBConn.open() 
    $readcmd = New-Object system.Data.OleDb.OleDbCommand($sql,$OLEDBConn) 
    $readcmd.CommandTimeout = '300' 
    $da = New-Object system.Data.OleDb.OleDbDataAdapter($readcmd) 
    $dt = New-Object system.Data.datatable 
    [void]$da.fill($dt) 
    $OLEDBConn.close() 
    return $dt 
    } 

    $hdbSqlCmd = "myquery" 
    $hdbConnectionString = "Driver={HDBODBC};ServerNode=myserver:30015;UID=myuser;PWD=mypasswd;" 
    Get-OLEDBData $hdbConnectionString $hdbSqlCmd** 

Но я получаю следующее сообщение об ошибке -

New-Object : Exception calling ".ctor" with "1" argument(s): "An OLE DB Provider was not specified in the ConnectionString. An example would be, 'Provider=SQLOLEDB;'." 
    At C:\myspace\hana_connect_1.ps1:5 char:27+ $OLEDBConn = New-Object <<<< System.Data.OleDb.OleDbConnection($connectstring) 
+ CategoryInfo   : InvalidOperation: (:) [New-Object],  MethodInvocationException 
+ FullyQualifiedErrorId : ConstructorInvokedThrowException,Microsoft.PowerShell.Commands.NewObjectCommand 

Когда я изменить строку подключения к поставщику вместо драйвера -

$hdbConnectionString = "Provider={HDBODBC};ServerNode=myserver:30015;UID=myuser;PWD=mypasswd;" 

Я получаю ниже ошибки -

Exception calling "Open" with "0" argument(s): "The '{HDBODBC}' provider is not registered on the local machine." 
    At C:\myspace\hana_connect_1.ps1:6 char:19 
    + $OLEDBConn.open <<<<() 
    + CategoryInfo   : NotSpecified: (:) [], MethodInvocationException + FullyQualifiedErrorId : DotNetMethodException 

ошибка остается неизменным, даже если я поменяю на 32-битную водителя - HDBODBC32, говоря HDBODBC32 не зарегистрирован.

Я теперь потерян, любая помощь кому-то !!

+0

Вы можете попытаться создать файл '* .udl'. Например, 'test.udl'. Откройте файл и попробуйте вставить в него строку подключения, чтобы проверить ее не на проблему с скриптом. –

+0

Привет, спасибо, но канал передачи данных не содержит HDBODBC в качестве драйвера. Он содержит SAP Hana MDX Provider, который не может использоваться для типа запросов, которые я хочу запустить. – ace

ответ

0

Драйвер системы SAP HANA ODBC: не драйвер OLEDB. Поэтому вы должны использовать ODBC API вместо:

function Get-ODBCBData ($connectstring, $sql) { 
    $Conn = New-Object System.Data.odbc.ODBCconnection($connectstring) 
    $Conn.open() 
    $readcmd = New-Object system.Data.odbc.ODBCCommand($sql,$Conn) 
    $readcmd.CommandTimeout = '300' 
    ... 
    $hdbConnectionString = "Driver={HDBODBC};ServerNode=myserver:30015;UID=myuser;PWD=mypasswd;" 
    Get-ODBCBData $hdbConnectionString $hdbSqlCmd** 

должен работать.

+0

Привет, он работает .. спасибо за идею !! – ace