Great and timely article. Using your search query I discovered we have 129 procs using cursors. However, I was hoping you would show code examples of the Local and Fast Forward. I'll look it up, but it's often helpful to see examples which are proven to work.
I see that I left the cursor declaration off the code section when I copied the article from word to the online editor.
DECLARE TaskInstructions_cursor CURSOR Local Fast_Forward FOR
FROM JobTaskData INNER JOIN Task ON JobTaskData.Task_ID = Task.Task_ID
WHERE (JobTaskData.Quote_ID = @hQuote_ID) AND
(JobTaskData.VersionNo = @hVersionNo) AND
(Task.Department_ID = @hDepartment_ID) AND
(Task.TaskTypeID = 1)
The code example was for a very simple usage of the cursor, but in general you can check the procedure to see if it is using the Cursor in the most common pattern...
Declare Cursor Cursorname For select whatever
Fetch Next from cursorname
WHILE @@FETCH_STATUS = 0
do something with the data
Fetch next from cursorname
If that's your structure, you can add the Local and FAST_FORWARD keywords to the cursor definition for a quick improvement without changing the rest of the code or its behavior. (As always test on a non-production node first and make sure to save a copy of the original before changing it. There are good discussions about source control elsewhere.)