① sql server数据库,如何查找所有用户默认的schema
sys.database_principals视图包含所有数据库用户的默认架构,default_schema_name列即为默认架构,这个很容易理解,执行一下看看效果吧
SELECT * FROM sys.database_principals
② 在sql中sys.与dbo.有什么区别,是一个指架构一个指表吗
架构是指包含表、视图、过程等的容器。
sys是包含系统对象的架构。
dbo是用户默认架构,sysadmin 固定服务器角色的所有成员都有默认架构 dbo.
③ sql数据库架构的问题
sample并不是什么架构名,SQL Server也没有这一说。
sample是一个用户名,book这个表属于这个用户而不是默认的dbo用户,当你把数据库附加到本地的时候,并没有把sample这个用户名也加进来,产生孤立用户,所以会这样。
两种解决办法
1。把book表的所有者改为dbo
方法一:右键点击该表-》设计表,在上面的一排小图标中,点最后一个“条件约束”,点“表”页,在里面更改所有者。(若没有条件约束的小图标,可以点右键,能看到一个“check约束”的选项) 方法二:利用脚本直接执行,用sa登陆到该数据库,然后执行下面语句: sp_configure 'allow updates','1'
go
reconfigure with override
go
update sysobjects set uid=1 where uid<>1
go
sp_configure 'allow updates','0'
go
reconfigure with override
2。新建login,将数据库中指定的 user 链接到 login,用新的login登录就可以直接
select * from Book。
④ sql中 dbo 是什么意思
DBO是每个数据库的默认用户,具有所有者权限,即DbOwner。
通过用DBO作为所有者来定义对象,能够使数据库中的任何用户引用而不必提供所有者名称。比如:你以User1登录进去并建表Table,而未指定DBO,
当用户User2登进去想访问Table时就要知道这个Table是User1建立的,要写上User1.Table,如果不知道是User1建的,则访问会有问题。
如果建表时把所有者指给了Dbo,则别的用户进来时写上Dbo.Table就行了,不必知道User1。不光表是如此,视图等等数据库对象建立时也要如此才算是好。
(4)sql默认架构名字扩展阅读
sql数据库中系统语言的作用
1、查询数据库中都有哪些数据库
select*fromdbo.sysdatabases
2、查询用户创建的数据库中有哪些用户创建的表
select*fromSysobjectswherextype='U'
3、查询用户创建的数据库中有哪些用户创建的存储过程
select*fromSysobjectswherextype='P'
4、批量生成删除数据库中所有用户表的sql语句
select'droptable'+namefromSysobjectswherextype='U'
⑤ sql server中的架构是什么意思
在sqlserver 2005中,可能大家在工作或学习的时候会经常发现这样一些问题,你使用一个账户在数据库中创建了一张表,却发现你自己创建的表却没有修改和查询的权限,这是一件很郁闷的事情,在sqlserver2000中却不存在这样的问题,那为什么在2005中会出现这样的事情,这样的设置可以带来哪些好处?其实导致这一问题的原因主要在于2005中多了一个新的概念—架构。
首先我们来看一下msdn中对架构的定义:架构(Schema)是形成单个命名空间的数据库实体的集合。命名空间是一个集合,其中每个元素的名称都是唯一的。在这里,我们可以将架构看成一个存放数据库中对象的一个容器。
架构实际上在sqlserver2000中就已经存在,当我们使用查询分析器去查询一个表的时候,一个完整的表的名称应该包括服务器名.数据库名.用户名.对象名,而在sqlserver2005中一个表的完全限定名称应该为服务器名.数据库名.架构名.对象名
在2000中,假如有一个账户tt在test数据库中创建了一张表table1的时候,在服务器上对查询的语句应为select * from test.tt.table1,也就是说,在sqlserver 2000中一张表所属的架构默认就是表的创建者的登录名称,用户可以和修改他所创建的所有数据库对象。但在2005中已经将用户和其创建对象所属架构的关联取消了,而加入了一个全新的架构体系,这样做的优点主要在于下面几个方面:
1. 多个用户可以通过角色(role)或组(Windows groups)成员关系拥有同一个架构。
2. 删除数据库用户变得极为简单。
3. 共享缺省架构使得开发人员可以为特定的应用程序创建特定的架构来存放对象,这比仅使用管理员架构(DBO schema)要好。
4. 在架构和架构所包含的对象上设置权限(permissions)比以前的版本拥有更高的可管理性。
5. 区分不同业务处理需要的对象,例如,我们可以把公共的表设置成pub的架构,把销售相关的设置为sales,这样管理和访问起来更容易.