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”?
解决方法
从sql Server 2005起,模式与用户http://msdn.microsoft.com/en-us/library/ms190387.aspx分离.
在此之前,每个用户拥有几个表,它们将在它们的“空格”中.那个“空间”现在是一个模式,它是一种分组表的方式.
> server.database.schema.objectname
每当你省略一个或多个,你从右边命名它
> database.schema.objectname – 隐含的当前服务器
> schema.objectname – 隐含的当前数据库
> objectname – 隐含的默认模式.每个用户可以被分配一个默认模式,但默认情况下这将是“dbo”
“dbo”是一个特殊的模式,它是数据库所有者.它存在于每个数据库中,但您可以将模式(如文件夹)添加到数据库
如果从旧版安装的sql Server 2000 dbs迁移到2005或更高版本,那么您可以将用户名称作为用户带入,因为用户“拥有”表.