क्या कोई जानता है कि बैच फ़ाइल में SQL सर्वर बैकअप को स्क्रिप्ट करने का कोई तरीका है या नहीं, ताकि इसे कमांड लाइन से निष्पादित किया जा सके? (एक .bat फ़ाइल में कॉपी-पेस्टएसक्यूएल सर्वर कमांड लाइन बैकअप स्टेटमेंट
उत्तर
यहाँ एक उदाहरण आप एक बैच स्क्रिप्ट के रूप में चला सकते हैं है), Sql सर्वर क्लाइंट उपकरण में SQLCMD सुविधा का उपयोग:
बैकअप:
echo off
cls
echo -- BACKUP DATABASE --
set /p DATABASENAME=Enter database name:
:: filename format Name-Date (eg MyDatabase-2009.5.19.bak)
set DATESTAMP=%DATE:~-4%.%DATE:~7,2%.%DATE:~4,2%
set BACKUPFILENAME=%CD%\%DATABASENAME%-%DATESTAMP%.bak
set SERVERNAME=your server name here
echo.
sqlcmd -E -S %SERVERNAME% -d master -Q "BACKUP DATABASE [%DATABASENAME%] TO DISK = N'%BACKUPFILENAME%' WITH INIT , NOUNLOAD , NAME = N'%DATABASENAME% backup', NOSKIP , STATS = 10, NOFORMAT"
echo.
pause
पुनर्स्थापित:
echo off
cls
echo -- RESTORE DATABASE --
set /p BACKUPFILENAME=Enter backup file name:%CD%\
set /p DATABASENAME=Enter database name:
set SERVERNAME=your server name here
sqlcmd -E -S %SERVERNAME% -d master -Q "ALTER DATABASE [%DATABASENAME%] SET SINGLE_USER WITH ROLLBACK IMMEDIATE"
:: WARNING - delete the database, suits me
:: sqlcmd -E -S %SERVERNAME% -d master -Q "IF EXISTS (SELECT * FROM sysdatabases WHERE name=N'%DATABASENAME%') DROP DATABASE [%DATABASENAME%]"
:: sqlcmd -E -S %SERVERNAME% -d master -Q "CREATE DATABASE [%DATABASENAME%]"
:: restore
sqlcmd -E -S %SERVERNAME% -d master -Q "RESTORE DATABASE [%DATABASENAME%] FROM DISK = N'%CD%\%BACKUPFILENAME%' WITH REPLACE"
:: remap user/login (http://msdn.microsoft.com/en-us/library/ms174378.aspx)
sqlcmd -E -S %SERVERNAME% -d %DATABASENAME% -Q "sp_change_users_login 'Update_One', 'login-name', 'user-name'"
sqlcmd -E -S %SERVERNAME% -d master -Q "ALTER DATABASE [%DATABASENAME%] SET MULTI_USER"
echo.
pause
फ़ाइल से डेटाबेस को पुनर्स्थापित करने के बारे में कैसे? –
इसके अलावा, मूल मैनुअल का संदर्भ जोड़ना बहुत ही अच्छा होगा। धन्यवाद! –
@ हैमिश-ग्रुबिजन - मैंने –
यदि आप बैकअप शेड्यूल करने के लिए बैच फ़ाइल की जरूरत है, एसक्यूएल प्रबंधन उपकरण है अनुसूचित कार्यों में बनाया ...
अन्य उत्तरों की तुलना में यह पर्याप्त जानकारीपूर्ण नहीं है। –
क्या आप इस बारे में बात कर रहे हैं? "https://support.microsoft.com/en-us/kb/930615" –
मैं SQL सर्वर 2005 एक्सप्रेस का उपयोग कर रहा हूं, और मुझे विंडोज़ कमांड से बैकअप करने में सक्षम होने के लिए नामित पाइप्स कनेक्शन सक्षम करना था। मेरी अंतिम लिपि यह है:
@echo off
set DB_NAME=Your_DB_Name
set BK_FILE=D:\DB_Backups\%DB_NAME%.bak
set DB_HOSTNAME=Your_DB_Hostname
echo.
echo.
echo Backing up %DB_NAME% to %BK_FILE%...
echo.
echo.
sqlcmd -E -S np:\\%DB_HOSTNAME%\pipe\MSSQL$SQLEXPRESS\sql\query -d master -Q "BACKUP DATABASE [%DB_NAME%] TO DISK = N'%BK_FILE%' WITH INIT , NOUNLOAD , NAME = N'%DB_NAME% backup', NOSKIP , STATS = 10, NOFORMAT"
echo.
echo Done!
echo.
यह ठीक काम कर रहा है !!
Seba Illingworth के कोड, मामले में आप अपने फ़ाइल का नाम समय की आवश्यकता है (यह देता है 2014-02-21_1035)
echo off
cls
echo -- BACKUP DATABASE --
set /p DATABASENAME=Enter database name:
For /f "tokens=2-4 delims=/ " %%a in ('date /t') do (set mydate=%%c-%%a-%%b)
For /f "tokens=1-2 delims=/:" %%a in ("%TIME%") do (set mytime=%%a%%b)
:: filename format Name-Date (eg MyDatabase-2009.5.19.bak)
set DATESTAMP=%mydate%_%mytime%
set BACKUPFILENAME=%CD%\%DATABASENAME%-%DATESTAMP%.bak
set SERVERNAME=.
echo.
sqlcmd -E -S %SERVERNAME% -d master -Q "BACKUP DATABASE [%DATABASENAME%] TO DISK = N'%BACKUPFILENAME%' WITH INIT , NOUNLOAD , NAME = N'%DATABASENAME% backup', NOSKIP , STATS = 10, NOFORMAT"
echo.
pause
ऊपर स्क्रिप्ट के साथ Remove Old Backup files कम्बाइन तो यह एक अनुसूचक द्वारा बैकअप प्रदर्शन कर सकते हैं, पिछले रखना 10 बैकअप फ़ाइलों
echo off
:: set folder to save backup files ex. BACKUPPATH=c:\backup
set BACKUPPATH=<<back up folder here>>
:: set Sql Server location ex. set SERVERNAME=localhost\SQLEXPRESS
set SERVERNAME=<<sql host here>>
:: set Database name to backup
set DATABASENAME=<<db name here>>
:: filename format Name-Date (eg MyDatabase-2009-5-19_1700.bak)
For /f "tokens=2-4 delims=/ " %%a in ('date /t') do (set mydate=%%c-%%a-%%b)
For /f "tokens=1-2 delims=/:" %%a in ("%TIME%") do (set mytime=%%a%%b)
set DATESTAMP=%mydate%_%mytime%
set BACKUPFILENAME=%BACKUPPATH%\%DATABASENAME%-%DATESTAMP%.bak
echo.
sqlcmd -E -S %SERVERNAME% -d master -Q "BACKUP DATABASE [%DATABASENAME%] TO DISK = N'%BACKUPFILENAME%' WITH INIT , NOUNLOAD , NAME = N'%DATABASENAME% backup', NOSKIP , STATS = 10, NOFORMAT"
echo.
:: In this case, we are choosing to keep the most recent 10 files
:: Also, the files we are looking for have a 'bak' extension
for /f "skip=10 delims=" %%F in ('dir %BACKUPPATH%\*.bak /s/b/o-d/a-d') do del "%%F"
आप बैकअप, या किसी अन्य T-SQL स्क्रिप्ट चलाने के लिए sqlcmd उपयोग कर सकते हैं। आप इस आलेख में विभिन्न उपयोगी sqlcmd स्विच पर विस्तृत निर्देश और उदाहरण पा सकते हैं: Working with the SQL Server command line (sqlcmd)
- 1. MySQL बैकअप और कमांड लाइन
- 2. एसक्यूएल सर्वर मर्ज स्टेटमेंट
- 3. एसक्यूएल सर्वर डेटाबेस बैकअप के लिए एक सरल कमांड लाइन प्रोग्राम या स्क्रिप्ट क्या है?
- 4. सर्वर साइड कमांड लाइन
- 5. एसक्यूएल सर्वर बैकअप/पुनर्स्थापित बनाम अलग/
- 6. एसक्यूएल सर्वर 2008 बैकअप संपीड़न मानक संस्करण
- 7. एसक्यूएल एसक्यूएल सर्वर
- 8. कमांड लाइन
- 9. अपडेट स्टेटमेंट- भूगोल कॉलम - एसक्यूएल सर्वर
- 10. केस स्टेटमेंट जहां क्लॉज - एसक्यूएल सर्वर
- 11. बैकअप एसक्यूएल स्कीमा केवल?
- 12. बैकअप SQL सर्वर एक्सप्रेस
- 13. mysqldump कमांड लाइन उपयोगिता
- 14. एसक्यूएल स्टेटमेंट
- 15. वृद्धिशील बैकअप लिनक्स कमांड
- 16. एसक्यूएल सर्वर भूगोल डेटाटाइप लाइन
- 17. mysqlump कमांड लाइन
- 18. एसक्यूएल ड्रॉप व्यू स्टेटमेंट
- 19. कमांड लाइन
- 20. कमांड लाइन
- 21. एसक्यूएल एज़ूर बैकअप
- 22. एसक्यूएल बैकअप प्रश्न
- 23. एक एसक्यूएल केस स्टेटमेंट
- 24. कमांड लाइन
- 25. कमांड लाइन
- 26. कमांड लाइन
- 27. टीएफएस कमांड लाइन - कौन सा सर्वर?
- 28. कमांड लाइन
- 29. कमांड लाइन
- 30. कमांड लाइन
http://stackoverflow.com/questions/122690/what-is-a-simple-command-line-program-or-script -to-backup-sql-server-डेटाबेस –