为什么从远程机器上运行sqlcmd时不创build备份文件?

我尝试从远程主机运行sqlcmd来做一个SQL 2008数据库的简单备份。 命令是这样的:

sqlcmd -s xxx.xxx.xxx.xx -U username -P some_password -Q "Backup database [db] to \ disk = 'c:\test_backup.bak' with format" 

我得到一个成功的消息,但该文件没有创build。

当我在同一台机器上的SQLpipe理器上运行它,它的工作原理。 我认为这是权限问题,但我在这两种情况下使用相同的用户名。

有什么想法吗?

遵循本指南 。

您需要创build一个SQL脚本来备份所需数据库中指定的数据库,然后您可以从SQLCMD调用该SQL脚本。

例如,如果您调用备份脚本backup.sql:

 sqlcmd -S .\SQLEXPRESS -i backup.sql -o output.txt 

backup.sql的示例:

 DECLARE @Path NVARCHAR(1000), @FileName NVARCHAR(255), @FullPath NVARCHAR(1255) SET @Path = '\\db1\E$\SQLServer\2008\Backups\' SET @FileName = 'Express_' + REPLACE(CONVERT(VARCHAR(10), GETDATE(), 101), '/', '') + '.bak' SET @FullPath = @Path + @FileName BACKUP DATABASE Express TO DISK = @FullPath WITH INIT 

如果服务器运行的是Windows 2008或更高版本,则可能在将文件写入驱动器的根目录时出现问题。 我以前见过这个。 在C:\上创build一个文件夹并将文件备份到该文件夹​​。

操作,你是否希望备份文件出现在执行sqlcmd的远程主机上?

如果是这样,则需要指定UNCpath而不是本地(对执行sqlcmd的主机)path。 SQL Server不能识别远程主机的本地path….