4

次のコードがあります。

Process p = new Process();
p.StartInfo.FileName = "SQLEXPRADV_x86_ENU.exe";
p.StartInfo.Arguments = "/CONFIGURATIONFILE=Config.ini";
p.StartInfo.UseShellExecute = false;
p.StartInfo.CreateNoWindow = true;
p.StartInfo.RedirectStandardOutput = true;
p.StartInfo.RedirectStandardError = true;

p.Start();

string line;
while ((line = p.StandardOutput.ReadLine()) != null)
{
   tOutputStandard.Text += line + "\r\n";
}

while ((line = p.StandardError.ReadLine()) != null)
{
   tOutputError.Text += line + "\r\n";
}

p.WaitForExit();

構成ファイルは、サイレントで実行するように設定されています。tOutputStandard と tOutputError は、出力を表示する TextBox です。

ただし、SQL Server インストールからの出力は表示されません。他のアプリケーションを実行してみましたが、出力が正しく送信されたので、コードに問題があるとは思いません。

SQL Server の出力を C# にパイプするにはどうすればよいですか? インストールが失敗した場合のエラーを知る必要があります。

4

3 に答える 3

1

したがって、この問題の本当の原因は、SQL インストールが MSI から直接実行された場合、何も出力されないことであることが判明しました。

代わりに、最初に MSI を実行し、それを一時ディレクトリに抽出してから、そのディレクトリでセットアップ exe を実行する必要があります。この exe により、必要な出力が得られます。

Markus Safar がイベント ハンドラーと共に投稿した回答は、他のニーズにも役立つ場合があります。

于 2015-01-24T15:05:32.977 に答える
0

パイプが機能しない場合は、いつでもインストール ログ ファイルを読み取ることができます。

また、Powershell によるサイレント インストールも使用します。エラーについては、最新のフォルダーからセットアップ ブートストラップ ログ フォルダーを調べ、「エラー」を含む行の Details.txt ファイルをループします。

    C:\Program Files\Microsoft SQL Server\110\Setup Bootstrap\Log\<datestamp>\Details.txt 

完全ではありませんが、まったく出力がないよりはましです。

于 2013-10-25T08:39:07.730 に答える