1


2

私はVSTS 2008を開発者向けとデータベースの両方のエディションをインストールして使用しています。 DB版GDRがインストールされています(バージョン9.0.31124)。 リンクサーバー(DB2メインフレーム、iSeries、およびSQL Server)を参照するコード内にいくつかの場所があります。 そのような例の1つが、ストアドプロシージャにあるこのコードです。

SELECT VendorID INTO #tmpVendors FROM DataWhse.BIDataWhse.BP.Vendors WHERE EffectiveDate <DATEADD(日、-1、DATEADD(月、1、CAST(LTRIM(RTRIM(CAST(@Month AS CHAR(2)))))/ 01 / 'CAST(@YEAR AS CHAR(4)AS DATETIME)))および有効期限> CAST(LTRIM(RTRIM(CAST(@MONth AS CHAR(2))))' / 01 / 'CAST(@ ASY CHAR(2)) 4))日付として)

この種のコードで未解決の参照エラー(TSD03006)が発生します。 このタイプのリンクサーバー参照を処理する方法に関する現在の推奨事項は何ですか? この場合は、別のSQL Server 2005インスタンスを扱っています。 私たちがリンクしているデータベースには、私たちが決して使ったことのないたくさんのテーブルがあります。 そのため、可能であれば、そのDBのスキーマ全体をプルダウンする必要性を避けたいと思います。

検索したときに見つけた情報は古くなっているようです。 GDRは去年の間にそれほど大きく変わりました、そして今obosleteである以前のCTPバージョンからそこにたくさんのガイダンスがあります。

2 回答


2


私はついにこれを解決しました。 BIDataWhseという名前のデータベースプロジェクトを作成し、bpスキーマを追加し、bpユーザーを追加し、そしてbp.vendorsテーブル定義を追加しました。 それからそのプロジェクトをコンパイルし、私がエラーを受けていたプロジェクトへのdb参照を追加しました。 参考文献では、サーバーとデータベースの変数を指定し、変数の置換を許可しています。 結果のコードは次のとおりです。

SELECT VendorID INTO #tmpVendors [$(DataWhse)]。[$(BIDataWhse)]。BP.Vendors WHERE EffectiveDate <DATEADD(日、-1、DATEADD(月、1、CAST(LTRIM(RTRIM(CAST(@Month AS)) CHAR(2)))) '/ 01 /' CAST(@YEAR AS CHAR(4)AS DATETIME)))および有効期限> CAST(LTRIM(CTRT(CAST(@Month AS CHAR(2)))) '/ 01 / 'キャスト(日付としてASY CHAR(4))


2


この状況を拡大するために、Add Database Referenceがほとんどの作業をあなたの代わりにします。 リンクされたデータベース用のプロジェクトを作成し、データベースからdbスキーマをインポートする必要があります(またはデータベース全体を実行したくない場合は、必要なテーブル用のスクリプトをインポートします)。 「参照で、サーバーとデータベースに変数を指定し、変数の置換を許可する」 - これは、[Add DB Ref]ダイアログで、[Define Server Variable]、[Define Database Variable]、および[Update Schema Objects and Scripts]を確認できることを意味します。 変数の名前を入力し(変数を$(..)で囲みます)、置き換えたい値(デプロイメントスクリプトが生成されたときに挿入する実際のサーバー/データベース名)を入力します。 [更新]オプションを選択すると、プロジェクトを通過し、すべてのスクリプトを編集してサーバー/データベース名を変数に置き換えます。 クール。