2014-02-21 62 views
0

我想使用計劃的批處理文件對SQL Server數據庫進行完整備份。我嘗試了很多來自本網站的代碼,但沒有任何工作。我只是想知道哪個exe文件實際上創建了備份,所以我可以直接從cmd執行該文件。這是我試過的代碼是備份數據時在SQL Server 2005中執行哪個文件

echo -- BACKUP DATABASE -- 
set /p DATABASENAME=Enter database name: 

:: filename format Name-Date (eg MyDatabase.bak) 
set BACKUPFILENAME=%CD%\%DATABASENAME%.bak 
set SERVERNAME='server name' 
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" 

我也試過這個

SqlCmd -E -S sql 'server_name' –Q 「BACKUP DATABASE 'db_name' TO DISK=’f:\2014\02\19\db_name.bak’」 

回答

0

下面是上述方案

echo off 
cls 
echo -- BACKUP DATABASE -- 
::set db name 
set DATABASENAME=db_name 
:: set path and format 
set BACKUPFILENAME=PATH\%DATABASENAME%.bak 
:: set server name 
set SERVERNAME=server_name 
echo. 
::backup execution 
sqlcmd -S %SERVERNAME% -d COFI -U vutagi -P vu1234 -Q "BACKUP DATABASE [%DATABASENAME%] TO DISK = N'%BACKUPFILENAME%' WITH INIT , NOUNLOAD , NAME = N'%DATABASENAME% backup', NOSKIP , STATS = 10, NOFORMAT" 
0

備份文件通過SQL服務器創建自己,沒有其他的exe文件,可以做備份。 運行批處理文件時,它連接到SQL並要求SQL Server使用BACKUP DATABASE命令備份數據庫。

當您在SqlCmd命令行上使用-E標誌時,它將使用可信連接連接到SQL,因此它必須在有效和受信任的Windows用戶下運行,如果它由一個受信任的Windows用戶運行,則可能不是這種情況預定批處理文件。 在cmd命令行窗口中使用-U和-P標誌檢查此命令,並使用有效的SQL登錄名(不是可信的Windows帳戶)測試命令。

另一點是,SQL必須有權訪問您的F:驅動器,即。運行SQL的帳戶必須有權訪問它,並且如果此驅動器是網絡驅動器,運行SQL的帳戶必須對此網絡驅動器具有適當的訪問權限(還有一個標誌可以啓用網絡驅動器訪問在老版本的SQL上,但我認爲這是默認情況下,因爲SQL 2008,不知道)。

+0

代碼如果您連接使用SQL Server的帳戶,請檢查您serveur可以使用SQL登錄連接,而不是唯一認證,它在從SSMS的服務器的性能。如果我與SQL Server 2005記得很清楚,你可以,除非你正在使用其他帳戶運行本地系統 –

1

我只是想知道哪個exe文件實際上創建了備份,所以我可以直接從cmd執行該文件。

你沒有理解sql server的工作原理吧?

運行備份的文件是不能從命令行執行的服務器可執行文件 - 它基本上是運行數據庫服務器並等待sql命令執行的exe文件 - 或者是100同時,或1000,它沒有限制。

Sql服務器是一個合適的服務器,而不是一些通俗的donky小型數據庫系統。

在您的上述實施例:

  • 的SqlCommand是附帶SQL服務器的工具(它是sqlcommand.exe),並用於噸osend命令到ALREADY RUNING SQL服務器。

  • 您發送的命令是「BACKUP DATABASEW它告訴已經乳寧服務器構成數據庫。足夠有趣誰也都還沒有真正spendt一分鐘的思考。

  • 我不知道你擡頭suppsedly在互聯網上,但語法是

http://technet.microsoft.com/en-us/library/ms186865(v=sql.100).aspx

爲您的特定版本。

  • 我建議你給它一個更認真的嘗試。不要使用SqlCmd,請使用sql管理工作室。試着讓它工作,並 - 咳嗽 - 如果它失敗並出現異常,請閱讀並修復它說的內容。如果你沒有告訴錯誤消息,請尋求幫助,但是,嘿,沒有錯誤信息,我們有種想法,你知道。一旦它工作轉置它到你的批處理。

  • 注意備份是OT發送服務器的命令。所以你的路徑不是你的路徑,而是來自服務器。在服務器標識下。無需用戶映射的網絡路徑。

從copmmand行的正確方式確實使用SqlCmd。現在,我不知道你的服務器有多不安全,但我需要一個密碼。因此,我認爲你從來沒有讀過sqlcommand語法。正是在

http://technet.microsoft.com/en-us/library/ms162773.aspx

,我還十分肯定的SqlCommand給你一個錯誤的輸出,你只是好心,假設大家都在這裏有閱讀你的心靈的禮物 - 被跳過的完全沒有用處。閱讀。

,諸如此類的使其完整。不是最好的答案,但也許有了它,你會學會不忽略屏幕上顯示的內容 - 即錯誤消息。可能會偶爾閱讀文檔,而不是複製/粘貼「來自互聯網的東西」。

+0

這意味着使用在任務程序器 – vrun

+0

運行的批處理文件,我不能拿備份不,這絕對不意味着訪問網絡路徑。人們成功地做到了這一點 - 考慮到快遞版本中沒有任何代理人能夠說明事情的真相。所有這一切意味着你必須咬一口蘋果,並嘗試閱讀文檔,而不是複製/粘貼東西,並希望它能正常工作。 – TomTom

+0

你可以指導我該怎麼辦呢?我沒有SQL的知識。你可以給我的代碼? – vrun

相關問題