SELECT
a.entitylogicalname,
a.logicalname,
a.displayname,
a.attributetypename,
os.name,
os.displayname,
os.optionsettype,
'SELECT ''' + a.entitylogicalname + ''' AS [entityLogicalName], ''' + a.logicalname + ''' AS [attributeLogicalName], ' + a.logicalname + ' AS [value], ' + a.logicalname + 'name AS [valueName], ' + a.logicalname + ' AS [invalidValue] FROM ' + a.entitylogicalname + ' WHERE ' + tmp2.invalid_condition + ' GROUP BY ' + a.logicalname + ', ' + a.logicalname + 'name' AS sql
FROM
metadata.attribute AS a
INNER JOIN metadata.entity AS e ON a.entitylogicalname = e.logicalname
INNER JOIN metadata.globaloptionset AS os ON a.optionset = os.metadataid
OUTER APPLY (
SELECT
COUNT(*) AS count,
STRING_AGG(CAST(st.value AS VARCHAR(MAX)), ',') AS [valid_values]
FROM
metadata.globaloptionsetvalue AS st
WHERE
st.optionsetid = os.metadataid
) AS tmp
OUTER APPLY (
SELECT
a.logicalname + ' IS NOT NULL ' + IIF(
tmp.count = 0,
'',
' AND ' + a.logicalname + ' NOT IN (' + tmp.valid_values + ')'
) AS [invalid_condition]
) AS tmp2
WHERE
-- e.logicalname LIKE 'prefix%' --success
-- a.entitylogicalname LIKE 'prefix%' --error
AND a.attributetypename IN ('PicklistType')
ORDER BY
a.entitylogicalname,
os.name;
If executed under the following conditions, a KeyNotFoundException occurs:
a.entitylogicalname LIKE 'prefix%'
If you run it under the following conditions, it will be successful:
e.logicalname LIKE 'prefix%'
Environment
- SQL 4 CDS edition: XrmToolBox
- Results of
SELECT @@VERSION:
Microsoft Dataverse - 9.2.25071.172
SQL 4 CDS - 10.0.0.0
7 22 2025 14:23:13
Copyright © 2020 - 2025 Mark Carrington
If executed under the following conditions, a
KeyNotFoundExceptionoccurs:If you run it under the following conditions, it will be successful:
Environment
SELECT @@VERSION: