Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Експортиране на данни от двоичен файл (изображения) от SQL чрез съхранена процедура

Е, първо.. (и съжалявам за това;) ) НЕ ИЗПОЛЗВАЙТЕ КУРСОРИ..и съжалявам за главните букви...

Едно от най-лошите неща за курсорите е, че те могат да заключат вашата маса. Това, което винаги правя за тези цели (и което е доста по-бързо), използвам for цикъл.. като това

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

За следващата част, процесът на SQL Server има ли достатъчно разрешение за запис на c:устройство? Освен това погледнете в панела за съобщения, когато изпълнявате кода си, може би можете да намерите нещо там?

Това, което можете също да направите, опитайте да го изпълните ръчно. Просто вземете един BCP израз и го изпълнете с xp_cmdshell. Дава ли някакви грешки?



  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 2008 блокира SELECT на дълги транзакции INSERT?

  2. Добавете WHERE клаузи към SQL динамично / програмно

  3. sql сървър се изпълнява като грешки в разрешението в тригера

  4. Как да промените нивото на съвместимост на база данни с T-SQL

  5. BUK INSERT с непоследователен брой колони