72844


**やりたいこと**  
現在、LinuxサーバーのDBのバックアップをクライアント(windows)から行うシステムを作りたいと思っているのですが、躓いてしまったため質問させていただきます。  
色々と調べつつ、下記のようなコードを書いたのですが、実行してもバックアップファイルは生成されません。  
どの部分を直すことによって正常に動作しますでしょうか。

[code]

    private void Button_Click(object sender, RoutedEventArgs e)
    {
                //Processオブジェクトを作成
                System.Diagnostics.Process process = new System.Diagnostics.Process();
                System.Diagnostics.ProcessStartInfo startInfo = new System.Diagnostics.ProcessStartInfo();
                startInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden;
                startInfo.FileName = "cmd.exe";
                startInfo.Arguments = @"set PGPASSWORD=***&& pg_dump -Fc -v --host=192.***.**.*** --username=postgres --dbname=System -f C:\Users\---\Desktop\database.dump";
                startInfo.Verb = "runas";
                process.StartInfo = startInfo;
                process.Start();
     }
    
[/code]

コマンドプロンプトで直接" **set PGPASSWORD=** ** _" 、" **pg_dump -Fc -v
--host=192.**_.**.*** --username=postgres --dbname=System -f
C:\Users---\Desktop\database.dump**"と入力すると、バックファイルを作ることができました。


CC BY-SA 4.0
2020-12-23T08:50:12.693
72838
2020-12-24T00:42:08.357
43242
question
c# postgresql
PostgreSQLのバックアップをC#で行いたい


CMDで複文を記述するときに区切る記号は＆ひとつでよいと思います。

[code]

    C:\Users\XXXX>SET AAA=aaa&echo %AAA%
    aaa
    
    
[/code]

それでもダメな場合は、コマンドプロンプトでうまくいくのですから、batファイルに記述して、CMDで実行してはいかがでしょうか？

事前にファイルを作成できないなら、batファイルを新規に作成し、環境変数PGPASSWORDの設定とpg_dumpを実行するコマンドを書き込み、batファイルを実行し、batファイルを削除すればよいと思います。


CC BY-SA 4.0
2020-12-23T11:49:46.260
72844
2020-12-24T00:42:08.357
2020-12-24T00:42:08.357
35558
35558
72838
answer