J'ai un problème étrange avec mes curseurs imbriqués et je n'ai aucune idée de quoi il s'agit.Problème de curseur imbriqué SQL Server
Voici mon code T-SQL:
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='[email protected]+';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
Il me donne message d'erreur suivant:
syntaxe incorrecte près 'de @str'. [SQLSTATE 42000] (erreur 102)
dirait que le problème est en donnant la variable en tant que paramètre de fonction OpenDataSource. Mais pourquoi? Et comment éviter ce problème?
* curseur imbriqué *: c'est votre problème là !! –
@marc_s Je pense qu'un curseur imbriqué est la seule façon viable de faire ce que l'OP veut faire (faire défiler toutes les bases de données dans une collection de serveurs, dont les noms sont contenus dans une table) –