在SQL Server中创建用户对表有查询但不能修改
时间: 2023-11-16 09:07:52 浏览: 70
在 SQL Server 中,可以通过以下步骤创建一个用户,使其能够查询表但不能修改表:
1. 创建一个新的登录名(login name):
```
CREATE LOGIN [username] WITH PASSWORD = 'password';
```
2. 创建一个新的数据库用户,并将其与登录名关联:
```
USE [database_name];
CREATE USER [username] FOR LOGIN [username];
```
3. 授予用户查询表的权限:
```
GRANT SELECT ON [schema_name].[table_name] TO [username];
```
4. 拒绝用户修改表的权限:
```
DENY UPDATE ON [schema_name].[table_name] TO [username];
```
请注意,以上步骤中的 [username],[database_name],[schema_name] 和 [table_name] 都应替换为实际的用户名、数据库名、架构名和表名。
相关问题
sqlserver数据库对表重命名
在SQL Server中,表重命名是一个常见的操作,用于改变数据库中的表的名称。以下是基本的步骤:
1. **登录到SQL Server Management Studio (SSMS)**: 首先,你需要连接到包含你要重命名的表的数据库。
2. **找到目标表**: 打开查询编辑器,运行`SELECT * FROM sys.objects WHERE name = '原表名'`,这将显示表的相关信息,确认你要重命名的表。
3. **编写ALTER TABLE语句**: 使用以下格式创建一个ALTER TABLE语句来更改表名:
```
ALTER TABLE [当前数据库名].[原表名]
RENAME TO 新表名;
```
将`[当前数据库名]`替换为你实际的数据库名字,`原表名`是旧的表名,`新表名`是你希望的新表名。
4. **执行命令**: 点击“运行”按钮或者按Enter键执行这条命令。如果一切顺利,表名将会被成功地更新。
5. **验证更改**: 可以通过运行`SELECT * FROM 新表名;`来确认表已经被重命名为新的名字。
定义登录log1,log2,log3 2)定义用户user1,user2,user3 3)掌握SQL SERVER 2008架构和用户分离的概念 4)数据库的授权、授权语句 ① 将查询SC表和修改GRADE属性的权限授予用户user1。 ② 将对表S的插入权限授予用户user2,并允许他将此权限授予其他用户。 ③ 允许用户user3拥有对cs系学生的查询权限 ④ 创建角色R1,授予R1 课程表查询和插入的权限,并授予用户user3 ⑤ 删除角色R1课程表的插入权限 收回所有用户对表S的插入权限
1. 定义登录log1,log2,log3:
可以使用以下语句创建3个登录:
```
CREATE LOGIN log1 WITH PASSWORD = 'password1';
CREATE LOGIN log2 WITH PASSWORD = 'password2';
CREATE LOGIN log3 WITH PASSWORD = 'password3';
```
2. 定义用户user1,user2,user3:
可以使用以下语句创建3个用户,并将它们与相应的登录关联:
```
CREATE USER user1 FOR LOGIN log1;
CREATE USER user2 FOR LOGIN log2;
CREATE USER user3 FOR LOGIN log3;
```
3. SQL SERVER 2008架构和用户分离的概念:
在SQL SERVER 2008中,数据库架构和用户是分离的。一个数据库可以包含多个架构,每个架构包含多个对象(如表、视图、存储过程等),而每个用户可以拥有对不同架构中的不同对象的不同权限。
4. 数据库的授权、授权语句:
① 将查询SC表和修改GRADE属性的权限授予用户user1:
可以使用以下语句授予权限:
```
GRANT SELECT, UPDATE ON SC TO user1;
```
② 将对表S的插入权限授予用户user2,并允许他将此权限授予其他用户:
可以使用以下语句授予权限:
```
GRANT INSERT ON S TO user2 WITH GRANT OPTION;
```
③ 允许用户user3拥有对cs系学生的查询权限:
可以使用以下语句授予权限:
```
GRANT SELECT ON 学生表 TO user3 WHERE 学生表.系别 = 'cs';
```
④ 创建角色R1,授予R1 课程表查询和插入的权限,并授予用户user3:
可以使用以下语句创建角色并授予权限:
```
CREATE ROLE R1;
GRANT SELECT, INSERT ON 课程表 TO R1;
EXEC sp_addrolemember 'R1', 'user3';
```
⑤ 删除角色R1课程表的插入权限:
可以使用以下语句收回权限:
```
REVOKE INSERT ON 课程表 FROM R1;
```
收回所有用户对表S的插入权限:
可以使用以下语句收回权限:
```
REVOKE INSERT ON S FROM ALL;
```
阅读全文