모든 매개 변수가 제공된 후 dbo.generate_CSV 프로 시저가 호출되면 실행될 xp_cmdshell이 포함 된 다른 인라인 저장 프로 시저가 필요합니다.인라인 프로 시저로 xp_cmdshell을 호출하는 저장 프로 시저
bcp 내보내기와 관련하여 xp_cmdshell을 사용하는 것 외에는 다른 방법이 없다고 생각합니다.
기본적으로 사용자는 원하는 출력을 얻으려면 generate_CSV 프로 시저를 호출하면됩니다.
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
IF EXISTS (select * from sysobjects where name ='dbo.generate_CSV ')
DROP procedure dbo.generate_CSV
GO
CREATE procedure dbo.generate_CSV
(
@dbName varchar(100),
@tblName varchar(100),
@outputPath varchar(100)
)
AS
GO
DECLARE @sql varchar(8000)
SELECT @sql = 'bcp "select * from @[email protected]"' + ' queryout
@outputPath -c -t"; " -r"\n" -T -S localhost' --+ @@servername
--EXEC master..xp_cmdshell @sql
GO
사용자 유일한 관심사는이 절차를 실행한다.
EXEC dbo.generate_CSV @dbName = '[dbName]', @tblName =
'[tblName]',@outputPath = '[outputPath]'
그래서 제 질문은 generate_CSV이 실행될 때, BCP 복사가 호출 될 수 있도록 내가 dbo.generate_CSV 절차 내에서 간부 xp_cmdshell을 호출하고 우리가 우리의 CSV 파일을 얻을 수있는 방법이다.
편집 1 : 내가 코멘트를 제거하고 나는 다음과 같은 오류가 나타날이 실행 ...
SQLSTATE = 37000, NativeError = 137 오류 = [마이크로 소프트] [SQL 기본 클라이언트] [SQL 서버 ] 스칼라 변수 "@dbName"을 선언해야합니다. SQLState = 37000, NativeError = 8180 오류 = [Microsoft] [SQL Native 클라이언트] [SQL Server] 문을 준비 할 수 없습니다. NULL
인라인 절차를 말하는 무엇을 의미합니까? 질문은 무엇입니까? – sepupic
generate xp_cmdshell을 dbo.generate_CSV 프로 시저 내에서 호출하여 generate_CSV가 실행될 때 bcp copy가 호출되고 출력 CSV 파일을 가져올 수 있습니다. –
당신은 이미 모든 것을 썼습니다. 필요한 것은 "AS"다음에 "GO"를 제거하고 EXEC – sepupic