Anasayfa » Forum

DOS CMD ile MSSQL y...
 

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

  RSS
Mehmet Ozdemir
(@MehmetOzdemir)
Üye

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:

Alıntı
Gönderildi : 23/07/2019 6:03 pm
Alper Yazgan
(@alper-yazgan)
Üye
Maruf Arslan
(@marufarslan)
Üye

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."

CevapAlıntı
Gönderildi : 24/07/2019 8:37 am
Mehmet Ozdemir
(@MehmetOzdemir)
Üye

@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.

CevapAlıntı
Gönderildi : 24/07/2019 5:28 pm
Maruf Arslan
(@marufarslan)
Üye

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."

CevapAlıntı
Gönderildi : 24/07/2019 5:38 pm
Mehmet Ozdemir
(@MehmetOzdemir)
Üye

@marufarslan

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

CevapAlıntı
Gönderildi : 24/07/2019 6:08 pm
Mehmet Ozdemir
(@MehmetOzdemir)
Üye
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 4 hafta önce Mehmet Ozdemir tarafından düzenlendi
CevapAlıntı
Gönderildi : 25/07/2019 11:57 am
Maruf Arslan beğendi
muhammed aktepe
(@muhammedaktepe)
Üye
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?

CevapAlıntı
Gönderildi : 31/07/2019 1:23 pm
Maruf Arslan
(@marufarslan)
Üye

SQL kullanıcı oluşturma hakkında bu adresten baka bilirsin.

 

 

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

CevapAlıntı
Gönderildi : 31/07/2019 2:43 pm
Paylaş:
  
Çalışıyor

Lütfen Giriş yap yada Kayıt ol