postgres kopia bazy danych

0

Witam,
piszę program - klienta bazy danych.
Chciałbym, aby była tam możliwość wykonania kopi bazy.
wymyśliłem, że za pomocą
System.Diagnostics.Process();
będę uruchamiał proces pg_dump i nim będę wykonywał kopie. Gdzie jest problem? Program promptuje (prosi ;) ) o hasło które użytkownik musi wpisać ręcznie.
Jak na razie obszedłem problem wysyłając za pomocą metody SendKeys hasło i potem enter ;P
Jest to jednak tymczasowe rozwiązanie i może ktoś mógłby mi coś podpowiedzieć na temat jak to zrobić lepiej.

Od razu uprzedzam pytanie, nie można w parametrach do pg_dump przesłac hasła dla użytkownika.

pozdrawiam ryo

private void lWykonaj_Click(object sender, EventArgs e)
        {
            try
            {
                System.Diagnostics.Process nowy = new System.Diagnostics.Process();
                nowy.StartInfo.FileName = "\"C:\\Program Files\\PostgreSQL\\8.2\\bin\\pg_dump.exe \"";
                nowy.StartInfo.Arguments = " -f c:\\kopia.sql -d BAZA -U \"LOGIN\"";
                \\nowy.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
                nowy.StartInfo.RedirectStandardOutput = true;
                nowy.StartInfo.UseShellExecute = false;
                \\nowy.StartInfo.CreateNoWindow = true;
                nowy.Start();
                

                if (nowy.Responding)
                {
                    SendKeys.Send("HASLO{ENTER}");
                }
                else
                    nowy.Kill();
                nowy.WaitForExit();

                this.Close();

            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message.ToString());
            }
        }
0
ryo napisał(a)

Od razu uprzedzam pytanie, nie można w parametrach do pg_dump przesłac hasła dla użytkownika.

http://www.postgresonline.com/special_feature.php?sf_name=postgresql83_pg_dumprestore_cheatsheet&outputformat=html

Jak to nie można. Przeczież na tej stronie wyraźnie jest napisane, iż argumentami mogą być:

-h, --host=HOSTNAME database server host or socket directory
-p, --port=PORT database server port number
-U, --username=NAME connect as specified database user
-W, --password force password prompt (should happen automatically)

Przy okazji proponuję ci dokładnie przejrzeć tę stronę, może się przydać na przyszłość.

0
hubert_nnn napisał(a)
ryo napisał(a)

Od razu uprzedzam pytanie, nie można w parametrach do pg_dump przesłac hasła dla użytkownika.

http://www.postgresonline.com/special_feature.php?sf_name=postgresql83_pg_dumprestore_cheatsheet&outputformat=html

Jak to nie można. Przeczież na tej stronie wyraźnie jest napisane, iż argumentami mogą być:

-h, --host=HOSTNAME database server host or socket directory
-p, --port=PORT database server port number
-U, --username=NAME connect as specified database user
-W, --password force password prompt (should happen automatically)

Przy okazji proponuję ci dokładnie przejrzeć tę stronę, może się przydać na przyszłość.

Dzięki za pomoc, niestety z tego co wkleiłeś nie mogę się doczytać rozwiązania.
Zapewne chodziło Ci o opcję -W dla programu pg_dump i rzeczywiście tam jest wszystko wyraźnie napisane "force password prompt".
Opowiem może jeszcze raz co chciałbym uzyskać, chciałbym aby sytem się nigdy o hasło nie pytał o hasło, zamiast za każdym razem ;)
Jeszcze raz dzięki za wskazówki, pozdrawiam ryo

1 użytkowników online, w tym zalogowanych: 0, gości: 1