我有一个 SQL 2005 虚拟机,在 hyper-v 下的 2008 服务器上运行 Windows 2003,我需要开始将我的数据库备份到共享文件夹。我在其他环境中创建了类似的备份作业,没有任何问题。不同之处在于,在所有其他情况下,SQL 服务器都是域的一部分,在这种情况下没有域。即使我将共享文件夹设置为将“完全控制”权限授予“所有人”,SQL 仍然拒绝运行备份作业:
操作系统错误 1326(登录失败:未知用户名或密码错误。)。BACKUP DATABASE 异常终止。”。可能的失败原因:查询有问题,“ResultSet”属性设置不正确,参数设置不正确,或连接未正确建立。
我需要做什么?除了备份到本地驱动器并找到另一种复制文件的方法之外,没有其他解决方案吗?
编辑:添加粗体以强调
SQL Server 服务帐户必须有权访问网络共享。如果您使用 Localsystem 帐户运行 SQL Server 服务:此帐户无权访问网络上的共享,因为它不是经过身份验证的网络帐户,因此无法备份到正常的网络共享。
因此,如果您想备份到网络共享,您可以执行两种不同的操作:
将运行 SQL Server 服务的帐户更改为可以访问网络共享并具有所需权限的域帐户 (DOMAIN\USERNAME)。
或(不推荐在生产环境中使用):
在具有网络共享的服务器上添加以下注册表值,并添加要备份到的共享名 - 共享不会验证谁进入,因此 Localsystem 帐户将具有访问权限。更改生效前必须重新启动服务器。请注意,这有效地删除了该共享上的所有安全性,因此您允许任何人访问。
如果您没有域,您可以在所有机器上设置相同的用户(名称),然后使用本地用户运行 SQL Server。
例如,在 ServerA(运行 SQL Server)上,我可以将用户 MySQLServerUser 设置为本地用户。使用配置管理器将此设置为运行 SQL Server 的帐户。
然后在我要发送备份的服务器 B 上,我使用相同的密码设置了相同的帐户 (MySQLServerUser)。
由于 Windows 会将其作为第一个用户/密码传递,因此它应该进行身份验证。
请注意,不建议跨网络备份。SQL 备份过程不能容忍网络延迟。任何打嗝都会导致备份失败。当您的磁盘发生故障时,它可能会发生。本地备份,复制到远程机器。副本将自动重试。
确保您在具有网络访问权限的域帐户的上下文中运行 SQL Server服务。
或者这是 SQL Server 框的本地文件夹并与其他人共享?
**编辑:**呸,@splattne 是对的,我在自动驾驶。SQL Server 服务,而不是 SQL 代理。