我正在尝试将事务日志从服务器 A 发送到服务器 B。当代理尝试运行时,我不断收到权限被拒绝错误,因为它没有使用正确的凭据连接到备份文件夹共享。
- 两台服务器都不在域中(而且这不是一个选项)。
- 我在服务器 B 上设置了一个共享文件夹来放置文件,但服务器 A 需要访问权限才能写入该文件夹。(反之亦然,服务器 B 需要从服务器 A 提供的共享中读取。)
- 由于服务器是分开的,我无法将服务器 B 的共享权限授予服务器 A 的 SQL 代理。
有没有办法可以指定服务器 A 连接到服务器 B 时要使用的登录凭据?
我指的是该屏幕上的第一个文本框:
答案1
我认为如果您让登录凭据在每台服务器上都具有相同的用户名和密码,它可能会起作用。或者您已经尝试过这个了吗?
答案2
您需要在两台服务器上创建一个具有相同名称和相同密码的帐户。您需要配置 SQL Server 和 SQL Agent,使其在这些登录名下运行,无论哪台服务器要将文件推送/拉取到另一台机器。
答案3
在源系统上设置本地用户帐户。
使用以下方法在目标系统上设置本地用户帐户:完全一样用户名和密码。
将源系统的 MSSQLSERVER 服务(或该服务的适当实例)服务帐户设置为使用新创建的本地帐户。
在目标系统上创建共享,并授予新创建的帐户对该文件夹的读/写权限。
目标服务器不一定需要使用该服务帐户运行,它是可选的。
另外,您还可以执行以下操作。但是,这需要在作业中使用明文密码,因此不建议这样做。在备份脚本中,执行以下操作:
exec sp_configure'xp_cmdshell',1 重新配置
exec'xp_cmdshell''net use \targetserver\path /user:shareusername /password:shareuserpassword'''
exec sp_configure'xp_cmdshell',0 重新配置
替换您在目标服务器上创建的用户/密码。它应该是一个只能访问该共享的帐户,没有其他权限,不是管理员或任何其他权限,以最大限度地减少明文密码的安全影响。
理论上,您可以将其作为系统启动 SP 来执行,它应该可以工作。我可能会将其放入备份作业中。
这也假设您关闭了 xp_cmdshell,这是默认的、正确的、高安全性选项。如果您一直将其打开,则可以删除 sp_configure 和 reconfigure 语句。