1

J'essaie d'utiliser du T-SQL pour déplacer certains fichiers d'un répertoire à un autre. Im en utilisant xp_cmdshell pour appeler la commande move comme ceci:Accès refusé en essayant de déplacer des fichiers avec xp_cmdshell

create table #output(line varchar(2000) null) 
insert into #output exec master..xp_cmdshell 'move /y "D:\files\*.txt" "D:\oldfiles"' 

Mais le mouvement inst fichiers et la table #output contient cette sortie de la commande move

Access is denied. 
Access is denied. 
Access is denied. 
Access is denied. 
Access is denied. 
Access is denied. 
     0 file(s) moved. 
NULL 

Le compte proxy du serveur SQL est mis en correspondance avec l'administrateur local Si j'ouvre une invite de commande à entrer la commande move

move /y "D:\files\*.txt" "D:\oldfiles" 

Les fichiers sont parfaitement déplacés

Tout se passe sur un sql2005 fonctionnant sur un serveur w2k3.

Im connecté sur le serveur en tant qu'administrateur local

Répondre

9

Pouvez-vous lancer un

exec master..xp_cmdshell 'set username' 

et dire ce que ce retour?

EDIT: Par le commentaire OP, les commandes sont exécutées comme NETWORK SERVICE. Autoriser NETWORK SERVICE sur le répertoire en question a résolu le problème.

+1

Ensuite, une façon de le résoudre (sans avoir besoin de reconfigurer le compte de service SQL Server) serait d'autoriser NETWORK SERVICE sur le répertoire. - Tomalak – CruelIO

+0

Ça marche! Merci beaucoup – CruelIO

+0

@Tomalak pourriez-vous s'il vous plaît expliquer votre réponse un peu plus en profondeur? Qu'est-ce que cela signifie d'autoriser "Service réseau" sur le répertoire/comment faire? Est-ce réalisé avec la ligne de code ci-dessus que vous avez postée? – Rachael

Questions connexes