Why is Cloud discovery putting MS SQL databases in the cmdb_ci_database table?
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
a month ago
Why is Cloud discovery putting MS SQL databases in the cmdb_ci_database table? When doing database discovery (not cloud)
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
a month ago
Hi there @KevinD691869774
That's expected . Cloud Discovery adds MS SQL databases to the cmdb_ci_database table because it’s the standard CI class for all database instances in CMDB, whether from cloud or on-prem. This keeps data normalized and ensures relationships and modeling work consistently.
If this helps kindly accept the solution thanks much.
Azar
Kind Regards,
Mohamed Azarudeen Z
Developer @ KPMG
Microsoft MVP (AI Services), India
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
a month ago
Hi @KevinD691869774 ,
As per my understanding Root Cause / Explanation is
Cloud Discovery is typically infrastructure-focused, not application-layer focused like traditional database discovery.
When Cloud Discovery discovers a SQL Server resource (e.g., Azure SQL DB), it:
* Recognizes it as a "Database" service,
* Doesn't have full access (no direct DB credentialing),
* Lacks detailed DB instance metadata (ports, schemas, configs),
* Hence, it defaults to using the cmdb_ci_database table.
This table is a generic database CI class meant for cases where the exact DB engine/subtype isn’t fully known or detailed info isn’t collected.
Difference Between Cloud Discovery and Traditional DB Discovery
Feature | Cloud Discovery | Traditional DB Discovery |
Discovery Method | API-based (e.g., Azure Resource Graph) | Credential-based (JDBC/SNMP/WMI) |
Class used for DBs | cmdb_ci_database | cmdb_ci_db_mssql_instance (etc.) |
Access to DB engine internals | No direct DB access | Yes (connects to DB directly) |
Use of Probes/Patterns | No | Yes (patterns like "MS SQL") |
Recommendation / Solution
Option 1: Let Cloud Discovery populate cmdb_ci_database
* Accept that Cloud Discovery creates high-level CIs.
* Later enrich these entries using:
* Traditional Database Discovery (with credentials),
* Service Mapping,
* Custom Reclassification Logic (via Business Rules or IRE Transform).
Option 2: Use Database Discovery (Credentialed)
* Setup horizontal discovery targeting the hosts with SQL Servers.
* Use valid SQL credentials.
* The pattern will place discovered DBs in the cmdb_ci_db_mssql_instance table (or equivalent).
* This gives more complete CI data (schemas, ports, configs).
Option 3: Post-processing via IRE/Transform
* After cloud ingestion, use Business Rule or Script Action to:
* Move CIs to correct class (cmdb_ci_db_mssql_instance) if sufficient data is available,
* Or flag them for enrichment.
Optional: Class Normalization
You can use Class Normalization Rules to automatically reclassify cmdb_ci_database to a more specific subclass based on detected attributes like:
Database type: MSSQL
Port: 1433
Engine version: SQL Server 2019
But this requires sufficient metadata, which is often not provided by Cloud Discovery alone.
Please appreciate the efforts of community contributors by marking appropriate response as Mark my Answer Helpful or Accept Solution this may help other community users to follow correct solution in future.
Thank You
AJ - TechTrek with AJ - ITOM Trainer
LinkedIn:- https://www.linkedin.com/in/ajay-kumar-66a91385/
YouTube:- https://www.youtube.com/@learnitomwithaj
Topmate:- https://topmate.io/aj_techtrekwithaj (Connect for 1-1 Session)
ServiceNow Community MVP 2025