SQL Server xp_cmdshell не может экспортировать данные

Я хочу экспортировать значения из столбца (TcpIpAddress) из таблицы с именем dbo.DimServere в обычный текст (находящийся на сервере). У меня есть права сисадмина.

    -- 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;   -- 1 for at enable
    GO
    -- To update the currently configured value for this feature.
    RECONFIGURE;
    GO

    -- Extracting information from the databse
   EXEC xp_cmdshell 'bcp "SELECT TcpIpAddress FROM [SIT-DVH].[dbo].[DimServere]" queryout "C:\Users\b013904\Desktop\Output\bcptest.txt" -T -c -t,'


    -- 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 disable the feature.
    EXEC sp_configure 'xp_cmdshell', 0;   -- 0 for at disable
    GO
    -- To update the currently configured value for this feature.
    RECONFIGURE;
    GO

Однако, когда я запускаю этот скрипт, я получаю следующее сообщение, и файл не создан:

введите здесь описание изображения

Что я делаю неправильно?

Заранее спасибо

Даниэль


person PuchuKing33    schedule 07.11.2015    source источник


Ответы (1)


Путь в этом выражении bcp будет относиться к серверу, поскольку вы выполняете его на сервере.

Этот путь существует на сервере?

Кроме того, попробуйте изменить путь на что-то более доступное, например c:\output. .. тогда вы можете поиграть с разрешениями для этой папки, чтобы убедиться, что это не разрешение ОС, которое вызывает сбой оператора.

надеюсь, это поможет

person Spock    schedule 07.11.2015
comment
Да, путь существует на сервере, и да, я пробовал c:\output, все тот же результат. - person PuchuKing33; 07.11.2015
comment
Путь C:\Users\b013904\Desktop\Output\bcptest.txt также должен быть доступен для учетной записи службы SQL Server. Она выглядит как пользовательская папка, поэтому доступа к ней не будет. У вас может не быть доступа к C с этой учетной записью. - person Nick.McDermaid; 07.11.2015
comment
@Nick.McDermaid Как я могу предоставить права учетной записи службы SQL Server для этого? Просто на C:\, чтобы было проще? - person PuchuKing33; 07.11.2015
comment
Не кладите в корень. Создайте подпапку. Назначьте всем полный доступ к папке, чтобы убедиться, что это действительно проблема с разрешениями. Если вы определили это как проблему с разрешениями, назначьте разрешение учетной записи, которую вы используете для запуска sql-сервера верхнего уровня. - person Spock; 07.11.2015
comment
Вы также можете попробовать выполнить приведенный выше оператор bcp из командной строки на сервере, чтобы увидеть, возникает ли у вас та же проблема. Если вы этого не сделаете, это также указывает на проблему с разрешением. - person Spock; 07.11.2015
comment
Я попробую и посмотрю, что произойдет. Я вернусь, когда получу какие-либо результаты, надеюсь, что это сработает. Спасибо - person PuchuKing33; 07.11.2015
comment
Итак, это была проблема с правами. Я создал подпапку в C:\ и дал ей права, и произошло волшебство. Спасибо за помощь. - person PuchuKing33; 10.11.2015