从我的应用程序备份postgresql数据库

时间:2012-04-26 07:26:55

标签: c# postgresql backup

我的应用程序包含一个基于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

2 个答案:

答案 0 :(得分:1)

也许您可以在应用程序中包含Ms pg_dump.exe二进制文件副本以及Windows(和必需的dll)。然后使用GUI中的适当参数调用它。

(您可以使用Dependency Walker查找pg_dump.exe所需的库

答案 1 :(得分:1)

pg_dump是一个工具而不是SQL命令。您需要使用Process.Start执行它。

pg_dump输出一个SQL脚本。所以你需要一些方法来捕获标准的SQL脚本。它可以通过以下方式实现:http://www.c-sharpcorner.com/UploadFile/edwinlima/SystemDiagnosticProcess12052005035444AM/SystemDiagnosticProcess.aspx