2017-03-25 2 views
-1

Tentative d'écriture des résultats de la requête dans un fichier. En utilisant ce qui suit dans SQL Server 2005:SQL Server 2005 écrit dans un fichier avec bcp

EXEC xp_cmdshell "bcp 'select License + '-' + ISNULL(Name,'') as Employer from People' queryout 'c:\People\text.txt' -c -x -T," 

J'ai joué avec les guillemets simples et doubles, avec des erreurs de syntaxe différentes. Dans le formulaire actuel, cela renvoie l'erreur "La direction de copie doit être 'in', 'out' ou 'format'."

J'ai aussi jonglé autour avec cela sur la ligne de commande et je reçois toujours « ne peut pas trouver le fichier spécifié

Texte intégral de la procédure stockée.?

EXEC 
master.dbo.sp_configure 'show advanced options', 1 
RECONFIGURE 
EXEC 
master.dbo.sp_configure 'xp_cmdshell', 1 
RECONFIGURE 
EXEC xp_cmdshell "bcp 'select contrLice + '-' + ISNULL(contrName,'') as Employer from Contractors' queryout 'c:\Contractors\text.txt' -c -x -T," 

Tous les conseils

+0

Quelle erreur obtenez-vous? –

+0

c'est comme que le serveur sql principal s'exécute car il n'a pas les permissions de lecture pour c: \ Contractors \. La meilleure façon de résoudre cela est avec un utilisateur proxy. –

+0

Je recommande d'exécuter les commandes Windows en dehors de la base de données. Gérer les situations d'erreur etc. avec xp_cmdshell n'est pas si simple. –

Répondre

0

Vous devez doubler les guillemets simples:

exec xp_cmdshell "bcp 'select License + ''-'' + coalesce(Name, '''') as Employer from People' queryout 'c:\People\text.txt' -c -x -T,"