Nå, først og fremmest.. (og undskyld det;) ) BRUG IKKE MARKØR..og undskyld hætterne...
En af de dårligste ting ved markører er, at de kan låse dit bord. Hvad jeg altid gør til disse formål (og som er ret hurtigere), bruger jeg en for loop.. sådan her
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
For den næste del, har SQL Server-processen nok tilladelse til at skrive til c:-drevet? Kig også ind i din beskedrude, når du udfører din kode, måske kan du finde noget der?
Hvad du også kan gøre, prøv at udføre det manuelt. Få bare en BCP-sætning og kør den med xp_cmdshell. Giver det nogen fejl?