Skip to main content

Core Data Collection Tables

The FSAA DC schema contains 47 core tables populated by four collector modules: the File System Access Analyzer (SA_FSAA_), the File System Activity Collector (SA_FSAC_), the Sensitive Data / DLP collector (SA_FSDLP_), and the DFS Namespace collector (SA_FSDFS_). All SA_FSAA_* tables are partitioned by HOST INT (FK → SA_FSAA_Hosts.ID) with ON DELETE CASCADE so that removing a host purges its entire data set.

FSAA Tables

SA_FSAA_SchemaVer

Single-row table holding the FSAA schema version string. The CREATE-Schema job clears and re-inserts the version on every run. Used by upgrades to decide whether to apply migrations.

ColumnTypeSizeNullablePKFKDefaultDescription
SchemaVervarchar64NoSchema version (current value 8.0.17)

Primary Key: None Foreign Keys: None Indexes: None

SA_FSAA_Hosts

Registry of every host scanned by FSAA. One row per host. The integer ID is the FK target for every other FSAA table's HOST column. USN/AccessUSN/ActivityUSN/DLPUSN are per-scan-type Update Sequence Numbers used by the C# importer to detect deltas; the matching *GUID columns identify the SQLite cache that produced the last upload.

ColumnTypeSizeNullablePKFKDefaultDescription
IDintNoPKIDENTITY(1,1)Surrogate host ID — referenced by every FSAA table
HOSTnvarchar64NoHost name (NetBIOS/FQDN). Has unique constraint
SAConsolenvarchar64NoConsole host that initiated the scan
ScanTimedatetimeNoTime of most recent scan
GUIDvarchar38No''Top-level scan correlation GUID
USNintNo-1Top-level Update Sequence Number for the structural scan
AccessUSNintNo-1USN tracking the latest Access (FSAA) data import
AccessGUIDvarchar38No''Correlation GUID for the latest Access scan
ActivityUSNintNo-1USN tracking the latest Activity (FSAC) data import
ActivityGUIDvarchar38No''Correlation GUID for the latest Activity scan
DLPUSNintNo-1USN tracking the latest DLP scan
DLPGUIDvarchar38No''Correlation GUID for the latest DLP scan
LastScanHostnvarchar64YesHostname of machine that performed the last scan

Primary Key: PK_SA_FSAA_Hosts — clustered on (ID) Foreign Keys: None Indexes: UQ_SA_FSAA_Hosts_HOST — unique nonclustered on (HOST)

SA_FSAA_ImportHistory

Append-only history of every successful data import for each host. One row per host per import per scan type.

ColumnTypeSizeNullablePKFKDefaultDescription
HOSTintNoPKFK → SA_FSAA_Hosts.IDHost that the import covered
GUIDvarchar38NoCorrelation GUID for the imported scan
USNintNoUSN observed at import time
ScanTypevarchar32NoOne of Access, Activity, DLP
ImportTimedatetimeNoPKCURRENT_TIMESTAMPWhen the import ran

Primary Key: PK_SA_FSAA_ImportHistory — clustered on (HOST, ImportTime) Foreign Keys: FK_SA_FSAA_ImportHistory_HOST(HOST) → SA_FSAA_Hosts(ID) ON DELETE CASCADE Indexes: None beyond the clustered PK

SA_FSAA_Trustees

Every distinct security principal observed in ACLs on a host, identified by (HOST, ID). Holds only the SID and TrusteeType enumeration; human-readable name fields live in SA_FSAA_LocalTrustees for local accounts, or are looked up from the AD inventory at view time.

ColumnTypeSizeNullablePKFKDefaultDescription
HOSTintNoPKFK → SA_FSAA_Hosts.IDHost partition
IDintNoPKPer-host trustee ID
SIDvarchar184NoSecurity identifier (string form, e.g. S-1-5-21-...)
TrusteeTypesmallintNoSee TrusteeType enumeration

Primary Key: PK_SA_FSAA_Trustees — clustered on (HOST, ID) Foreign Keys: FK_SA_FSAA_Trustees_HOST(HOST) → SA_FSAA_Hosts(ID) ON DELETE CASCADE Indexes: None beyond the clustered PK

SA_FSAA_LocalTrustees

Subset of SA_FSAA_Trustees: the local accounts and groups that exist on the scanned host. Adds NT-style domain/name and display name. (HOST, ID) is a foreign key into SA_FSAA_Trustees. IsDisabled is stored as 'Y'/'N'.

ColumnTypeSizeNullablePKFKDefaultDescription
HOSTintNoPKFK → SA_FSAA_Trustees.HOSTHost partition
IDintNoPKFK → SA_FSAA_Trustees.IDTrustee ID — must exist in SA_FSAA_Trustees
NTDomainnvarchar128YesDomain portion of NT-style name
NTNamenvarchar256YesSAM account name
DisplayNamenvarchar256YesDisplay name
SIDvarchar184NoSID (denormalized copy from SA_FSAA_Trustees)
TrusteeTypesmallintNoSee TrusteeType enumeration
IsDisabledvarchar2No'Y' / 'N'
USNintNo-1USN at last sighting
DeletedUSNintYesUSN when the principal was removed (NULL = still present)

Primary Key: PK_SA_FSAA_LocalTrustees — clustered on (HOST, ID) Foreign Keys: FK_SA_FSAA_LocalTrustees_ID(HOST, ID) → SA_FSAA_Trustees(HOST, ID) ON DELETE CASCADE Indexes: None beyond the clustered PK

SA_FSAA_TrusteeEquivalence

Group-membership edges between local trustees on the host. Each row is a (group → member) pair, where EquivalentTrusteeID is the group and TrusteeID is the member. Used to expand local-group memberships during effective-access calculations.

ColumnTypeSizeNullablePKFKDefaultDescription
HOSTintNoPKHost partition
TrusteeIDintNoPKFK → SA_FSAA_Trustees.IDMember trustee
EquivalentTrusteeIDintNoPKFK → SA_FSAA_LocalTrustees.IDGroup (local trustee) the member belongs to

Primary Key: PK_SA_FSAA_TrusteeEquivalence — clustered on (HOST, TrusteeID, EquivalentTrusteeID) Foreign Keys:

  • FK_SA_FSAA_TrusteeEquivalence_TrusteeID(HOST, TrusteeID) → SA_FSAA_Trustees(HOST, ID)
  • FK_SA_FSAA_TrusteeEquivalence_EquivalentTrusteeID(HOST, EquivalentTrusteeID) → SA_FSAA_LocalTrustees(HOST, ID) ON DELETE CASCADE

Indexes: SA_FSAA_TrusteeEquivalence_Group_IDX — nonclustered on (HOST, EquivalentTrusteeID) INCLUDE (TrusteeID)

SA_FSAA_Rights

Permission-entry table. Every distinct ACL is given a RightsProxyID; resources sharing an identical ACL share one RightsProxyID, deduplicating storage dramatically. Each row is one access-control entry: a TrusteeID plus its allow/deny rights broken down by direct/inherited and by simplified bitmask vs. full Windows mask. Created with WITH (DATA_COMPRESSION = ROW) on Enterprise editions.

The AllowRights/DenyRights columns use the simplified six-bit FSAA representation — see the Rights Bitmask enumeration. The *Mask columns hold the full Windows access mask.

ColumnTypeSizeNullablePKFKDefaultDescription
HOSTintNoPKHost partition
RightsProxyIDintNoPKDeduplication key — multiple resources may share one proxy
TrusteeIDintNoPKFK → SA_FSAA_Trustees.IDThe principal this ACE applies to
AllowRightssmallintNoCombined direct+inherited allow bits
DenyRightssmallintNoCombined direct+inherited deny bits
DirectAllowRightssmallintNoDirect (non-inherited) allow bits
DirectDenyRightssmallintNoDirect deny bits
InheritedAllowRightssmallintNoInherited allow bits
InheritedDenyRightssmallintNoInherited deny bits
AllowMaskintNoFull Windows allow access mask
DenyMaskintNoFull Windows deny access mask
DirectAllowMaskintNoDirect allow mask
DirectDenyMaskintNoDirect deny mask
InheritedAllowMaskintNoInherited allow mask
InheritedDenyMaskintNoInherited deny mask

Primary Key: PK_SA_FSAA_Rights — clustered on (HOST, RightsProxyID, TrusteeID) Foreign Keys: FK_SA_FSAA_Rights_TrusteeID(HOST, TrusteeID) → SA_FSAA_Trustees(HOST, ID) Indexes: None beyond the clustered PK

SA_FSAA_Tags

Distinct file tag values per host. Used in a two-level dedup pattern: Tags holds the unique tag string, TagKeys/TagProxies define a multi-tag set, and Resources.TagProxyID references a particular set.

ColumnTypeSizeNullablePKFKDefaultDescription
HOSTintNoPKFK → SA_FSAA_Hosts.IDHost partition
TagIDintNoPKPer-host tag ID
TagnvarcharMAXNoTag string (e.g. an Azure Information Protection label or custom tag)
SourcetinyintNo0Tag source

Primary Key: PK_SA_FSAA_Tags — clustered on (HOST, TagID) Foreign Keys: FK_SA_FSAA_Tags_HOST(HOST) → SA_FSAA_Hosts(ID) ON DELETE CASCADE Indexes: None beyond the clustered PK

SA_FSAA_TagKeys

Defines a "tag set" identity. Each TagProxyID represents a unique combination of tag values shared by one or more resources.

ColumnTypeSizeNullablePKFKDefaultDescription
HOSTintNoPKFK → SA_FSAA_Hosts.IDHost partition
TagProxyIDintNoPKIdentifier for the tag set

Primary Key: PK_SA_FSAA_TagKeys — clustered on (HOST, TagProxyID) Foreign Keys: FK_SA_FSAA_TagKeys_HOST(HOST) → SA_FSAA_Hosts(ID) ON DELETE CASCADE Indexes: None beyond the clustered PK

SA_FSAA_TagProxies

Membership of Tags in a TagKeys set: each row links one tag to one tag-proxy. A resource's TagProxyID points at a row in TagKeys; joining through TagProxies yields the list of tags applied.

ColumnTypeSizeNullablePKFKDefaultDescription
HOSTintNoPKFK → SA_FSAA_Hosts.IDHost partition
TagProxyIDintNoPKFK → SA_FSAA_TagKeys.TagProxyIDTag set
TagIDintNoPKFK → SA_FSAA_Tags.TagIDTag in the set

Primary Key: PK_SA_FSAA_TagProxies — clustered on (HOST, TagProxyID, TagID) Foreign Keys:

  • FK_SA_FSAA_TagProxies_HOST(HOST) → SA_FSAA_Hosts(ID) ON DELETE CASCADE
  • FK_SA_FSAA_TagProxies_TagProxyID(HOST, TagProxyID) → SA_FSAA_TagKeys(HOST, TagProxyID)
  • FK_SA_FSAA_TagProxies_TagID(HOST, TagID) → SA_FSAA_Tags(HOST, TagID)

Indexes: None beyond the clustered PK

SA_FSAA_Resources

The central resource inventory — every share, folder, and file the DC has seen on the host, plus its parent linkage, owner, ACL pointer, gate pointer, tag pointer, sizing, and timestamps. This is the largest table in the schema by row count and is created WITH (DATA_COMPRESSION = ROW) on Enterprise editions.

RightsProxyID, GatesProxyID, and TagProxyID are logical (un-enforced) denormalized pointers; no FK constraints exist on them so that bulk imports can stage rows in any order.

ColumnTypeSizeNullablePKFKDefaultDescription
HOSTintNoPKFK → SA_FSAA_Hosts.IDHost partition
IDbigintNoPKPer-host resource ID (bigint to support very large file systems)
ParentResourceIDbigintYesFK → SA_FSAA_Resources.IDParent folder/share. NULL = root
Namenvarchar2000NoLeaf name (folder/file name; share name for shares)
ResourceTypetinyintNoSee ResourceType enumeration
OwnerIDintYesFK → SA_FSAA_Trustees.IDResource owner trustee
RightsProxyIDintYesLogical pointer into SA_FSAA_Rights (no enforced FK; NULL = inherited from parent)
GatesProxyIDbigintYesLogical pointer into SA_FSAA_GatesProxy (no enforced FK)
NestedLevelintNoDepth in the resource tree (0 = root)
SizebigintYesAggregated file-content size
LastModifieddatetimeYesNTFS last-modified timestamp
LastAccesseddatetimeYesNTFS last-accessed timestamp
CreateddatetimeYesNTFS creation timestamp
TagProxyIDintYesLogical pointer into SA_FSAA_TagKeys (no enforced FK)
USNintNo-1Structural USN — last seen in this scan
DeletedUSNintYesUSN when the resource was deleted (NULL = still present)

Primary Key: PK_SA_FSAA_Resources — clustered on (HOST, ID) Foreign Keys:

  • FK_SA_FSAA_Resources_HOST(HOST) → SA_FSAA_Hosts(ID) ON DELETE CASCADE
  • FK_SA_FSAA_Resources_ParentResourceID(HOST, ParentResourceID) → SA_FSAA_Resources(HOST, ID)
  • FK_SA_FSAA_Resources_OwnerID(HOST, OwnerID) → SA_FSAA_Trustees(HOST, ID)

Indexes:

  • SA_FSAA_Resources_Enum_IDX — nonclustered on (HOST, ParentResourceID) INCLUDE (ID, ResourceType, DeletedUSN)
  • SA_FSAA_Resources_RightsProxyID_IDX — nonclustered on (HOST, RightsProxyID) INCLUDE (ID, GatesProxyID, DeletedUSN, ResourceType)
  • SA_FSAA_Resources_GatesProxyID_IDX — nonclustered on (HOST, GatesProxyID) INCLUDE (ID)
  • SA_FSAA_Resources_USN_IDX — nonclustered on (HOST, USN) INCLUDE (ID)
  • SA_FSAA_Resources_ParentResourceID_Name_IDX — nonclustered on (HOST, ParentResourceID, Name)

SA_FSAA_UnixRights

POSIX permission triplet (Mask, owner, group) for Unix/NFS resources. One row per resource that has Unix rights. The Mask column stores the standard POSIX mode bits.

ColumnTypeSizeNullablePKFKDefaultDescription
HOSTintNoPKHost partition
ResourceIDbigintNoPKFK → SA_FSAA_Resources.IDResource these rights apply to
OwnerIDintNoFK → SA_FSAA_Trustees.IDPOSIX owner trustee
GroupIDintNoFK → SA_FSAA_Trustees.IDPOSIX group trustee
MaskintNoPOSIX mode mask
USNintNoUpdate Sequence Number

Primary Key: PK_SA_FSAA_UnixRights — clustered on (HOST, ResourceID) Foreign Keys:

  • FK_SA_FSAA_UnixRights_ResourceID(HOST, ResourceID) → SA_FSAA_Resources(HOST, ID) ON DELETE CASCADE
  • FK_SA_FSAA_UnixRights_OwnerID(HOST, OwnerID) → SA_FSAA_Trustees(HOST, ID)
  • FK_SA_FSAA_UnixRights_GroupID(HOST, GroupID) → SA_FSAA_Trustees(HOST, ID)

Indexes: None beyond the clustered PK

SA_FSAA_Gates

A "gate" is the entry point through which clients reach a resource: an SMB share, an NFS export, an NFS export policy, or an Azure Files share. Gates have their own ACLs (share permissions) separate from resource ACLs. A gate references the underlying ShareID and the FolderID it grants access to. NFS share-level ACLs are modeled as a separate "policy" gate referenced by the PolicyID self-FK.

ColumnTypeSizeNullablePKFKDefaultDescription
HOSTintNoPKFK → SA_FSAA_Hosts.IDHost partition
IDintNoPKPer-host gate ID
ShareIDbigintYesFK → SA_FSAA_Resources.IDResource that represents the share root
FolderIDbigintYesFK → SA_FSAA_Resources.IDFolder the gate grants access to
PolicyIDintYesFK → SA_FSAA_Gates.IDSelf-FK — points at the export-policy gate when this is an NFS export
DisplayNamenvarchar256NoShare name (e.g. Public$)
Pathnvarchar512YesLocal path of the share (e.g. C:\Shares\Public)
NestedLevelintYesDepth from the host root
GateTypeintNo0See GateType enumeration
USNintNo-1Update Sequence Number
DeletedUSNintYesUSN at deletion (NULL = still present)

Primary Key: PK_SA_FSAA_Gates — clustered on (HOST, ID) Foreign Keys:

  • FK_SA_FSAA_Gates_HOST(HOST) → SA_FSAA_Hosts(ID) ON DELETE CASCADE
  • FK_SA_FSAA_Gates_ShareID(HOST, ShareID) → SA_FSAA_Resources(HOST, ID)
  • FK_SA_FSAA_Gates_FolderID(HOST, FolderID) → SA_FSAA_Resources(HOST, ID)
  • FK_SA_FSAA_Gates_PolicyID(HOST, PolicyID) → SA_FSAA_Gates(HOST, ID) (self-FK for NFS export policies)

Indexes: None beyond the clustered PK

SA_FSAA_GatesProxy

Many-to-many bridge from a resource to gates. A resource may be reachable through multiple shares (or no share at all). The proxy ID is denormalized onto SA_FSAA_Resources.GatesProxyID.

ColumnTypeSizeNullablePKFKDefaultDescription
HOSTintNoPKHost partition
IDbigintNoPKProxy ID — referenced by Resources.GatesProxyID
GateIDintNoPKFK → SA_FSAA_Gates.IDGate that grants reach to this resource

Primary Key: PK_SA_FSAA_GatesProxy — clustered on (HOST, ID, GateID) Foreign Keys: FK_SA_FSAA_GatesProxy_GateID(HOST, GateID) → SA_FSAA_Gates(HOST, ID) ON DELETE CASCADE Indexes: SA_FSAA_GatesProxy_GateID_IDX — nonclustered on (HOST, GateID) INCLUDE (ID)

SA_FSAA_Policies

Local Security Authority (LSA) policies attached to a host's policy gates (e.g. Logon as a service, Allow log on locally). Used by the SA_FSAA_GetPolicyMembership UDF to expand pseudo-trustees such as NT AUTHORITY\INTERACTIVE and NT AUTHORITY\SERVICE into underlying user accounts. PolicyID is a FK into SA_FSAA_Gates because policies are modelled as a special gate type.

ColumnTypeSizeNullablePKFKDefaultDescription
HOSTintNoPKHost partition
PolicyIDintNoPKFK → SA_FSAA_Gates.IDPolicy gate (1 = INTERACTIVE, 3 = BATCH, 4 = SERVICE, 5 = TERMINAL SERVER USER)
TrusteeIDintNoPKFK → SA_FSAA_Trustees.IDTrustee assigned to the policy
AllowsmallintNoAllow flag (1 = granted, 0 = denied)

Primary Key: PK_SA_FSAA_Policies — clustered on (HOST, PolicyID, TrusteeID) Foreign Keys:

  • FK_SA_FSAA_Policies_PolicyID(HOST, PolicyID) → SA_FSAA_Gates(HOST, ID) ON DELETE CASCADE
  • FK_SA_FSAA_Policies_TrusteeID(HOST, TrusteeID) → SA_FSAA_Trustees(HOST, ID)

Indexes: None beyond the clustered PK

SA_FSAA_Exceptions

One row per detected access-control anomaly (e.g. Open Access, Broken Inheritance, Direct User Permissions). The kind of anomaly is identified by ExceptionType joining SA_FSAA_ExceptionTypes. Either ResourceID, GateID, TrusteeID, or SourceTrusteeID may be NULL depending on the exception class.

ColumnTypeSizeNullablePKFKDefaultDescription
HOSTintNoPKFK → SA_FSAA_Hosts.IDHost partition
IDintNoPKPer-host exception ID
ExceptionTypeintNoFK → SA_FSAA_ExceptionTypes.ExceptionTypeClass of exception
GateIDintYesFK → SA_FSAA_Gates.IDGate involved (if any)
ResourceIDbigintYesFK → SA_FSAA_Resources.IDResource involved (if any)
TrusteeIDintYesFK → SA_FSAA_Trustees.IDSubject trustee (if any)
SourceTrusteeIDintYesFK → SA_FSAA_Trustees.IDSource trustee — for SID-History exceptions, the historical SID's owner

Primary Key: PK_SA_FSAA_Exceptions — clustered on (HOST, ID) Foreign Keys:

  • FK_SA_FSAA_Exceptions_HOST(HOST) → SA_FSAA_Hosts(ID)
  • FK_SA_FSAA_Exceptions_GateID(HOST, GateID) → SA_FSAA_Gates(HOST, ID) ON DELETE CASCADE
  • FK_SA_FSAA_Exceptions_ResourceID(HOST, ResourceID) → SA_FSAA_Resources(HOST, ID)
  • FK_SA_FSAA_Exceptions_TrusteeID(HOST, TrusteeID) → SA_FSAA_Trustees(HOST, ID)
  • FK_SA_FSAA_Exceptions_SourceTrusteeID(HOST, SourceTrusteeID) → SA_FSAA_Trustees(HOST, ID)

Indexes: SA_FSAA_Exceptions_Resource_IDX — nonclustered on (HOST, ResourceID) INCLUDE (ExceptionType, GateID)

SA_FSAA_ExceptionTypes

Per-host catalog of every exception class FSAA can detect. ParentType allows hierarchical grouping of related exceptions.

ColumnTypeSizeNullablePKFKDefaultDescription
HOSTintNoPKFK → SA_FSAA_Hosts.IDHost partition
ExceptionTypeintNoPKType code (referenced by Exceptions.ExceptionType)
GUIDvarchar38NoStable GUID identifying this exception kind
USNintNoUpdate Sequence Number
Namevarchar128NoShort name (e.g. OpenAccess)
Descriptionvarchar256NoHuman-readable description
CountintNoCached count of SA_FSAA_Exceptions rows of this type
ParentTypeintYesOptional parent exception type (self-reference within the host)

Primary Key: PK_SA_FSAA_ExceptionTypes — clustered on (HOST, ExceptionType) Foreign Keys: FK_SA_FSAA_ExceptionTypes_HOST(HOST) → SA_FSAA_Hosts(ID) ON DELETE CASCADE Indexes: None beyond the clustered PK

SA_FSAA_ProbableOwners

Probable-owner heuristic results — one row per (resource, candidate-owner) pair, scored by file count and aggregated size of files the candidate owns within the resource subtree. Populated by the Probable Owner analysis job.

ColumnTypeSizeNullablePKFKDefaultDescription
HOSTintNoPKHost partition
ResourceIDbigintNoPKFK → SA_FSAA_Resources.IDResource (folder/share) being scored
OwnerIDintNoPKFK → SA_FSAA_Trustees.IDCandidate owner
FileSizebigintYesTotal bytes owned by this candidate within the subtree
FileCountintYesNumber of files owned by this candidate within the subtree

Primary Key: PK_SA_FSAA_ProbableOwners — clustered on (HOST, ResourceID, OwnerID) Foreign Keys:

  • FK_SA_FSAA_ProbableOwners_HOST(HOST) → SA_FSAA_Hosts(ID) ON DELETE CASCADE
  • FK_SA_FSAA_ProbableOwners_ResourceID(HOST, ResourceID) → SA_FSAA_Resources(HOST, ID)
  • FK_SA_FSAA_ProbableOwners_OwnerID(HOST, OwnerID) → SA_FSAA_Trustees(HOST, ID)

Indexes: None beyond the clustered PK

SA_FSAA_FileSizes

Aggregated size and count of all files within each resource subtree. Populated by the bulk-import pipeline when the Sizing option is enabled.

ColumnTypeSizeNullablePKFKDefaultDescription
HOSTintNoPKHost partition
ResourceIDbigintNoPKFK → SA_FSAA_Resources.IDResource (folder/share)
FileSizebigintYesTotal file bytes within the subtree
FileCountintYesTotal number of files within the subtree

Primary Key: PK_SA_FSAA_FileSizes — clustered on (HOST, ResourceID) Foreign Keys: FK_SA_FSAA_FileSizes_ResourceID(HOST, ResourceID) → SA_FSAA_Resources(HOST, ID) ON DELETE CASCADE Indexes: None beyond the clustered PK

SA_FSAA_FileTypes

Per-extension breakdown of files within each resource subtree. One row per (resource, extension).

ColumnTypeSizeNullablePKFKDefaultDescription
HOSTintNoPKHost partition
ResourceIDbigintNoPKFK → SA_FSAA_Resources.IDResource (folder/share)
Extensionnvarchar255NoPKFile extension (e.g. .docx)
FileSizebigintYesTotal bytes of files with this extension
FileCountintYesNumber of files with this extension

Primary Key: PK_SA_FSAA_FileTypes — clustered on (HOST, ResourceID, Extension) Foreign Keys: FK_SA_FSAA_FileTypes_ResourceID(HOST, ResourceID) → SA_FSAA_Resources(HOST, ID) ON DELETE CASCADE Indexes: None beyond the clustered PK

SA_FSAA_FileAges

Histogram of file age buckets within each resource subtree. The eleven FileCount0FileCount10 columns hold counts in successively older buckets; bucket boundaries are determined at scan configuration time.

ColumnTypeSizeNullablePKFKDefaultDescription
HOSTintNoPKHost partition
ResourceIDbigintNoPKFK → SA_FSAA_Resources.IDResource (folder/share)
LastModifieddatetimeYesMost recent file modification within the subtree
FileCount0intYesFiles in age bucket 0 (newest)
FileCount1intYesFiles in age bucket 1
FileCount2intYesFiles in age bucket 2
FileCount3intYesFiles in age bucket 3
FileCount4intYesFiles in age bucket 4
FileCount5intYesFiles in age bucket 5
FileCount6intYesFiles in age bucket 6
FileCount7intYesFiles in age bucket 7
FileCount8intYesFiles in age bucket 8
FileCount9intYesFiles in age bucket 9
FileCount10intYesFiles in age bucket 10 (oldest)

Primary Key: PK_SA_FSAA_FileAges — clustered on (HOST, ResourceID) Foreign Keys: FK_SA_FSAA_FileAges_ResourceID(HOST, ResourceID) → SA_FSAA_Resources(HOST, ID) ON DELETE CASCADE Indexes: None beyond the clustered PK

SA_FSAA_FileTags

Aggregated file count and size per (resource, tag-set). Populated when Azure Information Protection (AIP) or sensitive-data tags are collected.

ColumnTypeSizeNullablePKFKDefaultDescription
HOSTintNoPKHost partition
ResourceIDbigintNoPKFK → SA_FSAA_Resources.IDResource (folder/share)
TagProxyIDintNoPKFK → SA_FSAA_TagKeys.TagProxyIDTag set
FileSizebigintNoTotal bytes of files with this tag set
FileCountintNoNumber of files with this tag set

Primary Key: PK_SA_FSAA_FileTags — clustered on (HOST, ResourceID, TagProxyID) Foreign Keys:

  • FK_SA_FSAA_FileTags_ResourceID(HOST, ResourceID) → SA_FSAA_Resources(HOST, ID) ON DELETE CASCADE
  • FK_SA_FSAA_FileTags_TagProxyID(HOST, TagProxyID) → SA_FSAA_TagKeys(HOST, TagProxyID)

Indexes: None beyond the clustered PK

SA_FSAA_ScanHistory

Append-only audit log of every scan run, including the FSAA configuration XML used. Useful for forensic and configuration-tracking purposes.

ColumnTypeSizeNullablePKFKDefaultDescription
ConsoleHostnvarchar64YesNAA console that initiated the scan
ScanHostnvarchar64YesHost machine that performed the scan
ScanTypenvarchar64YesScan type (Access / Activity / DLP)
JobGUIDvarchar38YesJob correlation GUID
RunTimedatetime2YesWhen the scan ran
FSAAConfigXmlxmlYesSnapshot of the FSAA XML configuration

Primary Key: None Foreign Keys: None Indexes: None

SA_FSAA_AzureFilesShares

Catalog of Azure Files shares discovered on a host. Each share links back to a SA_FSAA_Resources row (the share root) and a SA_FSAA_Gates row (the share gate). StorageAccount carries the FQDN of the storage account.

ColumnTypeSizeNullablePKFKDefaultDescription
HOSTintNoPKFK → SA_FSAA_Hosts.IDHost partition
IDintNoPKPer-host Azure share ID
ResourceIDbigintNoFK → SA_FSAA_Resources.IDShare-root resource
GateIDintNoFK → SA_FSAA_Gates.IDShare gate
Namenvarchar2000YesShare name
StorageAccountvarchar256YesStorage-account FQDN (e.g. acct.file.core.windows.net)

Primary Key: PK_SA_FSAA_AzureFilesShares — clustered on (HOST, ID) Foreign Keys:

  • FK_SA_FSAA_AzureFilesShares_HOST(HOST) → SA_FSAA_Hosts(ID) ON DELETE CASCADE
  • FK_SA_FSAA_AzureFilesShares_ResourceID(HOST, ResourceID) → SA_FSAA_Resources(HOST, ID)
  • FK_SA_FSAA_AzureFilesShares_GateID(HOST, GateID) → SA_FSAA_Gates(HOST, ID)

Indexes: None beyond the clustered PK

SA_FSAA_AzureFilesShareProperties

Azure-Files-specific metadata that doesn't fit the generic resource model: tier, lease, retention, quota, and soft-delete state.

ColumnTypeSizeNullablePKFKDefaultDescription
HOSTintNoPKHost partition
AzureShareIDintNoPKFK → SA_FSAA_AzureFilesShares.IDAzure share
AccessTiervarchar50YesHot / Cool / Premium / TransactionOptimized
AccessChangeTimedatetime27YesWhen tier was last changed
AccessTierTransitionStatevarchar50YesIn-progress tier transition state
DeletedOndatetime27YesSoft-delete timestamp (NULL if not deleted)
LastModifieddatetime27YesLast modified timestamp
LeaseDurationvarchar50YesLease duration (Fixed / Infinite)
LeaseStatusvarchar50YesLease status (Locked / Unlocked)
LeaseStatevarchar50YesLease state (Available / Leased / Expired / Breaking / Broken)
EnabledProtocolsvarchar50YesEnabled protocols (SMB, NFS)
RemainingRetentionDaysintYesSoft-delete retention days remaining
QuotaInGBfloatYesConfigured share quota (GiB)

Primary Key: PK_SA_FSAA_AzureFilesShareProperties — clustered on (HOST, AzureShareID) Foreign Keys: FK_SA_FSAA_AzureFilesShareProperties_AzureShareID(HOST, AzureShareID) → SA_FSAA_AzureFilesShares(HOST, ID) ON DELETE CASCADE Indexes: None beyond the clustered PK

SA_FSAA_AzureStorageAccounts

Single-column lookup of every Azure Storage Account hostname known to FSAA. Used by the data-collection job to expand a configured storage account into its discoverable file shares.

note

The unusual single-column shape exists because the HOST column name is required for NAA's dynamic host-list generation. This table carries no foreign keys and no indexes.

ColumnTypeSizeNullablePKFKDefaultDescription
HOSTnvarchar46NoStorage-account FQDN (max 24 chars + .file.core.windows.net suffix)

Primary Key: None Foreign Keys: None Indexes: None

SA_FSAA_TrusteeMap

Cross-module identity map. Each FSAA trustee may correspond to a distinct trustee row in the FSAC (Activity) and FSDLP (DLP) tables. This table holds those mappings so the three sub-collectors can present unified results.

ColumnTypeSizeNullablePKFKDefaultDescription
HOSTintNoPKHost partition
IDintNoPKFK → SA_FSAA_Trustees.IDFSAA trustee ID
AccessIDintYesCorresponding ID in Access (FSAA) data — typically same as ID
ActivityIDintYesCorresponding ID in Activity (FSAC) trustee table
DLPIDintYesCorresponding ID in DLP (FSDLP) trustee table

Primary Key: PK_SA_FSAA_TrusteeMap — clustered on (HOST, ID) Foreign Keys: FK_SA_FSAA_TrusteeMap_ID(HOST, ID) → SA_FSAA_Trustees(HOST, ID) Indexes: None beyond the clustered PK

SA_FSAA_ResourceMap

Cross-module resource identity map. Same role as SA_FSAA_TrusteeMap but for resources.

ColumnTypeSizeNullablePKFKDefaultDescription
HOSTintNoPKHost partition
IDbigintNoPKFK → SA_FSAA_Resources.IDFSAA resource ID
AccessIDbigintYesCorresponding Access (FSAA) ID
ActivityIDbigintYesCorresponding Activity (FSAC) ID
DLPIDbigintYesCorresponding DLP (FSDLP) ID

Primary Key: PK_SA_FSAA_ResourceMap — clustered on (HOST, ID) Foreign Keys: FK_SA_FSAA_ResourceMap_ID(HOST, ID) → SA_FSAA_Resources(HOST, ID) Indexes:

  • SA_FSAA_ResourceMap_AccessID_IDX — nonclustered on (HOST, AccessID)
  • SA_FSAA_ResourceMap_ActivityID_IDX — nonclustered on (HOST, ActivityID)
  • SA_FSAA_ResourceMap_DLPID_IDX — nonclustered on (HOST, DLPID)

SA_FSAA_GateMap

Cross-module gate identity map.

ColumnTypeSizeNullablePKFKDefaultDescription
HOSTintNoPKHost partition
IDintNoPKFK → SA_FSAA_Gates.IDFSAA gate ID
AccessIDintYesCorresponding Access ID
ActivityIDintYesCorresponding Activity ID
DLPIDintYesCorresponding DLP ID

Primary Key: PK_SA_FSAA_GateMap — clustered on (HOST, ID) Foreign Keys: FK_SA_FSAA_GateMap_ID(HOST, ID) → SA_FSAA_Gates(HOST, ID) Indexes: None beyond the clustered PK

SA_FSAA_ResourcesScanTypeDetails

Per-resource USN tracking columns split out of SA_FSAA_Resources in schema version 8.0. One row per resource, holding per-scan-type "last seen" / "last deleted" timestamps and USNs for Access, Activity, and DLP.

ColumnTypeSizeNullablePKFKDefaultDescription
HOSTintNoPKHost partition
IDbigintNoPKFK → SA_FSAA_Resources.IDResource ID
AccessUSNintYesUSN at last Access sighting
AccessLastSeendatetime2YesLast time Access scan saw this resource
AccessLastDeleteddatetime2YesTime the resource was last marked deleted by Access
ActivityUSNintYesUSN at last Activity sighting
ActivityLastSeendatetime2YesLast time Activity scan saw this resource
ActivityLastDeleteddatetime2YesTime the resource was last marked deleted by Activity
DLPUSNintYesUSN at last DLP sighting
DLPLastSeendatetime2YesLast time DLP saw this resource
DLPLastDeleteddatetime2YesTime the resource was last marked deleted by DLP

Primary Key: PK_SA_FSAA_ResourcesScanTypeDetails — clustered on (HOST, ID) Foreign Keys: FK_SA_FSAA_ResourcesScanTypeDetails_ID(HOST, ID) → SA_FSAA_Resources(HOST, ID) Indexes: None beyond the clustered PK

Activity Collector Tables (SA_FSAC_*)

SA_FSAC_ProcessNames

Per-host lookup of process names observed in audit events. Activity events reference process names by ID to avoid storing the same long path string repeatedly.

ColumnTypeSizeNullablePKFKDefaultDescription
HOSTintNoPKFK → SA_FSAA_Hosts.IDHost partition
IDintNoPKPer-host process-name ID
Namenvarchar255NoProcess name (e.g. EXPLORER.EXE)

Primary Key: PK_SA_FSAC_ProcessNames — clustered on (HOST, ID) Foreign Keys: FK_SA_FSAC_ProcessNames_HOST(HOST) → SA_FSAA_Hosts(ID) ON DELETE CASCADE Indexes: None beyond the clustered PK

SA_FSAC_ActivityEvents

The high-volume activity-event stream. One row per audited file-system operation captured by an FSAC agent. Operation is a coded enumeration covering Read / Add / Update / Delete / PermissionChange / Rename. Allow is 1 for successful operations and 0 for denied operations.

note

The AccessTime column type differs by environment: fresh-install DDL uses datetime2; the Task-15 migration recreates the table with datetime. Post-migration environments have datetime.

ColumnTypeSizeNullablePKFKDefaultDescription
HOSTintNoPKFK → SA_FSAA_Hosts.IDHost partition
IDbigintNoPKPer-host event ID
AccessTimedatetime / datetime2NoTime the operation occurred
PathIDbigintNoFK → SA_FSAA_Resources.IDResource (file or folder) the operation acted on
TrusteeIDintNoFK → SA_FSAA_Trustees.IDThe user / principal that performed the operation
ProcessIDintYesFK → SA_FSAC_ProcessNames.IDProcess executing the operation (NULL if unknown)
OperationtinyintNo0=Read, 1=Add, 2=Update, 3=Delete, 4=PermissionChange, 5=Rename
AllowbitNo11 = operation allowed, 0 = operation denied
USNintNoUpdate Sequence Number

Primary Key: PK_SA_FSAC_ActivityEvents — clustered on (HOST, ID) Foreign Keys:

  • FK_SA_FSAC_ActivityEvents_HOST(HOST) → SA_FSAA_Hosts(ID) ON DELETE CASCADE
  • FK_SA_FSAC_ActivityEvents_PathID(HOST, PathID) → SA_FSAA_Resources(HOST, ID)
  • FK_SA_FSAC_ActivityEvents_ProcessID(HOST, ProcessID) → SA_FSAC_ProcessNames(HOST, ID)
  • FK_SA_FSAC_ActivityEvents_TrusteeID(HOST, TrusteeID) → SA_FSAA_Trustees(HOST, ID)

Indexes:

  • SA_FSAC_ActivityEvents_PathID_IDX — nonclustered on (HOST, PathID) INCLUDE (ID, AccessTime, TrusteeID, Operation, Allow)
  • SA_FSAC_ActivityEvents_TrusteeID_IDX — nonclustered on (TrusteeID, AccessTime) INCLUDE (PathID, ProcessID, Operation, Allow)

SA_FSAC_PermissionChanges

Detail rows for activity events where Operation = 4 (PermissionChange). Each event may have multiple change rows — one per ACE that was added, removed, or modified. AccessRights is the bitmask before the change; NewAccessRights is the bitmask after (NULL on removal).

ColumnTypeSizeNullablePKFKDefaultDescription
HOSTintNoPKFK → SA_FSAA_Hosts.IDHost partition
ActivityIDbigintNoPKFK → SA_FSAC_ActivityEvents.IDOwning activity event
ChangeIDsmallintNoPKPer-event change index
AclTypetinyintNoACL type (DACL / SACL distinction)
TrusteeIDintNoFK → SA_FSAA_Trustees.IDTrustee whose ACE changed
ChangeTypetinyintNoChange kind: added / removed / modified
AceTypetinyintNoACE type (Allow / Deny)
InheritanceFlagstinyintNoNTFS inheritance flags
AceFlagstinyintNoNTFS ACE flags
AccessRightsbigintNoPre-change Windows access mask
NewAccessRightsbigintYesPost-change access mask (NULL when ACE was removed)

Primary Key: PK_SA_FSAC_PermissionChanges — clustered on (HOST, ActivityID, ChangeID) Foreign Keys:

  • FK_SA_FSAC_PermissionChanges_HOST(HOST) → SA_FSAA_Hosts(ID)
  • FK_SA_FSAC_PermissionChanges_ActivityID(HOST, ActivityID) → SA_FSAC_ActivityEvents(HOST, ID)
  • FK_SA_FSAC_PermissionChanges_TrusteeID(HOST, TrusteeID) → SA_FSAA_Trustees(HOST, ID)

Indexes: None beyond the clustered PK

SA_FSAC_OwnerChanges

Detail rows for activity events that changed a resource's owner (Take Ownership / chown). One row per qualifying activity event.

ColumnTypeSizeNullablePKFKDefaultDescription
HOSTintNoPKFK → SA_FSAA_Hosts.IDHost partition
ActivityIDbigintNoPKFK → SA_FSAC_ActivityEvents.IDOwning activity event
PreviousOwnerIDintNoFK → SA_FSAA_Trustees.IDOwner before the change
NewOwnerIDintNoFK → SA_FSAA_Trustees.IDOwner after the change

Primary Key: PK_SA_FSAC_OwnerChanges — clustered on (HOST, ActivityID) Foreign Keys:

  • FK_SA_FSAC_OwnerChanges_HOST(HOST) → SA_FSAA_Hosts(ID)
  • FK_SA_FSAC_OwnerChanges_ActivityID(HOST, ActivityID) → SA_FSAC_ActivityEvents(HOST, ID)
  • FK_SA_FSAC_OwnerChanges_PreviousOwnerID(HOST, PreviousOwnerID) → SA_FSAA_Trustees(HOST, ID)
  • FK_SA_FSAC_OwnerChanges_NewOwnerID(HOST, NewOwnerID) → SA_FSAA_Trustees(HOST, ID)

Indexes: None beyond the clustered PK

SA_FSAC_DailyActivity

Daily aggregation of activity-event counts, partitioned by (host, date, folder, trustee, operation, allow). Feeds the daily-activity views and the Most Active Users / Most Active Servers reports.

note

The PK was added by a migration block; fresh CREATE TABLE has no PK — the migration adds it if absent.

ColumnTypeSizeNullablePKFKDefaultDescription
HOSTintNoPKFK → SA_FSAA_Hosts.IDHost partition
ActivityDatedateNoPKDate the activity occurred
FolderIDbigintNoPKFK → SA_FSAA_Resources.IDContaining folder
TrusteeIDintNoPKFK → SA_FSAA_Trustees.IDActing trustee
OperationtinyintNoPKOperation code (0–5)
AllowbitNoPK1Allow / Deny flag
CountintNoNumber of operations

Primary Key: PK_SA_FSAC_DailyActivity — clustered on (HOST, FolderID, ActivityDate, TrusteeID, Operation, Allow) Foreign Keys:

  • FK_SA_FSAC_DailyActivity_HOST(HOST) → SA_FSAA_Hosts(ID) ON DELETE CASCADE
  • FK_SA_FSAC_DailyActivity_FolderID(HOST, FolderID) → SA_FSAA_Resources(HOST, ID)
  • FK_SA_FSAC_DailyActivity_TrusteeID(HOST, TrusteeID) → SA_FSAA_Trustees(HOST, ID)

Indexes: None beyond the clustered PK

SA_FSAC_RenameTargets

Detail rows for Operation = 5 (Rename) activity events: stores the target path-ID of the rename. The activity event itself records the source path; this table records the destination.

ColumnTypeSizeNullablePKFKDefaultDescription
HOSTintNoPKFK → SA_FSAA_Hosts.IDHost partition
ActivityIDbigintNoPKFK → SA_FSAC_ActivityEvents.IDOwning rename event
TargetPathIDbigintNoFK → SA_FSAA_Resources.IDResource the source was renamed to

Primary Key: PK_SA_FSAC_RenameTargets — clustered on (HOST, ActivityID) Foreign Keys:

  • FK_SA_FSAC_RenameTargets_HOST(HOST) → SA_FSAA_Hosts(ID) ON DELETE CASCADE
  • FK_SA_FSAC_RenameTargets_ActivityID(HOST, ActivityID) → SA_FSAC_ActivityEvents(HOST, ID)
  • FK_SA_FSAC_RenameTargets_TargetPathID(HOST, TargetPathID) → SA_FSAA_Resources(HOST, ID)

Indexes: None beyond the clustered PK

SA_FSAC_ExceptionTypes

Catalog of activity-exception classes (e.g. Unusual hourly activity, Mass deletion, Ransomware artifact). One row per (host, exception type).

ColumnTypeSizeNullablePKFKDefaultDescription
HOSTintNoPKHost partition
ExceptionTypeintNoPKException type code
Namevarchar128NoShort name
Descriptionvarchar256NoHuman-readable description
CountintNoCached count of SA_FSAC_Exceptions rows of this type
ParentTypeintYesOptional parent exception type for hierarchical grouping

Primary Key: PK_SA_FSAC_ExceptionTypes — clustered on (HOST, ExceptionType) Foreign Keys: None Indexes: None beyond the clustered PK

SA_FSAC_Exceptions

One row per detected activity anomaly. The Value / Average / StandardDeviations columns capture the statistical model output that triggered the exception.

note

ExceptionType is a logical (un-enforced) reference to SA_FSAC_ExceptionTypes.ExceptionType — no FK constraint is created.

ColumnTypeSizeNullablePKFKDefaultDescription
HOSTintNoPKHost partition
IDintNoPKPer-host exception ID
ExceptionTypeintNoClass of exception (logical reference to SA_FSAC_ExceptionTypes)
ActivityDatedateNoDate the anomaly occurred
ActivityHourtinyintYesHour-of-day (0–23) for hourly-bucketed anomalies
GateIDintNoGate (share) where the anomaly was observed
TrusteeIDintYesUser involved (if applicable)
ResourceIDbigintYesResource involved (if applicable)
ValueintYesObserved value (e.g. operation count)
AveragefloatYesBaseline average for comparison
StandardDeviationsfloatYesHow many σ the observed value is from the average

Primary Key: PK_SA_FSAC_Exceptions — clustered on (HOST, ID) Foreign Keys: None Indexes: SA_FSAC_Exceptions_ResourceID_IDX — nonclustered on (HOST, ResourceID) INCLUDE (GateID)

SA_FSAC_UserExceptionTypes

User-centric variant of SA_FSAC_ExceptionTypes — partitioned by user SID instead of by host. Used when an exception is associated with a particular user across multiple hosts.

ColumnTypeSizeNullablePKFKDefaultDescription
SIDvarchar184NoPKUser SID
ExceptionTypeintNoPKException type code
Namevarchar128NoShort name
Descriptionvarchar256NoDescription
CountintNoCached count
ParentTypeintYesOptional parent exception type

Primary Key: PK_SA_FSAC_UserExceptionTypes — clustered on (SID, ExceptionType) Foreign Keys: None Indexes: None beyond the clustered PK

SA_FSAC_UserExceptions

One row per detected per-user activity anomaly (e.g. unusual login pattern attributed to a specific SID).

ColumnTypeSizeNullablePKFKDefaultDescription
SIDvarchar184NoUser SID
IDintNoPKSurrogate exception ID
ExceptionTypeintNoException type
ActivityDatedateNoDate the anomaly occurred
ActivityStartTimetinyintYesStart hour of the activity window (0–23)
ActivityPeriodtinyintYesLength of the activity window in hours
ValueintYesObserved value
AveragefloatYesBaseline average
StandardDeviationsfloatYesσ from baseline

Primary Key: PK_SA_FSAC_UserExceptions — clustered on (ID) Foreign Keys: None Indexes: None beyond the clustered PK

Sensitive Data Tables (SA_FSDLP_*)

SA_FSDLP_ImportHistory

Append-only history of DLP scan imports per host. One row per imported scan run.

ColumnTypeSizeNullablePKFKDefaultDescription
HOSTintNoPKFK → SA_FSAA_Hosts.IDHost partition
GUIDvarchar38NoScan correlation GUID
USNintNoPKUSN at import time

Primary Key: PK_SA_FSDLP_ImportHistory — clustered on (HOST, USN) Foreign Keys: FK_SA_FSDLP_ImportHistory_HOST(HOST) → SA_FSAA_Hosts(ID) ON DELETE CASCADE Indexes: None beyond the clustered PK

SA_FSDLP_Criteria

Per-host catalog of the DLP criteria (patterns / classifiers) that produced matches. The pattern_guid is the global identifier linking back to centrally managed criteria definitions. Risk is a numeric severity score.

ColumnTypeSizeNullablePKFKDefaultDescription
HOSTintNoPKFK → SA_FSAA_Hosts.IDHost partition
IDintNoPKPer-host criterion ID
Namenvarchar256NoCriterion name (e.g. "United States Social Security Number")
RiskintNo0Risk score
pattern_guiduniqueidentifierYesGlobal criterion GUID

Primary Key: PK_SA_FSDLP_Criteria — clustered on (HOST, ID) Foreign Keys: FK_SA_FSDLP_Criteria_HOST(HOST) → SA_FSAA_Hosts(ID) ON DELETE CASCADE Indexes: None beyond the clustered PK

SA_FSDLP_Matches

One row per (file, criterion) pair where the criterion produced at least one hit. MatchCount is the total number of hits. DataSource is a bitmask: 1 = Content, 2 = Metadata, 4 = Filename; combinations are summed (e.g. 5 = Content + Filename).

note

FileId is a logical (un-enforced) reference to SA_FSAA_Resources.ID. The DLP collector populates FileId to match the FSAA resource ID but no SQL FK constraint is created, so DLP imports can run independently of structural scans.

ColumnTypeSizeNullablePKFKDefaultDescription
HOSTintNoPKHost partition
FileIdbigintNoPKResource ID of the matched file (logical FK to SA_FSAA_Resources.ID)
CriteriaIdintNoPKFK → SA_FSDLP_Criteria.IDCriterion that matched
MatchCountintYesNumber of hits within this file for this criterion
DataSourceintNo0Bitmask: 1=Content, 2=Metadata, 4=Filename

Primary Key: PK_SA_FSDLP_Matches — clustered on (HOST, FileId, CriteriaId) Foreign Keys: FK_SA_FSDLP_Matches_CriteriaId(HOST, CriteriaId) → SA_FSDLP_Criteria(HOST, ID) ON DELETE CASCADE Indexes: None beyond the clustered PK

SA_FSDLP_MatchHits

Per-hit detail rows. For every match in SA_FSDLP_Matches, this table holds the prefix/data/suffix excerpt around each hit, plus a confidence score.

ColumnTypeSizeNullablePKFKDefaultDescription
HOSTintNoPKHost partition
FileIdbigintNoPKResource ID of the matched file
CriteriaIdintNoPKCriterion that produced the hit
IDbigintNoPKPer-(File, Criterion) hit ID
SubFileNamenvarchar1024YesSub-file name (for archives such as ZIP / RAR)
MatchPrefixnvarchar1024YesText immediately before the matched data
MatchDatanvarchar1024YesThe matched data itself
MatchSuffixnvarchar1024YesText immediately after the matched data
ConfidenceintNo0Confidence score (0–100)
DataSourceintNo0Where the hit was found (see SA_FSDLP_Matches.DataSource)

Primary Key: PK_SA_FSDLP_MatchHits — clustered on (HOST, FileId, CriteriaId, ID) Foreign Keys: FK_SA_FSDLP_MatchHits_Match(HOST, FileId, CriteriaId) → SA_FSDLP_Matches(HOST, FileId, CriteriaId) ON DELETE CASCADE Indexes: None beyond the clustered PK

SA_FSDLP_MatchHits_SubjectProfile

Links a DLP match hit to the subject-profile system, identifying which person or entity the hit is about. Populated when subject-profile correlation is enabled.

note

The SA_SubjectProfile_* tables referenced by this table's foreign keys are owned by the central Subject Profile module and are documented separately.

ColumnTypeSizeNullablePKFKDefaultDescription
HOSTintNoPKHost partition
FileIdbigintNoPKResource ID of the matched file
CriteriaIdintNoPKCriterion that produced the hit
IDbigintNoPKFK → SA_FSDLP_MatchHits.IDHit ID
SourceIdintNoFK → SA_SubjectProfile_Sources.IdSubject-profile source
IdentityIdbigintNoFK → SA_SubjectProfile_Identities.IdResolved identity
AttributeIdintNoAttribute on the identity that the hit aligns with
OrderintNoPosition within multi-valued attributes

Primary Key: PK_SA_FSDLP_MatchHits_SubjectProfile — clustered on (HOST, FileId, CriteriaId, ID) Foreign Keys:

  • FK_SA_FSDLP_MatchHits_SubjectProfile(HOST, FileId, CriteriaId, ID) → SA_FSDLP_MatchHits(HOST, FileId, CriteriaId, ID) ON DELETE CASCADE
  • FK_SA_FSDLP_MatchHits_SubjectProfile_Source(SourceId) → SA_SubjectProfile_Sources(Id)
  • FK_SA_FSDLP_MatchHits_SubjectProfile_Identity(IdentityId) → SA_SubjectProfile_Identities(Id)
  • FK_SA_FSDLP_MatchHits_SubjectProfile_Attribute(IdentityId, AttributeId, Order) → SA_SubjectProfile_AttributeValues(IdentityId, AttributeId, Order) ON DELETE CASCADE

Indexes: None beyond the clustered PK

DFS Namespace Tables (SA_FSDFS_*)

SA_FSDFS_Namespaces

One row per discovered DFS namespace (e.g. \\contoso.com\public). Each namespace anchors zero or more DFS links.

ColumnTypeSizeNullablePKFKDefaultDescription
IDintNoPKIDENTITY(1,1)Surrogate namespace ID
HOSTintNoHost that owns the namespace record
Namenvarchar450NoDFS namespace name
RootHostIDintYesFK → SA_FSAA_Hosts.IDThe FSAA host that hosts the namespace root
RootGateIDintYesThe gate (share) that backs the namespace root
HostintYesAlternate nullable host column added by schema migration

Primary Key: PK_SA_FSDFS_Namespaces — clustered on (ID) Foreign Keys:

  • FK_SA_FSDFS_Namespaces_Hosts(RootHostID) → SA_FSAA_Hosts(ID) ON DELETE CASCADE
  • FK_SA_FSDFS_Namespaces_GateID(RootHostID, RootGateID) → SA_FSAA_Gates(HOST, ID)

Indexes: None beyond the clustered PK

Each DFS link maps a logical DFS path (e.g. \\contoso.com\public\sales) to a physical target path on a specific server. Multiple links may exist per namespace.

ColumnTypeSizeNullablePKFKDefaultDescription
IDintNoPKIDENTITY(1,1)Surrogate link ID
HOSTintNoPKHost partition (the DFS host)
NamespaceIDintYesFK → SA_FSDFS_Namespaces.IDOwning namespace
NamespaceNamenvarchar512NoCached namespace name
DfsPathnvarchar400NoDFS-side logical path (e.g. sales\reports)
DfsResourceIDbigintYesFK → SA_FSAA_Resources.IDResource representing the DFS-side path (when available)
DfsHostIDintYesHost on the DFS side
TargetPathnvarchar450NoUNC path of the physical target (e.g. \\fileserver\sales)
TargetHostIDintYesFK → SA_FSAA_Hosts.IDFSAA host that holds the physical target
TargetGateIDintYesFK → SA_FSAA_Gates.IDGate (share) that holds the physical target
TargetResourceIDbigintYesFK → SA_FSAA_Resources.IDResource on the target host
StateintYesDFS link state (online / offline)
TimeoutintYesDFS-link cache timeout
DfsGuiduniqueidentifierYesDFS link's unique identifier
Commentnvarchar1024YesFree-text comment
IsRootbitNoTrue if the DFS link represents the namespace root rather than a sub-link

Primary Key: PK_SA_FSDFS_Links — clustered on (HOST, ID) Foreign Keys:

  • FK_SA_FSDFS_Links_NamespaceID(NamespaceID) → SA_FSDFS_Namespaces(ID) ON DELETE CASCADE
  • FK_SA_FSDFS_Links_TargetHostID(TargetHostID) → SA_FSAA_Hosts(ID)
  • FK_SA_FSDFS_Links_TargetGateID(TargetHostID, TargetGateID) → SA_FSAA_Gates(HOST, ID)
  • FK_SA_FSDFS_Links_TargetResourceID(TargetHostID, TargetResourceID) → SA_FSAA_Resources(HOST, ID)
  • FK_SA_FSDFS_Links_DfsResourceID(DfsHostID, DfsResourceID) → SA_FSAA_Resources(HOST, ID)

Indexes:

  • UQ_FSDFS_Links_DfsPath — unique nonclustered on (DfsPath, NamespaceID)
  • SA_FSDFS_Links_GateID_IDX — nonclustered on (TargetHostID, TargetGateID)