【发布时间】:2011-06-17 00:02:55
【问题描述】:
我一直发现 SQL Server 架构非常令人困惑。也许你们可以帮助我消除一些困惑。我正在使用 SQL Server 2008 Express 和 MS SQL Server 2008 Management Studio,但我认为我的问题与任何 MS SQL Server 2008 版本有关。我一直在不同服务器上试验不同的数据库和不同的 SQL Server 实例。例如,我一直在我们公司的服务器上做一些工作,但我也一直在我的共享网络托管服务器上处理一些数据库。这可能是我陷入某些困惑的部分原因。
1) 这个架构名称是从哪里来的? 我想当我几周前第一次开始使用 SQL Server 时,我没有看到任何附加到表名称的架构名称。当导入数据库或使用 MS Access 迁移助手时,我开始看到它们。有可能根本不使用模式吗?他们在某些情况下不会出现吗?
2) 架构名称不是“dbo”?在最近的一个项目中,我的架构一直显示为 MyLongUserName.tablename 而不是 dbo.tablename。我很困惑为什么有时用户帐户似乎默认为 dbo 模式,而其他时候它被分配给与用户帐户同名的模式。这与使用 NT 身份验证与 SQL Server 身份验证登录有什么关系吗?
3) 名为 dbo 的用户? 我不记得在我当前正在使用的数据库中创建了一个名为 dbo 的用户,但我在用户列表中看到了它。是否必须存在用户帐户“dbo”才能使模式“dbo”存在?用户名和架构名称总是平行的吗?
4) 是否使用模式 - 你能不使用它们吗? 你是否将模式用于小型项目,例如用于基本网站的两表或三表数据库?您可以完全避免使用模式还是只使用默认的“dbo”模式?即使在非常小的项目中,您也会创建额外的架构并为其分配某些权限和用户帐户吗?
我一直在使用Murach 为开发人员编写的 SQL Server 2008 书,我发现它对于消除我的困惑并没有太大帮助。我正在阅读这样的句子:“如果您在创建对象时没有指定架构,它们将存储在默认架构中。”等等,怎么做我知道“默认架构”是什么?我们是在谈论用户帐户的默认架构还是每个数据库都有“默认架构”?它总是“dbo”吗?为什么当我创建对象时,它会将它们分配给模式 MyLongUserName 而不是“dbo”?
【问题讨论】:
标签: sql-server sql-server-2008