cancel
Showing results for 
Search instead for 
Did you mean: 

Detail of Using xp_cmdshell() with calling NET USE to access a Windows netshare

0 Kudos
4,767

In Volker Barth's answer to question "How do I execute a batch file using xp_cmdshell" he suggests to do:

xp_cmdshell("NET USE /USER:.......")  
-- do the desired network access  
xp_cmdshell("NET USE /DELETE ....")

In this case we have mapped network volume to local /letter/: and user with needing rights. I can`t understand one thing, how it influence on server but it steel on local account. And current user of dbeng12.exe is not the same in "NET USE /USER:.......".

Thanks for explanations.

Accepted Solutions (0)

Answers (2)

Answers (2)

jeff_albion
Product and Topic Expert
Product and Topic Expert

The mapping for NET USE always requires a Windows User Account to access the resource. This is (generally) not the same as the Database User (which is used to log in to the database). Mapped drives are available to the Windows user that created them.

What I'm assuming about the above description is that you have a database server running as a system service, underneath the LOCAL SYSTEM account and would like access to network resources. By default, the LOCAL SYSTEM account does not have access to network permissions - by using the "NET USE /USER:" command, you are telling Windows which network credentials to use when accessing the network.

Another solution to this issue would be to run the database service underneath the user account that has already set up the mapped network permission (instead of underneath the LOCAL SYSTEM account).

0 Kudos

Thanks a lot, now left only try to use this approach.

0 Kudos

The best way make dbsrv12 transferring files through network is using

READ_CLIENT_FILE() and WRITE_CLIENT_FILE()

but there is one fault

 WRITE_CLIENT_FILE()

can't create directories even when all rights given.