Kodbank İndir

! CODEBANK 2012 !

İNDİRMEK&DETAYLI BİLGİ ALMAK İÇİN BURAYI TIKLAYINIZ.

ÖNEMLİ AÇIKLAMA: MUTLAKA OKUYUNUZ!

Gönderen Konu: MS SQL Server Veritabanı Yedeğini Alma/Yedekten Geri Yükleme  (Okunma sayısı 6239 defa)

0 Üye ve 1 Ziyaretçi konuyu incelemekte.

Çevrimdışı dynamo

  • Kıdemli Üye
  • *****
  • İleti: 120
  • Rep: +3/-1
SQL Server veritabanı yedeğini alma:

backup database <veritabanıAdı> to disk=<YedekDosyaAdı>

örnek:
BACKUP DATABASE Northwind TO DISK = 'c:\Northwind.bak'

SQL Server veritabanını Yedekten geri alma:

restore database <veritabanıAdı> from disk=<YedekDosyaAdı>

örnek:
RESTORE DATABASE Northwind FROM DISK = 'c:\Northwind.bak'

veritabanını yedekleme ve yedekten geri alma için örnek bir uygulama yapalım.




Form->Show'da ini dosyadan bilgisyar adı/ip ve sa şifresi alınır.Yedek Dosya Adı'nın girildiği Edit'e o günün tarihini atar.

Kod: [Seç]
procedure TfrmYedekle.FormShow(Sender: TObject);
begin
   IniDosya := TIniFile.Create(ExtractFilePath(Application.ExeName)+'Settings.ini');
   try
      server:=IniDosya.ReadString('Database','Server','');
      sapassword:=IniDosya.ReadString('Database','SaPassword','');
   finally
      IniDosya.Free;
   end;

   PageControl1.ActivePage:=TabSheet1;

   dateseparator:=' ';
   shortdateformat:='ddmmyyyy';
   Edit1.Text:=DateToStr(Date);

end;

ShellTreeView ile yedeklemenin yapılacağı dizin seçilir:

Kod: [Seç]
procedure TfrmYedekle.ShellTreeView1Change(Sender: TObject;
  Node: TTreeNode);
begin
    Edit3.Text:=ShellTreeView1.Path;
end;

yedekleme işlemi yapma:

Kod: [Seç]
procedure TfrmYedekle.Button1Click(Sender: TObject);
var yol:string;
    hata:boolean;
    dosya_adi:string;

begin

   if trim(Edit1.Text)='' then
      Edit1.Text:=DateToStr(Date);
    dosya_Adi:=Edit1.Text+Label6.Caption;

   try
      ADOConnection1.Connected :=false;
      ADOConnection1.ConnectionString := 'Provider=SQLOLEDB.1;Persist Security Info=false;User ID=sa;Initial Catalog=master;Password ='+sapassword+';Data Source=' +server;
      ADOConnection1.Connected := true;
    except
      Application.MessageBox('Veritabanı Bağlantı Hatası...','Veritabanı Bağlantı',0+64);
    end;

    if (Application.MessageBox('Yedekleme işlemi için "Tamam" butonuna basınız...', 'YEDEKLEME',mb_okcancel+mb_iconstop)=idok) then
    begin
      Button1.Enabled:=false;
      yol:=Edit3.Text;
      if length(yol)>3 then
         yol:=yol+'\'+dosya_adi
      else
         yol:=yol+dosya_adi;

      try
         ADOQuery1.Close;
         ADOQuery1.SQL.Clear;
         ADOQuery1.SQL.Add('use master BACKUP DATABASE STOKDB TO DISK = '''+yol+'''');
         ADOQuery1.ExecSQL;

         Application.MessageBox('Yedekleme İşlemi Başarı İle Tamamlanmıştır...', 'MESAJ',Mb_ok+mb_iconinformation)
      except
         Application.MessageBox('Yedekleme İşlemi Başarısızlıkla Sonuçlandı...', 'MESAJ',Mb_ok+MB_ICONSTOP);
      end;
         Button1.Enabled:=true;
    end;

end;


Yedekten geri yükleme için önce .bck uzantılı yedek dosyasının konumu Edit2'ye atılır:

Kod: [Seç]
procedure TfrmYedekle.SpeedButton1Click(Sender: TObject);
begin
    if OpenDialog1.Execute then
        Edit2.Text:=OpenDialog1.FileName;
end;


yedekten geri yükleme:

Kod: [Seç]
procedure TfrmYedekle.Button2Click(Sender: TObject);
var yol:string;
    hata:boolean;
    dosya_adi:string;

begin

   if Trim(Edit2.Text)='' then
   begin
      ShowMessage('Dosya Adını Giriniz....');
      exit;
   end;

   dosya_Adi:=Edit2.Text;

   try
      ADOConnection1.Connected :=false;
      ADOConnection1.ConnectionString := 'Provider=SQLOLEDB.1;Persist Security Info=false;User ID=sa;Initial Catalog=master;Password ='+sapassword+';Data Source=' +server;
      ADOConnection1.Connected := true;
   except
      Application.MessageBox('Veritabanı Bağlantı Hatası...','Veritabanı Bağlantı',0+64);
   end;

   if (Application.MessageBox('Yedekten Geri Yükleme için "Tamam" butonuna basınız...', 'YEDEKTEN GERİ ALMA',mb_okcancel+mb_iconstop)=idok) then
   begin
      Button1.Enabled:=false;
      yol:=Edit2.Text;
      try
         ADOQuery1.Close;
         ADOQuery1.SQL.Clear;
         ADOQuery1.SQL.Add('use master RESTORE DATABASE STOKDB FROM DISK = '''+yol+'''');
         ADOQuery1.ExecSQL;

         Application.MessageBox('Yedekten Geri Alma İşlemi Başarı İle Tamamlanmıştır...', 'MESAJ',Mb_ok+mb_iconinformation)
      except
         Application.MessageBox('Yedekten Geri Alma Başarısızlıkla Sonuçlandı...', 'MESAJ',Mb_ok+MB_ICONSTOP);
      end;
         Button1.Enabled:=true;
   end;

end;


örnek uygulama ekte.
« Son Düzenleme: 30 Mayıs 2007 17:56:54 by Fatih »

Çevrimdışı Aktolgali

  • Kıdemli Üye
  • *****
  • İleti: 182
  • Rep: +2/-0
Ynt: MS SQL Server Veritabanı Yedeğini Alma/Yedekten Geri Yükleme
« Yanıtla #1 : 29 Eylül 2007 18:43:16 »
bu işlem firebird de nasıl yapılır...?

Çevrimdışı Fatih

  • Emekli Yönetici
  • *****
  • İleti: 2.217
  • Rep: +43/-10
  • Cinsiyet: Bay
    • Delphi Dünyası
Malulen emekli programcı / yazar. Bildiklerini unutmakta olduğundan size cevap veremez.

Çevrimdışı duman801

  • Kıdemli Üye
  • *****
  • İleti: 123
  • Rep: +0/-0
  • Cinsiyet: Bay
Ynt: MS SQL Server Veritabanı Yedeğini Alma/Yedekten Geri Yükleme
« Yanıtla #3 : 05 Şubat 2010 16:24:22 »
hocam elinize emeğinize sağlık çok güzel anlatmısısnız  yedek almayı bilmeyen arkadaşların çok işini yaracak bu bilgi..

Çevrimdışı cvheneburi

  • Kıdemli Üye
  • *****
  • İleti: 63
  • Rep: +0/-0
  • Cinsiyet: Bay
Ynt: MS SQL Server Veritabanı Yedeğini Alma/Yedekten Geri Yükleme
« Yanıtla #4 : 24 Kasım 2010 09:21:27 »
hocam öncelikle yardımlarıız için tşk ederm verdiğiniz kodları çalıştıramadım bunla ilgili birkaç sorum olacak
1- ADOConnection1'ne ben kodla bağlanmıyorum sorun teşkil edermi
2- Kodla bağlanma gerekiyorya User ID=sa bunu anlamadım açıklayabilirmisiniz birde program ilk açıldığında settings.ini dosyasın luşturmuyor.
3- adoconnectiona direk bağlı ilken yedekleme yapmıyor ve şu hatayı veriyor "operating system error 5(erişim engellendi)"

yardımlarınızı bekliyorum tşkler

Çevrimdışı yalo07

  • Yeni Üye
  • *
  • İleti: 15
  • Rep: +0/-0
Ynt: MS SQL Server Veritabanı Yedeğini Alma/Yedekten Geri Yükleme
« Yanıtla #5 : 05 Aralık 2010 03:55:08 »
bende sonuc alamadım kayıt yedeklendi diyor ancak yedeklemiyor.. adoqueryde ne gibi değişiklikler yapacağız bi yardımcı olurmusunuz????

Çevrimdışı karapotinli

  • Yeni Üye
  • *
  • İleti: 1
  • Rep: +0/-0
Ynt: MS SQL Server Veritabanı Yedeğini Alma/Yedekten Geri Yükleme
« Yanıtla #6 : 06 Aralık 2010 04:08:42 »
unit Yedekle;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ExtCtrls, ComCtrls, ShellCtrls,DB, ADODB, Buttons,IniFiles;

type
  TfrmYedekle = class(TForm)
    PageControl1: TPageControl;
    TabSheet1: TTabSheet;
    Label3: TLabel;
    Label5: TLabel;
    Label6: TLabel;
    Label4: TLabel;
    Edit1: TEdit;
    ADOConnection1: TADOConnection;
    ADOQuery1: TADOQuery;
    TabSheet2: TTabSheet;
    Label1: TLabel;
    Edit2: TEdit;
    SpeedButton1: TSpeedButton;
    OpenDialog1: TOpenDialog;
    ShellTreeView1: TShellTreeView;
    Button1: TButton;
    Button2: TButton;
    Edit3: TEdit;
    Label2: TLabel;
    procedure FormShow(Sender: TObject);
    procedure ShellTreeView1Change(Sender: TObject; Node: TTreeNode);
    procedure SpeedButton1Click(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
  private
    { Private declarations }
    server,sapassword:string;
  public
    { Public declarations }
  end;

var
  frmYedekle: TfrmYedekle;
  IniDosya:TIniFile;

implementation

{$R *.dfm}

procedure TfrmYedekle.FormShow(Sender: TObject);
begin
   IniDosya := TIniFile.Create(ExtractFilePath(Application.ExeName)+'Settings.ini');
   try
      server:=IniDosya.ReadString('Database','Server','');
      sapassword:=IniDosya.ReadString('Database','SaPassword','');
   finally
      IniDosya.Free;
   end;

   PageControl1.ActivePage:=TabSheet1;

   dateseparator:=' ';
   shortdateformat:='ddmmyyyy';
   Edit1.Text:=DateToStr(Date);

end;

procedure TfrmYedekle.ShellTreeView1Change(Sender: TObject;
  Node: TTreeNode);
begin
    Edit3.Text:=ShellTreeView1.Path;
end;


procedure TfrmYedekle.SpeedButton1Click(Sender: TObject);
begin
    if OpenDialog1.Execute then
        Edit2.Text:=OpenDialog1.FileName;
end;

procedure TfrmYedekle.Button1Click(Sender: TObject);
var yol:string;
    hata:boolean;
    dosya_adi:string;

begin

   if trim(Edit1.Text)='' then
      Edit1.Text:=DateToStr(Date);
    dosya_Adi:=Edit1.Text+Label6.Caption;

   try
     // ADOConnection1.Connected :=false;
      //ADOConnection1.ConnectionString := 'Provider=SQLOLEDB.1;Persist Security Info=false;User ID=sa;Initial Catalog=master;Password ='+sapassword+';Data Source=' +server;
      ADOConnection1.Connected := true;
    except
      Application.MessageBox('Veritabanı Bağlantı Hatası...','Veritabanı Bağlantı',0+64);
    end;

    if (Application.MessageBox('Yedekleme işlemi için "Tamam" butonuna basınız...', 'YEDEKLEME',mb_okcancel+mb_iconstop)=idok) then
    begin
      Button1.Enabled:=false;
      yol:=Edit3.Text;
      if length(yol)>3 then
         yol:=yol+'\'+dosya_adi
      else
         yol:=yol+dosya_adi;

      try
         ADOQuery1.Close;
         ADOQuery1.SQL.Clear;
         ADOQuery1.SQL.Add('use master BACKUP DATABASE aborssskv TO DISK = '''+yol+''' with init');
         ADOQuery1.ExecSQL;

         Application.MessageBox('Yedekleme İşlemi Başarı İle Tamamlanmıştır...', 'MESAJ',Mb_ok+mb_iconinformation)
      except
         Application.MessageBox('Yedekleme İşlemi Başarısızlıkla Sonuçlandı...', 'MESAJ',Mb_ok+MB_ICONSTOP);
      end;
         Button1.Enabled:=true;
    end;

end;

procedure TfrmYedekle.Button2Click(Sender: TObject);
var yol:string;
    hata:boolean;
    dosya_adi:string;

begin

   if Trim(Edit2.Text)='' then
   begin
      ShowMessage('Dosya Adını Giriniz....');
      exit;
   end;

   dosya_Adi:=Edit2.Text;

   try
     // ADOConnection1.Connected :=false;
     // ADOConnection1.ConnectionString := 'Provider=SQLOLEDB.1;Persist Security Info=false;User ID=sa;Initial Catalog=master;Password ='+sapassword+';Data Source=' +server;
     ADOConnection1.Connected := true;
   except
      Application.MessageBox('Veritabanı Bağlantı Hatası...','Veritabanı Bağlantı',0+64);
   end;

   if (Application.MessageBox('Yedekten Geri Yükleme için "Tamam" butonuna basınız...', 'YEDEKTEN GERİ ALMA',mb_okcancel+mb_iconstop)=idok) then
   begin
      Button1.Enabled:=false;
      yol:=Edit2.Text;
      try
         ADOQuery1.Close;
         ADOQuery1.SQL.Clear;
         ADOQuery1.SQL.Add('use master RESTORE DATABASE aborssskv FROM DISK = '''+yol+''' with recovery' )  ;
         ADOQuery1.ExecSQL;

         Application.MessageBox('Yedekten Geri Alma İşlemi Başarı İle Tamamlanmıştır...', 'MESAJ',Mb_ok+mb_iconinformation)
      except
         Application.MessageBox('Yedekten Geri Alma Başarısızlıkla Sonuçlandı...', 'MESAJ',Mb_ok+MB_ICONSTOP);
      end;
         Button1.Enabled:=true;
   end;

end;

end.





ben kodu bu şekilde değiştirdim çalıştı tabiki  connectionstringleride ayarlamanız gerekiyor bu arada bu kod odbc için değildir gerekli düzenlemeleri yaparsınız  bi hatırlatma daha recovery sadece exe çalışınca çalışıyor nedeninii anlamadım run ile çalışmıyor kolay gelsin

Çevrimdışı murat64

  • Üye
  • ***
  • İleti: 21
  • Rep: +0/-0