关于SQL Server2005/2008中架构的理解

最近遇到一个案例,原本运行在SQL Server 2000数据库下的一个系统,由于数据量日渐增大,性能有所下降,所以打算迁移到SQL Server 2008 (64位)下使用.
结果,原本正常的功能却提示:数据库中已存在名为 'sRptRPT01' 的对象 ----注:sRptRPT01是存储过程名字.
关注了一下,SQL Server 2005/2008新增了架构的概念,联想到Oracle数据库"模式"(schema)的概念,猜测到这里所说的"架构"就是指schema,是指特定数据库用户所拥有的全体对象的抽象集合,通常与用户名同名(但SQL Server 2005/2008中可以架构名与用户名不同).
简单做了几个场景的试验,得知:

场景1:

安全性/登录,下面新建登录,hsvip,选上数据库DB_Vip50,默认架构dbo,这样自动有了数据库下的用户;
然后,数据库下架构,创建hsvip架构属于hsvip用户;
最后,修改hsvip用户,修改其默认架构为hsvip(修改了数据库/用户下的默认架构后再看没保存住,则需要安全性/登录下面,用户映射里面改架构)。
这样就配置成兼容SQL2000的模式,主要关注其创建/删除表对于所有者的处理细节,
create table tbl_1  或者  hsvip.tbl_1 都是创建hsvip的表
create table dbo.tbl_1 是创建dbo的表
drop table 可以删除hsvip的表,也可以删除dbo的表,优先删除hsvip的表

场景2:
安全性/登录,下面新建登录,hsvip,选上数据库DB_Vip50,默认架构dbo,这样自动有了数据库下的用户
create table hsvip.tbl_1(col1 varchar(10))
服务器: 消息 2760,级别 16,状态 1,行 1
指定的架构名称 "hsvip" 不存在,或者您没有使用该名称的权限。
create table tbl_1 (col1 varchar(10)) 可以执行,将创建上dbo的表。
可以drop table tbl_1删除

场景3:

安全性/登录,下面新建登录,hsvip,选上数据库DB_Vip50,默认架构dbo,这样自动有了数据库下的用户
然后,数据库下架构,创建hsvip架构属于hsvip用户
create table tbl_1  或者  dbo.tbl_1 都是创建dbo的表
create table hsvip.tbl_1 是创建hsvip的表
drop table tbl_1 可以删除dbo的表
但删除hsvip的一定要加hsvip.否则:
服务器: 消息 3701,级别 11,状态 5,行 1
无法对 表 'tbl_1' 执行 删除,因为它不存在,或者您没有所需的权限。

最终,使用场景1的配置方案,使系统正常使用.

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/29512902/viewspace-1151745/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/29512902/viewspace-1151745/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值