2016-04-07 47 views
0
Ben HANA İstemci yüklü olduğu bir ana bilgisayardan bir HANA örneğine bağlanmak için aşağıdaki Power Shell kod kullanıyorum

gelen SAP HANA DB Bağlama -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** 

Ama şu olsun hata -

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 
Ben hata altına almak

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

-

yerine Driver Sağlayıcısı bağlantı dizesini değiştirdiğinizde - HDBODBC32 kayıtlı değil diyerek HDBODBC32 -

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 

hata ben 32 bitlik sürücüye değiştirseniz bile aynı kalır.

Şimdi kayboldum, herhangi biri yardım!

+0

Bir '* .udl' dosyası oluşturmayı deneyebilirsiniz. Örneğin, 'test.udl'. Dosyayı açın ve komut dosyası sorunu olmadığını doğrulamak için bağlantı dizenizi buraya eklemeye çalışın. –

+0

Merhaba, teşekkürler ama veri bağlantısı bir sürücü olarak HDBODBC içermiyor. Çalışmak istediğim sorgu türü için kullanılamayan SAP Hana MDX Sağlayıcısı'nı içerir. – ace

cevap

0

SAP HANA ODBC sürücüsü, bir OLEDB sürücüsü olan değil 'dir.

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** 

çalışması gerekir: nedenle bunun yerine ODBC API kullanmak zorunda.

+0

Merhaba, işe yarıyor .. fikri için teşekkürler! – ace