One of the things I want to use this blog for is to post details of system changes that are not well publicized, some of which I only learn about accidentally.
In SQL 2000, the first time I saw this strange syntax to use :: to specify a system defined, table valued function, I thought it was a typo. But now, it was required for a small handful of functions. The most common ones I used were the ones that dealt with traces, e.g.
SELECT * FROM ::fn_trace_getinfo(default)
SELECT * FROM ::fn_trace_gettable(<full path>, default)
In the SQL 2005 Internals class I was teaching last week, I was trying to point how how weird this syntax was, and that it was required. But when I tried to show the class the error message that I would get if I didn't use the ::, there was none. The strange :: syntax still works, but is no longer required.
The following work just fine in SQL Server 2005:
SELECT * FROM fn_trace_getinfo(default)
SELECT * FROM fn_trace_gettable(<full path>, default)