HK1*_*HK1 12 sql-server sql-server-2008
I've been finding SQL Server schemas to be very confusing. Maybe you guys can help me clear up some confusion. I'm using SQL Server 2008 Express and MS SQL Server 2008 Management Studio but I think my questions are relevant to any MS SQL Server 2008 version. I've been experimenting with different databases and different instances of SQL Server on different servers. For example, I've been doing some work on our company server but I've also been working quite a bit with some databases on my shared web hosting server. This might be part of the reason I've entered into some of the confusion.
1)这个模式名称来自哪里?我想几周前我第一次开始搞乱SQL Server时,我没有看到任何模式名称附加到表名.我在导入数据库或使用MS Access Migration Assistant时开始看到它们.有可能根本不使用模式吗?他们在某些情况下不会出现吗?
2)架构名称不是"dbo"?在最近的项目中,我的模式已显示为MyLongUserName.tablename而不是dbo.tablename.我很困惑为什么有时用户帐户似乎默认为dbo架构,有时候它被分配给与用户帐户同名的架构.这与使用NT身份验证与SQL Server身份验证登录有什么关系吗?
3)用户名为dbo?我不记得在我正在使用的数据库中创建一个名为dbo的用户,但是我在用户列表中看到了它.用户帐户"dbo"是否必须存在才能存在架构"dbo"?用户名和模式名称是否始终并行?
4)是否使用模式 - 你能不能使用它们?您是否将基础网站的小型项目(例如两个或三个表数据库)用于模式?您可以完全避免使用模式,还是仅使用默认的"dbo"模式?即使在非常小的项目中,您是否会创建其他架构并为其分配某些权限和用户帐户?
我一直在使用Murach的SQL Server 2008 for Developers这本书,我没有发现它对于消除我的困惑过于有用.我正在阅读如下句子:"如果在创建对象时未指定架构,则它们将存储在默认架构中." 等等,我怎么知道"默认架构"是什么?我们是在谈论用户帐户的默认架构还是每个数据库都有"默认架构"?它总是"dbo"吗?为什么我创建对象时是将它们分配给模式MyLongUserName而不是"dbo"?
Ric*_*iwi 14
您可能希望从阅读本文开始:SQL Server架构有什么用处?
从SQL Server 2005开始,模式与用户分开http://msdn.microsoft.com/en-us/library/ms190387.aspx.
在此之前,每个用户拥有几个表,这些表将在他们的"空间"中.那个"空间"现在是一个模式,这是一种分组表的方法.
SQL Server对象的名称有4个部分
无论何时省略其中一个或多个,都是从右边命名
"dbo"是一个特殊的架构,它是数据库所有者.它存在于每个数据库中,但您可以将模式(如文件夹)添加到数据库中
如果从较旧的SQL Server 2000 dbs安装迁移到2005或更高版本,则可以引入模式命名为用户,因为用户"拥有"了这些表.