是否有一个替代xp_cmdshell和networking使用作为一个不同的用户备份MSSQL到UNC

是否有一个替代xp_cmdshellnet use备份MSSQL到不同的用户的UNC?

我正在使用

 EXEC xp_cmdshell 'net use \\SERVER\SHARE Password /USER:DOMAIN\USER /PERSISTENT:yes' 

作为一个preexec脚本。

xp_cmdshell默认是禁用的(由于安全问题,我猜)。

对于BACKUP语句,SQL Server将使用运行数据库引擎服务的服务帐户作为与操作系统交互的安全上下文。 因此,您需要授予SQL Server服务帐户对共享的访问权限。 除了你的xp_cmdshell破解之外,没有办法解决这个问题。

例如:

如果SQL Server服务以域用户MYDOMAIN\SQLUser运行,则需要修改共享权限以允许访问此用户。

如果SQL Server以NT AUTHORITY\NETWORKSERVICE身份运行,则假定您的SQL Server计算机名称为SQLHOST ,则需要修改共享权限以允许访问SQLHOST$

我认为没有其他办法。

正常的TSQL备份Skripts只允许备份到本地光盘。

如果你有足够的空间,你可以做一个SQL任务,在本地磁盘上进行备份,然后通过PowerShell将其移动到UNCpath。

如果你没有足够的空间这个:用下面的命令可以再次激活xp_cmdshell

  -- To allow advanced options to be changed. EXEC sp_configure 'show advanced options', 1; GO -- To update the currently configured value for advanced options. RECONFIGURE; GO -- To enable the feature. EXEC sp_configure 'xp_cmdshell', 1; GO -- To update the currently configured value for this feature. RECONFIGURE; GO 

请参阅: http : //msdn.microsoft.com/en-US/en-en/library/ms190693.aspx

使用networking使用后创build的符号链接来放入适当的凭据。

 net use \\SERVER\SHARE Password /USER:DOMAIN\USER /PERSISTENT:yes mklink /d \\SERVER\SHARE C:\Mounts\SHARE 

然后在脚本中使用C:\ Mounts \ SHARE作为备份path。