• naga.rohitkumar (10/5/2012)


    ya i too agree with u ALTER TRACE

    but if we use default master the user can able to have access on all databases know

    i mean it for running a profiler only to one or seleted databases

    This is not possible. A user must have ALTER TRACE permissions to run Profiler/Trace and this is a server level permission NOT a database level permission. Trace is designed to be used by DBA's for auditing and troubleshooting, it is NOT designed for regular user use.

    As Jeff has said, "a user could easily cripple the server by creating a client side trace."

    There are options that would allow you to make trace data available to users and even to allow users to start and stop and trace designed by you (not that I'm saying that this is a great option either).

    You could setup a server side trace that filters on the specific database and put that script in a stored procedure that is certificate signed and allow users to run that stored procedure that creates and starts the trace (I'd put in controls that only allow this trace to be created once). Then have another signed procedure that calls fn_trace_gettable() to query the trace files.

    Another option would be to have a server-side trace that you define and have running (not necessarily the best idea either), then have a process that asynchronously copies the trace data to a table and grant rights to that table.

    Neither of those options are ideal, as traces do have impact on server performance, but both are better than just granting ALTER TRACE To users.