ネストされたカーソルに奇妙な問題があり、それが何であるかわかりません。
これが私の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='+@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
次のエラーメッセージが表示されます。
'@str'の近くの構文が正しくありません。[SQLSTATE 42000](エラー102)
問題は、変数をopendatasource関数のパラメーターとして指定することにあるようです。しかし、なぜ?そして、この問題を回避する方法は?