社区
疑难问题
帖子详情
CREATE SCHEMA 有什么用处
pojia
2008-03-07 02:36:27
SCHEMA 有什么用处
...全文
237
2
打赏
收藏
CREATE SCHEMA 有什么用处
SCHEMA 有什么用处
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
2 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
pojia
2008-03-07
打赏
举报
回复
怎么访问???
select * from Sprockets.NineProngs
select * from dbo.NineProngs
select * from NineProngs
sxc1001
2008-03-07
打赏
举报
回复
在当前数据库中创建架构。CREATE SCHEMA 事务还可以在新架构内创建表和视图,并可对这些对象设置 GRANT、DENY 或 REVOKE 权限。
Transact-SQL 语法约定
语法
CREATE SCHEMA schema_name_clause [ <schema_element> [ , ...n ] ]
<schema_name_clause> ::=
{
schema_name
| AUTHORIZATION owner_name
| schema_name AUTHORIZATION owner_name
}
<schema_element> ::=
{
table_definition | view_definition | grant_statement
revoke_statement | deny_statement
}
备注
注意:
允许包含 CREATE SCHEMA AUTHORIZATION 但不指定名称的语句存在,目的只是为了向后兼容。
CREATE SCHEMA 可以创建架构以及此架构包含的表和视图,并可对单个语句中的任何安全对象授予、撤消或拒绝授予权限。此语句必须作为单独的批处理执行。
CREATE SCHEMA 事务是原子级的。如果在 CREATE SCHEMA 语句执行期间出现任何错误,则不创建指定的任何安全对象,也不授予任何权限。
由 CREATE SCHEMA 创建的安全对象可以任何顺序列出,但引用其他视图的视图除外。在这种情况下,被引用的视图必须在引用它的视图之前创建。
因此,GRANT 语句可以在创建某个对象之前对该对象授予权限,CREATE VIEW 语句也可以出现在创建该视图所引用表的 CREATE TABLE 语句之前。同样,CREATE TABLE 语句中声明的外键可以指向后面指定的表。例外情况是,如果一个视图的选择语句引用另一个视图,则必须在指定引用视图之前指定被引用的视图。
由 CREATE SCHEMA 语法创建的对象将在正创建的架构内创建。
注意:
在 SQL Server 2005 中,CREATE SCHEMA 语句中支持 DENY 和 REVOKE。DENY 和 REVOKE 子句将按照它们在 CREATE SCHEMA 语句中出现的顺序执行。
可将不同的数据库主体指定为正在创建的架构的所有者。但是,如本主题中后面的“权限”部分所述,还需满足其他权限要求。
新架构由以下数据库级别主体之一拥有:数据库用户、数据库角色或应用程序角色。在架构内创建的对象由架构所有者拥有,这些对象在 sys.objects 中的 principal_id 为空。架构所包含对象的所有权可转让给任何数据库级别主体,但架构所有者始终保留对此架构内对象的 CONTROL 权限。
不推荐使用的声明
支持不指定架构名称的 CREATE SCHEMA 语句,目的只为了向后兼容。在 SQL Server 的未来版本中将删除此功能。此类语句并不在数据库中实际创建架构,但它们会创建表和视图,并授予权限。主体不需要 CREATE SCHEMA 权限来执行这一早期格式的 CREATE SCHEMA,因为不会创建任何架构。
参数
schema_name
在数据库内标识架构的名称。
AUTHORIZATION owner_name
指定将拥有架构的数据库级主体的名称。此主体还可以拥有其他架构,并且可以不使用当前架构作为其默认架构。
table_definition
指定在架构内创建表的 CREATE TABLE 语句。执行此语句的主体必须对当前数据库具有 CREATE TABLE 权限。
view_definition
指定在架构内创建视图的 CREATE VIEW 语句。执行此语句的主体必须对当前数据库具有 CREATE VIEW 权限。
grant_statement
指定可对除新架构外的任何安全对象授予权限的 GRANT 语句。
revoke_statement
指定可对除新架构外的任何安全对象撤消权限的 REVOKE 语句。
deny_statement
指定可对除新架构外的任何安全对象拒绝授予权限的 DENY 语句。
权限
需要对数据库具有 CREATE SCHEMA 权限。
若要创建在 CREATE SCHEMA 语句中指定的对象,用户必须具有相应的 CREATE 权限。
若要指定其他用户作为所创建架构的所有者,则调用方必须具有对此用户的 IMPERSONATE 权限。如果将数据库角色指定为所有者,则调用方必须具有下列资格之一:角色的成员身份或对此角色的 ALTER 权限。
注意:
对于向后兼容的语法,将不针对 CREATE SCHEMA 检查任何权限,因为不创建任何架构。
示例
以下示例将创建由 Annik 拥有的、包含表 NineProngs 的 Sprockets 架构。此语句向 Mandar 授予 SELECT 权限,而对 Prasanna 拒绝授予 SELECT 权限。请注意,Sprockets 和 NineProngs 在一个语句中创建。
复制代码
USE AdventureWorks;
CREATE SCHEMA Sprockets AUTHORIZATION Annik
CREATE TABLE NineProngs (source int, cost int, partnumber int)
GRANT SELECT TO Mandar
DENY SELECT TO Prasanna;
GO
create
schema
与
create
database的区别
主题:关于
create
schema
和
create
database 老师,您好! 概论第四版中增加了...相反目前在大多数DBMS中(如SQL Server2000、Mysql等)都有
create
database语句用来新建数据库,而
create
schema
在SQL Server200
Create
Schema
的使用体会
Create
Schema
语句是SQL99的一个特性。ORACLE中描述其作用是在你自己的
schema
内在单个事务里完成多个表和视图的创建以及多个授权(Use the
CREATE
SCHEMA
statement ...
create
schema
authorization命令_有了这个开源项目,再也不会忘记 Linux 命令啦~
本文转自公众号 开源最前线(ID:...但是,熟练使用命令行是一种常常被忽视或被认为难以掌握的技能,有的程序员即便每天使用许多Linux命令行,但是由于没有持续性练习,经常就容易忘。为了帮助大家解决以上难题,今天...
postgresql创建
schema
schema
概念有点像命名空间或者把它想像成一个文件系统中的目录,差别就是这...使用
schema
的作用 方便管理多个用户共享一个数据库,但是又可以互相独立.方便管理众多对象,更有逻辑性.方便兼容某些第三方应用程序,创建对象
mysql 保存索引
create
schema
_MySQL 创建索引和索引效率验证
项目中总会有一些表数据量非常大,并且在使用过程中,需要频繁地到这些表中查询数据。数据量大的时候,查询速度会明显变慢,这时候就需要对查询速度进行优化了。优化的方式很多,一个比较简单且低成本的方式就是创建...
疑难问题
22,209
社区成员
121,730
社区内容
发帖
与我相关
我的任务
疑难问题
MS-SQL Server 疑难问题
复制链接
扫一扫
分享
社区描述
MS-SQL Server 疑难问题
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章