我尝试从远程主机运行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….