我无法执行" relog"通过c#代码,但我能够通过cmd.exe执行

时间:2014-07-18 12:44:24

标签: c# sql sql-server

我遇到了一个奇怪的情况,我可以执行一个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;

1 个答案:

答案 0 :(得分:1)

对于64位操作系统,32位和64位ODBC驱动程序是分开的,并且使用它取决于应用程序体系结构。如果您构建应用程序以定位X64,则可以使用64位DSN。或者,您可以使用C:\ Windows \ SysWOW64 \ odbcad32.exe实用程序创建32位ODBC DSN。