sql >> Database teknologi >  >> RDS >> Sqlserver

Script til at gemme varbinære data på disken

BCP-tilgangen virker ikke for mig. De bytes, den skriver til disken, kan ikke deserialiseres tilbage til de .net-objekter, jeg har gemt. Det betyder, at bytes på disken ikke svarer til det, der er gemt. Måske skriver BCP en form for header. Jeg er ikke sikker.

Jeg fandt følgende kode her i bunden af ​​artiklen. Det fungerer fantastisk! Selvom det var beregnet til lagrede BMP-billeder, fungerer det med enhver varbinær.

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. FÅ DIAGNOSTIK med COPY-sætning i Pl/pgsql-funktionen

  2. Hvordan tilføjer jeg streng med automatisk stigningsværdi i SQL Server?

  3. Unicode-normalisering i PostgreSQL 13

  4. Forstå SQL Server ÆNDRINGSTABEL TILFØJ KOLONNE-erklæring