2011-09-22 4 views
4

Je pensais que les schémas sont des instances d'espaces de noms et donc la même table créée sous 2 schémas différents sont 2 objets différents du point de vue de la base de données. Un de mes collègues prétend que les schémas ne sont rien d'autre qu'un conteneur de sécurité, donc nous pouvons créer la même table dans différents schémas. Est-ce vrai?SQL Server: la même table peut exister dans plusieurs schémas

+1

Le passage entre le propriétaire de schéma a été dans SQL 2005 http://www.sqlteam.com/article/understanding-the-difference-between-owners-and-schemas-in-sql-server – StuartLC

Répondre

9

Vous avez raison.

CREATE TABLE foo.T 
(
c int 
) 

et

CREATE TABLE bar.T 
(
c int 
) 

crée 2 objets séparés. Vous pouvez créer un synonymebar.T que les alias foo.T cependant.

CREATE SCHEMA foo 
GO 
CREATE SCHEMA bar 
GO 
CREATE TABLE foo.T(c INT) 
GO 
CREATE SYNONYM bar.T FOR foo.T; 
INSERT INTO foo.T VALUES (1); 
SELECT * FROM bar.T; 
+1

+1 pour mentionner le synonyme –

0

myschema.table1 est différent de celui yourschema.table1

1

Ils sont 2 objets différents, vérifier object_id

1

Oui, il peut. Il suffit de l'essayer

CREATE SCHEMA OneSchema AUTHORIZATION dbo; 
CREATE SCHEMA TwoSchema AUTHORIZATION dbo; 
CREATE TABLE dbo.SomeTable (foo int); 
CREATE TABLE OneSchema.SomeTable (foo int); 
CREATE TABLE TwoSchema.SomeTable (foo int); 

Un schéma est à la fois un sécurisable et une partie du « espace de noms »

Questions connexes