sql >> Base de Datos >  >> RDS >> Sqlserver

Exportación de datos de archivos binarios (imágenes) desde SQL a través de un procedimiento almacenado

Bueno, antes que nada... (y perdón por eso;) ) NO USE CURSORES... y perdón por las mayúsculas...

Una de las cosas más malas de los cursores es que pueden bloquear tu tabla. Lo que siempre hago para estos propósitos (y que es bastante más rápido), uso un bucle for... así

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

Para la siguiente parte, ¿el proceso de SQL Server tiene suficiente permiso para escribir en la unidad c:? Además, mire en su panel de mensajes cuando ejecute su código, ¿quizás pueda encontrar algo allí?

Lo que también puedes hacer, intenta ejecutarlo manualmente. Simplemente obtenga una instrucción BCP y ejecútela con xp_cmdshell. ¿Da algún error?