The definition in BOL (http://msdn.microsoft.com/en-us/library/ms190499.aspx)
is correct:
“The caller must have some permission on the key and must not have been denied VIEW DEFINITION permission on the key.”
It may be easier to visualize the rule if you think of it in terms of pseudo-code:
If( has_any_perm(key) AND NOT has_been_denied_permission(key, ‘VIEW DEFINITION’) ) THEN
SUCCEED
ELSE
FAIL
In the case where you grant REFERENCES permission on the key, you comply with the first part of the requirement, and as long as you have
not been explicitly denied VIEW DEFINITION you comply with the whole rule.
I hope this information helps,
-Raul Garcia
SDE/T
SQL Server Engine
This posting is provided "AS IS" with no warranties, and confers no rights.