1

MSSQL Server 2008 を使用しています。MySQL データベースを更新しようとしています。MSSQL-Database を MySQL-Database に参加させ、更新を完了しようとしましたが、奇妙な問題が発生しました。

次のクエリを実行すると、限られた量の結果が得られます。

select *
FROM [SQL-Database].[dbo].[Table] as c left join
openquery(MYSQL, 'select * from MySQL-Database.Table')
on c.KuNr=kunden_id collate German_PhoneBook_BIN
where c.Auswahltyp='2' and c.[gelöscht]=0 
                       and c.[Mietzeit bis]>GETDATE() and c.aktiveMail>'0'

更新を行うと、データベース内のすべての行が更新されます。

update openquery(MYSQL, 'select * from MySQL-Database.Table')
set paket_id=7
FROM [SQL-Database].[dbo].[Table] as c left join
openquery(MYSQL, 'select * from MySQL-Database.Table')
on c.KuNr=kunden_id collate German_PhoneBook_BIN
where c.Auswahltyp='2' and c.[gelöscht]=0 
                       and c.[Mietzeit bis]>GETDATE() and c.aktiveMail>'0'

違いは選択と更新だけですが、更新の「場所」を無視しているようなものです。

4

1 に答える 1

0

openquery にエイリアスを設定すると、次のように機能するはずです。

update k
set paket_id=7
FROM [SQL-Database].[dbo].[Table] as c left join
openquery(MYSQL, 'select * from MySQL-Database.Table') as k
on c.KuNr=k.kunden_id collate German_PhoneBook_BIN
where c.Auswahltyp='2' and c.[gelöscht]=0 
and c.[Mietzeit bis]>GETDATE() and c.aktiveMail>'0'
于 2012-08-17T16:50:14.870 に答える