sqlserver2008,创建一个用户和对应一个架构,只对这个架构下的表有访问权限,该选哪个数据库角色?

WYhack 2012-09-04 10:14:56
sqlserver2008,创建一个用户和对应一个架构,只对这个架构下的表有访问权限,该选哪个数据库角色?

或者是怎么设置?

还有一个问题就是,同一个数据库中,分别用多个架构建表(oracle中经常这样做)

,除了逻辑上清晰之外,这样有什么好处?跟把这些不同架构的表分别建库对比,有什么优势?

我的理解是,对于关联系不太强的表之间,没必要建在同一个库中,因为比如A系统的有20张表,B系统中30张表

A系统访问B系统中的两张表,可以建在同一个库中,也可以分别建库。

倘若是A系统数据量比较小,B系统的数据量比较大,首选备份策略可能就不一样,

另外,对于A访问B的表的问题,我认为通过新建账号更好,因为假如授权的话,对A授权B的其中两张表的访问权限,
这样绕来绕去,感觉有点乱啊,


[img=http://img.my.csdn.net/uploads/201209/04/1346767903_8126.JPG]

[/img]







---------------------------------------------------隔离广告--------------------------------------------------------
...全文
2415 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
我也是想问这个问题???求高人指教啊
Mr_Nice 2012-09-04
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 的回复:]

引用 1 楼 的回复:

SQL code
CREATE LOGIN Lg_for_test WITH PASSWORD = 'F@r-Test'
GO

CREATE DATABASE ForTest
GO

USE ForTest
GO

CREATE USER u_for_test FOR LOGIN Lg_for_test
GO

CREATE SCHEM……
[/Quote]

就目前看到的版本截止2012版本,也还没有达到orcle在这块的管理功能。

呵呵。
WYhack 2012-09-04
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]

SQL code
CREATE LOGIN Lg_for_test WITH PASSWORD = 'F@r-Test'
GO

CREATE DATABASE ForTest
GO

USE ForTest
GO

CREATE USER u_for_test FOR LOGIN Lg_for_test
GO

CREATE SCHEMA NewSchema
go

CREATE TABLE……
[/Quote]


就是没办法想oracle那样,创建一个账号,这个账号可以创建表,sp等等,这些对象的默认架构是NewSchema

相对于其他“平行”权限的账号的对象是“隔离”的?就是不能互相访问其他的表(包括dbo)

感谢!
發糞塗牆 2012-09-04
  • 打赏
  • 举报
回复
SQLServer里面架构主要起到安全性的作用,比如人力的表,用HR.XXX,财务的表,用FI.XXX,一是容易标识。二是,对每个部分做权限管理,就像你标题那样,人力系统一般不需要访问财务的表,这样就可以使得财务的数据不容易受到损害或者不容易被知道(因为财务的数据比较敏感)。共用的数据,架构可以设为dbo,对于规模比较大,业务比较复杂的系统,个人还是建议使用架构区分。架构你可以理解为【数据库名】.【架构】.【表名】。SQLServer在后续版本越来越强调,所以还是有它的重要性。当然小系统就没必要了。
Mr_Nice 2012-09-04
  • 打赏
  • 举报
回复
另外,就目前的使用情况来看,不建议在一个库中使用架构来分离各不同系统的表。

原因:
1、架构的设立,为维护上添加了一层需要处理的权限设定关系。(相对于使用数据库分离和表名称分离来说,耗费人力成本更大;复杂度的增加,发生错误的可能性也增加)

2、实际上跟oracle中的架构还是有比较大的差别。参考http://lovespss.blog.51cto.com/1907593/531976


另外,分库对应系统,还是用同一个库对应不同系统,完全是根据需求而定。
数据量,线上使用数,硬件能力,应用系统关系等等,综合考量下,进行的设定。
Mr_Nice 2012-09-04
  • 打赏
  • 举报
回复
CREATE LOGIN Lg_for_test WITH PASSWORD = 'F@r-Test'
GO

CREATE DATABASE ForTest
GO

USE ForTest
GO

CREATE USER u_for_test FOR LOGIN Lg_for_test
GO

CREATE SCHEMA NewSchema
go

CREATE TABLE T1(id INT,NAME VARCHAR(20))
go

CREATE TABLE NewSchema.T2(Nid int,DD datetime)
go

GRANT SELECT ON SCHEMA :: NewSchema TO u_for_test;

--重新使用Lg_for_test登录即可。

27,582

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧