SQL Server restore (mdf'den)

MS SQL Server veritabanı ve SQL komutlarıyla ilgli sorularınızı sorabilirsiniz. Delphi tarafındaki sorularınızı lütfen Programlama forumunda sorunuz.
Cevapla
Kullanıcı avatarı
mussimsek
Admin
Mesajlar: 7601
Kayıt: 10 Haz 2003 12:26
Konum: İstanbul
İletişim:

SQL Server restore (mdf'den)

Mesaj gönderen mussimsek »

Merhaba,

SQL Server 7.0 veritabanının sadece mdf ve ldf (data ve log) 2 tane dosyası var. Bunları nasıl restore edebilirim?

Benim aklımda sp_attach_db diye kalmış, akşam yardımında verdiği şekillerin hepsini denedim ama olmadı. Header bozuk hatası veriyor. Daha önce yapan oldu mu?

Kolay gelsin.
Kullanıcı avatarı
Kuri_YJ
Moderator
Mesajlar: 2248
Kayıt: 06 Ağu 2003 12:07
Konum: İstanbul
İletişim:

Mesaj gönderen Kuri_YJ »

Selamlar,

MS-SQL Server 7'de bu işlem olmuyor ama şunu bir denesen olacak mı diye düşünüyorum.

Enterprise Manager'dan aynı isimli bir DB create edip. Daha sonra SQL Server'ı stop edip, yeni oluşturduklarının üzerine Eskilerini kopyalasan. Bir nevi Server'ı aldatmak gibi düşün. Ben bu tarz bir işlemi 2000'de yapmıştım yedi. Sonra Start ettiğinde kabul etti. Belki 7'de de yer :)

Kolay Gelsin.
Kuri Yalnız Jedi
Harbi Özgürlük İçin Pisi http://www.pisilinux.org/
Kullanıcı avatarı
mussimsek
Admin
Mesajlar: 7601
Kayıt: 10 Haz 2003 12:26
Konum: İstanbul
İletişim:

Mesaj gönderen mussimsek »

tamam abi akşam bir denerim o şekilde. Teşekkürler.

Kolay gelsin.
Kullanıcı avatarı
emrahkaraarslan
Üye
Mesajlar: 243
Kayıt: 21 Haz 2005 12:28
Konum: Trabzon

Mesaj gönderen emrahkaraarslan »

arkadaşlar SQL server kurulduktan sonra programın veritabanını SQL serverdan elle yükleminin dışında bir çare yokmu program içinde atach nasılyapabiliriz
Kullanıcı avatarı
Kuri_YJ
Moderator
Mesajlar: 2248
Kayıt: 06 Ağu 2003 12:07
Konum: İstanbul
İletişim:

Mesaj gönderen Kuri_YJ »

Selam,

Tam olarak yapmak istediğinizi yazın. Aslında size tavsiyem şu olur. Ben öyle yapıyorum. MS-SQL Serverda herhangi tuhaf bir şeyin nasıl yapıldığını merak ediyorsanız (yani enterprise manager'dan yaptığınız bir şeyi) MS-SQL server nasıl yapar diye merak ettiğinizde hemen şu yönetmi izleyin.

SQL Profiler'ı açın, orda bir trace başlatın. Sonra dönüp Enterprise manager'da işleminizi manuel gerçekleştirin. Sonra profiler'daki trace'i stop edin ve tuttuğu logları inceleyin.

Orda çok şey görüp algılayacaksınız.

Kolay Gelsin
Kuri Yalnız Jedi
Harbi Özgürlük İçin Pisi http://www.pisilinux.org/
NumberOne
Üye
Mesajlar: 3
Kayıt: 29 May 2005 08:27

Mesaj gönderen NumberOne »

Kullanıcı avatarı
emrahkaraarslan
Üye
Mesajlar: 243
Kayıt: 21 Haz 2005 12:28
Konum: Trabzon

Mesaj gönderen emrahkaraarslan »

arkadaşlar teşekkürler verdiğiniz cevaplar için umarım işe yarar eve gidince hemen deneyeceğim
Hakan Can
Üye
Mesajlar: 634
Kayıt: 04 Mar 2005 04:27
Konum: Ankara

Mesaj gönderen Hakan Can »

Baştaki soruyla ilgili olacak:

Bazen log dosyası bozuk olabiliyor. Attach yapamayabiliyorsunuz.

Log dosyasını silip Attach yapmaya kalkıştığınızda Log dosyasını otomatik olarak oluşturacaktır.

İyi çalışmalar.
Kullanıcı avatarı
emrahkaraarslan
Üye
Mesajlar: 243
Kayıt: 21 Haz 2005 12:28
Konum: Trabzon

Mesaj gönderen emrahkaraarslan »

number one arkadaşın verdiği adrese girdim ordakiler işe yarayacak gibi gözüküyor ama ben bir türlü düzenleyemedim hep bişeyler eksik kalıyor



If you have Enterprise manager (SQL Server tools) installed on the machine, you may activate any Enterprise Manager function or menu from within your appliction using SQLNS and SQLDMO.

The good thing is it is easy to make backup as well as restore since it works exactly the same way as using the Enterprise manager. The downside is it will only work if the tools are installed on the client machine.

1) Choose project, Import typelibrary.
2) Look for "Microsoft SQLNamespace Object Library" in the list.
3) Choose install or create unit depending on if you want it as a component or just access using TLB unit as I have.
4) Include SQLNS.pas in uses of your unit.
5) Now do the same 4 steps with "Microsoft SQLDMO Object library" (SQLDMO.pas)

First operation is then to connect to the SQL server...

uses
SQLNS, SQLDMO;

var
FNameSpace:SQLNamespace; // This one needs to be global or part of class as it needs to be accessed by other functions.

var
ConString:OLEVariant;
Hnd:Integer;
FServerName, FPass, FUser: String;

// strings are to be assigned with the password, username and servername to then make part of connection string...

ConString:='Server='+FServerName+';UID='+FUser+';PWD='+FPass+';Trusted_Connection=No';

// The connect operation also requires a window handle. As I had this call within a component I used the one below. If you have a form then Hnd:=Form.Handle instead.

Hnd:=(Owner as TWinControl).Handle;

// Now make the connection...

FNameSpace:= CoSQLNamespace.Create;
FNameSpace.Initialize(FAppName,SQLNSRootType_Server,ConString,Hnd);

// Include the function below to navigate easy in the namespace...

function GetDBNameSpaceObject(
const aDBName: String): SQLNamespaceObject;
var
hServer,hDatabases,hDatabase:Integer;
begin
Result:=nil;
hServer:=FNameSpace.GetRootItem;
hDatabases:=FNameSpace.GetFirstChildItem(hServer,SQLNSOBJECTTYPE_DATABASES,'');
hDatabase:=FNameSpace.GetFirstChildItem(hDatabases,SQLNSOBJECTTYPE_DATABASE,aDBName);
Result:=FNameSpace.GetSQLNameSpaceObject(hDatabase);
end;

// Now you may use this function to activate the "database backup menu" for a particular database on the server...

procedure ShowBackupDB(const aDBName: String);
var
DB:SQLNamespaceObject;
Hnd:Integer;
begin
Hnd:=(Owner as TWinControl).Handle;
DB:=GetDBNameSpaceObject(aDBName);
DB.ExecuteCommandByID(SQLNS_CmdID_DATABASE_BACKUP,Hnd,0);
DB:=nil;
end;





baştakileri uyguladım companent şeklinde(SQLLNS ve SQLDMO) onlar tamam ama kodlarda bi yerlerde karıştırıyorum bir türlü toparlayamıyorum birisi lütfen düzenleyebilrimi yardımcı olursanız çok sevinirim
Allah'ım bana değiştirebileceklerimi değiştirme değiştiremeyeceklerimi kabullenme ve aradaki farkı anlayabilme yeteneği ver
Kullanıcı avatarı
emrahkaraarslan
Üye
Mesajlar: 243
Kayıt: 21 Haz 2005 12:28
Konum: Trabzon

Mesaj gönderen emrahkaraarslan »

EXEC sp_attach_db @dbname = N'pubs',
@filename1 = N'c:\Program Files\Microsoft SQL Server\MSSQL\Data\pubs.mdf',
@filename2 = N'c:\Program Files\Microsoft SQL Server\MSSQL\Data\pubs_log.ldf'



arkadaşlar yukarıda yazdığımdan çok daha kolay bir mdf geri yükleme yöntemi tam istediğim gibi oluyor mdf leri kolayca restore yapabilrsiniz SQL server ın attachkomutunu program içinde çalıştırıyor
Allah'ım bana değiştirebileceklerimi değiştirme değiştiremeyeceklerimi kabullenme ve aradaki farkı anlayabilme yeteneği ver
Kullanıcı avatarı
emrahkaraarslan
Üye
Mesajlar: 243
Kayıt: 21 Haz 2005 12:28
Konum: Trabzon

Mesaj gönderen emrahkaraarslan »

EXEC sp_attach_db @dbname = N'pubs',
@filename1 = N'c:\Program Files\Microsoft SQL Server\MSSQL\Data\pubs.mdf',
@filename2 = N'c:\Program Files\Microsoft SQL Server\MSSQL\Data\pubs_log.ldf'



arkadaşlar yukarıda yazdığımdan çok daha kolay bir mdf geri yükleme yöntemi tam istediğim gibi oluyor mdf leri kolayca restore yapabilrsiniz SQL server ın attachkomutunu program içinde çalıştırıyor
Allah'ım bana değiştirebileceklerimi değiştirme değiştiremeyeceklerimi kabullenme ve aradaki farkı anlayabilme yeteneği ver
Ali Erdoğan
Kıdemli Üye
Mesajlar: 1026
Kayıt: 11 Şub 2005 02:12
Konum: İstanbul

Mesaj gönderen Ali Erdoğan »

Peki arkadaşlar aynı şekilde sql server 2000 ile oluşturulmuş bir veri tabanını MSDE ye kaydetmek mümkün mü?
Cevapla