sql server疑问

如何将一个表放置在指定的数据文件中(在建表语句中体现出来)?
如何授予一个登陆名创建登陆的权限(用grant语句)?

基于Monster 组和GPT的调写:

如何将一个表放置在指定的数据文件中(在建表语句中体现出来)?

在建表语句中,可以使用 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


  • 如何授予一个登陆名创建登陆的权限(用grant语句)?

在 SQL Server 中,可以使用 CREATE LOGIN 语句创建登录名,使用 GRANT 语句授予创建登录名的权限。具体步骤如下:

  • 以 sysadmin 或 securityadmin 身份登录 SQL Server。
  • 创建一个新的登录名,例如 new_login,并指定密码:
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登录创建新登录名。注意,必须具有足够的权限才能授予此权限。

不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 这篇博客: 数据库作业8:SQL Server 的部分操作(授权:授予与收回)中的 1.GRANT 部分也许能够解决你的问题, 你可以仔细阅读以下内容或者直接跳转源博客中阅读:

    语句的一般格式:

    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不能再传播此权限。


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^