Forum
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:
https://www.cozumpark.com/sql-serverda-backup-stratejileri-1-full-backup-ve-differential-backup/
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."
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.
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."
Yeni bir kullanıcı oluşturup onu kullandım. Tekrar teşekkür ederim.
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)
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?