복붙노트

[SQL] 어떻게 SQL을 사용하여 파일에 SQL 서버에서 이미지를 저장하려면 [종료]

SQL

어떻게 SQL을 사용하여 파일에 SQL 서버에서 이미지를 저장하려면 [종료]

SQL Server 2005에서 나는 이미지 테이블 (: 이미지 데이터 형식)가 있습니다. 단지 SQL 사용 (SQL Server가 실행되는 동일한 서버에) 파일로 이미지 저장 I을 수행하는 방법에 대해 설명합니다. 내가해야하는 경우 나 SQL CLR을 사용합니다,하지만 난 가능하면이를 방지하고자합니다.

나는 더 이런 식으로 SQL 서버 데이터베이스 메일을 사용하여 포함 된 이미지와 이메일을 보낼 것 시저를 호출하는 일정을 실행하는 SQL Server 작업을 싶지 :

exec msdb.dbo.sp_send_dbmail
@profile_name = 'MyProfile',
@recipients = 'bob@hotmail.com',
@subject = 'hello',
@file_attachments = 'C:\MyLogo.gif',
@body=N'<p>Image Test</p><img src="MyLogo.gif" /><p>See image there?</p>', 
@body_format = 'HTML';

SQL 작동하지만, 내가 먼저 파일로 저장 이미지를 얻을 필요가있다. 나는 괜찮 파일로 저장하지 않고 이메일에 직접 이미지를 얻을 수 있지만 경우 이메일에 삽입 할 필요가 있고 난 단지 SQL을 사용하고 싶습니다.

해결법

  1. ==============================

    1.나는 @attach_query_result_as_file 옵션을 사용하여 시도했지만 내가 일을 얻을 수 바이너리로 기록 된 질의를 할 수있는 방법은 없습니다. 그래서 다음 옵션은 임시 파일에 BCP 사용하고 파일을 첨부하는 것입니다.

    나는 @attach_query_result_as_file 옵션을 사용하여 시도했지만 내가 일을 얻을 수 바이너리로 기록 된 질의를 할 수있는 방법은 없습니다. 그래서 다음 옵션은 임시 파일에 BCP 사용하고 파일을 첨부하는 것입니다.

    DECLARE @sql VARCHAR(1000)
    
    SET @sql = 'BCP "SELECT ImageColumn FROM YourTable where id = 1 " QUERYOUT C:\TEMP\MyLogo.gif -T -fC:\TEMP\bcpFormat.fmt -S ' + @@SERVERNAME
    EXEC master.dbo.xp_CmdShell @sql
    
    exec msdb.dbo.sp_send_dbmail
    @profile_name = 'MyProfile',
    @recipients = 'bob@hotmail.com',
    @subject = 'test as image',
    @body=N'<p>Image Test</p><img src="MyLogo.gif" /><p>See image there?</p>', 
    @file_attachments = 'C:\TEMP\MyLogo.gif',
    @body_format = 'HTML';
    

    bcpFormat.fmt는 다음과 같이 보일 것이다 :

    8.0
    1
    1 SQLIMAGE 0 0 "" 1 Image ""
    

    즉 파일로 이메일로 데이터베이스에서 이미지를 첨부합니다. 즉 마임이 이메일의 본문에 이미지를 인코딩에 좀 더 많은 작업을하고 HTML에서 참조하는 것처럼 그것은 아직도 "인라인"를 표시하지 않습니다. 또한 이렇게 여러 프로세스가 서로에 단계하지 않을 파일 및 정리를위한 몇 가지 고유 한 이름을 생성해야합니다.

  2. ==============================

    2.이 문서에서는 파일을 작성 (작성 및 T-SQL을 통해 사용 COM 기반 개체 수) SQL 서버 OLE 자동화 저장 발동을 사용하는 방법을 설명합니다.

    이 문서에서는 파일을 작성 (작성 및 T-SQL을 통해 사용 COM 기반 개체 수) SQL 서버 OLE 자동화 저장 발동을 사용하는 방법을 설명합니다.

  3. ==============================

    3.는 SQL CLR (.NET) 저장 프로 시저는 가능성인가? 즉 디스크에 임시 파일로 BLOB 필드에서 문제 저장 데이터가없는 것입니다.

    는 SQL CLR (.NET) 저장 프로 시저는 가능성인가? 즉 디스크에 임시 파일로 BLOB 필드에서 문제 저장 데이터가없는 것입니다.

  4. ==============================

    4.나는 madC의 댓글이 최선의 해결책이라고 생각합니다. 당신은 또한이 같은 것을 사용하여 시도 할 수 있습니다 :

    나는 madC의 댓글이 최선의 해결책이라고 생각합니다. 당신은 또한이 같은 것을 사용하여 시도 할 수 있습니다 :

    INSERT INTO OPENROWSET ( 'BULK', '', BULK_BLOB) ...

    하지만 내 옆에 다음과 같은 단계를 추가로 필요합니다 :

    sp_configure 'show advanced options', 1
    reconfigure with override
    sp_configure 'Ad Hoc Distributed Queries', 1 
    reconfigure with override
    

    그리고 INSERT의 결과 후했다 :

    Msg 7302, Level 16, State 1, Line 1
    Cannot create an instance of OLE DB provider "BULK" for linked server "(null)".
    

    어쩌면 당신은 어떻게 일을 할 수있는 아이디어를 찾을 수있을 것입니다.

  5. from https://stackoverflow.com/questions/1673803/how-to-save-an-image-from-sql-server-to-a-file-using-sql by cc-by-sa and MIT license