Nun, zuallererst ... (und das tut mir leid;) ) VERWENDEN SIE KEINE CURSORS ... und entschuldigen Sie die Großbuchstaben ...
Eines der schlimmsten Dinge an Cursorn ist, dass sie Ihren Tisch sperren können. Was ich für diese Zwecke immer mache (und was ziemlich schneller ist), verwende ich eine for-Schleife ... wie diese
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
Verfügt der SQL Server-Prozess für den nächsten Teil über ausreichende Berechtigungen, um auf Laufwerk c:zu schreiben? Schauen Sie auch in Ihr Nachrichtenfenster, wenn Sie Ihren Code ausführen, vielleicht finden Sie dort etwas?
Was Sie auch tun können, versuchen Sie es manuell auszuführen. Holen Sie sich einfach eine BCP-Anweisung und führen Sie sie mit der xp_cmdshell aus. Gibt es irgendwelche Fehler?