Hello Randy,
I had to do something similar a while back. How about something like this:
import arcpy, os
sdeConnection = arcpy.GetParameterAsText(0)
orphanedDomains = []
allDomains = []
appliedDomains = []
def ListAppliedDomains(table):
"""
Returns a list of domain names applied in the FC or table
"""
appliedDomains = []
for f in arcpy.ListFields(table):
if f.domain != "":
appliedDomains.append(f.domain)
return appliedDomains
domainObjects = arcpy.da.ListDomains(sdeConnection)
print("Your SDE workspace has {} domains.".format(str(len(domainObjects))))
for domain in domainObjects:
allDomains.append(domain.name)
del domainObjects
allFcsAndTables = []
walk = arcpy.da.Walk(sdeConnection, datatype=["FeatureClass", "Table"])
for dirpath, dirname, filenames in walk:
for filename in filenames:
allFcsAndTables.append(os.path.join(dirpath, filename))
del walk
for item in allFcsAndTables:
usedDomains = ListAppliedDomains(item)
for d in usedDomains:
appliedDomains.append(d)
for item in allDomains:
if item not in appliedDomains:
orphanedDomains.append(item)
print("The following domains are not in use in your workspace!")
for item in orphanedDomains:
print(item)
That should get you there. Feel free to modify to support your specific needs.
Micah