V podstatě ano ale ne přesně tak. Zaprvé, zmiňuješ, že by přístup byl přes aplikační účet a nějakou matici přístupů. To je OK - a naprosto standardní postup, ale ty přístupy v té tvé definiční tabulce musí být pro aplikaci, ne pro DB! Tj. například "vidí tlačítko ULOŽ", ne "má SELECT na tabuli X". Pokud jsi tím myslel, že chceš přímo podstčit nějakého uživatele MS SQL Serveru když jsi už pod nějakým účtem připojený (což nejde), tak když by to bylo z nějakého důvodu nutné (třeba chceš aby uživatelé importovali data pod svým vlastním účtem se vším všudy, aplikace by musela vytvořit ještě jednu connection do databáze, tentokrát s jiným přístupem.
U 1) by musel uživatel zadat username a heslo, nejde přes nějakou tabuli rolí impersonovat uživatele pro MSSQL když jsi přihlášený do db jako aplikační účet
u 2) by se musela vytvořit zase druhá connection, tentokrát s parametrem SSPI (integrované ověření windows) a přes tu by se lezlo do těch dalších tabulí.
Hashované heslo můžeš ukládat úplně obyčejně jako varchar.
Hashovat - třeba jako MD5 - to můžeš buď v aplikaci, nebo třeba:
RIGHT(master.dbo.fn_varbintohexstr (HashBytes(‚MD5‘,‚testovací řetězec‘)) ,32)