Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

Mengekspor data file biner (gambar) dari SQL melalui prosedur tersimpan

Yah, pertama-tama.. (dan maaf tentang itu;) ) JANGAN GUNAKAN KURSOR..dan maaf untuk huruf besar ...

Salah satu hal paling buruk tentang kursor adalah mereka dapat mengunci meja Anda. Apa yang selalu saya lakukan untuk tujuan ini (dan yang lebih cepat), saya menggunakan for loop.. seperti ini

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

Untuk bagian selanjutnya, apakah proses SQL Server memiliki izin yang cukup untuk menulis ke drive c:? Juga, lihat panel pesan Anda ketika Anda mengeksekusi kode Anda, mungkin Anda dapat menemukan sesuatu di sana?

Yang juga bisa Anda lakukan, coba jalankan secara manual. Cukup dapatkan satu pernyataan BCP dan jalankan dengan xp_cmdshell. Apakah itu memberikan kesalahan?



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. JPA SET IDENTITY_INSERT tidak berfungsi

  2. Menyiapkan database SQL Server lokal

  3. Periksa apakah server SQL (versi apa pun) diinstal?

  4. Partisi berdasarkan Tahun vs. tabel terpisah bernama Data_2011, Data_2010, dll

  5. Cara Menampilkan Tanggal dalam Format Jerman di SQL Server (T-SQL)