Existe uma alternativa para xp_cmdshell e net use para fazer backup do MSSQL para UNC como um usuário diferente

3

Existe uma alternativa para xp_cmdshell e net use para fazer backup do MSSQL em um UNC com um usuário diferente?

Agora estou usando

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

como um script preexec.

Mas xp_cmdshell está desativado por padrão (devido a problemas de segurança, eu acho).

    
por Mössler 29.10.2014 / 10:11

3 respostas

2

Para instruções BACKUP , o SQL Server usará a conta de serviço na qual o serviço de mecanismo de banco de dados está sendo executado como contexto de segurança para interação com o sistema operacional. Portanto, você precisaria conceder acesso à conta de serviço do SQL Server ao compartilhamento. Não há outro jeito senão o seu xp_cmdshell hack.

Por exemplo:

Se o serviço do SQL Server estiver sendo executado como o usuário do domínio MYDOMAIN\SQLUser , será necessário modificar as permissões de compartilhamento para permitir o acesso a esse usuário.

Se o SQL Server estiver sendo executado como NT AUTHORITY\NETWORKSERVICE , presumindo que o nome da máquina do SQL Server seja SQLHOST , será necessário modificar as permissões de compartilhamento para permitir o acesso a SQLHOST$ .

    
por 29.10.2014 / 17:44
0

Acho que não há outras maneiras para isso.

Os Scripts de Backup TSQL normais só permitem backup em disco local.

Se você tiver espaço suficiente, você pode criar uma tarefa SQL que faça um backup no disco local e depois mova-o via powershell para um caminho UNC.

se você não tiver espaço suficiente para isso: Com o seguinte, você pode ativar o xp_cmdshell novamente ...

    -- 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

veja: link

    
por 29.10.2014 / 17:10
0

Use um link simbólico que foi criado depois de usar o uso da rede para inserir as credenciais apropriadas.

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

Em seguida, no script, use C: \ Mounts \ SHARE como caminho de backup.

    
por 29.10.2014 / 18:19