Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

Xuất dữ liệu tệp nhị phân (hình ảnh) từ SQL thông qua một thủ tục được lưu trữ

Vâng, trước hết .. (và xin lỗi về điều đó;)) ĐỪNG "SỬ DỤNG CURSORS..và xin lỗi vì những cái mũ ...

Một trong những điều tồi tệ nhất về con trỏ là chúng có thể khóa bảng của bạn. Những gì tôi luôn làm cho những mục đích này (và nó khá nhanh hơn), tôi sử dụng vòng lặp for .. như thế này

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

Đối với phần tiếp theo, quy trình SQL Server có đủ quyền để ghi vào ổ đĩa c:? Ngoài ra, hãy nhìn vào ngăn thư của bạn khi bạn thực thi mã của mình, có thể bạn có thể tìm thấy thứ gì đó ở đó?

Những gì bạn cũng có thể làm, hãy thử thực hiện nó theo cách thủ công. Chỉ cần lấy một câu lệnh BCP và thực thi nó với xp_cmdshell. Nó có đưa ra bất kỳ lỗi nào không?



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cách thay đổi giản đồ của một đối tượng (Bảng, Dạng xem, Thủ tục đã Lưu trữ) trong Cơ sở dữ liệu SQL Server - Hướng dẫn SQL Server / TSQL Phần 28

  2. Làm thế nào để lấy ngày đầu tiên và ngày cuối cùng của năm hiện tại?

  3. Làm cách nào để tách một chuỗi để tôi có thể truy cập mục x?

  4. Cách sửa lỗi "dateiff function dẫn đến lỗi tràn" trong SQL Server

  5. Lỗi kết nối SQL Server 2008 Không có quy trình nào ở đầu kia của đường ống