master..xp_cmdshell not working

Posted on 2004-04-28
Last Modified: 2010-08-05
I've go some procedures where I use
master..xp_cmdshell 'bcp .......
master..xp_cmdshell 'copy.....'
These are working fine on two installs for SQLServer 2000 running on Windows2000 server.  Now there's a new Windows 2000 install on a different box that I need to use the xp_cmdshell on , but it just returns 'NULL' and does nothing.
Any ideas why?
Question by:xoxomos
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 2
  • 2
LVL 34

Expert Comment

ID: 10943245
Either the new installation isn't setup to allow non-sysadmins the ability to run it (you should get a permissions error though) and the proxy account for SQLAgent needs to be enabled, or the command isn't right for the new server.

If you actually open a DOS prompt on the new server and execute your command that you pass to xp_cmdshell, what do you get?  Maybe there is a path error or something that xp_cmdshell isn't displaying back.


Expert Comment

ID: 10943256
What is the command?

Can you run master..xp_cmdshell 'dir *.* > dir.txt'?

Author Comment

ID: 10943837
master..xp_cmdshell 'dir *.* > dir.txt
just returns a 'NULL'.
Commands will run fine from dos shell
i.e dir *.* will give a listing of files in the directory.
LVL 34

Expert Comment

ID: 10943861
Did you check permissions?  Are you running xp_cmdshell as a sysadmin?  If you go into sqlagent properties, is the proxy account enabled?

Accepted Solution

Frostbyte_Zero earned 250 total points
ID: 10949569
These may help:

-- retrieve the proxy account to check that it's correct.
EXEC master..xp_sqlagent_proxy_account N'GET'

-- set the proxy account
xp_sqlagent_proxy_account N'SET'
                        , N'<mydomain>'
                        , N'<ntuser>'
                        , N'<ntuser password>'

-- grant database access in master
sp_grantdbaccess 'LimitedUser'

grant exec on xp_cmdshell to LimitedUser

--Corresponds to the Enterprise Manager SQL Agent property page
-- Job System tab.  Sets the value of "Only users with SysAdmin
-- privileges can execute CmdExec and ActiveScripting job steps"
--  1 Turns on the restriction
--  0 Turns off the restriction and allows non sysadmin logins
--               to do this and to run xp_cmdshell
EXECUTE msdb..sp_set_sqlagent_properties @sysadmin_only = 0


Featured Post

Independent Software Vendors: We Want Your Opinion

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Slowly Changing Dimension Transformation component in data task flow is very useful for us to manage and control how data changes in SSIS.
Ever needed a SQL 2008 Database replicated/mirrored/log shipped on another server but you can't take the downtime inflicted by initial snapshot or disconnect while T-logs are restored or mirror applied? You can use SQL Server Initialize from Backup…
Familiarize people with the process of retrieving data from SQL Server using an Access pass-thru query. Microsoft Access is a very powerful client/server development tool. One of the ways that you can retrieve data from a SQL Server is by using a pa…
Viewers will learn how to use the UPDATE and DELETE statements to change or remove existing data from their tables. Make a table: Update a specific column given a specific row using the UPDATE statement: Remove a set of values using the DELETE s…

632 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question