sql >> Database >  >> RDS >> Sqlserver

Binaire bestandsgegevens (afbeeldingen) exporteren vanuit SQL via een opgeslagen procedure

Nou, ten eerste.. (en sorry daarvoor;) ) GEBRUIK GEEN CURSORS..en sorry voor de hoofdletters...

Een van de slechtste dingen van cursors is dat ze je tafel kunnen vergrendelen. Wat ik altijd doe voor deze doeleinden (en dat is behoorlijk sneller), ik gebruik een for-lus.. zoals deze

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

Voor het volgende deel, heeft het SQL Server-proces voldoende toestemming om naar de c:-schijf te schrijven? Kijk ook in uw berichtenvenster wanneer u uw code uitvoert, misschien kunt u daar iets vinden?

Wat u ook kunt doen, probeer het handmatig uit te voeren. Haal gewoon een BCP-statement en voer het uit met de xp_cmdshell. Geeft het fouten?



  1. ResultSet sluiten maar PreparedStatement niet sluiten

  2. Amazon Elastic Beanstalk configureren met PostGIS

  3. Parameter 'param_name' niet gevonden in collectie

  4. Hoe de records van de vorige dag uit de mysql-tabel te halen?