Forum

DOS CMD ile MSSQL y...
 
Bildirimler
Hepsini Temizle

[Çözüldü] DOS CMD ile MSSQL yedeği almak (kodlama hatası)

8 Yazılar
4 Üyeler
4 Reactions
3,323 Görüntüleme
(@MehmetOzdemir)
Gönderiler: 58
Estimable Member
Konu başlatıcı
 

Merhaba,

DOS CMD ekranını Admin olarak açıp

sqlcmd -s .\SQLEXPRESS -U sa -P 33Yf5slmo3R%rZ- -Q "BACKUP DATABASE AQUA TO DISK='H:\Yedek\AQUA.BAK'"

yedeği alıyor.

Ama bunu bir BAT dosyasına yazıp Admin olarak çalıştırdığımda 

C:\Users\Administrator>sqlcmd -s .\SQLEXPRESS -U sa -P "33Yf5slmo3R\PusulaYedek\AQUA.BAK'"\ Sqlcmd: Error: Microsoft ODBC Driver 13 for SQL Server : Login failed for user 'sa'..

şeklinde hata veriyor.

Sanırım kod satırını farklı yorumluyor. Şifre kısmının ortasından yedek alınacak yolun sürücü harfine kadar yutmuş. Arada kaybolan alan aşağıdaki. Şifredeki % işareti BAT kodlamada değişken tanımlamaya yaradığı için olabilir mi? Nasıl aşarım.

%rZ- -Q "BACKUP DATABASE AQUA TO DISK='H:

 
Gönderildi : 23/07/2019 18:03

(@alper-yazgan)
Gönderiler: 51
Trusted Member
 

https://www.cozumpark.com/sql-serverda-backup-stratejileri-1-full-backup-ve-differential-backup/

Bu ileti 1 hafta önce 2 defa Hakan Uzuner tarafından düzenlendi
 
Gönderildi : 23/07/2019 23:01

(@marufarslan)
Gönderiler: 167
Reputable Member
 

Merhaba;  (Öneri ) 

Yedek.bat isimli bir bat ile All_DBBackup.sql tetikleye bilirsin.

Size faydası her gün için ayrı bir yedek dosyan olur.

Yedek.bat;

sqlcmd -S ERP\MSSQL14 -U KULLANICI -P SIFRE -i "C:\SqlBackup\script\All_DBBackup.sql"

-----------

All_DBBackup.sql ;

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
-- specify database backup directory
SET @path = 'C:\Backup\'  
-- specify filename format
SELECT @fileDate = CONVERT(VARCHAR(20),GETDATE(),112) 
DECLARE db_cursor CURSOR READ_ONLY FOR  
SELECT name 
FROM master.sys.databases 
WHERE name NOT IN ('master','model','msdb','tempdb')  -- exclude these databases
AND state = 0 -- database is online
AND is_in_standby = 0 -- database is not read only for log shipping
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

"Dalgasız denizde, herkes kaptandır."

 
Gönderildi : 24/07/2019 08:37

(@MehmetOzdemir)
Gönderiler: 58
Estimable Member
Konu başlatıcı
 

@marufarslan

Tahmin ettiğim gibi şifrenin içindeki % işareti değişken tanımala başlandığı olduğu için komut satırını sekteye uğratıyor. Bu sql script işimi gördü teşekkür ederim.

 
Gönderildi : 24/07/2019 17:28

(@marufarslan)
Gönderiler: 167
Reputable Member
 

Script işinizi görmesine sevindim.

Fakat sa kullanıcısını  tarz yedek işleri için kullanmayın, bat dosyasını içene bakan SQL admin şifresini öğrenmiş olur.

Sadece yedek izni olan bir kullanıcı kullamank daha sağlıklı.

İyi günler.

"Dalgasız denizde, herkes kaptandır."

 
Gönderildi : 24/07/2019 17:38

(@MehmetOzdemir)
Gönderiler: 58
Estimable Member
Konu başlatıcı
 

@marufarslan

Yeni bir kullanıcı oluşturup onu kullandım. Tekrar teşekkür ederim.

 
Gönderildi : 24/07/2019 18:08

(@MehmetOzdemir)
Gönderiler: 58
Estimable Member
Konu başlatıcı
 
Gönderen: @MehmetOzdemir

BAT Dosyasında @ECHO OF yapıp BAT dosyasını da sonradan 3.party bir tool ile exe ye çevirirsek onuda aşmış oluruz sanırım.

Örnek : Bat_To_Exe_Converter ( https://www.download3k.com/DownloadLink1-Bat-To-Exe-Converter.html)

 

Bu ileti 5 yıl önce Mehmet Ozdemir tarafından düzenlendi
 
Gönderildi : 25/07/2019 11:57

(@muhammedaktepe)
Gönderiler: 15
Eminent Member
 
Gönderen: @marufarslan

Script işinizi görmesine sevindim.

Fakat sa kullanıcısını  tarz yedek işleri için kullanmayın, bat dosyasını içene bakan SQL admin şifresini öğrenmiş olur.

Sadece yedek izni olan bir kullanıcı kullamank daha sağlıklı.

İyi günler.

"Sadece yedek izni olan bir kullanıcı kullamank daha sağlıklı."  Dediğinize göre SQL Server'da Management Studio da nasıl tanımlayabiliriz?

 
Gönderildi : 31/07/2019 13:23

Paylaş: