
Είμαι εφαρμογή κάποια στοιχειώδη παρακολούθηση του SQL Server για να παρακολουθήσουν την υπερβολική αποκλεισμού.


Έχω μια αποθηκευμένη διαδικασία που μοιάζει με αυτό:



```
CREATE PROCEDURE [dbo].[bsp_GetBlockedProcessCount]
AS
BEGIN
    SET NOCOUNT ON;

    DECLARE @count INT

    SELECT @count = COUNT(*)
    FROM master.dbo.sysprocesses WITH (NOLOCK)
    WHERE blocked > 0

    RETURN @count
END

```

Όταν εκτελέσει αυτό σε ένα πλαίσιο διαχειριστή, να πάρω τη σωστή απάντηση. Όταν εκτελέσετε αυτή στο πλαίσιο ενός χρήστη με περιορισμένα δικαιώματα (δηλαδή το διακομιστή), παίρνω μηδέν ανεξάρτητα από την πραγματική απάντηση.


Μπορώ να σκεφτώ μερικά λύσεις, αλλά δεν είμαι χαρούμενος κάποια από αυτά:


1. Μπορώ να χορηγήσει προνόμια ΚΡΑΤΟΣ Server άποψη για τον χρήστη, αλλά αυτό είναι πολύ πιο άδεια από αυτό ο χρήστης θα πρέπει να έχει:



```
GRANT VIEW SERVER STATE TO [Webserver]

```
2. Εκτελέστε το proc από ένα SQL δουλειά και να θέσει τα αποτελέσματα κάπου για το διακομιστή για να πάρει, αλλά αυτό είναι βρώμικο και περίπλοκη.
3. Μην προσπαθήσετε και να ζητήσει αυτό από το διακομιστή!


Είμαι σίγουρος ότι υπάρχει μια καλύτερη λύση. Οποιεσδήποτε προτάσεις?

 
Πώς μπορώ να παρέχουν περιορισμένη πρόσβαση σε sysprocesses στον SQL Server 2005;
=================================================================================



Χαίρομαι που δεν γνωρίζουν τις απαντήσεις από πρώτο χέρι :), αλλά έχω παίξει με ΕΚΤΕΛΕΣΗ AS και να επανέλθει για εναλλαγή μεταξύ χρηστών


Αλλά εδώ είναι 2 καλές συνδέσεις για να αρχίσει με


Αλλαγή αποθηκευμένης διαδικασίας εκτέλεσης πλαίσιο του SQL Server με χρήση της ρήτρας Επαναφορά


Συνοπτικά: να σας χορηγήσει χρήστη να μιμηθεί όπως λένε DBA, στη συνέχεια, να επανέλθει μετά


<http://www.mssqltips.com/tip.asp?tip=1579>


Δίνοντας Δικαιώματα μέσω αποθηκευμένες διαδικασίες


Σύνοψη: Είμαι πολύ τεμπέλης για να διαβάσετε σε όλο θέμα


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

 