Tudo se resume ao escopo. Um login é uma conta no nível do servidor e um usuário é uma conta no nível do banco de dados. O usuário precisa ser mapeado para um login, portanto, você criará seu login primeiro (enquanto, ao mesmo tempo, criará uma maneira de autenticar no servidor). Em seguida, no banco de dados do seu aplicativo, você criará o usuário. Ao fazer isso, você terá a opção de escolher o login que esse usuário representa. Você escolherá o login que você criou anteriormente. Você pode, então, atribuir permissões aos procedimentos armazenados que você deseja que seja capaz de executar. Claro, há uma maneira menos clichê de fazer isso:
create login [your login name here] from windows; --if the login is a Windows account
create login [your login name here] with password 'some super secret password'; --if not a Windwos account
use [DB1];
create user [your login name here] for login [your login name here];
grant execute on [your stored procedure here] to [your login name here];
grant execute on [another stored procedure here] to [your login name here];
...