0

私は2つのデータベースを持っています。1つはMSSQLに、もう1つはMysqlにあります。MysqlからデータをフェッチしてMSSQLに挿入するSQLスクリオットをいくつか作成しました。これを行うために、MS SQLでデバイスドライバー接続とリンクサーバーを設定しました。これらのスクリプトは、MSSQLで実行されます。スクリプトは単純で、selectステートメントのみがあります。次に、いくつかのパラメーターに基づいてmysqlからデータをフェッチする動的スクリプトを作成する必要があります。以下は、DB「stagedb_ie」からデータを取得するためのサンプルクエリです。ここで、ieはアイルランドを表します。

select * from openquery(stagedb_ie, 'select * from stagedb_ie.aol_center')

mysqlには、名前としてstagedbに国コードサフィックスが付いた他のdbがあります。次に、この国コードをパラメーターとして渡して、データを照会および取得します。例えば

declare @stagedb_country varchar(20)
set @stagedb_country = 'stagedb_ie'
select * from openquery(@stagedb_country, 'select * from '+ @stagedb_country +'.aol_center')

しかし、このクエリは機能しません。なにか提案を?

4

1 に答える 1

0
declare @stagedb_country varchar(20),
   @SQL nvarchar(max);
set @stagedb_country = 'stagedb_ie';
set @SQL = 'select * from openquery(' + @stagedb_country
   + ', ''select * from ' + @stagedb_country + '.aol_center'')';
exec (@SQL);

SP の動的 SQL は、SP 所有者ではなく呼び出し元の権限で実行されることに注意してください。

最後に、なぜこのために別のデータベースとテーブルを使用しているのかと質問します。データを別のコンテナーに入れる代わりに、必要なものをデータにエンコードできないでしょうか?

于 2011-05-29T15:56:48.387 に答える