SQL Server 2012 DQSInstaller.exe可能无法访问 TMP 文件夹

本文可帮助你解决临时文件夹路径包含重音或特殊 ANSI 字符的问题。

适用于: SQL Server 2012 Business Intelligence、SQL Server 2012 Developer、SQL Server 2012 Enterprise
原始 KB 数: 2702283

现象

SQL Server 2012 Data Quality Services 安装程序DQSInstaller.exe在临时文件夹路径包含重音或特殊 ANSI 字符的计算机上可能会失败。

例如,对于用户名中带有重音字符的 Windows 用户,临时文件夹可能包含重音字符 é,例如 C:\Users\Us é rNam é\AppData\Local\Temp\

在运行DQSInstaller.exe或DQSInstaller.exe输出日志(默认位置为 C:\Program Files\Microsoft SQL Server\MSSQL11.SQL2012\MSSQL\Log\DQS_install.logCREATE ASSEMBLY 失败时,可能会在控制台上记下以下错误,因为它无法打开物理文件 Register Microsoft.Practices 程序集:

Msg 6501,级别 16,状态 7,服务器域\SERVERNAME,第 2 行
CREATE ASSEMBLY 失败,因为它无法打开物理文件“C:\Users<username>\AppData\Local\Temp<random folder>\Microsoft.Practices.ObjectBuilder2.dll”:3(系统找不到指定的路径)。
错误 - 发生错误,脚本进程上方的检查消息返回了意外退出代码:“1”。
操作“注册数据质量程序集和存储过程”已完成错误,中止安装。
正在开始安装回滚...
安装回滚已成功完成。
DQS 安装程序已完成错误。 请参阅 c:\Program Files\Microsoft SQL Server\MSSQL11 的安装日志文件。InstanceName\MSSQL\Log\DQS_install.log
Press any key to continue...

原因

DQSInstaller.exe使用的临时文件夹由环境变量 TMP 指定。

DQSInstaller 将程序集文件和脚本提取到临时文件夹中,临时文件夹下具有随机名称。 如果此临时路径包含特殊字符,则运行脚本和程序集时,DQSInstaller 不会正确中和重音符或特殊字符。

解决方法

解决问题的最简单方法是以管理员身份启动命令提示符(如果启用 UAC 时提升),使用本地 TMP 变量临时覆盖 TMP 位置,然后运行DQSInstaller.exe。

在此命令提示符语法示例中,我们将创建一个目录 (md) c:\temp,然后将 TMP 变量设置为该位置,然后将目录更改为存在DQSInstaller.exe的文件夹,然后运行DQSInstaller.exe(无需额外的开关)。

md c:\temp
SET tmp=c:\temp
cd "c:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLServer\MSSQL\Binn\"
DQSInstaller.exe

详细信息

若要访问 Windows 资源管理器中的 TMP 文件夹,可以打开使用占位符 %tmp%

启动 > 运行 > %tmp%

若要测试当前 TMP 环境变量是什么,可以使用命令提示符中的 SET 语法或回显语法:

SET TMP

echo %tmp%

若要永久更改 TMP 和 TEMP 环境变量,请参阅 如何移动 TEMP 和 TMP 目录