Сопоставление с сетевым диском с помощью SQL SP - PullRequest
5 голосов
/ 18 декабря 2008

Есть ли способ подключиться к сетевому диску с помощью хранимой процедуры? Я пробовал:

xp_cmdshell 'net use Q: [shared_network_drive] [pwd] /user:[username]'

но я получил ошибку, сказав что-то вроде

'System error 1312 has occurred.'
'A specified logon session does not exist. It may already have been terminated.'

Однако, когда я запускаю ту же команду в консоли cmd в том же окне, что и компьютер с сервером SQL, проблем не возникает вообще. Похоже, что процесс SQL передает правильные данные для входа в систему. Есть ли способ сделать это с помощью SQL SP?

Ответы [ 7 ]

8 голосов
/ 17 сентября 2012

На другом форуме кто-то опубликовал совет о том, как решить проблему System error 1312 has occurred., указав имя пользователя, включая его домен, следующим образом:

net use Q: \\[host]\[folder] [pwd] /user:[host]\[username]

Я попробовал, и у меня это сработало.

1 голос
/ 18 декабря 2008

У вас есть прокси-аккаунт, настроенный для xp_cmdshell? Если вы не являетесь участником sysadmin, для этого требуется учетная запись прокси. Документация для xp_cmdshell и sp_xp_cmdshell_proxy_account объяснит это подробно, но попробуйте выполнить следующее:

EXEC sp_xp_cmdshell_proxy_account 'DOMAIN\Username', 'password'

Конечно, замените информацию о пользователе и пароле информацией об учетной записи в вашей сети, под которой вы хотите, чтобы это выполнялось.

ПРЕДУПРЕЖДЕНИЕ : xp_cmdshell может быть ОГРОМНОЙ дырой в безопасности. Убедитесь, что, по крайней мере, используемая вами учетная запись прокси имеет очень ограниченную защиту. Не используйте какую-либо учетную запись администратора и не используйте учетную запись реального пользователя.

0 голосов
/ 23 марта 2013

Я потратил один час, но проблема решается: вы должны указать [HOST] \ [username] Если вы напишите так: u: / username - это не сработает

0 голосов
/ 08 декабря 2012

Проблема возникает при использовании распределенной файловой системы, независимо от того, какую операционную систему вы используете. Вместо этого получите фактическое имя сервера, на котором размещен контент DFS.

0 голосов
/ 18 декабря 2008

На самом деле, мне нужен инструмент Win Scheduled Tasks. Я могу создать приложение .Net, чтобы выполнить работу, а затем добавить приложение к запланированным задачам.

0 голосов
/ 18 декабря 2008

Род, ты прав. Это большой риск сделать это на сервере SQL, и не все администраторы SQL могут открыть эту дверь. Я перевожу устаревший процесс в запланированное задание SQL, чтобы необходимые данные были доступны приложению другого отдела для извлечения данных в другом запланированном процессе.

Я полагаю, что задание службы Windows может быть лучшим приложением для извлечения данных и передачи результата на требуемый сетевой диск.

0 голосов
/ 18 декабря 2008

Зачем тебе это делать?!? Даже если это возможно, вы должны тщательно спрашивать себя, почему вы хотите это сделать.

Мое предложение: не надо. У меня сложилось впечатление, что вам нужно изменить свой подход - любую цель, которую может выполнять сопоставление сетевых дисков, следует искать в более подходящем месте за пределами ядра базы данных. После того, как вы выберете это подходящее место, фактическое отображение сопоставления, вероятно, станет тривиальным.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...