如何将一个表放置在指定的数据文件中(在建表语句中体现出来)?
如何授予一个登陆名创建登陆的权限(用grant语句)?
如何将一个表放置在指定的数据文件中(在建表语句中体现出来)?
在建表语句中,可以使用 ON 子句指定数据文件组或文件组中的文件来存储表。具体语法如下:
CREATE TABLE table_name (
column1 datatype [ NULL | NOT NULL ],
column2 datatype [ NULL | NOT NULL ],
...
) ON filegroup_or_partition_scheme
filegroup_or_partition_scheme 可以是数据文件组或分区方案的名称。如果需要指定具体的数据文件,则可以在 filegroup_or_partition_scheme 后面添加 FILEGROUP 或 PARTITION 子句来指定文件。
例如,以下建表语句将 my_table 表存储在名为 my_filegroup 的数据文件组中:
CREATE TABLE my_table (
id INT,
name VARCHAR(50)
) ON my_filegroup
在 SQL Server 中,可以使用 CREATE LOGIN 语句创建登录名,使用 GRANT 语句授予创建登录名的权限。具体步骤如下:
CREATE LOGIN new_login WITH PASSWORD = 'password';
授予 new_login 创建登录名的权限:
GRANT CREATE LOGIN TO new_login;
此时,new_login 用户就可以使用 CREATE LOGIN 语句创建新的登录名了。注意,需要在一个有足够权限的数据库中执行 CREATE LOGIN 语句,否则会收到权限不足的错误提示。
将表放置在指定的数据文件中可以使用SQL Server中的CREATE TABLE语句,通过指定文件组或文件名来实现。例如:
CREATE TABLE myTable
(
column1 datatype,
column2 datatype,
...
) ON myFileGroup;
这将在myFileGroup文件组中创建一个名为myTable的表。
要授予一个登录名创建登录的权限,可以使用GRANT CREATE LOGIN语句,如下所示:
GRANT CREATE LOGIN TO myLoginName;
这将允许myLoginName登录创建新登录名。注意,必须具有足够的权限才能授予此权限。
不知道你这个问题是否已经解决, 如果还没有解决的话:语句的一般格式:
GRANT <权限>[,<权限>]...
ON <对象类型> <对象名>[,<对象类型> <对象名>]…
TO <用户>[,<用户>]...
[WITH GRANT OPTION];
WITH GRANT OPTION 子句 : 若 指定了,获得权限的用户可以再把权限授予给其他用户。
若没有指定,获得权限的用户 只能使用该权限,不能传播。
再进行下列操作之前,首先得创建用户U1,U2,U3,U4,U5,U6,U7。
创建方法详见第一次作业。
创建结果:
【例4.1】把查询Student表权限授给用户U1。
GRANT SELECT
ON TABLE Student ---报错
TO U1;
GRANT SELECT
ON Student ---可执行
TO U1;
操作结果:
【例4.2】把对Student表和Course表的全部权限授予用户U2和U3。
GRANT ALL PRIVILEGES
ON Table Student,Course
TO U2,U3; ---报错
经查询,T-SQL 不支持同时授予用户多个操作权限 也不支持同时对两个表赋权
GRANT ALL PRIVILEGES
ON Student
TO U2,U3;
GRANT ALL PRIVILEGES
ON Course
TO U2,U3;
操作结果:
系统提示:
【例4.3】 把对表SC的查询权限授予所有用户。
GRANT SELECT
ON SC
TO PUBLIC;
操作结果:PUBLIC 权限被授予。
查询SC表的属性得到:
【例4.4】把查询Student表和修改学生学号的权限授给用户U4。
GRANT UPDATE(Sno),SELECT
ON Student
TO U4
操作结果:
【例4.5】把对表SC的INSERT权限授予U5用户,并允许他再将此权限授予其他用户。
GRANT INSERT
ON SC
TO U5
WITH GRANT OPTION;
操作结果:
【例4.6】执行例4.5后,U5不仅拥有了对表SC的INSERT权限,
还可以传播此权限 :
GRANT INSERT
ON SC
TO U6
WITH GRANT OPTION;
操作结果:U5将此权限授权给了U6
【例4.7】同样,U6还可以将此权限授予U7:
GRANT INSERT
ON SC
TO U7;
操作结果:
注意:没有 WITH GRANT OPTION;
语句,U6未给U7传播的权限,所以U7不能再传播此权限。