我在SQL Sever 2005的Management Studio中,用sa进去创建出来的表都是dbo.Tablename, 我现在想创建一个不是dbo的表, 我新建一个Login 叫LoginTest1, 在它的Mapping中选中要创建表的数据DbTest1, 然后在DbTest1里创建一个User 叫 UserTest1, 在这个数据库的Database Role里创建一个RoleTest1,把UserTest1设为RoleTest1,RoleTest1的Owner属性不设为dbo(默认是dbo),而是设为db_owner.
然后就用LoginTest1进去,打开DbTest1,创建一个表叫做Table_Test1,但它的全名还是叫做dbo.Table_Test1,而不是我预计的db_owner.Table_Test1.为什么?
哪一步错了?
应该怎样才能创建出db_owner.Table_Test1?
然后就用LoginTest1进去,打开DbTest1,创建一个表叫做Table_Test1,但它的全名还是叫做dbo.Table_Test1,而不是我预计的db_owner.Table_Test1.为什么?
哪一步错了?
应该怎样才能创建出db_owner.Table_Test1?
写建表语句就OK!
上面所说的dbo.Table中,dbo是Schema名,Table是表名。在2005中,用户权限里有个“默认Schema”:
如果你在建表的时候只给表名的话,那么表的Schema就是这个用户对应的默认Schema。
比如说:Create Table Table1。
如果在建表的时候指定Schema,那么表的Schema就是你指定的架构了。
比如说:Create Table Sch_1.Table1。当然,这里面还有很多复杂的权限需要设置,具体的可以查看2005的帮助(Create Table)。
在系统视图里有Information_Schema的,那个就是Schema。到了2005后就有了Schema的概念了。
CREATE SCHEMA [db_owner] AUTHORIZATION [所有者,也就是某个用户]
GO创建好这个以后你想使用这个架构建表必须先拥有这个架构的使用权限
sa这个用户就不用授权了以后建什么东东记得加上这个[db_owner]你如
CREATE TABLE db_owner.table1CREATE PEOCDEURE db_owner.proc就是这样了