我遇到了一个奇怪的情况,我可以执行一个relog命令 (relog C:\ PerfLogs \ Admin \ D-113067088_ * -f SQL -o SQL:relog!D-113067088)通过命令提示符成功但当我尝试通过我的c#代码执行相同的命令时会抛出错误。
我得到的错误是"使用[Microsoft] [ODBC驱动程序管理器]调用SQLAllocConnect失败指定的DSN包含驱动程序和应用程序之间的体系结构不匹配。"
我为下面的c#代码传递的参数是/ c relog C:\ PerfLogs \ Admin \ test_000001.blg -f SQL -o SQL:relog!D-113067088
Process Proc = new Process();
Proc.StartInfo.FileName = "cmd.exe";
Proc.StartInfo.Arguments = arguments;
Proc.StartInfo.RedirectStandardError = true;
Proc.StartInfo.RedirectStandardOutput = true;
Proc.StartInfo.UseShellExecute = false;
Proc.StartInfo.CreateNoWindow = false;
Proc.Start();
Proc.WaitForExit();
string errorMessage = Proc.StandardError.ReadToEnd();
string outputMessage = Proc.StandardOutput.ReadToEnd();
int exitCode = Proc.ExitCode;
Proc.Close();
return exitCode;
答案 0 :(得分:1)
对于64位操作系统,32位和64位ODBC驱动程序是分开的,并且使用它取决于应用程序体系结构。如果您构建应用程序以定位X64,则可以使用64位DSN。或者,您可以使用C:\ Windows \ SysWOW64 \ odbcad32.exe实用程序创建32位ODBC DSN。