2011-09-22 102 views
4

我认为这些模式是名称空间实例,因此在2个不同模式下创建的同一个表是从数据库的角度看2个不同的对象。我的一位同事声称模式不过是一个安全容器,因此我们可以用不同的模式创建相同的表。这是真的?SQL Server:同一张表是否可以存在于多个模式中

+1

所有者之间的转换,以架构是在2005年SQL http://www.sqlteam.com/article/understanding-the-difference-between-owners-and-schemas-in-sql-server – StuartLC

回答

9

你是正确的一部分。

CREATE TABLE foo.T 
(
c int 
) 

CREATE TABLE bar.T 
(
c int 
) 

创建2个独立的对象。您可以创建一个同义词bar.T,但别名为foo.T

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提及同义词 –

0

myschema.table1不同于yourschema.table1

1

他们是2个不同的对象,检查OBJECT_ID

1

是的,可以。只是尝试

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); 

模式是一个既能够固定的“命名空间”

相关问题