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?