• The question is not very clear, but EXECUTE AS is a non-starter. Sign the procedure with a certificate and create a login from the certificate and grant that login the permissions required. If the procedure is in a user database, you will need the certificate in both places.

    For a detailed description of this technique, and why EXECUTE AS will not work for you, see this article on my web site:

    http://www.sommarskog.se/grantperm.html

    As for preventing users to drop "real" databases, this is logic you need to code in your procedure.

    [font="Times New Roman"]Erland Sommarskog, SQL Server MVP, www.sommarskog.se[/font]