Ayırma veya Ekleme Nedir ve Nasıl Çalışır?
Ayırmayla başlayacağız. SQL Server'da bir veritabanını çıkardığınızda, veritabanını çevrimdışına alıyor ve onu ayırdığınız SQL Server örneğinden kaldırıyorsunuz. Veritabanları verileri ve günlük dosyaları aynı kalır ve tutarlı bir durumda kalırlar, böylece veritabanını daha sonra veya başka bir SQL Server örneğine ekleyebilirsiniz. Ekleme , verileri ve günlük dosyalarını düzgün bir şekilde ayrılmış (ya da düzgün bir şekilde kapatılmış bir SQL Server örneğinden kopyalanmış) bir veritabanından bir SQL Server örneğine bağlar ve veritabanını çevrimiçi duruma getirir.
Veritabanını Nasıl Ayırırım?
Bunu T-SQL'de veya SQL Server Management Studio GUI'den yapabilirsiniz.
GUI'de, ayırmak istediğiniz veritabanına sağ tıklayın, seçin All Tasks
ve tıklayın Detach
. Oradan kopma iletişim kutusu alırsınız. Aktif bağlantıların zorla bağlantısını kesmek ve yürütmenin ortasındaki geri alma işini önce bağlantıları kesmeyi seçebilirsiniz. Ayırmadan önce istatistikleri güncellemeyi de seçebilirsiniz.
T-SQL'de:
-- You don't want to be in the database you are trying to detach
USE Master
GO
-- Optional step to drop all active connections and roll back their work
ALTER DATABASE DatabaseName
SET SINGLE_USER WITH ROLLBACK IMMEDIATE
GO
-- Perform the detach
EXEC sp_detach_db 'DatabaseName'
GO
Sp_detach_db sistem saklı yordamı için isteğe bağlı olarak geçebileceğiniz iki paramater vardır:
@skipchecks
- Kabul edilebilir bir giriş 'True'
veya 'False'
eğer 'True'
, SQL Server ayrılmadan önce istatistikleri günceller. Eğer False'
öyleyse, olmaz. Burada hiçbir şey belirtmezseniz, istatistikler SQL Server 2005 veya sonraki sürümlerinde güncellenecektir.
@keepfulltextindexfile
- Buradaki varsayılan 'True'
ayar şudur - eğer bu değer true olarak ayarlanırsa, tam metin dizini meta verileri ayrılma sırasında bırakılmaz.
Kopmakta ve aşağıda vurgulamak riskleri biraz daha ayrıntı hakkında çok daha fazla görmek için çevrimiçi kitapları makaleyi için sp_detach_db
başlamak için iyi bir yerdir.
Bir Veritabanını Nasıl Eklerim?
Bunu T-SQL'de veya SQL Server Management Studio GUI'den de yapabilirsiniz.
( NOT: Veri ve günlük dosyalarınızı düzgün bir şekilde ayrılmış olmayan bir veritabanından alıyorsanız, ekiniz çalışmayabilir. Ayırma gerçekleştiğinde, veritabanı çevrimdışı duruma getirilir ve günlük ve veri dosyaları tutarlı bir duruma getirilir. bir servis temiz bir şekilde kapatıldığında olur. )
GUI'de, Databases
örneğiniz için en üstteki klasörü sağ tıklayın ve öğesini seçin Attach
. Bir sonraki iletişim kutusunda, eklemek istediğiniz veritabanının birincil veri dosyasını (.MDF) seçer ve diğer dosyaların seçildiğinden ve uygun konumlarının belirtildiğinden emin olun ve Tamam'ı tıklatarak veritabanını ekleyin.
T-SQL'de bunu SQL Server 2005'te ve ileride yapmanın en iyi yolu CREATE DATABASE
komuttan geçer. Bu, SQL Server 2012'nin ötesinde desteklenen yöntemdir. Nasıl kullanılacağını sp_attach_db
görmek istiyorsanız, çevrimiçi kitaplarda [sp_attach_db][3]
ya da[sp_attach_single_file_db][4]
Günlük dosyanız ve veri dosyalarınız varsa ve bunlar tutarlı olduğunda, bu T-SQL yaklaşımıdır:
- Create Database ve FOR ATTACH deyimini eklemek için kullanma
CREATE DATABASE DatabaseName
ON (FILENAME = 'FilePath\FileName.mdf'), -- Main Data File .mdf
(FILENAME = 'FilePath\LogFileName.ldf'), -- Log file .ldf
(FILENAME = 'FilePath\SecondaryDataFile.ndf) -- Optional - any secondary data files
FOR ATTACH
GO
Çevrimiçi kitaplarda Veritabanı Oluştur deyimi hakkında daha fazla bilgi bulabilirsiniz .
SQL Server Express'te Nasıl Ayırırım / Eklerim?
Aslında aynı. SQL Server Management Studio Express kullanıyorsanız, yukarıda açıklanan GUI'deki çıkarma / bağlantı iletişim kutusunu veya yukarıda açıklanan SSMS Express aracılığıyla T-SQL adımlarını kullanabilirsiniz. Ekspres orada fark yok.
SSMS Express'iniz yoksa indirebilirsiniz. ( İşte SQL Server 2012 Express sürümü).
Bir SQLCMD
oturuma girebilir ve yukarıda açıklanan aynı T-SQL yapılarını kullanabilirsiniz.
Ayırmayı veya Takmayı Ne Zaman Düşünmeliyim?
Öncelikle, takma ve takma işleminin ne için kullanılacağına dair bir kelime yoktur: Yedekleme ve Kurtarma Ayırma ve Ekleme, veritabanınızı rutin kurtarma amacıyla yedeklemenin bir yolu değildir. Bu şekilde işlem günlüğü yedeklemesi yoktur, veritabanınızı yanlışlıkla silinebilecek bir duruma getirir ve bu amaçla hiç iyi bir yol değildir.
Bununla birlikte, sökme ve takma birkaç kullanım durumu için iyidir (ayrıntılı değildir, daha fazla yeni bir cevap eklemek veya oluşturmak için düzenleme yapmaktan çekinmeyin):
- Bazen göçler için (ben yedekleme tercih rağmen cevabım tartışıldığı gibi / kişiler için geri burada )
- Artık aktif olarak kullanılmayan ancak gerektiğinde daha sonra ekleme yeteneğine sahip bir veritabanını kaldırmak istediğinizde.
- Bazı sorun giderme durumlarında buna çağrılabilir
- Hem verileri hem de günlük dosyalarını başka bir ortama yedekleyecek veya geri yükleyecek alanınız yok (hiç burada olmamalısınız, ancak zaman zaman dev veritabanlarını ortamların etrafında hareket ettirmek için kullandım. kütük, kütük dosyasını ekler / yeniden oluşturur.)
Riskler ve Uyarılar
Yine, çevrimiçi kitap burada iyi bir kaynaktır , ancak bir veritabanı ayırma veya eklerken akılda bulundurulması gereken bazı özel hususları açıklayacağım -
Ayır
- Veritabanınızı çevrimdışına alıyorsunuz. Artık erişilebilir değil. Bu açık olmalı ama çağrılmaya değer. Bu yüzden mükemmel bir yedekleme seçeneği değil.
- Veritabanınız çevrimiçi olduğunda, SQL Server dosyaları kilitler. Bunu yanlış yaptığımı kanıtlamayı denemeyi tavsiye etmem, çünkü oyunda başka bir durum olabilir, ancak SQL Server çevrimiçi durumdayken bir veritabanı dosyasını (veri, ikincil veriler veya günlük dosyası) silemezsiniz. Bu iyi birşey. Ayırdığınızda, böyle bir korumanız yoktur - bu kötü bir şey olabilir.
- Veritabanının bozulmasıyla uğraşıyorsanız ve Çıkarma'nın ilk basamağı olan bir yerde bir makale bulursanız - yanlış - bozuk bir veritabanını çıkarırsanız, bu olabilir. Bu veritabanını tekrar ekleyemeyebilirsiniz.
- Üretim veritabanı dosyalarınızı ağınıza kesip yapıştırmak, dosya düzeyinde bozulma olasılığı ortaya çıkarmanın bir yoludur. Geçiş yaparken yedeklemeyi / geri yüklemeyi tercih etmemin bir diğer nedeni.
- Bir bakım planının başarısız olmasına neden olabilir. Durum, benim yaptığım gibi, en iyi uygulamayı kontrol etmeden tüm veritabanlarının düzenli olarak yedeklenmesini sağlamak için bir bakım planı oluşturmuş olmanızdır. Bu işe yarıyor, bu yüzden düşünmeyi bırak. Başka biri daha sonra çevrimdışı kullanmadıkları bir veritabanını almaya karar verir. "Plan (lar)" iletişim kutusundaki "Durumu çevrimiçi olmayan veritabanlarını yoksay" seçeneğini işaretleyerek bakım planını değiştirinceye kadar bakım planı bu noktadan itibaren başarısız olur. Çevrimdışı veritabanı için başarısız olmayacağını unutmayın; bakım planı çevrimdışı veritabanını yedeklemeye çalıştığında bir hatayla başarısız olur; bu nedenle bazı çevrimiçi veritabanları yedeklenmeyebilir. (bu nokta için farklı yazar bu yüzden şüphe ile davranın)
Ekleme
- Tıpkı internetten komut dosyaları çalıştırmamanız veya havaalanındaki yabancılardan gelen paketleri kabul etmemeniz gibi, doğrulamak için bazı adımlar atmadan bir başkasından aldığınız bir veritabanını eklememelisiniz. Bu veritabanı içinde, ortamınızı tehlikeye sokabilecek tetikleyicilerde, saklı yordamlarda vb. Kodlar olabilir. Eklemek istediğiniz veritabanını, üretim sisteminizi değil, güvenli ve güvenlik duvarı olan bir ortamda incelemelisiniz.
SQL Server'ın Farklı Sürümleri veya Sürümleri Hakkında Ne?
Bunlar, sürümler arasındaki veritabanlarını geri yükleme ile ilgili kurallardan farklı değildir. Genel olarak 3 sürüm için bir sonraki sürüme geri yükleyebilirsiniz (örneğin, SQL Server 2008'den SQL Server 2012'ye, örneğin çalışacaktır. SQL Server 2000'den SQL Server 2012'ye çalışmayacak). Yedekleme / geri yükleme veya sökme / takma işlemleriyle geriye doğru hiç geriye gidemezsiniz - nesneleri ve ekleri kodlamak ve elle veya bunu yapan bir araçla yapmak zorunda kalırsınız. Sürümler için, genellikle SQL Server'ın ana SKU'ları arasında geçiş yapabilirsiniz; örneğin, bir veritabanını Standart'tan Enterprise'a, fazladan bir çalışma yapmadan taşıyabilirsiniz. Kurumsal özellikleri kullanıyorsanız (Say, sıkıştırma veya bölümleme), hareketi yapmadan önce bu özellikleri devre dışı bırakmanız gerekir. Sen özellikleri hakkında bir fikir edinebilirsiniz