2012-08-05 6 views
8

BLOB 필드를 TSQL (예 : SSMS 및 ADO.Net 또는 Linq와 같은 코드를 사용하지 않는)으로 만 업데이트하려면 어떻게해야합니까?TSQL을 사용하여 SQL Server에서 BLOB를 업데이트하는 방법

SELECT * FROM OPENROWSET (BULK 'C:\Test\Test1.pdf', SINGLE_BLOB) a 

뿐만 아니라 :

SELECT BulkColumn FROM OPENROWSET (BULK 'C:\Test\Test1.pdf', SINGLE_BLOB) a 

참고 필수입니다 FROM 절 이후의 상관 관계 이름,

답변

12

두 TSQL와 BLOB를 선택하는 방법이 있습니다.

번째 버전

다음 예제로서 UPDATE 사용될 수

: this MSDN article에 기재된 하나는 SET에 .write의 테이터를 사용하여 부분적으로 업데이트

UPDATE MyTable 
SET blobField = 
    (SELECT BulkColumn FROM OPENROWSET (BULK 'C:\Test\Test1.pdf', SINGLE_BLOB) a) 
WHERE (CriteriaField = @criteria) 

여기 구문

UPDATE MyTable SET BlobField .WRITE (expression, @offset, @length) WHERE (CriteriaField = @criteria) 

WRITE 뮤 테이터는 NON-NULL 필드에서만 사용할 수 있습니다.

사실 이것은 다음 예와 같이 @offset을 0으로 설정하고 @length를 NULL (또는 실제 길이)로 설정하여 전체 업데이트 (열에 NULL이 포함되지 않은 경우)를 수행하는 데 사용할 수도 있습니다 :

DECLARE @tmp VARBINARY(MAX) --Change to the correct datatype here 
SELECT @tmp = BulkColumn FROM OPENROWSET (BULK 'C:\Test\Test1.pdf', SINGLE_BLOB) a 
UPDATE MyTable SET BlobField .WRITE (@tmp, 0, NULL) WHERE (CriteriaField = @criteria) 
+0

는 사실에서 SELECT의 첫 번째 버전은이 이후 별도의 버전은 MSDN 및 기타 온라인 자원이 예제에서 사용하는 것처럼 * 아직도 내가 포함 된 SELECT를 사용하는 대신 두 번째 SELECT 다음 아무것도 정말 없다 많은 개발자들은 그것을 그것을 수행하는 유일한 방법이라고 생각합니다. –

관련 문제