Azure 云服务启动任务不运行
Azure cloud service startup task not running
我正在尝试部署一个 azure 云服务 Web 角色,这是一个用于测试通过 odbc 连接到 Hive 的简单应用程序。为此,我需要在启动应用程序之前在机器上安装 hive odbc 驱动程序,这就是为什么我添加了一个启动任务来调用 powershell 脚本来下载驱动程序而不是像这样安装它:
startup.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
这暗示驱动程序没有安装。
我试过重新启动应用程序,确保所有 pre-requisites (scripts in root folder, copy always, executionPolicy etc') 都已应用,但无济于事。
不幸的是,由于办公室问题,我目前无法远程进入机器...
非常感谢任何帮助。
远程访问确实有助于排除故障。我建议在您可以实际测试的 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
安装*.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
确保使用 "Copy if newer" 将所有文件(.cmd 和 .ps1)复制到输出目录。
确保您可以使用 Start-Process 在本地安装。静默安装需要支持。
如果有帮助,请告诉我。
我差点忘了更新这个。
事实证明,Azure 在其云服务 Web 角色中的 VM 上托管的 IIS 网站默认使用 x64 架构。最重要的是,他们还预装了一个 Hive odbc 驱动程序,但是他们使用的是 x86 驱动程序而不是 x64 驱动程序。我也在尝试安装 x86 驱动程序 - 所以任务正常进行。 I have raised an issue with Azure 解决这个问题,以防有人也遇到这个问题。
我正在尝试部署一个 azure 云服务 Web 角色,这是一个用于测试通过 odbc 连接到 Hive 的简单应用程序。为此,我需要在启动应用程序之前在机器上安装 hive odbc 驱动程序,这就是为什么我添加了一个启动任务来调用 powershell 脚本来下载驱动程序而不是像这样安装它:
startup.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
这暗示驱动程序没有安装。 我试过重新启动应用程序,确保所有 pre-requisites (scripts in root folder, copy always, executionPolicy etc') 都已应用,但无济于事。 不幸的是,由于办公室问题,我目前无法远程进入机器...
非常感谢任何帮助。
远程访问确实有助于排除故障。我建议在您可以实际测试的 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
安装*.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
确保使用 "Copy if newer" 将所有文件(.cmd 和 .ps1)复制到输出目录。
确保您可以使用 Start-Process 在本地安装。静默安装需要支持。
如果有帮助,请告诉我。
我差点忘了更新这个。 事实证明,Azure 在其云服务 Web 角色中的 VM 上托管的 IIS 网站默认使用 x64 架构。最重要的是,他们还预装了一个 Hive odbc 驱动程序,但是他们使用的是 x86 驱动程序而不是 x64 驱动程序。我也在尝试安装 x86 驱动程序 - 所以任务正常进行。 I have raised an issue with Azure 解决这个问题,以防有人也遇到这个问题。