Мисля, че трябва да сте ударили странен бъг в SSMS. Успях да създам вашата схема с помощта на SSMS 2014 без никакви грешки. Той попълни предварително трите съставни колони с първичен ключ при добавяне на новия FK. Бях внимателен, за да се уверя, че всички са празни, преди да започна да добавя двете колони във FK. Може би SSMS смяташе, че в един от празните редове все още има данни.
Редактиране:Просто имах още една мисъл, SSMS е известен за кеширането на всички промени, направени при редактиране на таблица. Например, ако отидете да промените две таблици и имате отворени и двата прозореца за редактиране. След това променяте PK в един прозорец и след това се опитвате да го препратите във втория прозорец, той ще сгреши, защото е кеширало каква е била схемата за първата таблица, когато прозорецът е бил отворен за първи път.
Ето моя генериран 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])