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