Sql server 如何测试;“授予期权”;MS-SQL中的子句?

Sql server 如何测试;“授予期权”;MS-SQL中的子句?,sql-server,Sql Server,我正在尝试学习在SQL中授予特权,并使用SQL Server进行练习。但是,当我为一个名为db_SPJ的数据库创建了两个用户来测试“with grant option”子句时,我在如何使用我创建的用户登录方面遇到了一些困难 use db_SPJ; CREATE LOGIN U1 WITH PASSWORD='U1'; CREATE USER U1 FOR LOGIN U1; CREATE LOGIN U2 WITH PASSWORD='U2'; CRE

我正在尝试学习在SQL中授予特权,并使用SQL Server进行练习。但是,当我为一个名为db_SPJ的数据库创建了两个用户来测试“with grant option”子句时,我在如何使用我创建的用户登录方面遇到了一些困难

    use db_SPJ;

    CREATE LOGIN U1 WITH PASSWORD='U1';
    CREATE USER U1 FOR LOGIN U1;

    CREATE LOGIN U2 WITH PASSWORD='U2';
    CREATE USER U2 FOR LOGIN U2;

    -- I have created a table named S
    GRANT ALL PRIVILEGES ON S TO U1;

    -- use u1, but how ?
    GRANT INSERT ON S TO U2 WITH GRANT OPTION;

情况是,当我想使用用户U1向用户U2授予特权时,我必须使用用户U1登录数据库。那我该怎么办?请提供任何帮助。

作为以其他用户身份登录以测试权限的替代方法,您可以使用
执行身份

EXECUTE AS LOGIN = 'U2';
GO
测试后,使用
REVERT
返回原始安全上下文:

REVERT;