Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Скрипт за запазване на varbinary данни на диск

BCP подходът не работи за мен. Байтовете, които записва на диска, не могат да бъдат десериализирани обратно към .net обектите, които съхраних. Това означава, че байтовете на диска не са еквивалентни на съхраненото. Може би BCP пише някакъв вид заглавие. Не съм сигурен.

Намерих следния код тук в долната част на статията. Работи страхотно! Въпреки че е предназначен за съхранени BMP изображения, той работи с всяка опция.

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. SQL Server SHOWPLAN_ALL

  2. SQL Server произволно сортиране

  3. Как да ПРОМЕНЯ параметъра на стойността на таблицата

  4. 3 начина за конвертиране на HEX в INT в SQL Server (T-SQL)

  5. Как да убиете всички текущи връзки към база данни на SQL Server 2005?