Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

Script untuk menyimpan data varbinary ke disk

Pendekatan BCP tidak bekerja untuk saya. Bytes yang ditulisnya ke disk tidak dapat di-deserialized kembali ke objek .net yang saya simpan. Ini berarti bahwa byte pada disk tidak sama dengan apa yang disimpan. Mungkin BCP sedang menulis semacam tajuk. Saya tidak yakin.

Saya menemukan kode berikut di sini di bagian bawah artikel. Ini bekerja dengan baik! Meskipun ditujukan untuk menyimpan gambar BMP, ia bekerja dengan varbinary apa pun.

DECLARE @SQLIMG VARCHAR(MAX),
    @IMG_PATH VARBINARY(MAX),
    @TIMESTAMP VARCHAR(MAX),
    @ObjectToken INT

DECLARE IMGPATH CURSOR FAST_FORWARD FOR 
        SELECT csl_CompanyLogo from mlm_CSCompanySettingsLocalizations

OPEN IMGPATH 

FETCH NEXT FROM IMGPATH INTO @IMG_PATH 

WHILE @@FETCH_STATUS = 0
    BEGIN
        SET @TIMESTAMP = 'd:\' + replace(replace(replace(replace(convert(varchar,getdate(),121),'-',''),':',''),'.',''),' ','') + '.bmp'

        PRINT @TIMESTAMP
        PRINT @SQLIMG

        EXEC sp_OACreate 'ADODB.Stream', @ObjectToken OUTPUT
        EXEC sp_OASetProperty @ObjectToken, 'Type', 1
        EXEC sp_OAMethod @ObjectToken, 'Open'
        EXEC sp_OAMethod @ObjectToken, 'Write', NULL, @IMG_PATH
        EXEC sp_OAMethod @ObjectToken, 'SaveToFile', NULL, @TIMESTAMP, 2
        EXEC sp_OAMethod @ObjectToken, 'Close'
        EXEC sp_OADestroy @ObjectToken

        FETCH NEXT FROM IMGPATH INTO @IMG_PATH 
    END 

CLOSE IMGPATH
DEALLOCATE IMGPATH


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Grup Pengguna Charlotte SQL Server:Perbaiki Kueri Lambat. Cepat.

  2. Cara Menggunakan OBJECT_ID() pada Objek Lintas Database di SQL Server

  3. Sisipkan bidang lebar tetap secara massal

  4. Hitung berdasarkan kondisi di SQL Server

  5. Tablix:Ulangi baris tajuk pada setiap halaman tidak berfungsi - Pembuat Laporan 3.0