Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Skrypt do zapisywania danych varbinary na dysku

Podejście BCP nie działa dla mnie. Bajtów, które zapisuje na dysku, nie można zdeserializować z powrotem do przechowywanych przeze mnie obiektów .net. Oznacza to, że bajty na dysku nie są równoważne z tym, co jest przechowywane. Być może BCP pisze jakiś nagłówek. Nie jestem pewny.

Znalazłem następujący kod tutaj na dole artykułu. Działa świetnie! Chociaż był przeznaczony do przechowywania obrazów BMP, działa z dowolnymi zmiennymi.

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. Bulk DELETE w SQL Server 2008 (Czy istnieje coś takiego jak Bulk Copy (bcp) do usuwania danych?)

  2. Zainstaluj rozszerzenie agenta programu SQL Server w Azure Data Studio

  3. Jak utworzyć klucz obcy w SQL Server?

  4. 10 faktów na temat monitorowania wydajności bazy danych, które mogą Cię zaskoczyć

  5. Problem z wdrożeniem raportu SSRS 2014