Soru SQL Server 2008'in .mdf ve .ldf dosyalarından veritabanını geri yükleme


Bir sebepten dolayı SQL Server 2008 R2'yi kaldırmam gerekiyor ama bundan önce iki dosya kopyaladım (.mdf ve .ldf) veritabanımdan

C: \ Program Dosyaları (x86) \ Microsoft SQL Server \ MSSQL10_50.MSSQL2008 \ MSSQL \ DATA

Şimdi, soru şu ki, yeni yüklenmiş SQL Server 2008 R2'de veritabanını bu dosyalardan kurtarmam mümkün mü?

Evet ise: o zaman bunu nasıl yapabilirim?


35
2017-08-19 08:43


Menşei


Evet yapabilirsin veri tabanı ekle iki dosya olduğunda. - marc_s
Bunu yapmayı denedim ancak veritabanını eklerken bir hata oluştu. - Ahsan Raza
fiziksel dosyayı açamayan bir hata. işletim sistemi hatası 5 (erişim engellendi) MSSQL Sunucu hatası 5120 - Ahsan Raza
SQL Server'ın çalıştığı fiziksel makinedeki dosyalar mı? - marc_s
Kullanıcımın izinleri olduğundan, yönetim stüdyosunu yönetici olarak çalıştırarak erişim engellendi hatası almayı başardım. - mrfreester


Cevaplar:


Evet mümkün. Adımlar şunlardır:

  1. İlk koymak .mdf ve .ldf dosyasında C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\DATA\ Klasör

  2. Ardından sql yazılımına gidin, “Veritabanları” nı sağ tıklayın ve Veritabanlarını Ekle iletişim kutusunu açmak için “Ekle” seçeneğine tıklayın.

  3. Veritabanı Dosyalarını Açmak ve Yerleştirmek için “Ekle” düğmesine tıklayın. C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\DATA\Klasör

  4. "Tamam" düğmesine tıklayın. SQL Server Management Studio veritabanını .MDF dosya.


84
2018-02-19 10:24





İlk google araması bana bu cevabı verdi. Bu yüzden bunu daha yeni bir eklenti sürümü ile güncellemeyi düşündüm, ayrıl.

Create database dbname 
On 
(   
Filename= 'path where you copied files',   
Filename ='path where you copied log'
)
For attach; 

Ayrıca, veritabanınız temiz bir şekilde kapatılıyorsa (veritabanı kapatılırken etkin işlemler yoktur) ve günlük dosyanız yoksa, aşağıdaki yöntemi kullanabilirsiniz, SQL server yeni bir işlem günlüğü dosyası oluşturacaktır ..

Create database dbname 
    On 
    (   
    Filename= 'path where you copied files'   
    )
    For attach; 

İşlem günlüğü dosyasını belirtmezseniz, SQL varsayılan yola bakmaya çalışır ve veritabanının temiz bir şekilde kapatılıp kapatılmadığına bakılmaksızın kullanmayı deneyecektir.

İşte ne MSDN bunun hakkında söylemek zorunda ..

Okuma-yazma veritabanında tek bir günlük dosyası varsa ve günlük dosyası için yeni bir konum belirtmezseniz, ek işlem dosya için eski konuma bakar. Bulunursa, veritabanının temiz bir şekilde kapatılıp kapatılmadığına bakılmaksızın eski günlük dosyası kullanılır. Ancak, eski günlük dosyası bulunamazsa ve veritabanı temiz bir şekilde kapatılmışsa ve etkin bir günlük zinciri yoksa, ek işlem veritabanı için yeni bir günlük dosyası oluşturmaya çalışır.

Bu yaklaşımla ilgili bazı kısıtlamalar var ve bazı taraflar da etkiliyor ..

1.attach-ve-detach işlemleri hem veritabanı için çapraz veritabanı sahiplik zincirini devre dışı bırakır
  2.Database güvenilir olarak ayarlandı
  3. Salt okunur bir veritabanının çıkarılması, diferansiyel yedeklemelerin farklı tabanları hakkındaki bilgileri kaybeder.

En önemlisi ... son sürümleri olan bir veritabanını önceki bir sürümüne ekleyemezsiniz

Referanslar:
https://msdn.microsoft.com/en-in/library/ms190794.aspx


10
2018-03-14 20:08



Tam duraklarda ne var? - cybermonkey
@cybermonkey: bazı biçimlendirme sorunları, hatırlayamıyorum, ama şimdi güncellendi - TheGameiswar
Woah, bu .. hızlıydı. Çoğu zaman böyle şeyler söylediğimde, yazar sorunu düzeltmek için hiçbir zaman rahatsız olmaz. - cybermonkey


Bir komut dosyasından (çalışmakta olan):

CREATE DATABASE Northwind
ON ( FILENAME = 'C:\Program Files\Microsoft SQL Server\MSSQL11.SQLEXPRESS\MSSQL\DATA\Northwind.mdf' )
LOG ON ( FILENAME = 'C:\Program Files\Microsoft SQL Server\MSSQL11.SQLEXPRESS\MSSQL\DATA\Northwind_log.ldf')
GO

Açıkça yolu güncelleyin:

C:\Program Files\Microsoft SQL Server\MSSQL11.SQLEXPRESS\MSSQL\DATA

.Mdf ve .ldf'inizin bulunduğu yere.


8
2018-01-24 17:13





Sana bir cevabım var Evet mümkün.

Git

SQL Server Management Studio> Veritabanı seçin> Ekle'ye tıklayın

Sonra seçin ve .mdf ve .ldf dosyasını ekleyin. Tamam'a tıklayın.


5
2018-02-05 05:07





use test
go
alter proc restore_mdf_ldf_main (@database varchar(100), @mdf varchar(100),@ldf varchar(100),@filename varchar(200))
as
begin 
begin try
RESTORE DATABASE @database FROM DISK = @FileName
with norecovery,
MOVE @mdf TO 'D:\sql samples\sample.mdf',
MOVE @ldf TO 'D:\sql samples\sample.ldf'
end try
begin catch
SELECT ERROR_MESSAGE() AS ErrorMessage;
print 'Restoring of the database ' + @database + ' failed';
end catch
end

exec restore_mdf_ldf_main product,product,product_log,'c:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\Backup\product.bak'

0
2018-05-11 08:44