如何创建一个不属于dbo的表?
我在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?
------解决方案--------------------偶也想知道.怎么回事.一直就想问.但怕被人骂说这个这么简单也不知道~
------解决方案--------------------不要用sa登錄
------解决方案--------------------DBO,在数据库中权限是最高的,哪个表他都有权限访问
------解决方案--------------------SQL Server 2005 还引入了“默认架构”的概念,用于解析未使用其完全限定名称引用的对象的名称。在 SQL Server 2000 中,首先检查的是调用数据库用户所拥有的架构,然后是 DBO 拥有的架构。在 SQL Server 2005 中,每个用户都有一个默认架构,用于指定服务器在解析对象的名称时将要搜索的第一个架构。可以使用 CREATE USER 和 ALTER USER 的 DEFAULT_SCHEMA 选项设置和更改默认架构。如果未定义 DEFAULT_SCHEMA,则数据库用户将把 DBO 作为其默认架构。
------解决方案--------------------新建一个所有者呀.
------解决方案--------------------先建一个SQL用户(在企业管理器里面的登陆里面,新建一个登陆帐号,然后再把你的数据库相应的权限附给这个帐号,一般都是db_owner,public)然后就在create table user_acc.tablename
写建表语句就OK!
------解决方案--------------------在SQL2005中,表是存在于数据库中的Schema(架构)下的。
上面所说的dbo.Table中,dbo是Schema名,Table是表名。
在2005中,用户权限里有个“默认Schema”:
如果你在建表的时候只给表名的话,那么表的Schema就是这个用户对应的默认Schema。
比如说:Create Table Table1。
如果在建表的时候指定Schema,那么表的Schema就是你指定的架构了。
比如说:Create Table Sch_1.Table1。
当然,这里面还有很多复杂的权限需要设置,具体的可以查看2005的帮助(Create Table)。
------解决方案--------------------首先创建一个Schema
例子
CREATE SCHEMA [db_owner] AUTHORIZATION [所有者,也就是某个用户]
GO
创建好这个以后你想使用这个架构建表必须先拥有这个架构的使用权限
sa这个用户就不用授权了
以后建什么东东记得加上这个[db_owner]
你如
CREATE TABLE db_owner.table1
CREATE PEOCDEURE db_owner.proc
就是这样了
------解决方案--------------------dbo就是db_owner