I understand this is an old thread, but I needed an answer to this question, so maybe someone else is doing this ...
Obviously, the same key / index names and control constraint names can indeed be repeated in different schemes in the same database, so I agree with the above comments and I see no reason to add the scheme name as part of the constraint name
eg. The following code works in SQL 2012 and 2008 R2 without errors
-- create a table in the dbo schema, with primary key CREATE TABLE dbo.Children ( id_Child int IDENTITY(1,1) NOT NULL, ChildName varchar(50) NULL, id_Parent int NOT NULL, CONSTRAINT PK_Children PRIMARY KEY CLUSTERED (id_Child ASC) ) GO -- now an index and a check constraint CREATE NONCLUSTERED INDEX IX_Children_ChildName ON dbo.Children (ChildName ASC) GO ALTER TABLE dbo.Children WITH CHECK ADD CONSTRAINT CK_Children_LongEnough CHECK (len([ChildName])>(3)) GO -- now create another schema CREATE SCHEMA test AUTHORIZATION dbo GO -- an indentical table in the other schema, with a PRIMARY KEY OF THE SAME NAME CREATE TABLE test.Children ( id_Child int IDENTITY(1,1) NOT NULL, ChildName varchar(50) NULL, id_Parent int NOT NULL, CONSTRAINT PK_Children PRIMARY KEY CLUSTERED (id_Child ASC) ) GO -- now an index and a check constraint on the alternate table in another schema, with -- the IDENTICAL NAMES CREATE NONCLUSTERED INDEX IX_Children_ChildName ON test.Children (ChildName ASC) GO ALTER TABLE test.Children WITH CHECK ADD CONSTRAINT CK_Children_LongEnough CHECK (len([ChildName])>(3)) GO
source share