0

odbc 経由で Hive への接続をテストするためのシンプルなアプリである azure クラウド サービス Web ロールをデプロイしようとしています。そのためには、アプリを起動する前にマシンにハイブ odbc ドライバーをインストールする必要があります。そのため、次のようにインストールするよりも、ドライバーをダウンロードするために powershell スクリプトを呼び出すスタートアップ タスクを追加しました。

スタートアップ.cmd

@echo off
powershell -command "Set-ExecutionPolicy Unrestricted" 2>> err.out  
powershell .\dlHiveOdbcDriver.ps1 2>> err.out
hiveodbc.msi /passive

dlHiveOdbcDriver.ps1

(new-object system.net.webclient).downloadfile('https://download.microsoft.com/download/F/4/A/F4A2CA7D-5D14-4177-A7CE-B938EF3F3C24/HiveODBC32.msi', 'hiveodbc.msi')

私のserviceDefinitionには、スタートアップタスクを宣言する次のコードがあります

<WebRole name="SomeTest" vmsize="ExtraSmall">
    <Startup>
      <Task commandLine="startup.cmd" taskType="simple" executionContext="elevated" />
    </Startup>
...
</WebRole>

ただし、アプリをデプロイすると、まだ次のエラーが発生します

[Microsoft][ODBC Driver Manager] Data source name not found and no default driver specified

これは、ドライバーがインストールされていないことをほのめかします。アプリを再起動しようとしましたが、すべての前提条件 (ルート フォルダー内のスクリプト、常にコピー、executionPolicy など)が適用されていることを確認しましたが、役に立ちませんでした。残念ながら、オフィスの問題により、現在マシンにリモート接続できません...

どんな助けでも大歓迎です。

4

2 に答える 2

1

トラブルシューティングのために、リモート アクセスを使用すると非常に役立ちます。実際にテストできるPCから試すことをお勧めします。

しかし、私のアプローチはここにあります。ServiceDefinition.csdef には、次のものがあります。

  <Task commandLine=".\startuptasks\bootstrap.cmd" executionContext="elevated" taskType="simple">
  </Task>

この bootstrap.cmd スクリプトを使用して、サード パーティのコンポーネントをインストールします。

ECHO The current version is %MyVersionNumber% >> ".\StartupLog.txt" 2>&1

cd startuptasks

PowerShell  -Command "Set-Executionpolicy Unrestricted" >> ".\excutionploicylog.txt" 2>&1
PowerShell  .\installCCP.ps1  >> ".\CCPStartupLog.txt" 2>&1
PowerShell  .\installOTHERSTUFF.ps1  >> ".\GSStartupLog.txt" 2>&1
EXIT /B 0

install*.ps1 ファイルの内容は次のとおりです。

$source = "http://YOUR_ACCOUNT.blob.core.windows.net/installer/vcredist_x64.exe"
$destination = "$($tempDir.Value)\vredistx64.exe"
Invoke-WebRequest $source -OutFile $destination  -Method Get
$p1 = Start-Process $destination -ArgumentList " /quiet /norestart" -wait -NoNewWindow -PassThru

[新しい場合はコピー] を使用して、すべてのファイル (.cmd および .ps1) が出力ディレクトリにコピーされていることを確認します。

Start-Process を使用してローカルにインストールできることを確認します。サイレント インストールをサポートする必要があります。

これが役立つかどうか教えてください。

于 2015-12-21T14:28:06.103 に答える
0

これを更新するのをほとんど忘れていました。Azure は、クラウド サービス Web ロールの VM でホストする IIS Web サイトに、既定で x64 アーキテクチャを使用していることがわかりました。その上、Hive odbc ドライバーもプリインストールされていますが、x64 ドライバーではなく x86 ドライバーを使用していました。x86ドライバーもインストールしようとしていたので、タスクは正常に機能していました。誰かがこの問題に苦しんでいる場合に備えて、これを修正するためにAzure に問題を提起しました。

于 2015-12-22T17:30:40.000 に答える