2014-02-21 64 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

相关问题