Когда вы запускаете xp_cmdshell
, вы буквально выполняете команду на SQL Server: диск C: это жесткий диск SQL Server. Чтобы сохранить вывод на вашем компьютере, на вашем компьютере должен быть общий сетевой ресурс, видимый для SQL Server. После этого вы можете запустить команду:
EXEC xp_cmdshell 'bcp "select * from DEV.DBO.visit"
queryout "\\my-computer\my-share\users\visit.txt" -c -T'
Однако, поскольку команда работает под управлением учетных данных SQL Server, что доля также должна быть доступна для записи учетной записи SQL Server. Скорее всего, нет.
Чем больше вопрос, Почему вы используете bcp
на сервере вместо запуска bcp
локально?
Откройте командную оболочку, и просто сказать:
bcp "select * from dev.dbo.visit"
queryout c:\my-bcp-output-data.txt
-S some-sql-server-instance
-T
вопрос .. даже если вы запустите 'bcp' команду, используя командную оболочку, вы входите в базу данных в качестве пользователя и выполнения эти вопросы ... правильные? –
Да, но когда вы запускаете BCP локально, результаты возвращаются локально. (т. е. везде, где выполняется BCP.EXE) –
@ Nick.McDermaid..thanks для пояснения. –