Bene, prima di tutto.. (e scusami;) ) NON UTILIZZARE I CURSORI..e scusa per i maiuscoli...
Una delle cose più brutte dei cursori è che possono bloccare la tua tabella. Quello che faccio sempre per questi scopi (e che è abbastanza più veloce), uso un ciclo for.. come questo
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
Per la parte successiva, il processo di SQL Server dispone di autorizzazioni sufficienti per scrivere sull'unità c:? Inoltre, guarda nel riquadro dei messaggi quando esegui il codice, forse puoi trovare qualcosa lì?
Quello che puoi fare anche tu, prova ad eseguirlo manualmente. Basta ottenere un'istruzione BCP ed eseguirla con xp_cmdshell. Dà qualche errore?