2012-10-18 3 views
0

실제 테이블을 만들기 위해 SQL 테이블에서 이진 데이터를 추출하는 데 사용하는 저장 프로 시저가 있습니다. SQL 백업에서 복원 된 동일한 구조의 테이블에서 두 번 사용했으며 정상적으로 작동합니다.잘못된 열 이름 : SQL Server 2008 R2

오늘 복원 된 백업의 새 테이블에서 일부 바이너리 데이터를 추출하려고합니다. 내가 사용하고있는 스토어드 프로 시저를 열고 코드를 변경하려고했다. 변경 사항에 만족하면 'ALTER'문을 실행하려고했습니다. 유감스럽게도, 내가 사용한 컬럼 이름은 모두 '문서'테이블에 존재 함에도 불구하고 '무효'입니다.

'잘못된 열 이름'오류와 관련된 여러 스레드를 읽었지 만 대부분이 입력 오류 인 것 같습니다. 내 열 이름 numurous 시간 (intelli 감각도 나를 'Document.Document_ID'및 'Document.Document_Filename'넣어 수 있지만 그들은 여전히 ​​실패) 확인했습니다.

내가 잘못 가고있는 아이디어가 있습니까?

출처 : 아이디어 모두를위한

USE [Example Live] 
GO 
/****** Object: StoredProcedure [dbo].[FileExport] Script Date: 10/18/2012 11:42:14 ******/ 
SET ANSI_NULLS ON 
GO 
SET QUOTED_IDENTIFIER ON 
GO 
-- ============================================= 
-- Author:  Chris Murray 
-- Create date: 18/10/2012 
-- Description: Exports binary file data 
-- ============================================= 
ALTER PROCEDURE [dbo].[FileExport] 
-- Add the parameters for the stored procedure here 
@OutputFilePath VARCHAR(500) = 'C:\Conv\Example\In\Afiles\' 
AS 
BEGIN 

    DECLARE @totrow int 
    DECLARE @currow int 
    DECLARE @result int 
    DECLARE @nsql nvarchar(4000) 

    DECLARE @sqlStatements table (ID int IDENTITY(1, 1), SqlStatement varchar(max)) 

    INSERT 
    INTO @sqlStatements 
    SELECT 'BCP "SELECT Document_Data FROM [Example Live].[dbo].[Document] WHERE Document_ID = ''' 
    + CAST(Document_ID AS VARCHAR(500)) + '''" queryout ' + @OutputFilePath 
    + CAST(Document_Filename AS VARCHAR(500)) + ' -S localhost\SQLEXPRESS2008 -T -f C:\Conv\Example\In\AFiles\Images.fmt' 
    FROM dbo.Photograph 

    SET @totrow = @@ROWCOUNT 
    SET @currow = 1 
    WHILE @totrow > 0 and @currow <= @totrow 
    BEGIN 
     SELECT @nsql = SqlStatement 
     FROM @sqlStatements 
     WHERE ID = @currow 
     EXEC @result = xp_cmdshell @nsql 
     SET @currow = @currow + 1 
    END 
END 
+0

[]를 열 이름에 넣으려고 했습니까? 예약어를 사용하는 열 이름을 처리해야합니다. –

+0

나는 그것을 시도했지만 여전히 운이 없다. 오류가 발생한 부분을 언급 한 적이 한 번도 없습니다. CAST (Document_ID AS VARCHAR (500)) 및 CAST (Document_Filename AS VARCHAR (500)) – ChrisMurray

+0

이 코드를 사용하여 SQL 문을 생성하고 SQL 관리 스튜디오에서 실행 해보십시오. . BCP 명령이 올바른 데이터베이스에 연결되어 있습니까? –

답변

0

감사합니다.

문제는 내 자신의 제작과 루키 실수였습니다. 나는 올바른 테이블에서 SELECT 문을 가리키는 것을 게을리했다.