Hugo Kornelis (12/11/2015)
The question would have been better if the author had added a note that we can assume that "ID" is already created as a userdefined datatype.
A user defined datatype can't specify the ROWGUIDCOL property, nor can that property be applied to a user-defined type, so the column with user defined type ID can't have that property.
Also, a user-defined datatype can't specify that the coulmn's values are unique or that the column is the primary key, so the column with type ID can't have such a constraint unless it is explicitly stated in the table definition (adding that constraint later, after the table has been created, won't allow the FILESTREAM column to be declared in the table definition at create time). So even if it could have the ROWGUIDCOL property it still couldn't satisfy the requirement for a ROWGUIDCOL property which also has either a NOT NULL UNIQUE constraint or a PRIMARY KEY constraint.
So I don't think that stating that "ID" is a user defined type would improve the question, it wouldn't really change anything. But maybe I'm biased because I've seen several databases where dbo.ID was defined as an alias type for uniqueidentifier.
All the documentation I found (including the one referenced in the explanation) says that a ROWGUID column "is required to use FILESTREAM data with Win32 APIs" - so I assumed that the table would be created but the filestream data would be excluded from Win32 API access.
Does anyone know why the documentation doesn't simply list this as a requirement without that distracting extra note?
The CREATE TABLE BoL page doesn't have that distracting extra note. It says (in its explanation of the FILESTREAM column attribute)
Valid only for varbinary(max) columns. Specifies FILESTREAM storage for the varbinary(max) BLOB data.
The table must also have a column of the uniqueidentifier data type that has the ROWGUIDCOL attribute. This column must not allow null values and must have either a UNIQUE or PRIMARY KEY single-column constraint. The GUID value for the column must be supplied either by an application when inserting data, or by a DEFAULT constraint that uses the NEWID () function.
The ROWGUIDCOL column cannot be dropped and the related constraints cannot be changed while there is a FILESTREAM column defined for the table. The ROWGUIDCOL column can be dropped only after the last FILESTREAM column is dropped.
When the FILESTREAM storage attribute is specified for a column, all values for that column are stored in a FILESTREAM data container on the file system.