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

Eksport af binære fildata (billeder) fra SQL via en lagret procedure

Nå, først og fremmest.. (og undskyld det;) ) BRUG IKKE MARKØR..og undskyld hætterne...

En af de dårligste ting ved markører er, at de kan låse dit bord. Hvad jeg altid gør til disse formål (og som er ret hurtigere), bruger jeg en for loop.. sådan her

declare @totrow int
      , @currow int
      , @result int
      , @nsql nvarchar(max)

declare @sqlStatements table (
  Id int identity(1, 1)
, SqlStatement varchar(max)
)
insert 
into    @sqlStatements
select  'QUERY PART'
from    table

set @totrow = @@rowcount
set @currow = 1
while @totrow > 0 and @currow <= @totrow
begin
  select @nsql = SqlStatement
  from   @SqlStatements
  where  Id = @currow

  exec @result = xp_cmdshell @nsql

  set @currow = @currow + 1
end

For den næste del, har SQL Server-processen nok tilladelse til at skrive til c:-drevet? Kig også ind i din beskedrude, når du udfører din kode, måske kan du finde noget der?

Hvad du også kan gøre, prøv at udføre det manuelt. Få bare en BCP-sætning og kør den med xp_cmdshell. Giver det nogen fejl?



  1. Forståelse af Java Support for Persistence med JPA

  2. Er det korrekt at scanne en tabel i MySQL ved hjælp af SELECT * .. Limit start, tæller uden en ORDER BY-klausul?

  3. Hvordan gør man forespørgslerne i en lagret procedure opmærksomme på forårstransaktionen?

  4. Hvordan analyserer man json effektivt i Oracle 18c?