Miałem ten sam problem, gdy zadanie masowego kopiowania (BCP) na serwerze SQL wymagało zapisania pliku na innym serwerze zarządzanym przez inną grupę w organizacji.
Sztuką jest zmapowanie dysku jako użytkownika, którego używa zadanie BCP. Mapujesz dysk jako dedykowane konto usługi Active Directory, które ma uprawnienia do żądanego miejsca docelowego, które niektórzy nazywają kontem usługi. Musiałem współpracować z moimi ludźmi z AD, aby uzyskać jedną konfigurację. Aby dowiedzieć się, jakie konto użytkownika jest używane przez BCP, uruchom tę komendę w oknie zapytania SQL Server:
EXEC xp_cmdshell 'ECHO %USERDOMAIN%\%USERNAME%
Podczas mapowania dysku użyj whoami
w wierszu polecenia.
W moim przypadku nie mogłem być zalogowany do SQL Server jako konto SYSTEM, więc zbudowałem zadanie wsadowe, które można następnie wykonać za pomocą Harmonogramu zadań, ale uruchomić jako konto SYSTEM . Umieszczam polecenia w zadaniu wsadowym, aby zapisać wyniki do pliku tekstowego, ponieważ nie byłbym w stanie go zobaczyć.
** Zadanie wsadowe poniżej **
ECHO ON
ECHO This will map the drive, but is being run by task scheduler AS the user SYSTEM
ECHO which should make it accessible to the user SYSTEM
ECHO List the existing drives first.
net use >> c:\Test\SystemNetUseOutput.txt
net use R: \\MyRemoteServer\MyDirectory\ /P:Yes /u:MyDomain\MyUsername pa$$word
ECHO the /P switch makes the drive remain after reboot
ECHO List the existing drives with the new mapping
net use >> c:\Test\SystemNetUseOutput.txt
ECHO See what user this batch job ran under
whoami >> c:\Test\SystemNetUseOutput.txt
ECHO need to exit to allow the job to finish
EXIT
** Mam nadzieję, że pomoże to komuś innemu **