Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Exportation de données de fichiers binaires (images) à partir de SQL via une procédure stockée

Eh bien, tout d'abord... (et désolé pour ça;) ) N'UTILISEZ PAS DE CURSEURS... et désolé pour les majuscules...

L'une des pires choses à propos des curseurs est qu'ils peuvent verrouiller votre table. Ce que je fais toujours à ces fins (et qui est assez rapide), j'utilise une boucle for... comme celle-ci

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

Pour la partie suivante, le processus SQL Server a-t-il suffisamment d'autorisations pour écrire sur le lecteur c: ? Aussi, regardez dans votre volet message lorsque vous exécutez votre code, peut-être y trouverez-vous quelque chose ?

Ce que vous pouvez également faire, essayez de l'exécuter manuellement. Obtenez simplement une instruction BCP et exécutez-la avec xp_cmdshell. Cela donne-t-il des erreurs ?