을 다운로드 할 수 있도록 XML
파일을 가져 오는 프로그램을 개발 중입니다 (본질적으로 백업 복사본). 이 시점에서 OPENROWSET : sp_executesql 문이 @param에서 실패 함
SQL Server
에 내 데이터를 자주 백업을 할 수 있도록 프로세스를 자동화하고, 어떤 이유로 나는
XML
파일이 위치 할
OPENROWSET
을 실행할 수있는 쿼리를 개발에 붙어있다.
DECLARE @SQL NVARCHAR(MAX)
DECLARE @ParamDefinition NVARCHAR(500) = N'@fstring NVARCHAR(MAX)'
DECLARE @string VARCHAR(MAX) =
N'C:\[FilePath]\Reviews\thehesperian2016-07-29.xml'
SET @SQL =
N'INSERT INTO #Temp (Extract_Date, XMLDATA)
SELECT GETDATE()
, A.*
FROM OPENROWSET(BULK @fstring, SINGLE_BLOB, CODEPAGE = ' + '''RAW''' + ') AS A'
EXEC sp_executesql @SQL
, @ParamDefinition
, @fstring = @string
오류 : 나는 술어의 테이블에 간단한 쿼리로이를 설정할 수 있습니다, 그래서 그것을 의심 할 이유가
Msg 102, Level 15, State 1, Line 4
Incorrect syntax near '@fstring'.
는 filepath
를 읽을 방법입니다. 나는 이것이 왜 잘못되었는지 알아 내려고 노력하면서 몇 시간을 보냈다. 나는 BULKINSERT이 example뿐만 QUOTENAME
를 사용할 수 있지만, 나는 (따라서 여전히 sp_executesql
를 사용) 동적 SQL에서이 모든 것을 포함하는 기대했다
무엇 또는 왜 나는이 잘못을하고있는 중이 야? 어떤 도움이라도 대단히 감사하겠습니다. - 감사합니다,
OPENROWSET - MSDN가 자신의 단락에서 선언
답변 : 나는 어쨌든 몇 가지 사소한 REPLACE
기능을 실행 않았지만
OPENROWSET does not accept variables for its arguments.
QUOTENAME
, 충분하다.
동적 SQL에서 @fstring은 변수가 아닌 리터럴로 간주됩니다. – scsimon
@scsimon right, proc 매개 변수를 통해 fstring을 호출했음을 잊어 버렸습니다. 그래서 SQL Server가 어떻게 이해했는지 추측해서는 안됩니다. –
동적 SQL의 경우 + '' '@var' " '+로 연결해야하지만 OPENROWSET에 있는지 확실하지 않은 경우가 있습니다. 나는 그것이 작동 할 것이라고 생각하지 않는다 – scsimon