Depends on whether the user / password for the SQL server is exposed to the user and whether this will be a problem. As a rule, for internal applications (in small organizations), you can trust users not to log in directly to the sql server too. If you have an intermediate layer (for example, web services), the password can be hidden from the user.
I prefer to use a common login for the database and manage users in the application. Even if you create a login for sql for each user of the application, they can still connect directly, so why not just use the common sql interface, which is easier to manage. This, of course, assumes that all users have the same access.
One good practice, if users can potentially get direct access to db, will provide access only through stored procedures, and not directly to tables, so that only certain actions can be performed. Get away from writing business logic or security checks (other than core ones) in stored procedures.
One way to solve your problem is to write several web services that check security, and your CRUD (via datasets, etc.), but again it depends on the application and the environment.
In general, if you have an average level, or all users have the same access, then manage the user in the application and use one user login. Otherwise, use the username for the user or role.
source share