A. The following is from the Books-Online. What isn't documented is that you need to put quotes around any value other than off.
SET FIPS_FLAGGER (T-SQL)
Specifies checking for compliance with the FIPS 127-2 standard, which is based
on the SQL-92 standard.
SET FIPS_FLAGGER level
Is the level of compliance against the FIPS 127-2 standard for which all
database operations are checked. If a database operation conflicts with the
level of SQL-92 standards chosen, Microsoft® SQL Server™ generates a warning.
level must be one of these values.
ENTRY Standards checking for SQL-92 entry-level compliance
FULL Standards checking for SQL-92 full compliance
INTERMEDIATE Standards checking for SQL-92 intermediate-level compliance
OFF No standards checking
The setting of SET FIPS_FLAGGER is set at parse time and not at execute or run
time. Setting at parse time means that if the SET statement is present in the
batch or stored procedure, it takes effect, regardless of whether code
execution actually reaches that point; and the SET statement takes effect
before any statements are executed. For example, even if the SET statement is
in an IF...ELSE statement block that is never reached during execution, the SET
statement still takes effect because the IF...ELSE statement block is parsed.
If SET FIPS_FLAGGER is set in a stored procedure, the value of SET FIPS_FLAGGER
is restored after control is returned from the stored procedure. Therefore, a
SET FIPS_FLAGGER statement specified in dynamic SQL does not have any effect on
any statements following the dynamic SQL statement.
SET FIPS_FLAGGER permissions default to all users