CREATE TABLE [dbo].[BLOBTest](
[LID] [bigint] NOT NULL,
[LName] [varchar](50) NULL,
[LPath] [varchar](max) NULL,
[Lblob] [varbinary](max) NULL,
[cdate] [datetime] NULL,
CONSTRAINT [PK_BLOBTest] PRIMARY KEY CLUSTERED
(
[LID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
--delete from BLOBTest where Lid=2
INSERT BLOBTest(LID, LName,LPath,LBlob)
SELECT 2, 'Test.jpg','C:\Users\Administrator\Downloads\1도서\대제국.txt', BulkColumn
FROM OPENROWSET (BULK N'C:\Users\Administrator\Downloads\1도서\대제국.txt', SINGLE_BLOB) AS Pic
위와 같이 BLOB/CLOB/NCLOB 등의 칼럼이 있고
여러개의 컬럼을 한번에 갱신 또는 추가하려고 하면
MSSql Studio 에서 직접 실행하면 문제없이 동작하나
vc++ 에서 OLE DB 를 이용하면 오류가 발생한다.
오류: DB_E_ERRORSINCOMMAND
=> One or more errors occurred during processing of command
그렇기 때문에 아래와 같이 하나의 칼럼씩 Update 시켜야 한다.
INSERT BLOBTest (LID, LName,LPath)
values (2, 'Test.jpg','C:\Users\Administrator\Downloads\1도서\대제국.txt')
update BLOBTest set(LID, LName,LPath,
LBlob=(SELECT BulkColumn FROM OPENROWSET (BULK N'C:\Users\Administrator\Downloads\1도서\대제국.txt', SINGLE_BLOB) AS Pic)
하지만 Bulk 를 사용하기 위해서는 사용자의 로그인 권한이 'bulkadmin' 이어야 한다.
즉, 이것은 MSSql에서 사용자의 속성에서 [서버 역할]을 'bulkadmin' 으로 설정해야 한다.
출처: https://devdb.tistory.com/9 [DB 관련:티스토리]
'DB 관련' 카테고리의 다른 글
[Oracle] 오라클(Oracle) 설치,접속(클라이언트 없이 OCI사용하기) (0) | 2024.12.28 |
---|---|
[Oracle] 관련 파일 (0) | 2024.12.27 |
[MSSQL] 데이터베이스 파일의 위치 및 크기와 기타정보 구하기 (0) | 2024.12.27 |
[MSSql] DB가 주의 대상인 경우 복구 방법 (0) | 2024.12.27 |
[C#] 오류: command 와 연결된 datareader 가 이미 열려 있습니다 먼저... (0) | 2024.12.27 |