当前位置:首页 » 编程语言 » sql给架构权限
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

sql给架构权限

发布时间: 2023-01-07 20:11:30

sql server 2005 添加架构 需要什么权限

架构的作用与示例

用户与架构(schema)分开,让数据库内各对象不再绑在某个用户账号上,可以解决SQL SERVER 2000及以前版本中“用户离开公司"问题,也就是在拥有该对象的用户离开公司,或离开该职务时,不必要大费周章地更改该用户所有的对象属于新的用户所有。另外,也可让 DBA 在安装某个套装软件时,设置该套装软件所用的数据库对象都属于某个特定的架构,容易区别。也就是说,在单一数据库内,不同部门或目的的对象,可以通过架构区分不同的对象命名原则与权限。
在 SQL Server 2005 /2008中,架构独立于创建它们的数据库用户而存在。可以在不更改架构名称的情况下转让架构的所有权。并且可以在架构中创建具有用户友好名称的对象,明确指示对象的功能。例如,除了 cus.app.entry.customEntry 外,您还可以创建名为 cus.app.manifest.customEntry 的架构。因为“manifest”不是用户,所以从数据库中删除用户后,无需更改此名称。这就简化了数据库管理员和开发人员的工作。
SQL Server 2005/2008 还引入了“默认架构”的概念,用于解析未使用其完全限定名称引用的对象的名称。在 SQL Server 2000 中,首先检查的是调用数据库用户所拥有的架构,然后是 DBO 拥有的架构。在 SQL Server 2005 /2008中,每个用户都有一个默认架构,用于指定服务器在解析对象的名称时将要搜索的第一个架构。可以使用 CREATE USER 和 ALTER USER 的 DEFAULT_SCHEMA 选项设置和更改默认架构。如果未定义 DEFAULT_SCHEMA,则数据库用户将把 DBO 作为其默认架构。
下面的显示SQL Server权限层次结构的图可能会给我们一个直观的认识:

SQL Server 2005/2008 Database Engine 管理着可以通过权限进行保护的实体的分层集合。这些实体称为“安全对象”。在安全对象中,最突出的是服务器和数据库,但可以在更细的级别上设置离散权限。SQL Server 通过验证主体是否已获得适当的权限来控制主体对安全对象执行的操作。

安全对象关系如下图:

下面举个具体的示例来说明以一下架构的作用。

--命令对架构进行操作

use master

go

setuser

go

--创建测试数据库

create database schTest

go

create login df with password='sj1234',default_database=schTest

create login xhl with password='sj1245',default_database=schTest

go

use schTest

go

-- 创建两个用户时没有指定属于哪个架构

create user df for login df

create user xhl for login xhl

-- 这个表没指定属于哪个架构属于默认DBO 架构

go

create table tb1 (姓名 varchar(8),性别 char(2))

go

--这个表就属于sch架构

create schema sch

go

create table sch.tb2(姓名 varchar(8),性别 char(2),年龄 int)

go

-- 赋予schTest这个用户查询sche架构中的对象的权限.

grant select on schema::sch to df

go

setuser 'df' --切换用户df

select * from tb2

-- 此时报告"对象名无效" 是因为没有指定tb2的架构,系统默认为dbo,而我们的tb2属于sch架构.

--带上架构名称,就可以查询了

go

select * from sch.tb2

go

setuser -- 切换到sa

---切换到xhl

setuser 'xhl'

--不能查询,是因为没有权限

select * from sch.tb2

go

setuser --切换sa

--给df用户赋默认架构

alter user df with default_schema=sch

go

setuser 'df' --切换df

-- 此时不需要指定sch 也可以了,如果架构中还有其他对象,也可以查询

select * from tb2

go

setuser --切换sa

--创建第三张测试表,同样的是sch架构下

create table sch.tb3 (id int,uname varchar(8))

go

--切换用户df

setuser 'df'

---可以进行查询

select * from tb3

go

---但是无法进行数据插入,因为没有插入权限

insert into tb3 values (1,'abcde') --拒绝了insert权限

go

setuser

--赋插入权限

grant insert on schema::sch to df

--切换用户df

setuser 'df'

go

---可以进行数据插入

insert into tb3 values (1,'abcde') --OK!

---查询结果

select * from tb3

GO

Grant alter on schema::sch to df -- 使schTest 这个用户对所有的架构都有可更改的能力。

--错误

--无法对sa、dbo、实体所有者、information_schema、sys 或您自己授予、拒绝或撤消权限。

GO

Use master

go

Grant control server to df -- 使schTest这个用户能够控制服务器。

--错误

--无法对sa、dbo、实体所有者、information_schema、sys 或您自己授予、拒绝或撤消权限。

setuser

go

use schtest

go

--创建架构sch1

create schema sch1

go
-- 修改对象的架构tb2表的架构由sch 转移到sch1

alter schema sch1 transfer sch.tb2

go

--创建一个新用户,同时指定默认schema,默认属于DBO

create login yhy with password='sj1234',default_database=master

GO

use schTest

GO

create user yhy for login yhy with default_schema=sch --属于sch

--切换用户yhy

setuser 'yhy'

--查询表,对象名'tb2' 无效。

select * from tb2

go

setuser

--赋架构权限

grant select on schema::sch1 to yhy

--切换用户yhy

setuser 'yhy'

go

select * from tb2 ---还是无效,因为不在同一个schema

go

setuser

go

alter user yhy with default_schema=sch1 --更改yhy的默认架构

GO

--由于yhy不是当前用户,所以无法进行查询

select * from tb2

--显示当前用户

GO

select user

GO

--切换用户yhy

setuser 'yhy'

-- 此时就可以进行查询了,如果架构中还有其他对象,也可以查询

go

select * from tb2

--显示当前用户

select user

go

--切换用户

Setuser

--切换用户为df

setuser 'df'

-- 此时由于tb2的架构由sch变为了sch1,所以df就不可以查询tb2了

go

--查询报错
select * from tb2

--显示当前用户
select user

go

setuser

go

use master

go

---删除用户

drop user df

drop user xhl

drop user yhy

---删除登录名

drop login df

drop login yhy

drop login xhl

--删除数据库

drop database schTest

Ⅱ 怎么设置SQL数据库用户权限

设置SQL数据库用户权限的方法如下: 点击进入数据库级别的“安全性”、“登录名”、“新建登录名”;在“常规”选项卡中,创建登陆名,并设置默认的数据库;在“用户映射”选项卡中,勾选需要设置的数据库,并设置“架构”,点击“确认”按钮,完成创建用户的操作;在“权限”选项卡中,依次点击“添加”、“浏览”、“选择对象”;点击“确认”按钮后即可。

Ⅲ sql server2005数据库中使用架构

引用帮助文档对架构的定义: 从 SQL Server 2005 开始,每个对象都属于一个数据库架构。数据库架构是一个独立于数据库用户的非重复命名空间。您可以将架构视为对象的容器。可以在数据库中创建和更改架构,并且可以授予用户访问架构的权限。任何用户都可以拥有架构,并且架构所有权可以转移。 在SQL Server 2000中架构和用户是没有多大的区别,我们在2000中一般是指所有者。2005后,用户和架构开始明确的分开,架构可以理解为对象的容器或者命名空间。 对于架构特点的理解小节如下: 1.一个架构中不能包含相同名称的对象,相同名称的对象可以在不同的架构中存在。 2.一个架构只能有一个所有者,所有者可以是用户, 数据库角色, 应用程序角色。 3.一个用数据库角色可以可以拥有一个默认架构,和多个架构。 4.多个数据库用户可以共享单个默认架构。 5.由于架构与用户独立,删除用户不会删除架构中的对象。 6.SQL Server 2000 中对象引用是: [DatabaseServer].[DatabaseName].[ObjectOwner].[DatabaseObject] SQL Server 2005 中对象引用是: [DatabaseServer].[DatabaseName].[DatabaseSchema].[DatabaseObject]

Ⅳ 如何设置SQL Server登录的默认数据库和权限。

sql server2005安全管理之用户、角色、架构 与 权限
2008-12-04 16:47
--打开数据库
Use databaseName

--创建角色
create role ProgramerRole

--用于创建表 存储过程 视图
grant create table,create procere,create view to ProgramerRole

--execute用以执行存储过程,alter用以创建、修改存储过程和视图,
--并可以新建立表,但不能修改表,但也可以删除表和对表改名了
grant select,insert,execute,alter on schema::dbo to ProgramerRole

--用于允许用户查看 显示估计的执行计划(081205)
grant showplan to ProgramerRole

--创建登录账号
--create login username with password='password'
--创建数据库用户
create user username for login username

--将用户TestUser添加到TestRole角色中
exec sp_addrolemember 'ProgramerRole','username '

--执行Sql Server Profiler是服务器级权限,所以在master库中授权
USE master;grant alter trace to auto;

注:据库引擎优化顾问必须由具有系统管理员权限的用户进行初始化。在具有系统管理员权限的用户对数据库引擎优化顾问进行初始化之后,任何是 db_owner 固定数据库角色成员的用户,都可以使用数据库引擎优化顾问来优化他们拥有的数据库上的表。
详优化物理数据库设计http://msdn.microsoft.com/zh-cn/library/ms191531(SQL.90).aspx

参考资料:
用户架构分离:http://msdn.microsoft.com/zh-cn/library/ms190387(SQL.90).aspx
数据库架构是一个独立于数据库用户的非重复命名空间。您可以将架构视为对象的容器
主体:http://msdn.microsoft.com/zh-cn/library/ms181127(SQL.90).aspx
是可以请求 SQL Server 资源的实体

Windows 级别的主体

Windows 域登录名
Windows 本地登录名
SQL Server 级的主体

SQL Server 登录名
数据库级的主体

数据库用户
数据库角色
应用程序角色
安全对象:http://msdn.microsoft.com/zh-cn/library/ms190401(SQL.90).aspx
安全对象是 SQL Server 数据库引擎 授权系统控制对其进行访问的资源
安全对象范围有服务器、数据库和架构
安全对象范围:服务器包含以下安全对象:
端点
登录帐户
数据库

安全对象范围:数据库包含以下安全对象:
用户
角色
应用程序角色
程序集
消息类型
路由
服务
远程服务绑定
全文目录
证书
非对称密钥
对称密钥
约定
架构

安全对象范围:架构包含以下安全对象:
类型
XML 架构集合
对象

对象 下面是对象类的成员:
聚合
约束
函数
过程
队列
统计信息
同义词

视图

架构:http://msdn.microsoft.com/zh-cn/library/ms365789(SQL.90).aspx
架构是指包含表、视图、过程等的容器。它位于数据库内部,而数据库位于服务器内部
特定架构中的每个安全对象都必须有唯一的名称。架构中安全对象的完全指定名称包括此安全对象所在的架构的名称。因此,架构也是命名空间

权限:http://msdn.microsoft.com/zh-cn/library/ms190387(SQL.90).aspx
每个 SQL Server 2005 安全对象都有可以授予主体的关联权限

数据库级别的角色:http://msdn.microsoft.com/zh-cn/library/ms189121(SQL.90).aspx
固定数据库角色是在数据库级别定义的,并且存在于每个数据库中。db_owner 和 db_securityadmin 数据库角色的成员可以管理固定数据库角色成员身份;但是,只有 db_owner 数据库的成员可以向 db_owner 固定数据库角色中添加成员。
每个数据库用户都属于 public 数据库角色。当尚未对某个用户授予或拒绝对安全对象的特定权限时,则该用户将继承授予该安全对象的 public 角色的权限
服务器级别角色:http://msdn.microsoft.com/zh-cn/library/ms188659(SQL.90).aspx
固定服务器角色在其作用域内属于服务器范围。固定服务器角色的每个成员都可以向其所属角色添加其他登录名。

GRANT 架构权限:http://msdn.microsoft.com/zh-cn/library/ms187940(SQL.90).aspx

如何配置用户以创建和管理 SQL Server 代理作业 http://msdn.microsoft.com/zh-cn/library/ms187901.aspx

若要配置用户以创建或执行 Microsoft SQL Server 代理作业,必须先将某个现有 SQL Server 登录名或 msdb 角色添加到 msdb 数据库中的下列 SQL Server 代理固定数据库角色之一:SQLAgentUserRole、SQLAgentReaderRole 或 SQLAgentOperatorRole。

默认情况下,这些数据库角色的成员可以创建各自的作业步骤,这些作业步骤不执行其他作业步骤。如果这些非管理用户要运行那些执行其他作业步骤类型(例如,SSIS 包)的作业,它们需要对代理帐户具有访问权限。sysadmin 固定服务器角色的所有成员都有创建、修改和删除代理帐户的权限

为具体的用户设置具体的访问权限 收藏
use 你的库名
go

--新增用户
exec sp_addlogin 'test' --添加登录
exec sp_grantdbaccess N'test' --使其成为当前数据库的合法用户
exec sp_addrolemember N'db_owner', N'test' --授予对自己数据库的所有权限

--这样创建的用户就只能访问自己的数据库,及数据库中包含了guest用户的公共表
go

--删除测试用户
exec sp_revokedbaccess N'test' --移除对数据库的访问权限
exec sp_droplogin N'test' --删除登录

如果在企业管理器中创建的话,就用:

企业管理器--安全性--右键登录--新建登录

常规项
--名称中输入用户名
--身份验证方式根据你的需要选择(如果是使用windows身份验证,则要先在操作系统的用户中新建用户)
--默认设置中,选择你新建的用户要访问的数据库名

服务器角色项
这个里面不要选择任何东西

数据库访问项
勾选你创建的用户需要访问的数据库名
数据库角色中允许,勾选"public","db_ownew"

确定,这样建好的用户与上面语句建立的用户一样
---------------------------------------------------------------------------

最后一步,为具体的用户设置具体的访问权限,这个可以参考下面的最简示例:

--添加只允许访问指定表的用户:
exec sp_addlogin '用户名','密码','默认数据库名'

--添加到数据库
exec sp_grantdbaccess '用户名'

--分配整表权限
GRANT SELECT , INSERT , UPDATE , DELETE ON table1 TO [用户名]

--分配权限到具体的列
GRANT SELECT , UPDATE ON table1(id,AA) TO [用户名]

Ⅳ sqlserver用sql怎么分配权限

1、为角色赋予jobs表的所有权限
GRANT ALL ON jobs TO newrole
2、为角色赋予sales表的查、改权限
GRANT SELECT,UPDATE ON sales TO newrole
临时表可以被任何用户在任何数据库下创建,而不需要授予任何权限。
本地临时表只能被创建它的会话访问。全局临时表可以被所有会话访问和修改,而不需要授权。

Ⅵ SQL 怎么写授予用户对自定义架构的查询,添加权限

给自定义控件添加“自定义字段”_a(使用属性访问器,public属性名A),然后将控件内的image对象的src属性绑定给字段_a(就是赋值),在引用该自定义控件的地方,直接控件名.A=XX赋值就能完成控件内部image对象属性值的更改了。 还是伪代码清楚点: 属性访问器,写在自定义控件里 public string A { set { _a= value; } get { return _a; } } protected string _a= String.Empty; 自定义控件的构造函数或者 Page_Load方法里 做下绑定: image对象.Src=_a; 用到该自定义控件的地方: this.控件对象.A="image/1.jpg"; 就行了。

Ⅶ 用SQL语句怎么设置权限

SQL是Structured Quevy Language(结构化查询语言)的缩写。SQL是专为数据库而建立的操作命令集,是一种功能齐全的数据库语言。在使用它时,只需要发出“做什么”的命令,“怎么做”是不用使用者考虑的。SQL功能强大、简单易学、使用方便,已经成为了数据库操作的基础,并且现在几乎所有的数据库均支持SQL。

##1 二、SQL数据库数据体系结构

SQL数据库的数据体系结构基本上是三级结构,但使用术语与传统关系模型术语不同。在SQL中,关系模式(模式)称为“基本表”(base table);存储模式(内模式)称为“存储文件”(stored file);子模式(外模式)称为“视图”(view);元组称为“行”(row);属性称为“列”(column)。名称对称如^00100009a^:

##1 三、SQL语言的组成

在正式学习SQL语言之前,首先让我们对SQL语言有一个基本认识,介绍一下SQL语言的组成:

1.一个SQL数据库是表(Table)的集合,它由一个或多个SQL模式定义。

2.一个SQL表由行集构成,一行是列的序列(集合),每列与行对应一个数据项。

3.一个表或者是一个基本表或者是一个视图。基本表是实际存储在数据库的表,而视图是由若干基本表或其他视图构成的表的定义。

4.一个基本表可以跨一个或多个存储文件,一个存储文件也可存放一个或多个基本表。每个存储文件与外部存储上一个物理文件对应。

5.用户可以用SQL语句对视图和基本表进行查询等操作。在用户角度来看,视图和基本表是一样的,没有区别,都是关系(表格)。

6.SQL用户可以是应用程序,也可以是终端用户。SQL语句可嵌入在宿主语言的程序中使用,宿主语言有FORTRAN,COBOL,PASCAL,PL/I,C和Ada语言等。SQL用户也能作为独立的用户接口,供交互环境下的终端用户使用。

##1 四、对数据库进行操作

SQL包括了所有对数据库的操作,主要是由4个部分组成:

1.数据定义:这一部分又称为“SQL DDL”,定义数据库的逻辑结构,包括定义数据库、基本表、视图和索引4部分。

2.数据操纵:这一部分又称为“SQL DML”,其中包括数据查询和数据更新两大类操作,其中数据更新又包括插入、删除和更新三种操作。

3.数据控制:对用户访问数据的控制有基本表和视图的授权、完整性规则的描述,事务控制语句等。

4.嵌入式SQL语言的使用规定:规定SQL语句在宿主语言的程序中使用的规则。

下面我们将分别介绍:

##2 (一)数据定义

SQL数据定义功能包括定义数据库、基本表、索引和视图。

首先,让我们了解一下SQL所提供的基本数据类型:(如^00100009b^)

1.数据库的建立与删除

(1)建立数据库:数据库是一个包括了多个基本表的数据集,其语句格式为:

CREATE DATABASE <数据库名> 〔其它参数〕

其中,<数据库名>在系统中必须是唯一的,不能重复,不然将导致数据存取失误。〔其它参数〕因具体数据库实现系统不同而异。

例:要建立项目管理数据库(xmmanage),其语句应为:

CREATE DATABASE xmmanage

(2) 数据库的删除:将数据库及其全部内容从系统中删除。

其语句格式为:DROP DATABASE <数据库名>

例:删除项目管理数据库(xmmanage),其语句应为:

DROP DATABASE xmmanage

2.基本表的定义及变更

本身独立存在的表称为基本表,在SQL语言中一个关系唯一对应一个基本表。基本表的定义指建立基本关系模式,而变更则是指对数据库中已存在的基本表进行删除与修改。

Ⅷ 怎么设置SQL数据库用户权限

--SQLServer:

一、操作步骤

  1. 首先进入数据库级别的【安全性】-【登录名】-【新建登录名】


    (图11:其它对象类型)

    Ⅸ 在MSSQL SERVER2005中,如何给用户授予只有创建表、没有删除表及修改表结构的权限

    有创建表Create table权限,隐含Alter。
    楼主 的需求只能通过DB 触发器控制
    go--举个例子

    USE [master]
    GO
    CREATE LOGIN [Roy] WITH PASSWORD=N'1', DEFAULT_DATABASE=[Test], CHECK_EXPIRATION=OFF, CHECK_POLICY=OFF
    GO
    USE [Test]
    GO
    CREATE USER [Roy] FOR LOGIN [Roy]
    GO
    USE [Test]
    GO
    /****** 物件: Schema [Roy] 指令码日期: 08/19/2011 09:46:15 ******/
    CREATE SCHEMA [Roy] AUTHORIZATION [Roy]
    go
    use [Test]
    GO
    GRANT CREATE TABLE TO [Roy]
    GO

    CREATE TRIGGER tr_DBDropTable ON DATABASE
    FOR DROP_TABLE,ALTER_TABLE
    AS
    IF ORIGINAL_LOGIN()='Roy'
    BEGIN
    PRINT '没权限执行 DROP TABLE'
    ROLLBACK
    end

    GO

    --以下测试,用登陆用户Roy

    go
    CREATE TABLE Roy.Roy(ID int)
    GO
    SELECT SUSER_NAME(), USER_NAME();

    DROP TABLE Roy.Roy
    /*
    没权限执行 DROP TABLE
    讯息 3609,层级 16,状态 2,行 2
    交易在触发程序中结束。已中止批次。
    */

    Ⅹ 在sql sever 中怎么用语句给予用户建表的权限

    1. 首先在 SQL Server 服务器级别,创建登陆帐户(create login)
    --创建登陆帐户(create login)
    create login dba with password='abcd1234@', default_database=mydb

    登陆帐户名为:“dba”,登陆密码:abcd1234@”,默认连接到的数据库:“mydb”。 这时候,dba 帐户就可以连接到 SQL Server 服务器上了。但是此时还不能 访问数据库中的对象(严格的说,此时 dba 帐户默认是 guest 数据库用户身份, 可以访问 guest 能够访问的数据库对象)。
    要使 dba 帐户能够在 mydb 数据库中访问自己需要的对象, 需要在数据库 mydb 中建立一个“数据库用户”,赋予这个“数据库用户” 某些访问权限,并且把登陆帐户“dba” 和这个“数据库用户” 映射起来。 习惯上,“数据库用户” 的名字和 “登陆帐户”的名字相同,即:“dba”。 创建“数据库用户”和建立映射关系只需要一步即可完成:
    2. 创建数据库用户(create user):
    --为登陆账户创建数据库用户(create user),在mydb数据库中的security中的user下可以找到新创建的dba
    create user dba for login dba with default_schema=dbo

    并指定数据库用户“dba” 的默认 schema 是“dbo”。这意味着 用户“dba” 在执行“select * from t”,实际上执行的是 “select * from dbo.t”。
    3. 通过加入数据库角色,赋予数据库用户“dba”权限:
    --通过加入数据库角色,赋予数据库用户“db_owner”权限
    exec sp_addrolemember 'db_owner', 'dba'

    此时,dba 就可以全权管理数据库 mydb 中的对象了。
    如果想让 SQL Server 登陆帐户“dba”访问多个数据库,比如 mydb2。 可以让 sa 执行下面的语句:

    --让 SQL Server 登陆帐户“dba”访问多个数据库
    use mydb2
    go
    create user dba for login dba with default_schema=dbo
    go
    exec sp_addrolemember 'db_owner', 'dba'
    go

    此时,dba 就可以有两个数据库 mydb, mydb2 的管理权限了!