-- 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
GO
-- To update the currently configured value for this feature.
RECONFIGURE
GO
참조
MS-SQL Server 2000 에서 사용하던 xp_cmdshell 을 MS-SQL Server 2005, 2008 에서 사용하고 싶을때는
SELECT * FROM sys.configurations WHERE name = 'xp_cmdshell'
을 사용하여 xp_cmdshell 항목의 value 값을 체크한다.
value 값이 0으로 되어 있을 경우 이것을 1로 변경하면 사용이 가능하다.
sys.configurations 값을 변경할 때는 sp_configure 라는 시스템 저장프로시저를
이용하여 값을 변경한다.
EXEC sp_configure 'show advanced options', 1
go
RECONFIGURE
go
EXEC sp_configure 'xp_cmdshell', 1
go
RECONFIGURE
go
위와 같이 변경하면 사용이 가능하다.
간혹, 위 스크립트 실행시 다음과 같은 에러가 출력된다면
‘시스템 카탈로그에 대한 임의 업데이트는 지원되지 않습니다.’
이 문제는 sp_configure 저장 프로시저의 업데이트 허용 매개 변수가 1로 설정된 경우 발생한다. 이 문제를 해결하려면 업데이트 허용 매개 변수를 0으로 설정한다.
SELECT * FROM sys.configurations WHERE name = 'allow updates'
allow updates 의 설정값이 1로 되어있을 경우 아래의 스크립트를 실행하여 0으로 변경한다.
EXEC sp_configure 'allow updates', '0'
go
RECONFIGURE WITH OVERRIDE
go
위와 같이 실행 후 다시 sp_configure 값을 변경하면 된다.
참고 )
http://msdn.microsoft.com/ko-kr/library/ms190693(SQL.100).aspx
http://technet.microsoft.com/ko-kr/library/ff487039.aspx
[출처] MS-SQL Server 2008 에서 xp_cmdshell 사용 설정|작성자 winc21
=>오류
구성 옵션 ‘show advanced options’이(가) 1에서 1(으)로 변경되었습니다. RECONFIGURE 문을 실행하여 설치하십시오.
메시지 5845, 수준 16, 상태 1, 줄 2
AWE(Address Windowing Extensions)에는 현재 프로세스의 액세스 토큰에 없는 ‘메모리의 페이지 잠금’ 권한이 있어야 합니다.
구성 옵션 ‘xp_cmdshell’이(가) 0에서 0(으)로 변경되었습니다. RECONFIGURE 문을 실행하여 설치하십시오.
메시지 5845, 수준 16, 상태 1, 줄 2
AWE(Address Windowing Extensions)에는 현재 프로세스의 액세스 토큰에 없는 ‘메모리의 페이지 잠금’ 권한이 있어야 합니다.
샘플
USE [DataDownload] GO SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO -- ============================================= -- Author: <허> -- Create date: <2013-08-27> -- Description: <다운로드> -- AirDataDownload -- ============================================= ALTER PROCEDURE [dbo].[AirDataDownload] -- Add the parameters for the stored procedure here AS BEGIN -- SET NOCOUNT ON added to prevent extra result sets from -- interfering with SELECT statements. SET NOCOUNT ON; Declare @iWeek int --요일 : 1:일요일 2:월요일 3:화요일 4:수요일 5:목요일 6:금요일 7:토요일 Declare @NowDate DateTime -- 오늘날짜 Declare @MON int --월 Declare @TUE int --화 Declare @WED int --수 Declare @THU int --목 Declare @FRI int --금 Declare @SAT int --토 Declare @SUN int --일 Set @MON = 0 Set @TUE = 0 Set @WED = 0 Set @THU = 0 Set @FRI = 0 Set @SAT = 0 Set @SUN = 0 Set @NowDate = CONVERT(CHAR(10),GETDATE(), 23) -- fomat: 03 30 2012 12:00AM -- 오늘 요일 구하기 -- Set @iWeek = (select datepart(dw,@NowDate)) --test --Set @iWeek =2 if @iWeek=1 --일요일 begin Set @SUN = 1 end else if @iWeek=2 --월요일 begin Set @MON = 1 end else if @iWeek=3 --화요일 begin Set @TUE = 1 end else if @iWeek=3 --수요일 begin Set @WED = 1 end else if @iWeek=4 --목요일 begin Set @THU = 1 end else if @iWeek=5 --금요일 begin Set @SAT = 1 end else if @iWeek=6 --토요일 begin Set @SUN = 1 end Declare @SID varchar(3) Declare @Airline varchar(2) Declare @OnlyUpdateair int -- -- To allow advanced options to be changed. EXEC sp_configure 'show advanced options', 1 -- To update the currently configured value for advanced options. RECONFIGURE -- To enable the feature. EXEC sp_configure 'xp_cmdshell', 1 -- To update the currently configured value for this feature. RECONFIGURE -- Declare con_cursor cursor for SELECT TOP 1000 [Agency].[SID] FROM [DataDownload].[dbo].[Agency] where [Agency].Active =1 and [Agency].OnlyUpdateair=1 and MON>=@MON and TUE>=@TUE and WED>=@WED and THU>=@THU and FRI>=@FRI and SAT>=@SAT and SUN>=@SUN open con_cursor --커스를 연다. fetch next from con_cursor into @SID while (@@fetch_status <>-1) begin if (@@fetch_status = -2) continue begin -- 처리 --print @SID --print @Airline -- # 시작 # DECLARE @FileName varchar(50), @bcpCommand varchar(8000) SET @FileName = 'D:\DataDownload\'+@SID+'\Delete_'+ CONVERT(char(10),GETDATE(),120)+'.csv' SET @bcpCommand = 'SELECT [SerialNumber] ' + ',[airCode] ' + ',[AgentCode] ' + ',[Airlinecode] ' + ',[AreaCode] ' + ',[DeleteDate] ' + 'FROM [Finix].[dbo].[HistorySalesairDelete] ' + 'Where DeleteDate>GetDate()-1' SET @bcpCommand = 'bcp "' + @bcpCommand + '" queryout "'+ @FileName + '" -t, -T -S -U -P -c' EXEC master..xp_cmdshell @bcpCommand --print @FileName --print @bcpCommand --EXEC(@bcpCommand) -- # 끝 # end fetch next from con_cursor into @SID end close con_cursor Deallocate con_cursor -- To allow advanced options to be changed. EXEC sp_configure 'show advanced options', 1 -- To update the currently configured value for advanced options. RECONFIGURE -- To disable the feature. EXEC sp_configure 'xp_cmdshell', 0 -- To update the currently configured value for this feature. RECONFIGURE END