Forum
Merhaba
sql express 2005 bat dosyası yaparak yedeklemek istiyorum.
gunluk yedekleme yapmak istiyorum..şu şekilde bi şey denedim..olmadı..
yardımcı olursanız sevinirim.. şimdiden teşekkürler...
net stop msdtc
net stop sqlserveragent
net stop mssqlserver
net stop SQLAGENT$SQL2005
net stop MSSQL$SQL2005
xcopy ..............................................yada başka rar yapacak bişeyde olur...
net start msdtc
net start sqlserveragent
net start mssqlserver
net start SQLAGENT$SQL2005
net start MSSQL$SQL2005
Merhaba
İlgili veritabanlarını sıkıştırmadan ntbackup ile ya da manuel olarak yedek almayı deneyin.
Ve herhangi bir hata verecek mi onu kontrol edin.
teşekkür ederim...sorumun cevabını şu şekilde buldum...
1.yöntem........................
@ECHO OFF
NET STOP MSSQL$SQLEXPRESS
XCOPY C:\MIKRO E:\YEDEK /S /Y
NET START MSSQL$SQLEXPRESS
exit
2.yöntem......................
T-SQL Script yaparak ve bu scripti SQLCMD ile bat dosyası haline
getirerek...
çok teşekkür ederim...
2 yöntem için buldugum kaynak şu şekildedir............
QL SERVER2005 EXPRESS Edition' da Otomatik Yedekleme
Merhaba arkadaşlar,
Bu makalede sizlere anlatmak istediğim şey SQL Server 2005 Express Edition' da otomatik yedekleme sisteminizi nasıl oluşturabileceğiniz olacak.
SQL Server 2005 Express Edition, SQL Server 2005 serisinin ücretsiz sürümüdür. Aynen SQL Server 2000' deki MSDE gibi. Fakat SQL Server 2005' in altyapısıyla ve fazladan özelliklerle. Meselâ artık veritabanı boyutu sınırı 2GB değil, 4GB.
SQL Server 2005 Express Edition' da otomatik olarak yedek almak isteyeceğiniz zaman muhtemelen ilk önce SQL Server Agent servisinin olmadığını göreceksiniz. Belki bazıları da otomatik yedekleme ve diğer işlemler için Maintanence Plan' ı arayacaklar; fakat SQL Server Agent olmadığı için, bunu da bulamayacaklar.
SQL Server Agent servisi, SQL Server 2005' in Workgroup, Standard, Developer ve Enterprise sürümleriyle geliyor sadece. Ayrıca SQL Server 2005 Express Edition' da, SSIS (SQL Server Integration Services) da yok. SSIS, SQL Server 2000' deki DTS (Data Transformation Services)' in ardılı. Fakat SSIS tamamen baştan yazılmıştır ve DTS' e kıyasla çok güçlüdür. Visual Studio ile tamamen entegre edilmiştir.
Sonradan SQL Server 2005 Express Edition' ın bir versiyonu daha çıktı, bu da SQL Server 2005 Express Edition with Advanced Services. Bu sürümde, SQL Server 2005 Express Edition' a oranla bazı yeni özellikler var; fakat bunda da SQL Server Agent yok.
Not: Bu özelliklerden burada bahsetmeyeceğim, çünkü konumuzun dışında.
Peki bu yukarıda anlattıklarım, eğer SQL Server 2005 Express Edition kullanıyorsak zamanlanmış \ otomatik (Scheduled) yedek alamayacağımız anlamına mı geliyor? Tabii ki hayır! Her zaman bir yol vardır =)
Meselâ şöyle bir yol kullanabilirsiniz:
- Almak istediğiniz yedek ile ilgili bir T-SQL Script' i oluşturun.
- Script' i SQLCMD' ye aktararak, orada çalıştırın.
- Windows Zamanlanmış Görevler (Windows Scheduled Tasks) kullanarak bir görev zamanlayın.
T-SQL Script' ine örnek:
BACKUP DATABASE [test_2000] TO DISK = N'c:\test\test.bak' WITH NOFORMAT, INIT, NAME = N'test_2000-Full Database Backup', SKIP, NOREWIND, NOUNLOAD, STATS = 10 GO
Not: BACKUP komutu hakkında daha fazla bilgi almak için aşağıdaki adresi ziyaret edebilirsiniz:
http://msdn2.microsoft.com/en-us/library/ms186865.aspx
Not: T-SQL Script' inizi pratik yoldan oluşturmak:
SQL Server 2005 ile birlikte neredeyse her arayüz penceresinde Script' leme gibi bir özellik var. Meselâ aşağıdaki çizdiğim yolu takip ederseniz bunu göreceksiniz.
- SQL Server Management Studio Express Edition' ı çalıştırın. SQL Server Instance' ınıza bağlanın.
- Yedeğini almak istediğiniz veritabanı üzerinde farenin sağ tuşuna tıklayın ve açılan menüden de "Tasks" ardından da "Back Up..." öğelerine tıklayın.
- Açılan "Back Up Database" penceresinde gerekli yedekleme ayarlarınızı yaptıktan sonra, aynı pencerenin en üstünde yer alan iki düğme göreceksiniz. Bunlar: "Script" ve "Help" düğmeleridir.
- "Script" düğmesinin hemen yanındaki aşağı ok düğmeciğine tıklayın ve "Script Action to File" öğesini seçin. Sizden Script dosyasını bir yere kaydetmenizi isteyecek. Bu dosyayı, almak istediğiniz yedeği otomatikleştirmek için kullanacağız. Ona göre bir yere saklayın.
Not: Benim örneğimde ben bu dosyayı "c:\Test" klasörü altında "OtoYedek.sql" olarak saklayacağım.
- İsterseniz dosyayı kaydettikten sonra gidip dosyanın içeriğine bakabilir ve değiştirebilirsiniz.
SQLCMD:
SQLCMD.exe, SQL Server 2000' deki ve SQL Server 2005' dte de geriye dönük destek vermek için hâlâ bulunan OSQL.exe' nin halefi. Bu komut satırı uygulaması ile, SQL Server Instance' ınızda işlemler yapabilirsiniz. Meselâ biz bu makalemizde yukarıdaki örnekte oluşturduğumuz OtoYedek.sql dosyasını SQLCMD ile birlikte çalıştıracağız. SQLCMD uygulamasını da Windows Zamanlanmış Görevler ile çalıştıracağız ve böylece otomatik yedek almış olacağız.
Peki oluşturduğumuz OtoYedek.sql dosyasını SQLCMD ile nasıl çalıştıracağız? Şöyle:
- Bir komut satırı açın (Başlat\Çalıştır metin kutusuna "cmd" yazın ve Tamam düğmesine tıklayın.)
- Komut satırını açtıktan sonra, OtoYedek.sql dosyamız ile SQLCMD' nin nasıl çalıştığını görmek için şu komutu yazın: "SQLCMD -S Ekrem-PC\SQLEXPRESS -E -i C:\Test\OtoYedek.sql"
Not: Bu komuttaki -S anahtarı Sunucu adını temsil ediyor. Bendeki sunucu adı "Ekrem-PC". Ayrıca kullandığım SQL Server Instance' ı bir "Named Instance". Eğer Default Instance olsaydı, o zaman sadece sunucu adını yazmam yeterli olacaktı. -E anahtarı ise Güvenli Bağlantı (yani Windows Authentication' ı) ' yı temsil ediyor. Eğer SQL Server' da yetkilendirme için Windows Authentication değil de, SQL Server Login kullanıyorsanız o zaman -E anahtarını kullanmayı, -U anahtarı ile kullanıcı adınızı, -P anahtarı ile de şifrenizi girmeniz gerekecek. -i anahtarı ise, kullanmak istediğimiz T-SQL Script dosyasının yolunu tarif etmek içindir.
- Yukarıda vermiş olduğum satırı çalıştırdıktan sonra, Eğer siz de benimle aynı yoldan gittiyseniz, aynı isimli klasör ve dosyaları kullandıysanız (ki daha önceden "C:\Test" klasörünü oluşturmuş olmanız gerekiyor, yoksa hata alırsınız) "C:\Test" klasöründe "test.bak" isimli bir dosyanın oluştuğunu göreceksiniz.
Not: SQLCMD hakkında daha fazla bilgi edinmek istiyorsanız ve diğer anahtarlarını da öğrenmek istiyorsanız, komut satırındayken "SQLCMD - ?" yazıp Enter tuşuna basabilirsiniz.
Şimdi sıra Windows Zamanlanmış Görevler' e geldi.
Zamanlanmış Görevler:
- Denetim Masası \ Zamanlanmış Görevler
- Zamanlanmış Görev Ekle
- Zamanlanmış Görev Sihirbazından: Gözat düğmesine tıklayın ve SQLCMD dosyasın bulun (Benim test makinemdeki yeri ve varsayılan yeri örnek olarak şöyledir: "C:\Program Files\Microsoft SQL Server\90\Tools\Binn")
- İhtiyacınıza göre zamanı ayarlayın,
- Görevin çalışmasını sağlayacak ve yeterli yetkilere sahip bir kullanıcı hesabının bilgilerini girin
- Görevi oluşturduktan sonra görevin özelliklerine girin ve Çalıştır mtin kutusundaki "C:\Program Files\Microsoft SQL Server\90\Tools\Binn\SQLCMD.exe" yazan satıra, yukarı kullandığımız anahtarları da ekleyin. (Örn: "C:\Program Files\Microsoft SQL Server\90\Tools\Binn\SQLCMD.exe -S Ekrem-PC\SQLEXPRESS -E -i C:\Test\OtoYedek.sql"
Özet:
Özetle, Windows Görev Zamanlayıcısından zamanladığınız görevi, SQLCMD' nin yazdığınız TSQL Script' ini çalıştırması için kullanarak veritabanınıza ait veri ve log dosyalarının yedeklerini alabilirsiniz.
"Neden veritabanı dosyalarımın (mdf, ndf, ldf vs.) yedeklerini doğrudan NTBackup ile alamıyorum?" diye sorabilirsiniz, alamazsınız çünkü kullanımda olan veritabanı dosyaları kopyalanamaz. Bu işlem için ilk önce veritabanının bağını çözmeniz (Detach) gerekir. Bu da, veritabanınızın bir süreliğine de olsa kullanılamaz hale gelmesi demektir. Ayrıca yedekleme sistemini otomatikleştirmesiyle de alâkası yoktur ve hiç pratik değildir.
geri bildirim için teşekkürler.
Scriptin biraz basitleştirilmişi aşağıdaki gibidir
DECLARE @name VARCHAR(50) -- database name
DECLARE @path VARCHAR(256) -- path for backup files
DECLARE @fileName VARCHAR(256) -- filename for backup
DECLARE @fileDate VARCHAR(20) -- used for file name
SET @path = 'e:\dbyedek\'
SELECT @fileDate = CONVERT(VARCHAR(20),GETDATE(),112)
DECLARE db_cursor CURSOR FOR
SELECT name
FROM master.dbo.sysdatabases
WHERE name NOT IN ('master','model','msdb','tempdb')
OPEN db_cursor
FETCH NEXT FROM db_cursor INTO @name
WHILE @@FETCH_STATUS = 0
BEGIN
SET @fileName = @path + @name + '_' + @fileDate + '.BAK'
BACKUP DATABASE @name TO DISK = @fileName
FETCH NEXT FROM db_cursor INTO @name
END
CLOSE db_cursor
DEALLOCATE db_cursor
yukarıdaki scripti bir not defterine yazıp ardından otoyedek.sql olarak kayıt ettiğinizi düşünürsek ve başka bir not defterine
C:\Progra~1\MIcros~1\100\Tools\Binn\SQLCMD -S SQLSERVER_ADINI_BURAYA_YAZ -E -i e:\dbyedek\otoyedek.sql
bu komutu yazıp otoyedek.bat olarak aynı dizine koyarsanız otoyedek.bat dosyamızı çalıştırdıgımızda *.bak olarak yedeklememizi başlatmış oluruz unutmadan söyleyeyim SQLCMD.exe nin yolu SQL server versiyonlarına göre değişiklik gösterebilir kolay gelsin
net stop mssqlserver
net stop sqlserveragent
xcopy C:\MUHASEBE\*.* \\192.168.1.34\Documents\Muhasebe_Yedek\ /d/e/s/y/c
"C:\Program Files\WinRAR\WinRAR.exe" a -r -df \\192.168.1.34\Documents\Muhasebe\%date%.rar \\192.168.1.34\Documents\Muhasebe_Yedek\*.*
net start mssqlserver
net start sqlserveragent
Ben bu işlemi sıkıştırarak yapıyorum.
net stop sqlserveragent
net stop mssqlserver
RAR.EXE a -ag -r "G:\Backup\Winner\Winner.rar" D:\Winner\*.*
RAR.EXE a -ag -r "G:\Backup\Muhasebe\Muhasebe.rar" D:\Muhasebe\*.*
net start mssqlserver
net start sqlserveragent