SSMSで奇妙な不具合が発生したに違いないと思います。 SSMS 2014を使用して、エラーなしでスキーマを作成できました。新しいFKを追加するときに、3つの複合主キー列を事前に入力しました。 FKに2つの列を追加する前に、それらがすべて空白になっていることを確認するように注意しました。 SSMSは、空白行の1つにまだデータが含まれていると考えた可能性があります。
編集:もう1つ考えてみましたが、SSMSは、テーブルの編集時に行われた変更をキャッシュすることを知っています。たとえば、2つのテーブルを変更し、両方の編集ウィンドウを開いている場合です。次に、1つのウィンドウでPKを変更し、2番目のウィンドウでそれを参照しようとすると、ウィンドウが最初に開かれたときの最初のテーブルのスキーマがキャッシュされているため、エラーが発生します。
これが私の生成されたDDLです:
CREATE TABLE [dbo].[AppRegion](
[appname] [nvarchar](50) NOT NULL,
[isocode] [char](5) NOT NULL,
CONSTRAINT [PK_AppRegion] PRIMARY KEY CLUSTERED
(
[appname] ASC,
[isocode] ASC
)
) ON [PRIMARY]
CREATE TABLE [dbo].[Translation](
[ResourceKey] [nvarchar](128) NOT NULL,
[appname] [nvarchar](50) NOT NULL,
[isocode] [char](5) NOT NULL,
[text] [nvarchar](400) NULL,
CONSTRAINT [PK_Translation] PRIMARY KEY CLUSTERED
(
[ResourceKey] ASC,
[appname] ASC,
[isocode] ASC
)
) ON [PRIMARY]
ALTER TABLE [dbo].[Translation] ADD CONSTRAINT [FK_Translation_AppRegion] FOREIGN KEY([appname], [isocode])
REFERENCES [dbo].[AppRegion] ([appname], [isocode])