在本地电脑上备份SQL Server数据库



我正在使用此脚本备份计算机A:上的SQL Server数据库

sqlcmd -U MyDatabase -P MyPassword -S .SQLEXPRESS -Q "EXEC sp_BackupDatabases @backupLocation = 'c:shared', @databaseName='MyDatabase', @BackupType='F'"   

一切都很好,但我决定将备份文件存储到计算机B。我在计算机B上共享了文件夹,可以从访问

\computerBshared

我更改了备份脚本以包含新的备份位置:

sqlcmd -U MyDatabase -P MyPassword -S .SQLEXPRESS -Q "EXEC sp_BackupDatabases @backupLocation = '\computerBshared', @databaseName='MyDatabase', @BackupType='F'"   

但当我运行这个时,我会得到这个错误:

无法打开备份设备'\computerB\shared\MyDatabase_FULL_101 22022_232734.BAK'。操作系统错误5(访问被拒绝.(。
Msg 3013,级别16,状态1,服务器WIN-C28934ASNF1\SQLEXPRESS,第1行
BACKUP DATABASE异常终止。

我不明白为什么我会得到Access denied。我可以从计算机A上的文件资源管理器轻松访问\computerBshared。这里出了什么问题?

我们必须仔细考虑运行备份过程的用户帐户。

当您在Windows文件资源管理器中访问\computerBshared位置时,您将使用自己的用户帐户。当您运行sqlcmd脚本时,它可能也使用您自己的用户帐户。但是,脚本告诉SQL Server执行备份操作;它不直接自己执行备份。SQL Server正在使用不同的帐户运行。此不同的帐户无权访问共享文件夹。

若要解决此问题,可以更改用于运行SQL Server的帐户,也可以让SQL Server进行本地备份,然后在备份完成后将一个或多个文件复制到共享中。

您可能无法授予SQL Server当前服务帐户对共享文件夹的访问权限,因为它很可能是一个特殊帐户,如SYSTEM(希望不是(或Network service,无法授予此访问权限。

最新更新