sql >> Databasteknik >  >> RDS >> Sqlserver

Exportera binära fildata (bilder) från SQL via en lagrad procedur

Tja, först och främst.. (och förlåt för det;) ) ANVÄND INTE CURSORER..och förlåt för kepsarna...

En av de värsta sakerna med markörer är att de kan låsa ditt bord. Vad jag alltid gör för dessa ändamål (och som är ganska snabbare), jag använder en for loop.. så här

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

För nästa del, har SQL Server-processen tillräcklig behörighet för att skriva till c:-enheten? Titta också in i meddelanderutan när du kör din kod, kanske du kan hitta något där?

Vad du också kan göra, försök att köra det manuellt. Skaffa bara en BCP-sats och kör den med xp_cmdshell. Ger det några fel?



  1. Hur man får året från en Datetime-kolumn i MySQL

  2. Hur man lägger till en serialiserad sträng som redan finns i databasen

  3. JDBC kör inte kommandot SHOW DATABASES

  4. SELECT INTO en tabellvariabel i T-SQL