Có ai biết nếu có cách để tạo bản sao lưu SQL Server vào tệp lô, để nó có thể được thực thi từ một dòng lệnh không?Câu lệnh sao lưu dòng lệnh SQL Server
Trả lời
Dưới đây là một ví dụ bạn có thể chạy như một kịch bản hàng loạt (copy-dán vào một tập tin .bat), sử dụng tiện ích SQLCMD trong Sql server khách hàng các công cụ:
BACKUP:
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
RESTORE:
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
Làm cách nào để khôi phục cơ sở dữ liệu từ tệp? –
Ngoài ra, việc thêm tham chiếu đến hướng dẫn ban đầu sẽ thật tuyệt vời. Cảm ơn! –
@ hamish-grubijan - Tôi đã thêm Khôi phục vào câu trả lời –
nếu bạn cần các tập tin batch để lên lịch sao lưu, công cụ quản lý SQL đã sắp xếp công việc xây dựng trong ...
So sánh với các câu trả lời khác, điều này không đủ thông tin. –
Bạn đang nói về điều này? "https://support.microsoft.com/en-us/kb/930615" –
Tôi đang sử dụng SQL Server 2005 Express và tôi phải bật kết nối Đặt tên có tên để có thể sao lưu từ Lệnh Windows. Tập lệnh cuối cùng của tôi là:
@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.
Nó hoạt động tốt ở đây !!
Seba Illingworth 's mã, Trong trường hợp bạn cần nhiều thời gian trong tên tập tin của bạn (nó mang lại cho 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
Kết hợp Remove Old Backup files với kịch bản nêu trên thì đây có thể thực hiện sao lưu bằng một lịch trình, giữ cuối cùng 10 tệp sao lưu
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"
Bạn có thể sử dụng sqlcmd để chạy bản sao lưu hoặc bất kỳ tập lệnh T-SQL nào khác. Bạn có thể tìm thấy hướng dẫn chi tiết và ví dụ về các công tắc sqlcmd hữu ích khác nhau trong bài viết này: Working with the SQL Server command line (sqlcmd)
- 1. Câu lệnh ghép nhiều câu lệnh SQL
- 2. sql-server, câu lệnh IF trong SQL Query
- 3. Tạo các câu lệnh CREATE INDEX trong SQL Server
- 4. Giao dịch SQL Server và câu lệnh SELECT
- 5. Nhiều lệnh trên cùng một dòng trong SQL Server 2005
- 6. Tại sao câu lệnh SELECT này sẽ khóa trên SQL Server?
- 7. Câu lệnh trống trong T-SQL
- 8. Bí danh động trong câu lệnh SQL
- 9. Tại sao câu lệnh SQL này không hoạt động?
- 10. Thực thi tập lệnh SQL từ dòng lệnh
- 11. Tại sao thiết bị chuyển mạch dòng lệnh SQL Server Management Studio 2008 ngừng hoạt động?
- 12. Câu lệnh và câu lệnh "là" là
- 13. Câu lệnh IN trong T-SQL
- 14. Tại sao 'BINARY' trong câu lệnh SELECT?
- 15. Sao lưu SQL Server qua C#
- 16. Đếm các câu lệnh SQL trong Hibernate
- 17. câu lệnh sql bằng với số
- 18. Trợ giúp với câu lệnh SQL (JOIN)
- 19. Câu lệnh SQL cho hai nhóm cột
- 20. Giới hạn một câu lệnh SQL JOIN
- 21. Fake một câu lệnh SQL dài chạy
- 22. Các câu lệnh sau END trong thủ tục lưu sẵn
- 23. Lệnh T-SQL STOP hoặc ABORT trong SQL Server
- 24. Sql Server trả về giá trị của cột nhận dạng sau khi chèn câu lệnh
- 25. Sử dụng EXEC bên trong câu lệnh SELECT trong SQL Server
- 26. SQL Server (TSQL) - Có thể cho các câu lệnh EXEC song song không?
- 27. Thực hiện câu lệnh "if" trong câu sql ở khoản
- 28. regex để phân tích cú pháp câu lệnh SQL
- 29. Gỡ lỗi Sql chèn vào câu lệnh bằng cách sử dụng câu lệnh chọn
- 30. ColdFusion thực hiện các câu lệnh SQL không mong muốn
http://stackoverflow.com/questions/122690/what-is-a-simple-command-line-program-or-script -to-backup-sql-server-databases –