Ik denk dat je een rare glitch in SSMS hebt geraakt. Ik heb je schema zonder fouten kunnen maken met SSMS 2014. Het heeft de drie samengestelde primaire-sleutelkolommen vooraf ingevuld bij het toevoegen van de nieuwe FK. Ik zorgde ervoor dat ze allemaal waren weggelaten voordat ik de twee kolommen in de FK begon toe te voegen. Misschien dacht SSMS dat een van de lege rijen nog gegevens bevatte.
Bewerken:Ik had nog een gedachte, SSMS staat bekend om het cachen van wijzigingen die zijn aangebracht bij het bewerken van een tabel. Als u bijvoorbeeld twee tabellen gaat wijzigen en beide bewerkingsvensters open hebt staan. Dan verander je de PK in het ene venster en probeer je ernaar te verwijzen in het tweede venster, het zal een fout geven omdat het in de cache heeft opgeslagen wat het schema was voor de eerste tabel toen het venster voor het eerst werd geopend.
Hier is mijn gegenereerde 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])