Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Eksportowanie danych plików binarnych (obrazów) z SQL za pomocą procedury składowanej

Cóż, przede wszystkim... (i przepraszam za to;) ) NIE UŻYWAJ KURSORA... i przepraszam za wersaliki...

Jedną z najgorszych rzeczy związanych z kursorami jest to, że mogą zablokować Twój stół. To, co zawsze robię w tych celach (i co jest dość szybsze), używam pętli for .. w ten sposób

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

W następnej części, czy proces SQL Server ma wystarczające uprawnienia do zapisu na dysku c:? Zajrzyj również do okienka wiadomości podczas wykonywania kodu, może znajdziesz tam coś?

Co również możesz zrobić, spróbuj wykonać to ręcznie. Po prostu weź jedną instrukcję BCP i wykonaj ją za pomocą xp_cmdshell. Czy daje jakieś błędy?



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL Server:ranga typu danych w operacjach arytmetycznych?

  2. Time DataType w SQL Server 2005

  3. Jak używać adnotacji strukturalnych, aby ustawić typ SQL na Date w pierwszym podejściu do modelu?

  4. Rozumiesz związek między funkcjami rankingu, OVER(), GROUP BY?

  5. Jak zamienić n-ty znak na serwerze sql