Nou, ten eerste.. (en sorry daarvoor;) ) GEBRUIK GEEN CURSORS..en sorry voor de hoofdletters...
Een van de slechtste dingen van cursors is dat ze je tafel kunnen vergrendelen. Wat ik altijd doe voor deze doeleinden (en dat is behoorlijk sneller), ik gebruik een for-lus.. zoals deze
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
Voor het volgende deel, heeft het SQL Server-proces voldoende toestemming om naar de c:-schijf te schrijven? Kijk ook in uw berichtenvenster wanneer u uw code uitvoert, misschien kunt u daar iets vinden?
Wat u ook kunt doen, probeer het handmatig uit te voeren. Haal gewoon een BCP-statement en voer het uit met de xp_cmdshell. Geeft het fouten?