2013-05-15 3 views
0

bcp를 사용하여 cmdshell에서 실행되는 csv 파일을 만드는 저장 프로 시저가 있습니다. SQL Server 2012에서 저장 프로 시저를 실행하면 필요에 따라 실행됩니다. 하지만 VBA에서 실행하면 루프의 첫 번째 실행 만 catch 한 다음 중지됩니다. 오류는 없지만 완전히 실행되지 않았다고 말할 수 있습니다.bcp out to master..XP_cmdshell 저장 프로 시저가 Excel에서 실행될 때 작동하지 않습니다.

아래에 Vba 및 Sql 저장 프로 시저 코드가 게시되었습니다. 온라인에서 유용한 정보를 찾기 위해 고심하고 있으므로 스택 오버플로를 묻습니다. 어떤 도움이라도 대단히 감사 할 것입니다. 고맙습니다!

Dim i As Long, folder As String, year1 As String, month1 As String, day1 As String,  data As String, hour1 As String, minute1 As String 
Dim cn As New ADODB.Connection 

'Open the connection 
strCon23 = "Driver={SQL Server};Server=*******" 
cn.CommandTimeout = 0 
cn.Open strCon23 

s = "EXEC SendNewRates" 
cn.Execute s 
cn.Close 






DECLARE @Date2 datetime 
SET @Date2=getdate() 
Declare @sql varchar(1250) 
DECLARE @hour varchar(25), @min varchar(25), @sec varchar(25) 
Declare @start VARCHAR(25), @Interval bigint, @num varchar(200), @max bigint,@end varchar(200) 
Set @Hour=datepart(hh,@Date2) 
Set @Min=datepart(Mi,@Date2) 
Set @Sec=datepart(ss,@Date2) 
Set @start=1 
Set @Interval=50000 
Set @[email protected] 
Set @num=1 
Set @max = (SELECT max(ROWNUM) FROM UPLOADTable) 

While @Start<@Max 

Begin 

set @SQL='bcp "Select Data From ******* Where [RowNum]>='[email protected]+' and [RowNum]<='[email protected] +' order by [RowNum]" '+'queryout C:\Test\Upload_NextGen_'[email protected]+'_'[email protected]+'_'[email protected]+'_'[email protected]+'_.csv -c -T -t -S PRK- PR\EMULATION' 
EXEC master..XP_CMDSHELL @sql 
Set @[email protected]+1 
Set @Start=Convert(bigint,@Start)+convert(bigint,@Interval) 
Set @End=Convert(bigint,@end)+convert(bigint,@Interval) 

End 

답변

0

이것은 아마도 권한과 관련이 있습니다. 사용하는 경우 xp_cmdshell을

을 실행할 수있는 권한이 있거나 (MS SQL Server 인증을 사용하는 경우) SQL 서버가 사용자 ID/ 로그인 (Windows 통합 보안 MS SQL과를 사용하는 경우)

는 Windows 사용자를합니까 SMSS Windows 통합 보안을 사용하여 Exscel에서 ADO를 실행하는 경우 높은 수준의 사용 권한을 사용하고 있다고 생각합니다.

Excel에서 로그인 할 때 서버에 대한 더 높은 수준의 권한이 있어야한다고 생각합니다.

xp_cmdShell/bcp를 사용하면 저장 프로 시저를 실행하는 것보다 높은 수준의 권한이 필요합니다.

+0

문제가 발생하여 프로세스를 생성 한 관리자가 시스템 관리자이기 때문에 사용권 문제로 생각하지 않습니다. 그녀는 오늘 사무실에 없지만, 나는 당신의 대답을 가능한 빨리 보여줄 것입니다. 답변 해 주셔서 감사 드리며 진행 상황을 알려 드리겠습니다. – user2383360

+0

예. 명시 적으로 추가되지 않으면 그녀의 Winodws 계정은 여전히 ​​SQL Server *의 SysAdmins 역할의 구성원이 아닙니다 * –