在两台服务器之间创建共享文件夹

在两台服务器之间创建共享文件夹

我需要在两个数据库之间创建 SQL 日志传送,

源代码位于运行 Windows Server 2008 R2 和 SQL Server 2008 的 AWS EC2 实例上

目标位于运行 Windows datacenter 2012 和 SQL Server 2012 的 Azure VM 上

此过程需要以下内容:

  • A.源服务器写入文件

    B.目标服务器复制文件到本地文件夹就可以了

    C. 目标服务器使用该文件

所有这些任务都是由 SQL Server 进程完成的

现在我在实例之间创建一些共享文件夹时遇到问题,我尝试执行以下操作:

步骤 A 在机器上的本地文件夹中完成,

在步骤 b 中,sql 服务器尝试使用此格式访问该文件夹(并将文件从该文件夹复制到本地文件夹):

\\serveraddress\drive$\folder

在源服务器中授予所有人该文件夹的访问权限并启用共享并启用来宾用户后

但我仍然遇到访问问题并且复制过程失败。

我们应该做什么?

谢谢

编辑 :

我尝试了所有建议的解决方案,但最终都没有成功,因为 SQL 服务器无法访问用户有权访问的文件夹,

因此,我没有深入研究这个问题,而是选择使用第三方软件(如 dropbox/svn 等)在 2 台服务器之间同步信息。通过在两台服务器上对共享文件夹使用相同的位置,我可以非常简单地使用网络位置:

\\localhost\...

并且两台计算机都会像在网络上一样运行,但该文件夹已在本地实例上同步和共享,因此不存在权限问题。

虽然不是理想的解决方案,但它确实有效。

答案1

用户和服务器是否都在同一个 Active Directory 域中,或者在源服务器信任的域中?如果不是,则用户正在尝试通过网络匿名登录。在从 2003/XP 开始的 Windows 版本中,Everyone 组不授予此类权限。您需要向 ANONYMOUS LOGON 和 NETWORK 组授予权限。

答案2

第一步。不要使用 <drive>$ 共享 - 这些是管理共享,需要管理员权限。

然后在目标服务器上:

创建您自己的共享,例如:

net share LOG_SHIPPING=d:\data\log_shipping /grant:everyone,full /cache:none /remark:"something meaningful"

在目标服务器上创建本地账户:

net user log_shipping_user <PASSWORD> /comment:"something meaningful" /passwordchq:no /add

适当设置权限,例如:

icacls d:\data\log_shipping /grant "log_shipping_user:(OI)(CI)(M)"

然后在源服务器上,使用上述用户建立入站连接:

net use \\<TARGET SERVER>\log_shipping /user:<TARGET_SERVER>\log_shipping_user /password:<PASSWORD>

这应该可行。以相反方向执行相同操作,以另一种方式进行连接。

相关内容