.show database schema command

Applies to: ✅ Azure Data Explorer

The following commands show database schema as a table, JSON object, or CSL script.

Permissions

You must have at least Database User, Database Viewer, or Database Monitor permissions to run these commands. For more information, see role-based access control.

.show database schema

Syntax

.show database DatabaseName schema [details] [if_later_than "Version"]

.show databases (DatabaseName [, ...]) schema details

.show databases (DatabaseName if_later_than "Version" [, ...]) schema details

Learn more about syntax conventions.

Parameters

Name Type Required Description
DatabaseName string ✔️ The name of the database for which to show the schema.
Version string The version in "vMM.mm" format. MM represents the major version and mm represents the minor version.

Returns

Returns a flat list of the structure of the selected databases with all their tables and columns in a single table or JSON object. When used with a version, the database is only returned if it's a later version than the version provided.

Examples

Show database schema

The following example displays the TestDB database schema. The database TestDB has one table called Events.

.show database TestDB schema 

Output

DatabaseName TableName ColumnName ColumnType IsDefaultTable IsDefaultColumn PrettyName Version
TestDB False False v.1.1
TestDB Events True False
TestDB Events Name System.String True False
TestDB Events StartTime System.DateTime True False
TestDB Events EndTime System.DateTime True False
TestDB Events City System.String True False
TestDB Events SessionId System.Int32 True True

Show database schema based on version

In the following example, the database is only returned if it's a later version than the version provided.

.show database TestDB schema if_later_than "v1.0" 

Output

DatabaseName TableName ColumnName ColumnType IsDefaultTable IsDefaultColumn PrettyName Version
TestDB False False v.1.1
TestDB Events True False
TestDB Events Name System.String True False
TestDB Events StartTime System.DateTime True False
TestDB Events EndTime System.DateTime True False
TestDB Events City System.String True False
TestDB Events SessionId System.Int32 True True

Because a version lower than the current database version was provided, the 'TestDB' schema was returned. Providing an equal or higher version would generate an empty result.

.show database schema as json

Syntax

.show database DatabaseName schema [if_later_than "Version"] as json

.show databases (DatabaseName [, ...]) schema as json [with (Options)]

.show databases (DatabaseName if_later_than "Version" [, ...]) schema as json [with (Options)]

Learn more about syntax conventions.

Parameters

Name Type Required Description
DatabaseName string ✔️ The name of the database for which to show the schema.
Version string The version in "vMM.mm" format. MM represents the major version and mm represents the minor version.
Options string A list of comma-separated key-value pairs used to determine which database entity schemas to return. If none are specified, then all entities are returned. See supported entity options.

Supported entity options

The following table describes the values to provide for the Options parameter.

Key Value Description
Tables bool If true, tables are returned.
ExternalTables bool If true, external tables are returned.
MaterializedViews bool If true, materialized views are returned.
Functions bool If true, functions are returned.

Returns

Returns a flat list of the structure of the selected databases with all their tables and columns as a JSON object. When used with a version, the database is only returned if it's a later version than the version provided.

Examples

The following example returns the TestDB database schema in JSON format.

.show database TestDB schema as json

.show databases (TestDB, TestDB2) schema as json with(Tables=True, Functions=True)

Output

"{""Databases"":{""TestDB"":{""Name"":""TestDB"",""Tables"":{""Events"":{""Name"":""Events"",""DefaultColumn"":null,""OrderedColumns"":[{""Name"":""Name"",""Type"":""System.String""},{""Name"":""StartTime"",""Type"":""System.DateTime""},{""Name"":""EndTime"",""Type"":""System.DateTime""},{""Name"":""City"",""Type"":""System.String""},{""Name"":""SessionId"",""Type"":""System.Int32""}]}},""PrettyName"":null,""MajorVersion"":1,""MinorVersion"":1,""Functions"":{}}}}"

.show database schema as csl script

Generates a CSL script with all the required commands to create a copy of the given (or current) database schema.

Syntax

.show database DatabaseName schema as csl script [with (Options)]

Learn more about syntax conventions.

Parameters

Name Type Required Description
DatabaseName string ✔️ The name of the database for which to show the schema.
Options string A list of comma-separated key-value pairs used to determine what to return. See supported options.

Supported options

Key Value Description
IncludeEncodingPolicies bool Defaults to true. If true, encoding policies at the database/table/column level are included.
IncludeSecuritySettings bool Defaults to true. If true, the following options are included:
- Authorized principals at the database/table level.
- Row level security policies at the table level.
- Restricted view access policies at the table level.
IncludeIngestionMappings bool Defaults to true. If true, ingestion mappings at the table level are included.
ShowObfuscatedStrings bool Defaults to false. If true, credentials persisted in Kusto configurations are returned. To use this option, you must either be a database admin or entity creator. If you don't have these permissions, the command fails.

Returns

The script, returned as a string, contains:

  • Commands to create all the tables in the database.
  • Commands to set all database/tables/columns policies to match the original policies.
  • Commands to create or alter all user-defined functions in the database.

Examples

CSL script

The following example generates a CSL script with the needed commands to recreate the TestDB database schema.

.show database TestDB schema as csl script

CSL script with obfuscated values

The following example generates a CSL script with the needed commands to recreate the TestDB database schema. It includes values that were obfuscated in the results of the previous example.

.show database TestDB schema as csl script with (ShowObfuscatedStrings = true)