No, za prvé.. (a omlouvám se za to;) ) NEPOUŽÍVEJTE KURZORY..a omlouvám se za velká písmena...
Jedna z nejhorších věcí na kurzorech je, že mohou uzamknout váš stůl. Co vždy dělám pro tyto účely (a což je docela rychlejší), používám smyčku for .. takto
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
V další části, má proces serveru SQL dostatek oprávnění k zápisu na jednotku c:? Při spuštění kódu se také podívejte do podokna zpráv, možná tam něco najdete?
Co můžete také udělat, zkuste to provést ručně. Stačí získat jeden příkaz BCP a provést jej pomocí xp_cmdshell. Vypisuje nějaké chyby?