• Yes, CONTROL does the trick, but I tried to avoid it because it embeds all other permissions.

    GRANT ALTER, CREATE SEQUENCE, DELETE, EXECUTE, INSERT, REFERENCES, SELECT, CONTROL, TAKE OWNERSHIP, UPDATE, VIEW CHANGE TRACKING, VIEW DEFINITION ON SCHEMA :: MY_SCHEMA1 TO MY_USER1;

    Go

    appears to be equivalent to:

    GRANT CONTROL ON SCHEMA :: MY_SCHEMA1 TO MY_USER1;

    Go

    I don't understand why "grant select with grant option" doesn't seem to work on a schema while it is perfectly working on a table.

    I am investigating another approach, making MY_USER1 owner of MY_SCHEMA1:

    ALTER AUTHORIZATION ON SCHEMA :: MY_SCHEMA1 TO MY_USER1;

    It appears to be closer of what we want -> 2 schemas, one user each, one of these users that is allowed to select in some tables of the other.

    Plus this approach may prevent us from ownership chaining issue.

    Not sure, but if stored procedures of MY_USER2 are owned by default user dbo, they may be able to modify tables of MY_USER1 because they are also owned by dbo user.