0

Postgresql に基づくデータベースを含むアプリケーションがあります。アプリケーションを使用してこのデータベースのバックアップを取得したい。例のために。プログラム メニューのオプションをクリックして、データベースのバックアップを含むファイルを取得したい。このデータベースのすべての管理者権限を取得しました。アプリケーションは、.net 4.0 (C#)、Windows フォームで作成されています。

どうすれば問題を解決できますか?


私はそれを試しましたが、うまくいきません:

 string zapytanie = @"pg_dump WFR > C:\kopia";
                string pol = Ustawienia.ConnectionString;
                NpgsqlConnection conn = new NpgsqlConnection(pol);
                conn.Open();
                NpgsqlCommand comm = conn.CreateCommand();
                comm.CommandText = zapytanie;

                comm.ExecuteNonQuery();
                conn.Close();

エラー:

エラー: 42601: "pg_dump" またはその付近で構文エラーが発生しました

スタックトレース:

w Npgsql.NpgsqlState.<ProcessBackendResponses_Ver_3>d__a.MoveNext()
   w Npgsql.ForwardsOnlyDataReader.GetNextResponseObject()
   w Npgsql.ForwardsOnlyDataReader.GetNextRowDescription()
   w Npgsql.ForwardsOnlyDataReader.NextResult()
   w Npgsql.ForwardsOnlyDataReader..ctor(IEnumerable`1 dataEnumeration, CommandBehavior behavior, NpgsqlCommand command, NotificationThreadBlock threadBlock, Boolean synchOnReadError)
   w Npgsql.NpgsqlCommand.GetReader(CommandBehavior cb)
   w Npgsql.NpgsqlCommand.ExecuteNonQuery()
   w Faktury_i_Rachunki_2.Forms.FrmKopiaBezp.BtUtworzKopie_Click(Object sender, EventArgs e) w D:\nwfr3\Faktury i Rachunki 2.0\Forms\FrmKopiaBezp.cs:wiersz 38
4

2 に答える 2

1

pg_dumpはツールであり、SQL コマンドではありません。を使用して実行する必要がありますProcess.Start

pg_dump は SQL スクリプトを出力します。そのため、標準出力から SQL スクリプトを取得する何らかの方法が必要です。次の方法で実現できます: http://www.c-sharpcorner.com/UploadFile/edwinlima/SystemDiagnosticProcess12052005035444AM/SystemDiagnosticProcess.aspx

于 2012-04-26T08:51:33.070 に答える
1

おそらくpg_dump.exe、Ms Windows 用のバイナリ (および必要な dll) のコピーをアプリケーションに含めることができます。次に、GUI から適切なパラメーターを指定して呼び出します。

( Dependency Walkerを使用して、 に必要なライブラリを見つけることができますpg_dump.exe)

于 2012-04-26T07:41:57.753 に答える