sql >> Databáze >  >> RDS >> Sqlserver

Export dat binárního souboru (obrázků) z SQL prostřednictvím uložené procedury

No, za prvé.. (a omlouvám se za to;) ) NEPOUŽÍVEJTE KURZORY..a omlouvám se za velká písmena...

Jedna z nejhorších věcí na kurzorech je, že mohou uzamknout váš stůl. Co vždy dělám pro tyto účely (a což je docela rychlejší), používám smyčku for .. takto

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

V další části, má proces serveru SQL dostatek oprávnění k zápisu na jednotku c:? Při spuštění kódu se také podívejte do podokna zpráv, možná tam něco najdete?

Co můžete také udělat, zkuste to provést ručně. Stačí získat jeden příkaz BCP a provést jej pomocí xp_cmdshell. Vypisuje nějaké chyby?



  1. Služba SQL Server není dostupná v seznamu služeb po instalaci SQL Server Management Studio

  2. transponovat řádky do sloupců v sql

  3. ORA-28040:Žádná výjimka odpovídající autentizačního protokolu

  4. oracle jak změnit tabulku přidat oddíl podle intervalu rozsahu