SQL Server geschachtelte cursor problem

Ich habe ein seltsames problem mit meinem geschachtelte Cursorn und ich habe keine Ahnung, was es überhaupt geht.

Hier mein T-SQL-code:

declare @dbname varchar(50)
declare @servername varchar(50)
declare srv cursor for select servername from test.dbo.servers
declare @str varchar(200)

truncate table test.dbo.temp

open srv
fetch next from srv into @servername
while @@fetch_status = 0   
begin   
   set @str = 'Data Source='+@servername+';Integrated Security=SSPI'   
   declare db cursor for select name from opendatasource('SQLNCLI', @str).master.dbo.sysdatabases
   open db
   fetch next from db into @dbname
   while @@fetch_status = 0
   begin
      insert test.dbo.temp (dbname, servername) values (@dbname, @servername)
      fetch next from db into @dbname
   end
   fetch next from srv into @servername
   close db
   deallocate db
end   
close srv
deallocate srv

Es gibt mir die nächste Fehlermeldung:

Falsche syntax in der Nähe '@str'.
[SQLSTATE 42000] (Fehler 102)

Sieht aus wie das problem, indem Sie die variable als parameter zu opendatasource-Funktion. Aber warum? Und wie dieses problem zu vermeiden?

geschachtelte cursor : das ist dein problem genau dort!!
Ich denke, dass eine geschachtelte cursor ist der einzige gangbare Weg, das zu tun, was der OP will do (Schleife über alle Datenbanken in eine Sammlung von Servern, die Namen, die enthalten sind in einer Tabelle)

InformationsquelleAutor stee1rat | 2010-12-08

Schreibe einen Kommentar