1. ホーム
  2. sql

[解決済み] マルチパート識別子」とは何ですか、なぜバインドできないのですか?

2022-04-27 20:45:25

質問

別のテーブルを基にテーブルを更新しようとすると、常にこのようなエラーが発生します。結局、クエリを書き直し、結合の順序を変え、グループ化を変更して、最終的にはうまくいくのですが、どうも腑に落ちません。

マルチパート識別子」とは何ですか?

マルチパート識別子」はどのような場合にバインドできないのですか?

何にバインドされるのですか?

どのような場合にこのエラーが発生するのでしょうか?

対策はどのようなものがありますか?

SQL Server 2005の具体的なエラーは。

マルチパート識別子 "..." をバインドできませんでした。

以下はその例です。

UPDATE  [test].[dbo].[CompanyDetail]

SET Mnemonic = [dbBWKMigration].[dbo].[Company].[MNEMONIC], 
               [Company Code] = [dbBWKMigration].[dbo].[Company].[COMPANYCODE]

WHERE [Company Name] = **[dbBWKMigration].[dbo].[Company].[COMPANYNAME]**

実際のエラーです。

Msg 4104, Level 16, State 1, Line 3 The multi-part identifier "dbBWKMigration.dbo.Company.COMPANYNAME"を結合できませんでした。

解決方法を教えてください。

マルチパート識別子とは、フィールドやテーブルに複数のパートを含む記述のことで、たとえば MyTable.SomeRow のように、バインドできない場合は、単純なタイプミスか、テーブルとカラムが混同されているなど、何か問題があることを意味します。 また、テーブル名やフィールド名に予約語を使用し、[]で囲んでいない場合にも発生することがあります。 また、ターゲット・テーブルに必要なカラムがすべて含まれていない場合もあります。

のようなものです。 レッドゲート・プロンプト は手動で入力する手間を省いてくれる優れものですが(外部キーに基づく結合も自動で完了します)、無料ではありません。 SQL server 2008では、redgateバージョンほど完全ではありませんが、intellisenseを最初からサポートしています。