//---------------------------------------------------------------------------------------------------
// <auto-generated>
//    This code was generated by T4Model template for T4 (https://github.com/linq2db/linq2db).
//    Changes to this file may cause incorrect behavior and will be lost if the code is regenerated.
// </auto-generated>
//---------------------------------------------------------------------------------------------------

#pragma warning disable 1573, 1591
#nullable enable

using System;
using System.Collections.Generic;

using LinqToDB;
using LinqToDB.Configuration;
using LinqToDB.Mapping;

namespace LinqToDB.Tools.DataProvider.SqlServer.Schemas
{
	/// <summary>
	/// Database       : master
	/// Data Source    : .
	/// Server Version : 15.00.2101
	/// </summary>
	public partial class SystemDB : LinqToDB.Data.DataConnection
	{

		#region Schemas

		public AvailabilitySchema.DataContext            Availability            { get; set; } = null!;
		public AzureSQLDatabaseSchema.DataContext        AzureSQLDatabase        { get; set; } = null!;
		public AzureSynapseAnalyticsSchema.DataContext   AzureSynapseAnalytics   { get; set; } = null!;
		public ChangeTrackingSchema.DataContext          ChangeTracking          { get; set; } = null!;
		public CLRAssemblySchema.DataContext             CLRAssembly             { get; set; } = null!;
		public CompatibilitySchema.DataContext           Compatibility           { get; set; } = null!;
		public DatabaseMailSchema.DataContext            DatabaseMail            { get; set; } = null!;
		public DatabaseMirroringSchema.DataContext       DatabaseMirroring       { get; set; } = null!;
		public DatabasesAndFilesSchema.DataContext       DatabasesAndFiles       { get; set; } = null!;
		public DataCollectorSchema.DataContext           DataCollector           { get; set; } = null!;
		public DataSpacesSchema.DataContext              DataSpaces              { get; set; } = null!;
		public DataTierApplicationsSchema.DataContext    DataTierApplications    { get; set; } = null!;
		public EndpointsSchema.DataContext               Endpoints               { get; set; } = null!;
		public ExtendedEventsSchema.DataContext          ExtendedEvents          { get; set; } = null!;
		public ExternalOperationsSchema.DataContext      ExternalOperations      { get; set; } = null!;
		public FilestreamAndFileTableSchema.DataContext  FilestreamAndFileTable  { get; set; } = null!;
		public FullTextSearchSchema.DataContext          FullTextSearch          { get; set; } = null!;
		public InformationSchema.DataContext             Information             { get; set; } = null!;
		public LinkedServersSchema.DataContext           LinkedServers           { get; set; } = null!;
		public ObjectSchema.DataContext                  Object                  { get; set; } = null!;
		public PartitionFunctionSchema.DataContext       PartitionFunction       { get; set; } = null!;
		public PolicyBasedManagementSchema.DataContext   PolicyBasedManagement   { get; set; } = null!;
		public QueryStoreSchema.DataContext              QueryStore              { get; set; } = null!;
		public ResourceGovernorSchema.DataContext        ResourceGovernor        { get; set; } = null!;
		public ScalarTypesSchema.DataContext             ScalarTypes             { get; set; } = null!;
		public SecuritySchema.DataContext                Security                { get; set; } = null!;
		public ServerWideConfigurationSchema.DataContext ServerWideConfiguration { get; set; } = null!;
		public ServiceBrokerSchema.DataContext           ServiceBroker           { get; set; } = null!;
		public SpatialDataSchema.DataContext             SpatialData             { get; set; } = null!;
		public StretchDatabaseSchema.DataContext         StretchDatabase         { get; set; } = null!;
		public XmlSchema.DataContext                     Xml                     { get; set; } = null!;

		public void InitSchemas()
		{
			Availability            = new AvailabilitySchema.           DataContext(this);
			AzureSQLDatabase        = new AzureSQLDatabaseSchema.       DataContext(this);
			AzureSynapseAnalytics   = new AzureSynapseAnalyticsSchema.  DataContext(this);
			ChangeTracking          = new ChangeTrackingSchema.         DataContext(this);
			CLRAssembly             = new CLRAssemblySchema.            DataContext(this);
			Compatibility           = new CompatibilitySchema.          DataContext(this);
			DatabaseMail            = new DatabaseMailSchema.           DataContext(this);
			DatabaseMirroring       = new DatabaseMirroringSchema.      DataContext(this);
			DatabasesAndFiles       = new DatabasesAndFilesSchema.      DataContext(this);
			DataCollector           = new DataCollectorSchema.          DataContext(this);
			DataSpaces              = new DataSpacesSchema.             DataContext(this);
			DataTierApplications    = new DataTierApplicationsSchema.   DataContext(this);
			Endpoints               = new EndpointsSchema.              DataContext(this);
			ExtendedEvents          = new ExtendedEventsSchema.         DataContext(this);
			ExternalOperations      = new ExternalOperationsSchema.     DataContext(this);
			FilestreamAndFileTable  = new FilestreamAndFileTableSchema. DataContext(this);
			FullTextSearch          = new FullTextSearchSchema.         DataContext(this);
			Information             = new InformationSchema.            DataContext(this);
			LinkedServers           = new LinkedServersSchema.          DataContext(this);
			Object                  = new ObjectSchema.                 DataContext(this);
			PartitionFunction       = new PartitionFunctionSchema.      DataContext(this);
			PolicyBasedManagement   = new PolicyBasedManagementSchema.  DataContext(this);
			QueryStore              = new QueryStoreSchema.             DataContext(this);
			ResourceGovernor        = new ResourceGovernorSchema.       DataContext(this);
			ScalarTypes             = new ScalarTypesSchema.            DataContext(this);
			Security                = new SecuritySchema.               DataContext(this);
			ServerWideConfiguration = new ServerWideConfigurationSchema.DataContext(this);
			ServiceBroker           = new ServiceBrokerSchema.          DataContext(this);
			SpatialData             = new SpatialDataSchema.            DataContext(this);
			StretchDatabase         = new StretchDatabaseSchema.        DataContext(this);
			Xml                     = new XmlSchema.                    DataContext(this);
		}

		#endregion

		public SystemDB()
		{
			InitSchemas();
			InitDataContext();
			InitMappingSchema();
		}

		public SystemDB(string configuration)
			: base(configuration)
		{
			InitSchemas();
			InitDataContext();
			InitMappingSchema();
		}

		public SystemDB(DataOptions options)
			: base(options)
		{
			InitSchemas();
			InitDataContext();
			InitMappingSchema();
		}

		public SystemDB(DataOptions<SystemDB> options)
			: base(options.Options)
		{
			InitSchemas();
			InitDataContext();
			InitMappingSchema();
		}

		partial void InitDataContext  ();
		partial void InitMappingSchema();
	}

	public static partial class AvailabilitySchema
	{
		public partial class DataContext
		{
			/// <summary>
			/// <para><strong>sys.availability_databases_cluster (Transact-SQL)</strong></para>
			/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)</para>
			/// <para>Contains one row for each availability database on the instance of SQL Server that is hosting an availability replica for any Always On availability group in the Windows Server Failover Clustering (WSFC) cluster, regardless of whether the local copy database has been joined to the availability group yet.<br/>
			/// <note type='note'><br/>
			/// When a database is added to an availability group, the primary database is automatically joined to the group. Secondary databases must be prepared on each secondary replica before they can be joined to the availability group. <br/>
			/// </note></para><br/>
			/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-availability-databases-cluster-transact-sql'>sys.availability_databases_cluster</a>.</para>
			/// </summary>
			public ITable<AvailabilityDatabasesCluster>       AvailabilityDatabasesClusters        { get { return _dataContext.GetTable<AvailabilityDatabasesCluster>(); } }
			/// <summary>
			/// <para><strong>sys.availability_groups (Transact-SQL)</strong></para>
			/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)</para>
			/// <para>Returns a row for each availability group for which the local instance of SQL Server hosts an availability replica. Each row contains a cached copy of the availability group metadata.</para><br/>
			/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-availability-groups-transact-sql'>sys.availability_groups</a>.</para>
			/// </summary>
			public ITable<AvailabilityGroup>                  AvailabilityGroups                   { get { return _dataContext.GetTable<AvailabilityGroup>(); } }
			/// <summary>
			/// <para><strong>sys.availability_group_listeners (Transact-SQL)</strong></para>
			/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)</para>
			/// <para>For each Always On availability group, returns either zero rows indicating that no network name is associated with the availability group, or returns a row for each availability-group listener configuration in the Windows Server Failover Clustering (WSFC) cluster. This view displays the real-time configuration gathered from cluster.<br/>
			/// <note type='note'><br/>
			/// This catalog view does not describe details of an IP configuration, that was defined in the WSFC cluster.<br/>
			/// </note></para><br/>
			/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-availability-group-listeners-transact-sql'>sys.availability_group_listeners</a>.</para>
			/// </summary>
			public ITable<AvailabilityGroupListener>          AvailabilityGroupListeners           { get { return _dataContext.GetTable<AvailabilityGroupListener>(); } }
			/// <summary>
			/// <para><strong>sys.availability_group_listener_ip_addresses (Transact-SQL)</strong></para>
			/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)</para>
			/// <para>Returns a row for every IP address that is associated with any Always On availability group listener in the Windows Server Failover Clustering (WSFC) cluster.<br/>
			///  Primary key:  <strong>listener_id</strong> + <strong>ip_address</strong> + <strong>ip_sub_mask</strong></para><br/>
			/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-availability-group-listener-ip-addresses-transact-sql'>sys.availability_group_listener_ip_addresses</a>.</para>
			/// </summary>
			public ITable<AvailabilityGroupListenerIpAddress> AvailabilityGroupListenerIpAddresses { get { return _dataContext.GetTable<AvailabilityGroupListenerIpAddress>(); } }
			/// <summary>
			/// <para><strong>sys.availability_groups_cluster (Transact-SQL)</strong></para>
			/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)</para>
			/// <para>Returns a row for each Always On availability group in the Windows Server Failover Clustering (WSFC) . Each row contains the availability group metadata from the WSFC cluster.</para><br/>
			/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-availability-groups-cluster-transact-sql'>sys.availability_groups_cluster</a>.</para>
			/// </summary>
			public ITable<AvailabilityGroupsCluster>          AvailabilityGroupsClusters           { get { return _dataContext.GetTable<AvailabilityGroupsCluster>(); } }
			/// <summary>
			/// <para><strong>sys.availability_read_only_routing_lists (Transact-SQL)</strong></para>
			/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)</para>
			/// <para>Returns a row for the read only routing list of each availability replica in an Always On availability group in the WSFC failover cluster.</para><br/>
			/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-availability-read-only-routing-lists-transact-sql'>sys.availability_read_only_routing_lists</a>.</para>
			/// </summary>
			public ITable<AvailabilityReadOnlyRoutingList>    AvailabilityReadOnlyRoutingLists     { get { return _dataContext.GetTable<AvailabilityReadOnlyRoutingList>(); } }
			/// <summary>
			/// <para><strong>sys.availability_replicas (Transact-SQL)</strong></para>
			/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)</para>
			/// <para>Returns a row for each of the availability replicas that belong to any Always On availability group in the WSFC failover cluster.<br/>
			/// If the local server instance is unable to talk to the WSFC failover cluster, for example because the cluster is down or quorum has been lost, only rows for local availability replicas are returned. These rows will contain only the columns of data that are cached locally in metadata.</para><br/>
			/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-availability-replicas-transact-sql'>sys.availability_replicas</a>.</para>
			/// </summary>
			public ITable<AvailabilityReplica>                AvailabilityReplicas                 { get { return _dataContext.GetTable<AvailabilityReplica>(); } }

			private readonly IDataContext _dataContext;

			public DataContext(IDataContext dataContext)
			{
				_dataContext = dataContext;
			}
		}

		/// <summary>
		/// <para><strong>sys.availability_databases_cluster (Transact-SQL)</strong></para>
		/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)</para>
		/// <para>Contains one row for each availability database on the instance of SQL Server that is hosting an availability replica for any Always On availability group in the Windows Server Failover Clustering (WSFC) cluster, regardless of whether the local copy database has been joined to the availability group yet.<br/>
		/// <note type='note'><br/>
		/// When a database is added to an availability group, the primary database is automatically joined to the group. Secondary databases must be prepared on each secondary replica before they can be joined to the availability group. <br/>
		/// </note></para><br/>
		/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-availability-databases-cluster-transact-sql'>sys.availability_databases_cluster</a>.</para>
		/// </summary>
		[Table(Schema="sys", Name="availability_databases_cluster", IsView=true)]
		public partial class AvailabilityDatabasesCluster
		{
			/// <summary>
			/// Unique identifier of the availability group in which the availability group, if any, in which the database is participating.<br/><br/> NULL = database is not part of an availability replica of in availability group.
			/// </summary>
			[Column("group_id"),          NotNull    ] public Guid    GroupID         { get; set; } // uniqueidentifier
			/// <summary>
			/// Unique identifier of the database within the availability group, if any, in which the database is participating. <strong>group_database_id</strong> is the same for this database on the primary replica and on every secondary replica on which the database has been joined to the availability group.<br/><br/> NULL = database is not part of an availability replica in any availability group.
			/// </summary>
			[Column("group_database_id"), NotNull    ] public Guid    GroupDatabaseID { get; set; } // uniqueidentifier
			/// <summary>
			/// Name of the database that was added to the availability group.
			/// </summary>
			[Column("database_name"),        Nullable] public string? DatabaseName    { get; set; } // sysname
		}

		/// <summary>
		/// <para><strong>sys.availability_groups (Transact-SQL)</strong></para>
		/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)</para>
		/// <para>Returns a row for each availability group for which the local instance of SQL Server hosts an availability replica. Each row contains a cached copy of the availability group metadata.</para><br/>
		/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-availability-groups-transact-sql'>sys.availability_groups</a>.</para>
		/// </summary>
		[Table(Schema="sys", Name="availability_groups", IsView=true)]
		public partial class AvailabilityGroup
		{
			/// <summary>
			/// Unique identifier (GUID) of the availability group.
			/// </summary>
			[Column("group_id"),                                    NotNull    ] public Guid    GroupID                                 { get; set; } // uniqueidentifier
			/// <summary>
			/// Name of the availability group. This is a user-specified name that must be unique within the Windows Server Failover Cluster (WSFC).
			/// </summary>
			[Column("name"),                                           Nullable] public string? Name                                    { get; set; } // sysname
			/// <summary>
			/// Resource ID for the WSFC cluster resource.
			/// </summary>
			[Column("resource_id"),                                    Nullable] public string? ResourceID                              { get; set; } // nvarchar(40)
			/// <summary>
			/// Resource Group ID for the WSFC cluster resource group of the availability group.
			/// </summary>
			[Column("resource_group_id"),                              Nullable] public string? ResourceGroupID                         { get; set; } // nvarchar(40)
			/// <summary>
			/// User-defined failure condition level under which an automatic failover must be triggered, one of the integer values shown in the table immediately below this table.<br/><br/> The failure-condition levels (1-5) range from the least restrictive, level 1, to the most restrictive, level 5. A given condition level encompasses all of the less restrictive levels. Thus, the strictest condition level, 5, includes the four less restrictive condition levels (1-4), level 4 includes levels 1-3, and so forth.<br/><br/> To change this value, use the FAILURE_CONDITION_LEVEL option of the <a href='https://docs.microsoft.com/en-us/sql/t-sql/statements/alter-availability-group-transact-sql'>ALTER AVAILABILITY GROUP</a>Transact\-SQL statement.
			/// </summary>
			[Column("failure_condition_level"),                        Nullable] public int?    FailureConditionLevel                   { get; set; } // int
			/// <summary>
			/// Wait time (in milliseconds) for the <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-stored-procedures/sp-server-diagnostics-transact-sql'>sp_server_diagnostics</a> system stored procedure to return server-health information, before the server instance is assumed to be slow or not responding. The default value is 30000 milliseconds (30 seconds).<br/><br/> To change this value, use the HEALTH_CHECK_TIMEOUT option of the <a href='https://docs.microsoft.com/en-us/sql/t-sql/statements/alter-availability-group-transact-sql'>ALTER AVAILABILITY GROUP</a>Transact\-SQL statement.
			/// </summary>
			[Column("health_check_timeout"),                           Nullable] public int?    HealthCheckTimeout                      { get; set; } // int
			/// <summary>
			/// Preferred location for performing backups on the availability databases in this availability group. The following are the possible values and their descriptions.<br/><br/> <br/><br/> 0 : Primary. Backups should always occur on the primary replica.<br/><br/> 1 : Secondary only. Performing backups on a secondary replica is preferable.<br/><br/> 2 : Prefer Secondary. Performing backups on a secondary replica preferable, but performing backups on the primary replica is acceptable if no secondary replica is available for backup operations. This is the default behavior.<br/><br/> 3 : Any Replica. No preference about whether backups are performed on the primary replica or on a secondary replica.<br/><br/> <br/><br/> For more information, see <a href='https://docs.microsoft.com/en-us/sql/database-engine/availability-groups/windows/active-secondaries-backup-on-secondary-replicas-always-on-availability-groups'>Active Secondaries: Backup on Secondary Replicas (Always On Availability Groups)</a>.
			/// </summary>
			[Column("automated_backup_preference"),                    Nullable] public byte?   AutomatedBackupPreference               { get; set; } // tinyint
			/// <summary>
			/// Description of <strong>automated_backup_preference</strong>, one of:<br/><br/> PRIMARY<br/><br/> SECONDARY_ONLY<br/><br/> SECONDARY<br/><br/> NONE
			/// </summary>
			[Column("automated_backup_preference_desc"),               Nullable] public string? AutomatedBackupPreferenceDesc           { get; set; } // nvarchar(60)
			/// <summary>
			/// The version of the availability group metadata stored in the Windows Failover Cluster. This version number is incremented when new features are added.
			/// </summary>
			[Column("version"),                                        Nullable] public short?  Version                                 { get; set; } // smallint
			/// <summary>
			/// Specifies whether this is a Basic availability group. For more information, see <a href='https://docs.microsoft.com/en-us/sql/database-engine/availability-groups/windows/basic-availability-groups-always-on-availability-groups'>Basic Availability Groups (Always On Availability Groups)</a>.
			/// </summary>
			[Column("basic_features"),                                 Nullable] public bool?   BasicFeatures                           { get; set; } // bit
			/// <summary>
			/// Specifies whether DTC support has been enabled for this availability group. The <strong>DTC_SUPPORT</strong> option of <strong>CREATE AVAILABILITY GROUP</strong> controls this setting.
			/// </summary>
			[Column("dtc_support"),                                    Nullable] public bool?   DtcSupport                              { get; set; } // bit
			/// <summary>
			/// Specifies whether the availability group supports failover for database health conditions. The <strong>DB_FAILOVER</strong> option of <strong>CREATE AVAILABILITY GROUP</strong> controls this setting.
			/// </summary>
			[Column("db_failover"),                                    Nullable] public bool?   DbFailover                              { get; set; } // bit
			/// <summary>
			/// Specifies whether this is a distributed availability group. For more information, see <a href='https://docs.microsoft.com/en-us/sql/database-engine/availability-groups/windows/distributed-availability-groups'>Distributed Availability Groups (Always On Availability Groups)</a>.
			/// </summary>
			[Column("is_distributed"),                                 Nullable] public bool?   IsDistributed                           { get; set; } // bit
			/// <summary>
			/// 0: Windows Server failover cluster <br/><br/>1: External cluster (for example, Linux Pacemaker)<br/><br/>2: None
			/// </summary>
			[Column("cluster_type"),                                   Nullable] public byte?   ClusterType                             { get; set; } // tinyint
			/// <summary>
			/// Text description of cluster type
			/// </summary>
			[Column("cluster_type_desc"),                              Nullable] public string? ClusterTypeDesc                         { get; set; } // nvarchar(60)
			/// <summary>
			/// The number of secondary replicas that must be in a synchronized state for a commit  to complete
			/// </summary>
			[Column("required_synchronized_secondaries_to_commit"),    Nullable] public int?    RequiredSynchronizedSecondariesToCommit { get; set; } // int
			/// <summary>
			/// Identifies the availability group configuration sequence. Incrementally increases every time the availability group primary replica updates the configuration of the group.
			/// </summary>
			[Column("sequence_number"),                                Nullable] public long?   SequenceNumber                          { get; set; } // bigint
			/// <summary>
			/// 1: Big data cluster master instance configured for high-availability. <br/><br/> 0: all other.
			/// </summary>
			[Column("is_contained"),                                   Nullable] public bool?   IsContained                             { get; set; } // bit
		}

		/// <summary>
		/// <para><strong>sys.availability_group_listeners (Transact-SQL)</strong></para>
		/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)</para>
		/// <para>For each Always On availability group, returns either zero rows indicating that no network name is associated with the availability group, or returns a row for each availability-group listener configuration in the Windows Server Failover Clustering (WSFC) cluster. This view displays the real-time configuration gathered from cluster.<br/>
		/// <note type='note'><br/>
		/// This catalog view does not describe details of an IP configuration, that was defined in the WSFC cluster.<br/>
		/// </note></para><br/>
		/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-availability-group-listeners-transact-sql'>sys.availability_group_listeners</a>.</para>
		/// </summary>
		[Table(Schema="sys", Name="availability_group_listeners", IsView=true)]
		public partial class AvailabilityGroupListener
		{
			/// <summary>
			/// Availability group ID (<strong>group_id</strong>) from <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-availability-groups-transact-sql'>sys.availability_groups</a>.
			/// </summary>
			[Column("group_id"),                             NotNull    ] public Guid    GroupID                          { get; set; } // uniqueidentifier
			/// <summary>
			/// GUID from the cluster resource ID.
			/// </summary>
			[Column("listener_id"),                             Nullable] public string? ListenerID                       { get; set; } // nvarchar(36)
			/// <summary>
			/// Configured network name (hostname) of the availability group listener.
			/// </summary>
			[Column("dns_name"),                                Nullable] public string? DnsName                          { get; set; } // nvarchar(63)
			/// <summary>
			/// The TCP port number configured for the availability group listener.<br/><br/> NULL = Listener was configured outside SQL Server and its port number has not been added to the availability group. To add the port, pleaseuse the MODIFY LISTENER  option of the <a href='https://docs.microsoft.com/en-us/sql/t-sql/statements/alter-availability-group-transact-sql'>ALTER AVAILABILITY GROUP</a>Transact\-SQL statement.
			/// </summary>
			[Column("port"),                                    Nullable] public int?    Port                             { get; set; } // int
			/// <summary>
			/// Whether this IP configuration is conformant, one of:<br/><br/> 1 = Listener is conformant. Only 'OR' relations exist among its Internet Protocol (IP) addresses. *Conformant* encompasses every an IP configuration that was created by the <a href='https://docs.microsoft.com/en-us/sql/t-sql/statements/create-availability-group-transact-sql'>CREATE AVAILABILITY GROUP</a>Transact\-SQL statement. In addition, if an IP configuration that was created outside of SQL Server, for example by using the WSFC Failover Cluster Manager, but can be modified by the ALTER AVAILABILITY GROUP tsql statement, the IP configuration qualifies as conformant.<br/><br/> 0 = Listener is nonconformant. Typically, this indicates  an IP address that could not be configured by using SQL Server commands and, instead, was defined directly in the WSFC cluster.
			/// </summary>
			[Column("is_conformant"),                        NotNull    ] public bool    IsConformant                     { get; set; } // bit
			/// <summary>
			/// Cluster IP configuration strings, if any, for this listener. NULL = Listener has no virtual IP addresses. For example:<br/><br/> IPv4 address:  <c>65.55.39.10</c>.<br/><br/> IPv6 address:  <c>2001::4898:23:1002:20f:1fff:feff:b3a3</c>
			/// </summary>
			[Column("ip_configuration_string_from_cluster"),    Nullable] public string? IpConfigurationStringFromCluster { get; set; } // nvarchar(max)
		}

		/// <summary>
		/// <para><strong>sys.availability_group_listener_ip_addresses (Transact-SQL)</strong></para>
		/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)</para>
		/// <para>Returns a row for every IP address that is associated with any Always On availability group listener in the Windows Server Failover Clustering (WSFC) cluster.<br/>
		///  Primary key:  <strong>listener_id</strong> + <strong>ip_address</strong> + <strong>ip_sub_mask</strong></para><br/>
		/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-availability-group-listener-ip-addresses-transact-sql'>sys.availability_group_listener_ip_addresses</a>.</para>
		/// </summary>
		[Table(Schema="sys", Name="availability_group_listener_ip_addresses", IsView=true)]
		public partial class AvailabilityGroupListenerIpAddress
		{
			/// <summary>
			/// Resource GUID from Windows Server Failover Clustering (WSFC) cluster.
			/// </summary>
			[Column("listener_id"),                     Nullable] public string? ListenerID                { get; set; } // nvarchar(36)
			/// <summary>
			/// Configured virtual IP address of the availability group listener. Returns a single IPv4 or IPv6 address.
			/// </summary>
			[Column("ip_address"),                      Nullable] public string? IPAddress                 { get; set; } // nvarchar(48)
			/// <summary>
			/// Configured IP subnet mask for the IPv4 address, if any, that is configured for the availability group listener.<br/><br/> NULL = IPv6 subnet
			/// </summary>
			[Column("ip_subnet_mask"),                  Nullable] public string? IpSubnetMask              { get; set; } // nvarchar(15)
			/// <summary>
			/// Whether the IP address is configured by DHCP, one of:<br/><br/> 0 = IP address is not configured by DHCP.<br/><br/> 1 = IP address is configured by DHCP
			/// </summary>
			[Column("is_dhcp"),                      NotNull    ] public bool    IsDHCP                    { get; set; } // bit
			/// <summary>
			/// Network subnet IP address that specifies the subnet to which the IP address belongs.
			/// </summary>
			[Column("network_subnet_ip"),               Nullable] public string? NetworkSubnetIP           { get; set; } // nvarchar(48)
			/// <summary>
			/// Network subnet prefix length of the subnet to which the IP address belongs.
			/// </summary>
			[Column("network_subnet_prefix_length"),    Nullable] public int?    NetworkSubnetPrefixLength { get; set; } // int
			/// <summary>
			/// Network subnet mask of the subnet to which the IP address belongs. <strong>network_subnet_ipv4_mask</strong> to specify the DHCP &lt;network_subnet_option&gt; options in a WITH DHCP clause of the <a href='https://docs.microsoft.com/en-us/sql/t-sql/statements/create-availability-group-transact-sql'>CREATE AVAILABILITY GROUP</a> or <a href='https://docs.microsoft.com/en-us/sql/t-sql/statements/alter-availability-group-transact-sql'>ALTER AVAILABILITY GROUP</a>Transact\-SQL statement.<br/><br/> NULL = IPv6 subnet
			/// </summary>
			[Column("network_subnet_ipv4_mask"),        Nullable] public string? NetworkSubnetIpv4Mask     { get; set; } // nvarchar(45)
			/// <summary>
			/// IP resource ONLINE/OFFLINE state from the WSFC cluster, one of:<br/><br/> 1 = Online. IP resource is online.<br/><br/> 0 = Offline. IP resource is offline.<br/><br/> 2 = Online Pending. IP resource is offline but is being brought online.<br/><br/> 3 = Failed. IP resource was being brought online but failed.
			/// </summary>
			[Column("state"),                           Nullable] public byte?   State                     { get; set; } // tinyint
			/// <summary>
			/// Description of <strong>state</strong>, one of:<br/><br/> ONLINE<br/><br/> OFFLINE<br/><br/> ONLINE_PENDING<br/><br/> FAILED
			/// </summary>
			[Column("state_desc"),                      Nullable] public string? StateDesc                 { get; set; } // nvarchar(60)
		}

		/// <summary>
		/// <para><strong>sys.availability_groups_cluster (Transact-SQL)</strong></para>
		/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)</para>
		/// <para>Returns a row for each Always On availability group in the Windows Server Failover Clustering (WSFC) . Each row contains the availability group metadata from the WSFC cluster.</para><br/>
		/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-availability-groups-cluster-transact-sql'>sys.availability_groups_cluster</a>.</para>
		/// </summary>
		[Table(Schema="sys", Name="availability_groups_cluster", IsView=true)]
		public partial class AvailabilityGroupsCluster
		{
			/// <summary>
			/// Unique identifier (GUID) of the availability group.
			/// </summary>
			[Column("group_id"),                         NotNull    ] public Guid    GroupID                       { get; set; } // uniqueidentifier
			/// <summary>
			/// Name of the availability group. This is a user-specified name that must be unique within the Windows Server Failover Cluster (WSFC).
			/// </summary>
			[Column("name"),                                Nullable] public string? Name                          { get; set; } // sysname
			/// <summary>
			/// Resource ID for the WSFC cluster resource.
			/// </summary>
			[Column("resource_id"),                         Nullable] public string? ResourceID                    { get; set; } // nvarchar(40)
			/// <summary>
			/// Resource Group ID for the WSFC cluster resource group of the availability group.
			/// </summary>
			[Column("resource_group_id"),                   Nullable] public string? ResourceGroupID               { get; set; } // nvarchar(40)
			/// <summary>
			/// User-defined failure condition level under which an automatic failover must be triggered, one of the following integer values:<br/><br/> 1: Specifies that an automatic failover should be initiated when any of the following occurs: <br/>- The SQL Server service is down.<br/>- The lease of the availability group for connecting to the WSFC failover cluster expires because no ACK is received from the server instance. For more information, see <a href='https://techcommunity.microsoft.com/t5/sql-server-support/how-it-works-sql-server-alwayson-lease-timeout/ba-p/317268'>How It Works: SQL Server Always On Lease Timeout</a>.<br/><br/> 2: Specifies that an automatic failover should be initiated when any of the following occurs:  <br/>- The instance of SQL Server does not connect to cluster, and the user-specified <strong>health_check_timeout</strong> threshold of the availability group is exceeded. <br/>- The availability replica is in failed state. <br/>3: Specifies that an automatic failover should be initiated on critical SQL Server internal errors, such as orphaned spinlocks, serious write-access violations, or too much dumping. This is the default value. <br/>4: Specifies that an automatic failover should be initiated on moderate SQL Server internal errors, such as a persistent out-of-memory condition in the SQL Server internal resource pool.<br/>5: Specifies that an automatic failover should be initiated on any qualified failure conditions, including:<br/>- Exhaustion of SQL Engine worker-threads. <br/>- Detection of an unsolvable deadlock.<br/><br/> The failure-condition levels (1-5) range from the least restrictive, level 1, to the most restrictive, level 5. A given condition level encompasses all of the less restrictive levels. Thus, the strictest condition level, 5, includes the four less restrictive condition levels (1-4), level 4 includes levels 1-3, and so forth.<br/><br/> To change this value, use the FAILURE_CONDITION_LEVEL option of the <a href='https://docs.microsoft.com/en-us/sql/t-sql/statements/alter-availability-group-transact-sql'>ALTER AVAILABILITY GROUP</a>Transact\-SQL statement.
			/// </summary>
			[Column("failure_condition_level"),             Nullable] public int?    FailureConditionLevel         { get; set; } // int
			/// <summary>
			/// Wait time (in milliseconds) for the <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-stored-procedures/sp-server-diagnostics-transact-sql'>sp_server_diagnostics</a> system stored procedure to return server-health information, before the server instance is assumed to be slow or not responding. The default value is 30000 milliseconds (30 seconds).<br/><br/> To change this value, use the HEALTH_CHECK_TIMEOUT option of <a href='https://docs.microsoft.com/en-us/sql/t-sql/statements/alter-availability-group-transact-sql'>ALTER AVAILABILITY GROUP</a>Transact\-SQL statement.
			/// </summary>
			[Column("health_check_timeout"),                Nullable] public int?    HealthCheckTimeout            { get; set; } // int
			/// <summary>
			/// Preferred location for performing backups on the availability databases in this availability group. One of the following values:<br/><br/> 0: Primary. Backups should always occur on the primary replica.<br/>1: Secondary only. Performing backups on a secondary replica is preferable.<br/>2: Prefer Secondary. Performing backups on a secondary replica preferable, but performing backups on the primary replica is acceptable if no secondary replica is available for backup operations. This is the default behavior.<br/>3: Any Replica. No preference about whether backups are performed on the primary replica or on a secondary replica.<br/><br/> For more information, see <a href='https://docs.microsoft.com/en-us/sql/database-engine/availability-groups/windows/active-secondaries-backup-on-secondary-replicas-always-on-availability-groups'>Active Secondaries: Backup on Secondary Replicas (Always On Availability Groups)</a>.
			/// </summary>
			[Column("automated_backup_preference"),         Nullable] public byte?   AutomatedBackupPreference     { get; set; } // tinyint
			/// <summary>
			/// Description of <strong>automated_backup_preference</strong>, one of:<br/><br/> PRIMARY<br/><br/> SECONDARY_ONLY<br/><br/> SECONDARY<br/><br/> NONE
			/// </summary>
			[Column("automated_backup_preference_desc"),    Nullable] public string? AutomatedBackupPreferenceDesc { get; set; } // nvarchar(60)
		}

		/// <summary>
		/// <para><strong>sys.availability_read_only_routing_lists (Transact-SQL)</strong></para>
		/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)</para>
		/// <para>Returns a row for the read only routing list of each availability replica in an Always On availability group in the WSFC failover cluster.</para><br/>
		/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-availability-read-only-routing-lists-transact-sql'>sys.availability_read_only_routing_lists</a>.</para>
		/// </summary>
		[Table(Schema="sys", Name="availability_read_only_routing_lists", IsView=true)]
		public partial class AvailabilityReadOnlyRoutingList
		{
			/// <summary>
			/// Unique ID of the availability replica that owns the routing list.
			/// </summary>
			[Column("replica_id"),           NotNull] public Guid ReplicaID         { get; set; } // uniqueidentifier
			/// <summary>
			/// Priority order for routing (1 is first, 2 is second, and so forth).
			/// </summary>
			[Column("routing_priority"),     NotNull] public int  RoutingPriority   { get; set; } // int
			/// <summary>
			/// Unique ID of the availability replica to which a read-only workload will be routed.
			/// </summary>
			[Column("read_only_replica_id"), NotNull] public Guid ReadOnlyReplicaID { get; set; } // uniqueidentifier
		}

		/// <summary>
		/// <para><strong>sys.availability_replicas (Transact-SQL)</strong></para>
		/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)</para>
		/// <para>Returns a row for each of the availability replicas that belong to any Always On availability group in the WSFC failover cluster.<br/>
		/// If the local server instance is unable to talk to the WSFC failover cluster, for example because the cluster is down or quorum has been lost, only rows for local availability replicas are returned. These rows will contain only the columns of data that are cached locally in metadata.</para><br/>
		/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-availability-replicas-transact-sql'>sys.availability_replicas</a>.</para>
		/// </summary>
		[Table(Schema="sys", Name="availability_replicas", IsView=true)]
		public partial class AvailabilityReplica
		{
			/// <summary>
			/// Unique ID of the replica.
			/// </summary>
			[Column("replica_id"),                            Nullable] public Guid?     ReplicaID                         { get; set; } // uniqueidentifier
			/// <summary>
			/// Unique ID of the availability group to which the replica belongs.
			/// </summary>
			[Column("group_id"),                              Nullable] public Guid?     GroupID                           { get; set; } // uniqueidentifier
			/// <summary>
			/// ID for the local metadata object for availability replicas in the Database Engine.
			/// </summary>
			[Column("replica_metadata_id"),                   Nullable] public int?      ReplicaMetadataID                 { get; set; } // int
			/// <summary>
			/// Server name of the instance of SQL Server that is hosting this replica and, for a non-default instance, its instance name.
			/// </summary>
			[Column("replica_server_name"),                   Nullable] public string?   ReplicaServerName                 { get; set; } // nvarchar(256)
			/// <summary>
			/// Security identifier (SID) registered to this server instance for the external owner of this availability replica.<br/><br/> NULL for non-local availability replicas.
			/// </summary>
			[Column("owner_sid"),                             Nullable] public byte[]?   OwnerSID                          { get; set; } // varbinary(85)
			/// <summary>
			/// String representation of the user-specified database mirroring endpoint that is used by connections between primary and secondary replicas for data synchronization. For information about the syntax of endpoint URLs, see <a href='https://docs.microsoft.com/en-us/sql/database-engine/availability-groups/windows/specify-endpoint-url-adding-or-modifying-availability-replica'>Specify the Endpoint URL When Adding or Modifying an Availability Replica (SQL Server)</a>.<br/><br/> NULL = Unable to talk to the WSFC failover cluster.<br/><br/> To change this endpoint, use the ENDPOINT_URL option of <a href='https://docs.microsoft.com/en-us/sql/t-sql/statements/alter-availability-group-transact-sql'>ALTER AVAILABILITY GROUP</a>Transact\-SQL statement.
			/// </summary>
			[Column("endpoint_url"),                          Nullable] public string?   EndpointUrl                       { get; set; } // nvarchar(128)
			/// <summary>
			/// The availability mode of the replica, one of:<br/><br/> 0 &amp;#124; Asynchronous commit. The primary replica can commit transactions without waiting for the secondary to write the log to disk.<br/><br/> 1 &amp;#124; Synchronous commit. The primary replica waits to commit a given transaction until the secondary replica has written the transaction to disk.<br/><br/>4 &amp;#124; Configuration only. The primary replica sends availability group configuration metadata to the replica synchronously. User data is not transmitted to the replica. Available in SQL Server 2017 CU1 and later.<br/><br/> For more information, see <a href='https://docs.microsoft.com/en-us/sql/database-engine/availability-groups/windows/availability-modes-always-on-availability-groups'>Availability Modes (Always On Availability Groups)</a>.
			/// </summary>
			[Column("availability_mode"),                     Nullable] public byte?     AvailabilityMode                  { get; set; } // tinyint
			/// <summary>
			/// Description of <strong>availability\_mode</strong>, one of:<br/><br/> ASYNCHRONOUS\_COMMIT<br/><br/> SYNCHRONOUS\_COMMIT<br/><br/> CONFIGURATION\_ONLY<br/><br/> To change this the availability mode of an availability replica, use the AVAILABILITY_MODE option of <a href='https://docs.microsoft.com/en-us/sql/t-sql/statements/alter-availability-group-transact-sql'>ALTER AVAILABILITY GROUP</a>Transact\-SQL statement.<br/><br/>You cannot change the availability mode of a replica to CONFIGURATION\_ONLY. You cannot change a CONFIGURATION\_ONLY replica to a secondary or primary replica.
			/// </summary>
			[Column("availability_mode_desc"),                Nullable] public string?   AvailabilityModeDesc              { get; set; } // nvarchar(60)
			/// <summary>
			/// The <a href='https://docs.microsoft.com/en-us/sql/database-engine/availability-groups/windows/failover-and-failover-modes-always-on-availability-groups'>failover mode</a> of the availability replica, one of:<br/><br/> 0 &amp;#124; Automatic failover. The replica is a potential target for automatic failovers.  Automatic failover is supported only if the availability mode is set to synchronous commit (<strong>availability\_mode</strong> = 1) and the availability replica is currently synchronized.<br/><br/> 1 &amp;#124; Manual failover. A failover to a secondary replica set to manual failover must be manually initiated by the database administrator. The type of failover that is performed will depend on whether the secondary replica is synchronized, as follows:<br/><br/> If the availability replica is not synchronizing or is still synchronizing, only forced failover (with possible data loss) can occur.<br/><br/> If the availability mode is set to synchronous commit (<strong>availability\_mode</strong> = 1) and the availability replica is currently synchronized, manual failover without data loss can occur.<br/><br/> To view a rollup of the database synchronization health of every availability database in an availability replica, use the <strong>synchronization\_health</strong> and <strong>synchronization\_health\_desc</strong> columns of  the <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-dynamic-management-views/sys-dm-hadr-availability-replica-states-transact-sql'>sys.dm_hadr_availability_replica_states</a> dynamic management view. The rollup considers the synchronization state of every availability database and the availability mode of its availability replica.<br/><br/> <strong>Note:</strong> To view the synchronization health of a given availability database, query the <strong>synchronization\_state</strong> and <strong>synchronization\_health</strong> columns of the <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-dynamic-management-views/sys-dm-hadr-database-replica-states-transact-sql'>sys.dm_hadr_database_replica_states</a> dynamic management view.
			/// </summary>
			[Column("failover_mode"),                         Nullable] public byte?     FailoverMode                      { get; set; } // tinyint
			/// <summary>
			/// Description of <strong>failover\_mode</strong>, one of:<br/><br/> MANUAL<br/><br/> AUTOMATIC<br/><br/> To change the failover mode, use the FAILOVER\_MODE option of <a href='https://docs.microsoft.com/en-us/sql/t-sql/statements/alter-availability-group-transact-sql'>ALTER AVAILABILITY GROUP</a>Transact\-SQL statement.
			/// </summary>
			[Column("failover_mode_desc"),                    Nullable] public string?   FailoverModeDesc                  { get; set; } // nvarchar(60)
			/// <summary>
			/// The time-out period, in seconds. The time-out period is the maximum time that the replica waits to receive a message  from another replica before considering connection between the primary and secondary replica have failed. Session timeout detects whether secondaries are connected the primary replica.<br/><br/> On detecting a failed connection with a secondary replica, the primary replica  considers the secondary replica to be NOT\_SYNCHRONIZED. On detecting a failed connection with the primary replica, a secondary replica simply attempts to reconnect.<br/><br/> <strong>Note:</strong> Session timeouts do not cause automatic failovers.<br/><br/> To change this value, use the SESSION_TIMEOUT option of <a href='https://docs.microsoft.com/en-us/sql/t-sql/statements/alter-availability-group-transact-sql'>ALTER AVAILABILITY GROUP</a>Transact\-SQL statement.
			/// </summary>
			[Column("session_timeout"),                       Nullable] public int?      SessionTimeout                    { get; set; } // int
			/// <summary>
			/// Whether the availability allows all connections or only read-write connections, one of:<br/><br/> 2 = All (default)<br/><br/> 3 = Read write
			/// </summary>
			[Column("primary_role_allow_connections"),        Nullable] public byte?     PrimaryRoleAllowConnections       { get; set; } // tinyint
			/// <summary>
			/// Description of <strong>primary\_role\_allow\_connections</strong>, one of:<br/><br/> ALL<br/><br/> READ\_WRITE
			/// </summary>
			[Column("primary_role_allow_connections_desc"),   Nullable] public string?   PrimaryRoleAllowConnectionsDesc   { get; set; } // nvarchar(60)
			/// <summary>
			/// Whether an availability replica that is performing the secondary role (that is, a secondary replica) can accept connections from clients, one of:<br/><br/> 0 = No. No connections are allowed to the databases in the secondary replica, and the databases are not available for read access. This is the default setting.<br/><br/> 1 = Read only. Only read-only connections are allowed to the databases in the secondary replica. All database(s) in the replica are available for read access.<br/><br/> 2 = All. All connections are allowed to the databases in the secondary replica for read-only access.<br/><br/> For more information, see <a href='https://docs.microsoft.com/en-us/sql/database-engine/availability-groups/windows/active-secondaries-readable-secondary-replicas-always-on-availability-groups'>Active Secondaries: Readable Secondary Replicas (Always On Availability Groups)</a>.
			/// </summary>
			[Column("secondary_role_allow_connections"),      Nullable] public byte?     SecondaryRoleAllowConnections     { get; set; } // tinyint
			/// <summary>
			/// Description of <strong>secondary_role_allow_connections</strong>, one of:<br/><br/> NO<br/><br/> READ_ONLY<br/><br/> ALL
			/// </summary>
			[Column("secondary_role_allow_connections_desc"), Nullable] public string?   SecondaryRoleAllowConnectionsDesc { get; set; } // nvarchar(60)
			/// <summary>
			/// Date that the replica was created.<br/><br/> NULL = Replica not on this server instance.
			/// </summary>
			[Column("create_date"),                           Nullable] public DateTime? CreateDate                        { get; set; } // datetime
			/// <summary>
			/// Date that the replica was last modified.<br/><br/> NULL = Replica not on this server instance.
			/// </summary>
			[Column("modify_date"),                           Nullable] public DateTime? ModifyDate                        { get; set; } // datetime
			/// <summary>
			/// Represents the user-specified priority for performing backups on this replica relative to the other replicas in the same availability group. The value is an integer in the range of 0..100.<br/><br/> For more information, see <a href='https://docs.microsoft.com/en-us/sql/database-engine/availability-groups/windows/active-secondaries-backup-on-secondary-replicas-always-on-availability-groups'>Active Secondaries: Backup on Secondary Replicas (Always On Availability Groups)</a>.
			/// </summary>
			[Column("backup_priority"),                       Nullable] public int?      BackupPriority                    { get; set; } // int
			/// <summary>
			/// Connectivity endpoint (URL) of the read only availability replica. For more information, see <a href='https://docs.microsoft.com/en-us/sql/database-engine/availability-groups/windows/configure-read-only-routing-for-an-availability-group-sql-server'>Configure Read-Only Routing for an Availability Group (SQL Server)</a>.
			/// </summary>
			[Column("read_only_routing_url"),                 Nullable] public string?   ReadOnlyRoutingUrl                { get; set; } // nvarchar(256)
			/// <summary>
			/// One of: <br/><br/> 0: Automatic <br/><br/> 1: Manual
			/// </summary>
			[Column("seeding_mode"),                          Nullable] public byte?     SeedingMode                       { get; set; } // tinyint
			/// <summary>
			/// Describes seeding mode. <br/><br/> AUTOMATIC <br/><br/>MANUAL
			/// </summary>
			[Column("seeding_mode_desc"),                     Nullable] public string?   SeedingModeDesc                   { get; set; } // nvarchar(60)
		}
	}

	public static partial class AzureSQLDatabaseSchema
	{
		public partial class DataContext
		{
			/// <summary>
			/// <para><strong>sys.bandwidth_usage (Azure SQL Database)</strong></para>
			/// <para><strong>Applies to:</strong> √ Azure SQL Database √ Azure SQL Managed Instance</para>
			/// <para><note type='note'><br/>
			/// This applies only to Azure SQL DatabaseV11.<br/>
			/// </note><br/>
			///  Returns information about the network bandwidth used by each database in a <strong>Azure SQL Database V11 database server</strong>, . Each row returned for a given database summarizes a single direction and class of usage over a one-hour period.<br/>
			///  <strong>This has been deprecated in a Azure SQL Database.</strong><br/>
			///  The <strong>sys.bandwidth_usage</strong> view contains the following columns.</para><br/>
			/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-bandwidth-usage-azure-sql-database'>sys.bandwidth_usage</a>.</para>
			/// </summary>
			public ITable<BandwidthUsage>           BandwidthUsages           { get { return _dataContext.GetTable<BandwidthUsage>(); } }
			/// <summary>
			/// <para><strong>sys.database_connection_stats (Azure SQL Database)</strong></para>
			/// <para><strong>Applies to:</strong> √ Azure SQL Database</para>
			/// <para>Contains statistics for SQL Database database <strong>connectivity</strong> events, providing an overview of database connection successes and failures. For more information about connectivity events, see Event Types in <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-event-log-azure-sql-database'>sys.event_log (Azure SQL Database)</a>.</para><br/>
			/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-database-connection-stats-azure-sql-database'>sys.database_connection_stats</a>.</para>
			/// </summary>
			public ITable<DatabaseConnectionStat>   DatabaseConnectionStats   { get { return _dataContext.GetTable<DatabaseConnectionStat>(); } }
			/// <summary>
			/// <para><strong>sys.database_firewall_rules (Azure SQL Database)</strong></para>
			/// <para><strong>Applies to:</strong> √ Azure SQL Database √ Azure SQL Managed Instance</para>
			/// <para>Returns information about the database-level firewall settings associated with your Microsoft Azure SQL Database. Database-level firewall settings are particularly useful when using contained database users. For more information, see <a href='https://docs.microsoft.com/en-us/sql/relational-databases/security/contained-database-users-making-your-database-portable'>Contained Database Users - Making Your Database Portable</a>.<br/>
			///  The <c>sys.database_firewall_rules</c> view contains the following columns:</para><br/>
			/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-database-firewall-rules-azure-sql-database'>sys.database_firewall_rules</a>.</para>
			/// </summary>
			public ITable<DatabaseFirewallRule>     DatabaseFirewallRules     { get { return _dataContext.GetTable<DatabaseFirewallRule>(); } }
			/// <summary>
			/// <para><strong>sys.database_service_objectives (Azure SQL Database)</strong></para>
			/// <para><strong>Applies to:</strong> √ Azure SQL Database √ Azure SQL Managed Instance √ Azure Synapse Analytics</para>
			/// <para>Returns the edition (service tier), service objective (pricing tier) and elastic pool name, if any, for an Azure SQL database or an Azure Synapse Analytics. If logged on to the master database in an Azure SQL Database server, returns information on all databases. For Azure Synapse Analytics, you must be connected to the master database.<br/>
			/// <br/>
			///  For information on pricing, see <a href='https://azure.microsoft.com/pricing/details/sql-database/'>SQL Database options and performance: SQL Database Pricing</a> and <a href='https://azure.microsoft.com/pricing/details/sql-data-warehouse/'>Azure Synapse Analytics Pricing</a>.<br/>
			///  To change the service settings, see <a href='https://docs.microsoft.com/en-us/sql/t-sql/statements/alter-database-transact-sql'>ALTER DATABASE (Azure SQL Database)</a> and <a href='https://docs.microsoft.com/en-us/sql/t-sql/statements/alter-database-transact-sql?view=azure-sqldw-latest&amp;preserve-view=true'>ALTER DATABASE (Azure Synapse Analytics)</a>.<br/>
			///  The sys.database_service_objectives view contains the following columns.</para><br/>
			/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-database-service-objectives-azure-sql-database'>sys.database_service_objectives</a>.</para>
			/// </summary>
			public ITable<DatabaseServiceObjective> DatabaseServiceObjectives { get { return _dataContext.GetTable<DatabaseServiceObjective>(); } }
			/// <summary>
			/// <para><strong>sys.database_usage (Azure SQL Database)</strong></para>
			/// <para><strong>Applies to:</strong> √ Azure SQL Database √ Azure SQL Managed Instance</para>
			/// <para><strong>Note: This applies only to Azure SQL Database V11.</strong><br/>
			///  Lists the number, type, and duration of databases on the SQL Database server.<br/>
			///  The <strong>sys.database_usage</strong> view contains the following columns.</para><br/>
			/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-database-usage-azure-sql-database'>sys.database_usage</a>.</para>
			/// </summary>
			public ITable<DatabaseUsage>            DatabaseUsages            { get { return _dataContext.GetTable<DatabaseUsage>(); } }
			/// <summary>
			/// <para><strong>sys.elastic_pool_resource_stats (Azure SQL Database)</strong></para>
			/// <para><strong>Applies to:</strong> √ Azure SQL Database √ Azure SQL Managed Instance</para>
			/// <para>Returns resource usage statistics for all the elastic pools in a SQL Database server. For each elastic pool, there is one row for each 15 second reporting window (four rows per minute). This includes CPU, IO, Log, storage consumption and concurrent request/session utilization by all databases in the pool. This data is retained for 14 days. <br/>
			/// ||<br/>
			/// |-|<br/>
			/// |<strong>Applies to</strong>:  SQL Database V12.|</para><br/>
			/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-elastic-pool-resource-stats-azure-sql-database'>sys.elastic_pool_resource_stats</a>.</para>
			/// </summary>
			public ITable<ElasticPoolResourceStat>  ElasticPoolResourceStats  { get { return _dataContext.GetTable<ElasticPoolResourceStat>(); } }
			/// <summary>
			/// <para><strong>sys.event_log (Azure SQL Database)</strong></para>
			/// <para><strong>Applies to:</strong> √ Azure SQL Database</para>
			/// <para>Returns successful Azure SQL Database database connections, connection failures, and deadlocks. You can use this information to track or troubleshoot your database activity with SQL Database.<br/>
			/// > [!CAUTION]<br/>
			/// > For installations having a large number of databases or high numbers of logins, activity in sys.event_log can cause limitations in performance, high CPU usage, and possibly result in login failures. Queries of sys.event_log can contribute to the problem. Microsoft is working to resolve this issue. In the meantime, to reduce the impact of this issue, limit queries of sys.event_log. Users of the NewRelic SQL Server plugin should visit <a href='https://discuss.newrelic.com/t/microsoft-azure-sql-database-plugin-tuning-performance-tweaks/30729'>Microsoft Azure SQL Database plugin tuning &amp; performance tweaks</a> for additional configuration information.<br/>
			///  The <c>sys.event_log</c> view contains the following columns.</para><br/>
			/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-event-log-azure-sql-database'>sys.event_log</a>.</para>
			/// </summary>
			public ITable<EventLog>                 EventLogs                 { get { return _dataContext.GetTable<EventLog>(); } }
			/// <summary>
			/// <para><strong>sys.firewall_rules (Azure SQL Database)</strong></para>
			/// <para><strong>Applies to:</strong> √ Azure SQL Database √ Azure SQL Managed Instance</para>
			/// <para>Returns information about the server-level firewall settings associated with your Microsoft Azure SQL Database.<br/>
			///  The <c>sys.firewall_rules</c> view contains the following columns:</para><br/>
			/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-firewall-rules-azure-sql-database'>sys.firewall_rules</a>.</para>
			/// </summary>
			public ITable<FirewallRule>             FirewallRules             { get { return _dataContext.GetTable<FirewallRule>(); } }
			/// <summary>
			/// <para><strong>sys.resource_stats (Azure SQL Database)</strong></para>
			/// <para><strong>Applies to:</strong> √ Azure SQL Database</para>
			/// <para>Returns CPU usage and storage data for an Azure SQL Database. The data is collected and aggregated within five-minute intervals. For each user database, there is one row for every five-minute reporting window in which there is a change in resource consumption. The data returned includes CPU usage, storage size change, and database SKU modification. Idle databases with no changes may not have rows for every five-minute interval. Historical data is retained for approximately 14 days.<br/>
			///  The <c>sys.resource_stats</c> view has different definitions depending on the version of the Azure SQL Database Server that the database is associated with. Consider these differences and any modifications your application requires when upgrading to a new server version.<br/>
			///  <br/>
			/// <note type='note'><br/>
			/// This dynamic management view applies to Azure SQL Database only. For an equivalent view for Azure SQL Managed Instance, use <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-server-resource-stats-azure-sql-database'>sys.server_resource_stats</a>.<br/>
			/// </note><br/>
			///  The following table describes the columns available in a v12 server:</para><br/>
			/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-resource-stats-azure-sql-database'>sys.resource_stats</a>.</para>
			/// </summary>
			public ITable<ResourceStat>             ResourceStats             { get { return _dataContext.GetTable<ResourceStat>(); } }
			/// <summary>
			/// <para><strong>sys.resource_usage (Azure SQL Database)</strong></para>
			/// <para><strong>Applies to:</strong> √ Azure SQL Database √ Azure SQL Managed Instance</para>
			/// <para><br/>
			/// <note type='important'><br/>
			/// This feature is in a preview state. Do not take a dependency on the specific implementation of this feature because the feature might be changed or removed in a future release.<br/>
			/// While in a preview state, the Azure SQL Database operations team might turn data collection off and on for this DMV:<br/>
			/// -   When turned on, the DMV returns current data as it is aggregated.<br/>
			/// -   When turned off, the DMV returns historical data, which might be stale.<br/>
			/// </note><br/>
			///  Provides hourly summary of resource usage data for user databases in the current server. Historical data is retained for 90 days.<br/>
			///  For each user database, there is one row for every hour in continuous fashion. Even if the database was idle during that hour, there is one row, and the usage_in_seconds value for that database will be 0. Storage usage and SKU information is rolled up for the hour appropriately.</para><br/>
			/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-resource-usage-azure-sql-database'>sys.resource_usage</a>.</para>
			/// </summary>
			public ITable<ResourceUsage>            ResourceUsages            { get { return _dataContext.GetTable<ResourceUsage>(); } }
			/// <summary>
			/// <para><strong>sys.server_resource_stats (Azure SQL Managed Instance)</strong></para>
			/// √ Azure SQL Managed Instance<br/>
			/// Returns CPU usage, IO, and storage data for Azure SQL Managed Instance. The data is collected, aggregated and updated within 5 to 10 minutes intervals. There is one row for every 15 seconds reporting. The data returned includes CPU usage, storage size, IO utilization, and SKU. Historical data is retained for approximately 14 days.<br/>
			/// The <c>sys.server_resource_stats</c> view has different definitions depending on the version of the Azure SQL Managed Instance that the database is associated with. Consider these differences and any modifications your application requires when upgrading to a new server version.<br/>
			/// <note type='note'><br/>
			/// This dynamic management view applies to Azure SQL Managed Instance only. For an equivalent view for Azure SQL Database, use <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-resource-stats-azure-sql-database'>sys.resource_stats</a>.<br/>
			/// </note><br/>
			/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-server-resource-stats-azure-sql-database'>sys.server_resource_stats</a>.</para>
			/// </summary>
			public ITable<ServerResourceStat>       ServerResourceStats       { get { return _dataContext.GetTable<ServerResourceStat>(); } }

			private readonly IDataContext _dataContext;

			public DataContext(IDataContext dataContext)
			{
				_dataContext = dataContext;
			}
		}

		/// <summary>
		/// <para><strong>sys.bandwidth_usage (Azure SQL Database)</strong></para>
		/// <para><strong>Applies to:</strong> √ Azure SQL Database √ Azure SQL Managed Instance</para>
		/// <para><note type='note'><br/>
		/// This applies only to Azure SQL DatabaseV11.<br/>
		/// </note><br/>
		///  Returns information about the network bandwidth used by each database in a <strong>Azure SQL Database V11 database server</strong>, . Each row returned for a given database summarizes a single direction and class of usage over a one-hour period.<br/>
		///  <strong>This has been deprecated in a Azure SQL Database.</strong><br/>
		///  The <strong>sys.bandwidth_usage</strong> view contains the following columns.</para><br/>
		/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-bandwidth-usage-azure-sql-database'>sys.bandwidth_usage</a>.</para>
		/// </summary>
		[Table(Schema="sys", Name="bandwidth_usage", IsView=true)]
		public partial class BandwidthUsage
		{
			/// <summary>
			/// The hour when the bandwidth was consumed. The rows in this view are on a per-hour basis. For example, 2009-09-19 02:00:00.000 means that the bandwidth was consumed on September 19, 2009 between 2:00 A.M. and 3:00 A.M.
			/// </summary>
			[Column("time"),          NotNull] public object Time         { get; set; } = null!; // object
			/// <summary>
			/// The name of the database that used bandwidth.
			/// </summary>
			[Column("database_name"), NotNull] public object DatabaseName { get; set; } = null!; // object
			/// <summary>
			/// The type of bandwidth that was used, one of:<br/><br/> Ingress: Data that is moving into the Azure SQL Database.<br/><br/> Egress: Data that is moving out of the Azure SQL Database.
			/// </summary>
			[Column("direction"),     NotNull] public object Direction    { get; set; } = null!; // object
			/// <summary>
			/// The class of bandwidth that was used, one of:<br/>Internal: Data that is moving within the Azure platform.<br/>External: Data that is moving out of the Azure platform.<br/><br/> This class is returned only if the database is engaged in a continuous copy relationship between regions (Active Geo-Replication). If a given database does not participate in any continuous copy relationship, then 'Interlink' rows are not returned. For more information, see the 'Remarks' section later in this topic.
			/// </summary>
			[Column("class"),         NotNull] public object Class        { get; set; } = null!; // object
			/// <summary>
			/// The time period when the usage occurred is either Peak or OffPeak. The Peak time is based on the region in which the server was created. For example, if a server was created in the 'US_Northwest' region, the Peak time is defined as being between 10:00 A.M. and 6:00 P.M. PST.
			/// </summary>
			[Column("time_period"),   NotNull] public object TimePeriod   { get; set; } = null!; // object
			/// <summary>
			/// The amount of bandwidth, in kilobytes (KBs), that was used.
			/// </summary>
			[Column("quantity"),      NotNull] public object Quantity     { get; set; } = null!; // object
		}

		/// <summary>
		/// <para><strong>sys.database_connection_stats (Azure SQL Database)</strong></para>
		/// <para><strong>Applies to:</strong> √ Azure SQL Database</para>
		/// <para>Contains statistics for SQL Database database <strong>connectivity</strong> events, providing an overview of database connection successes and failures. For more information about connectivity events, see Event Types in <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-event-log-azure-sql-database'>sys.event_log (Azure SQL Database)</a>.</para><br/>
		/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-database-connection-stats-azure-sql-database'>sys.database_connection_stats</a>.</para>
		/// </summary>
		[Table(Schema="sys", Name="database_connection_stats", IsView=true)]
		public partial class DatabaseConnectionStat
		{
			/// <summary>
			/// Name of the database.
			/// </summary>
			[Column("database_name"),               NotNull] public string   DatabaseName              { get; set; } = null!; // sysname
			/// <summary>
			/// UTC date and time of the start of the aggregation interval. The time is always a multiple of 5 minutes. For example:<br/><br/> '2011-09-28 16:00:00'<br/>'2011-09-28 16:05:00'<br/>'2011-09-28 16:10:00'
			/// </summary>
			[Column("start_time"),                  NotNull] public DateTime StartTime                 { get; set; } // datetime2
			/// <summary>
			/// UTC date and time of the end of the aggregation interval. <strong>End_time</strong> is always exactly 5 minutes later than the corresponding <strong>start_time</strong> in the same row.
			/// </summary>
			[Column("end_time"),                    NotNull] public DateTime EndTime                   { get; set; } // datetime2
			/// <summary>
			/// Number of successful connections.
			/// </summary>
			[Column("success_count"),               NotNull] public int      SuccessCount              { get; set; } // int
			/// <summary>
			/// Total number of failed connections. This is the sum of <strong>connection_failure_count</strong>, <strong>terminated_connection_count</strong>, and <strong>throttled_connection_count</strong>, and does not include deadlock events.
			/// </summary>
			[Column("total_failure_count"),         NotNull] public int      TotalFailureCount         { get; set; } // int
			/// <summary>
			/// Number of login failures.
			/// </summary>
			[Column("connection_failure_count"),    NotNull] public int      ConnectionFailureCount    { get; set; } // int
			/// <summary>
			/// <strong>_Only applicable for Azure SQL Database v11._</strong><br/><br/> Number of terminated connections.
			/// </summary>
			[Column("terminated_connection_count"), NotNull] public int      TerminatedConnectionCount { get; set; } // int
			/// <summary>
			/// <strong>_Only applicable for Azure SQL Database v11._</strong><br/><br/> Number of throttled connections.
			/// </summary>
			[Column("throttled_connection_count"),  NotNull] public int      ThrottledConnectionCount  { get; set; } // int
		}

		/// <summary>
		/// <para><strong>sys.database_firewall_rules (Azure SQL Database)</strong></para>
		/// <para><strong>Applies to:</strong> √ Azure SQL Database √ Azure SQL Managed Instance</para>
		/// <para>Returns information about the database-level firewall settings associated with your Microsoft Azure SQL Database. Database-level firewall settings are particularly useful when using contained database users. For more information, see <a href='https://docs.microsoft.com/en-us/sql/relational-databases/security/contained-database-users-making-your-database-portable'>Contained Database Users - Making Your Database Portable</a>.<br/>
		///  The <c>sys.database_firewall_rules</c> view contains the following columns:</para><br/>
		/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-database-firewall-rules-azure-sql-database'>sys.database_firewall_rules</a>.</para>
		/// </summary>
		[Table(Schema="sys", Name="database_firewall_rules", IsView=true)]
		public partial class DatabaseFirewallRule
		{
			/// <summary>
			/// The identifier of the database-level firewall setting.
			/// </summary>
			[Column("id"),               NotNull] public object ID             { get; set; } = null!; // INTEGER
			/// <summary>
			/// The name you chose to describe and distinguish the database-level firewall setting.
			/// </summary>
			[Column("name"),             NotNull] public object Name           { get; set; } = null!; // NVARCHAR(128)
			/// <summary>
			/// The lowest IP address in the range of the database-level firewall setting. IP addresses equal to or greater than this can attempt to connect to the SQL Database instance. The lowest possible IP address is <c>0.0.0.0</c>.
			/// </summary>
			[Column("start_ip_address"), NotNull] public object StartIPAddress { get; set; } = null!; // VARCHAR(45)
			/// <summary>
			/// The highest IP address in the range of the firewall setting. IP addresses equal to or less than this can attempt to connect to the SQL Database instance. The highest possible IP address is <c>255.255.255.255</c>.<br/><br/> Note: Azure connection attempts are allowed when both this field and the <strong>start_ip_address</strong> field equals <c>0.0.0.0</c>.
			/// </summary>
			[Column("end_ip_address"),   NotNull] public object EndIPAddress   { get; set; } = null!; // VARCHAR(45)
			/// <summary>
			/// UTC date and time when the database-level firewall setting was created.
			/// </summary>
			[Column("create_date"),      NotNull] public object CreateDate     { get; set; } = null!; // DATETIME
			/// <summary>
			/// UTC date and time when the database-level firewall setting was last modified.
			/// </summary>
			[Column("modify_date"),      NotNull] public object ModifyDate     { get; set; } = null!; // DATETIME
		}

		/// <summary>
		/// <para><strong>sys.database_service_objectives (Azure SQL Database)</strong></para>
		/// <para><strong>Applies to:</strong> √ Azure SQL Database √ Azure SQL Managed Instance √ Azure Synapse Analytics</para>
		/// <para>Returns the edition (service tier), service objective (pricing tier) and elastic pool name, if any, for an Azure SQL database or an Azure Synapse Analytics. If logged on to the master database in an Azure SQL Database server, returns information on all databases. For Azure Synapse Analytics, you must be connected to the master database.<br/>
		/// <br/>
		///  For information on pricing, see <a href='https://azure.microsoft.com/pricing/details/sql-database/'>SQL Database options and performance: SQL Database Pricing</a> and <a href='https://azure.microsoft.com/pricing/details/sql-data-warehouse/'>Azure Synapse Analytics Pricing</a>.<br/>
		///  To change the service settings, see <a href='https://docs.microsoft.com/en-us/sql/t-sql/statements/alter-database-transact-sql'>ALTER DATABASE (Azure SQL Database)</a> and <a href='https://docs.microsoft.com/en-us/sql/t-sql/statements/alter-database-transact-sql?view=azure-sqldw-latest&amp;preserve-view=true'>ALTER DATABASE (Azure Synapse Analytics)</a>.<br/>
		///  The sys.database_service_objectives view contains the following columns.</para><br/>
		/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-database-service-objectives-azure-sql-database'>sys.database_service_objectives</a>.</para>
		/// </summary>
		[Table(Schema="sys", Name="database_service_objectives", IsView=true)]
		public partial class DatabaseServiceObjective
		{
			/// <summary>
			/// The ID of the database, unique within an instance of Azure SQL Database server. Joinable with <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-databases-transact-sql'>sys.databases (Transact-SQL)</a>.
			/// </summary>
			[Column("database_id"),       NotNull] public int    DatabaseID       { get; set; } // int
			/// <summary>
			/// The service tier for the database or data warehouse: <strong>Basic</strong>, <strong>Standard</strong>, <strong>Premium</strong> or <strong>Data Warehouse</strong>.
			/// </summary>
			[Column("edition"),           NotNull] public string Edition          { get; set; } = null!; // sysname
			/// <summary>
			/// The pricing tier of the database. If the database is in an elastic pool, returns <strong>ElasticPool</strong>.<br/><br/> On the <strong>Basic</strong> tier, returns <strong>Basic</strong>.<br/><br/> <strong>Single database in a standard service tier</strong> returns one of the following: S0, S1, S2, S3, S4, S6, S7, S9 or S12.<br/><br/> <strong>Single database in a premium tier</strong> returns of the following: P1, P2, P4, P6, P11 or P15.<br/><br/> <strong>Azure Synapse Analytics</strong> returns DW100 through DW30000c.<br/><br/> For details, see <a href='https://docs.microsoft.com/en-us/azure/sql-database/sql-database-dtu-resource-limits-single-databases/'>single databases</a>, <a href='https://docs.microsoft.com/en-us/azure/sql-database/sql-database-dtu-resource-limits-elastic-pools/'>elastic pools</a>, <a href='https://docs.microsoft.com/en-us/azure/sql-data-warehouse/what-is-a-data-warehouse-unit-dwu-cdwu/'>data warehouses</a>
			/// </summary>
			[Column("service_objective"), NotNull] public string ServiceObjective { get; set; } = null!; // sysname
			/// <summary>
			/// The name of the <a href='https://docs.microsoft.com/en-us/azure/azure-sql/database/elastic-pool-overview'>elastic pool</a> that the database belongs to. Returns <strong>NULL</strong> if the database is a single database or a data warehouse.
			/// </summary>
			[Column("elastic_pool_name"), NotNull] public string ElasticPoolName  { get; set; } = null!; // sysname
		}

		/// <summary>
		/// <para><strong>sys.database_usage (Azure SQL Database)</strong></para>
		/// <para><strong>Applies to:</strong> √ Azure SQL Database √ Azure SQL Managed Instance</para>
		/// <para><strong>Note: This applies only to Azure SQL Database V11.</strong><br/>
		///  Lists the number, type, and duration of databases on the SQL Database server.<br/>
		///  The <strong>sys.database_usage</strong> view contains the following columns.</para><br/>
		/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-database-usage-azure-sql-database'>sys.database_usage</a>.</para>
		/// </summary>
		[Table(Schema="sys", Name="database_usage", IsView=true)]
		public partial class DatabaseUsage
		{
			/// <summary>
			/// The date when the usage events occurred.
			/// </summary>
			[Column("time"),     NotNull] public object Time     { get; set; } = null!; // object
			/// <summary>
			/// The type of service tier for the database: <strong>Web</strong>, <strong>Business</strong>, <strong>Basic</strong>, <strong>Standard</strong>, <strong>Premium</strong>
			/// </summary>
			[Column("sku"),      NotNull] public object Sku      { get; set; } = null!; // object
			/// <summary>
			/// The maximum number of databases of an SKU type that existed during that day.
			/// </summary>
			[Column("quantity"), NotNull] public object Quantity { get; set; } = null!; // object
		}

		/// <summary>
		/// <para><strong>sys.elastic_pool_resource_stats (Azure SQL Database)</strong></para>
		/// <para><strong>Applies to:</strong> √ Azure SQL Database √ Azure SQL Managed Instance</para>
		/// <para>Returns resource usage statistics for all the elastic pools in a SQL Database server. For each elastic pool, there is one row for each 15 second reporting window (four rows per minute). This includes CPU, IO, Log, storage consumption and concurrent request/session utilization by all databases in the pool. This data is retained for 14 days. <br/>
		/// ||<br/>
		/// |-|<br/>
		/// |<strong>Applies to</strong>:  SQL Database V12.|</para><br/>
		/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-elastic-pool-resource-stats-azure-sql-database'>sys.elastic_pool_resource_stats</a>.</para>
		/// </summary>
		[Table(Schema="sys", Name="elastic_pool_resource_stats", IsView=true)]
		public partial class ElasticPoolResourceStat
		{
			/// <summary>
			/// UTC time indicating the start of the 15 second reporting interval.
			/// </summary>
			[Column("start_time"),                    NotNull] public DateTime StartTime                  { get; set; } // datetime2
			/// <summary>
			/// UTC time indicating the end of the 15 second reporting interval.
			/// </summary>
			[Column("end_time"),                      NotNull] public DateTime EndTime                    { get; set; } // datetime2
			/// <summary>
			/// Name of the elastic database pool.
			/// </summary>
			[Column("elastic_pool_name"),             NotNull] public string   ElasticPoolName            { get; set; } = null!; // nvarchar(128)
			/// <summary>
			/// Average compute utilization in percentage of the limit of the pool.
			/// </summary>
			[Column("avg_cpu_percent"),               NotNull] public object   AvgCpuPercent              { get; set; } = null!; // decimal(5,2)
			/// <summary>
			/// Average I/O utilization in percentage based on the limit of the pool.
			/// </summary>
			[Column("avg_data_io_percent"),           NotNull] public object   AvgDataIoPercent           { get; set; } = null!; // decimal(5,2)
			/// <summary>
			/// Average write resource utilization in percentage of the limit of the pool.
			/// </summary>
			[Column("avg_log_write_percent"),         NotNull] public object   AvgLogWritePercent         { get; set; } = null!; // decimal(5,2)
			/// <summary>
			/// Average storage utilization in percentage of the storage limit of the pool.
			/// </summary>
			[Column("avg_storage_percent"),           NotNull] public object   AvgStoragePercent          { get; set; } = null!; // decimal(5,2)
			/// <summary>
			/// Maximum concurrent workers (requests) in percentage based on the limit of the pool.
			/// </summary>
			[Column("max_worker_percent"),            NotNull] public object   MaxWorkerPercent           { get; set; } = null!; // decimal(5,2)
			/// <summary>
			/// Maximum concurrent sessions in percentage based on the limit of the pool.
			/// </summary>
			[Column("max_session_percent"),           NotNull] public object   MaxSessionPercent          { get; set; } = null!; // decimal(5,2)
			/// <summary>
			/// Current max elastic pool DTU setting for this elastic pool during this interval.
			/// </summary>
			[Column("elastic_pool_dtu_limit"),        NotNull] public int      ElasticPoolDTULimit        { get; set; } // int
			/// <summary>
			/// Current max elastic pool storage limit setting for this elastic pool in megabytes during this interval.
			/// </summary>
			[Column("elastic_pool_storage_limit_mb"), NotNull] public long     ElasticPoolStorageLimitMB  { get; set; } // bigint
			/// <summary>
			/// The percentage of data space allocated by all databases in the elastic pool.  This is the ratio of data space allocated to data max size for the elastic pool.  For more information see: <a href='https://docs.microsoft.com/en-us/azure/sql-database/sql-database-file-space-management'>File space management in SQL Database</a>
			/// </summary>
			[Column("avg_allocated_storage_percent"), NotNull] public object   AvgAllocatedStoragePercent { get; set; } = null!; // decimal(5,2)
		}

		/// <summary>
		/// <para><strong>sys.event_log (Azure SQL Database)</strong></para>
		/// <para><strong>Applies to:</strong> √ Azure SQL Database</para>
		/// <para>Returns successful Azure SQL Database database connections, connection failures, and deadlocks. You can use this information to track or troubleshoot your database activity with SQL Database.<br/>
		/// > [!CAUTION]<br/>
		/// > For installations having a large number of databases or high numbers of logins, activity in sys.event_log can cause limitations in performance, high CPU usage, and possibly result in login failures. Queries of sys.event_log can contribute to the problem. Microsoft is working to resolve this issue. In the meantime, to reduce the impact of this issue, limit queries of sys.event_log. Users of the NewRelic SQL Server plugin should visit <a href='https://discuss.newrelic.com/t/microsoft-azure-sql-database-plugin-tuning-performance-tweaks/30729'>Microsoft Azure SQL Database plugin tuning &amp; performance tweaks</a> for additional configuration information.<br/>
		///  The <c>sys.event_log</c> view contains the following columns.</para><br/>
		/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-event-log-azure-sql-database'>sys.event_log</a>.</para>
		/// </summary>
		[Table(Schema="sys", Name="event_log", IsView=true)]
		public partial class EventLog
		{
			/// <summary>
			/// Name of the database. If the connection fails and the user did not specify a database name, then this column is blank.
			/// </summary>
			[Column("database_name"),      NotNull] public string   DatabaseName     { get; set; } = null!; // sysname
			/// <summary>
			/// UTC date and time of the start of the aggregation interval. For aggregated events, the time is always a multiple of 5 minutes. For example:<br/><br/> '2011-09-28 16:00:00'<br/>'2011-09-28 16:05:00'<br/>'2011-09-28 16:10:00'
			/// </summary>
			[Column("start_time"),         NotNull] public DateTime StartTime        { get; set; } // datetime2
			/// <summary>
			/// UTC date and time of the end of the aggregation interval. For aggregated events, <strong>End_time</strong> is always exactly 5 minutes later than the corresponding <strong>start_time</strong> in the same row. For events that are not aggregated, <strong>start_time</strong> and <strong>end_time</strong> equal the actual UTC date and time of the event.
			/// </summary>
			[Column("end_time"),           NotNull] public DateTime EndTime          { get; set; } // datetime2
			/// <summary>
			/// The high-level component that generated this event.<br/><br/> See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-event-log-azure-sql-database#EventTypes'>Event Types</a> for a list of possible values.
			/// </summary>
			[Column("event_category"),     NotNull] public string   EventCategory    { get; set; } = null!; // nvarchar(64)
			/// <summary>
			/// The type of event.<br/><br/> See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-event-log-azure-sql-database#EventTypes'>Event Types</a> for a list of possible values.
			/// </summary>
			[Column("event_type"),         NotNull] public string   EventType        { get; set; } = null!; // nvarchar(64)
			/// <summary>
			/// The subtype of the occurring event.<br/><br/> See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-event-log-azure-sql-database#EventTypes'>Event Types</a> for a list of possible values.
			/// </summary>
			[Column("event_subtype"),      NotNull] public int      EventSubtype     { get; set; } // int
			/// <summary>
			/// The description of the event subtype.<br/><br/> See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-event-log-azure-sql-database#EventTypes'>Event Types</a> for a list of possible values.
			/// </summary>
			[Column("event_subtype_desc"), NotNull] public string   EventSubtypeDesc { get; set; } = null!; // nvarchar(64)
			/// <summary>
			/// The severity of the error. Possible values are:<br/><br/> 0 = Information<br/>1 = Warning<br/>2 = Error
			/// </summary>
			[Column("severity"),           NotNull] public int      Severity         { get; set; } // int
			/// <summary>
			/// The number of times that this event occurred for the specified database within the time interval specified (<strong>start_time</strong> and <strong>end_time</strong>).
			/// </summary>
			[Column("event_count"),        NotNull] public int      EventCount       { get; set; } // int
			/// <summary>
			/// A detailed description of the event.<br/><br/> See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-event-log-azure-sql-database#EventTypes'>Event Types</a> for a list of possible values.
			/// </summary>
			[Column("description"),        NotNull] public string   Description      { get; set; } = null!; // nvarchar(max)
			/// <summary>
			/// *Note: This value is always NULL for Azure SQL Database V12. <br/><br/> For <strong>Deadlock</strong> events, this column contains the deadlock graph. This column is NULL for other event types.
			/// </summary>
			[Column("additional_data"),    NotNull] public object   AdditionalData   { get; set; } = null!; // XML
		}

		/// <summary>
		/// <para><strong>sys.firewall_rules (Azure SQL Database)</strong></para>
		/// <para><strong>Applies to:</strong> √ Azure SQL Database √ Azure SQL Managed Instance</para>
		/// <para>Returns information about the server-level firewall settings associated with your Microsoft Azure SQL Database.<br/>
		///  The <c>sys.firewall_rules</c> view contains the following columns:</para><br/>
		/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-firewall-rules-azure-sql-database'>sys.firewall_rules</a>.</para>
		/// </summary>
		[Table(Schema="sys", Name="firewall_rules", IsView=true)]
		public partial class FirewallRule
		{
			/// <summary>
			/// The identifier of the server-level firewall setting.
			/// </summary>
			[Column("id"),               NotNull] public object ID             { get; set; } = null!; // INT
			/// <summary>
			/// The name you chose to describe and distinguish the server-level firewall setting.
			/// </summary>
			[Column("name"),             NotNull] public object Name           { get; set; } = null!; // NVARCHAR(128)
			/// <summary>
			/// The lowest IP address in the range of the server-level firewall setting. IP addresses equal to or greater than this can attempt to connect to the SQL Database server. The lowest possible IP address is <c>0.0.0.0</c>.
			/// </summary>
			[Column("start_ip_address"), NotNull] public object StartIPAddress { get; set; } = null!; // VARCHAR(45)
			/// <summary>
			/// The highest IP address in the range of the server-level firewall setting. IP addresses equal to or less than this can attempt to connect to the SQL Database server. The highest possible IP address is <c>255.255.255.255</c>.<br/><br/> Note: Azure connection attempts are allowed when both this field and the <strong>start_ip_address</strong> field equals <c>0.0.0.0</c>.
			/// </summary>
			[Column("end_ip_address"),   NotNull] public object EndIPAddress   { get; set; } = null!; // VARCHAR(45)
			/// <summary>
			/// UTC date and time when the server-level firewall setting was created.<br/><br/> Note: UTC is an acronym for Coordinated Universal Time.
			/// </summary>
			[Column("create_date"),      NotNull] public object CreateDate     { get; set; } = null!; // DATETIME
			/// <summary>
			/// UTC date and time when the server-level firewall setting was last modified.
			/// </summary>
			[Column("modify_date"),      NotNull] public object ModifyDate     { get; set; } = null!; // DATETIME
		}

		/// <summary>
		/// <para><strong>sys.resource_stats (Azure SQL Database)</strong></para>
		/// <para><strong>Applies to:</strong> √ Azure SQL Database</para>
		/// <para>Returns CPU usage and storage data for an Azure SQL Database. The data is collected and aggregated within five-minute intervals. For each user database, there is one row for every five-minute reporting window in which there is a change in resource consumption. The data returned includes CPU usage, storage size change, and database SKU modification. Idle databases with no changes may not have rows for every five-minute interval. Historical data is retained for approximately 14 days.<br/>
		///  The <c>sys.resource_stats</c> view has different definitions depending on the version of the Azure SQL Database Server that the database is associated with. Consider these differences and any modifications your application requires when upgrading to a new server version.<br/>
		///  <br/>
		/// <note type='note'><br/>
		/// This dynamic management view applies to Azure SQL Database only. For an equivalent view for Azure SQL Managed Instance, use <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-server-resource-stats-azure-sql-database'>sys.server_resource_stats</a>.<br/>
		/// </note><br/>
		///  The following table describes the columns available in a v12 server:</para><br/>
		/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-resource-stats-azure-sql-database'>sys.resource_stats</a>.</para>
		/// </summary>
		[Table(Schema="sys", Name="resource_stats", IsView=true)]
		public partial class ResourceStat
		{
			/// <summary>
			/// UTC time indicating the start of the five-minute reporting interval.
			/// </summary>
			[Column("start_time"),                     NotNull] public DateTime StartTime                   { get; set; } // datetime
			/// <summary>
			/// UTC time indicating the end of the five-minute reporting interval.
			/// </summary>
			[Column("end_time"),                       NotNull] public DateTime EndTime                     { get; set; } // datetime
			/// <summary>
			/// Name of the user database.
			/// </summary>
			[Column("database_name"),                  NotNull] public string   DatabaseName                { get; set; } = null!; // nvarchar(128)
			/// <summary>
			/// Service Tier of the database. The following are the possible values:<br/><br/> Basic<br/><br/> Standard<br/><br/> Premium<br/><br/>General Purpose<br/><br/>Business Critical
			/// </summary>
			[Column("sku"),                            NotNull] public string   Sku                         { get; set; } = null!; // nvarchar(128)
			/// <summary>
			/// Maximum storage size in megabytes for the time period, including database data, indexes, stored procedures, and metadata.
			/// </summary>
			[Column("storage_in_megabytes"),           NotNull] public double   StorageInMegaBytes          { get; set; } // float
			/// <summary>
			/// Average compute utilization in percentage of the limit of the service tier.
			/// </summary>
			[Column("avg_cpu_percent"),                NotNull] public object   AvgCpuPercent               { get; set; } = null!; // decimal(5,2)
			/// <summary>
			/// Average I/O utilization in percentage based on the limit of the service tier. For Hyperscale databases, see <a href='https://docs.microsoft.com/en-us/azure/sql-database/sql-database-hyperscale-performance-diagnostics#data-io-in-resource-utilization-statistics'>Data IO in resource utilization statistics</a>.
			/// </summary>
			[Column("avg_data_io_percent"),            NotNull] public object   AvgDataIoPercent            { get; set; } = null!; // decimal(5,2)
			/// <summary>
			/// Average write resource utilization in percentage of the limit of the service tier.
			/// </summary>
			[Column("avg_log_write_percent"),          NotNull] public object   AvgLogWritePercent          { get; set; } = null!; // decimal(5,2)
			/// <summary>
			/// Maximum concurrent workers (requests) in percentage based on the limit of the database's service tier.<br/><br/> Maximum is currently calculated for the five-minute interval based on the 15-second samples of concurrent worker counts.
			/// </summary>
			[Column("max_worker_percent"),             NotNull] public object   MaxWorkerPercent            { get; set; } = null!; // decimal(5,2)
			/// <summary>
			/// Maximum concurrent sessions in percentage based on the limit of the database's service tier.<br/><br/> Maximum is currently calculated for the five-minute interval based on the 15-second samples of concurrent session counts.
			/// </summary>
			[Column("max_session_percent"),            NotNull] public object   MaxSessionPercent           { get; set; } = null!; // decimal(5,2)
			/// <summary>
			/// Current max database DTU setting for this database during this interval.
			/// </summary>
			[Column("dtu_limit"),                      NotNull] public int      DTULimit                    { get; set; } // int
			/// <summary>
			/// Storage utilization for In-Memory OLTP in percentage of the limit of the service tier (at the end of the reporting interval). This includes memory used for storage of the following In-Memory OLTP objects: memory-optimized tables, indexes, and table variables. It also includes memory used for processing ALTER TABLE operations.<br/><br/> Returns 0 if In-Memory OLTP is not used in the database.
			/// </summary>
			[Column("xtp_storage_percent"),            NotNull] public object   XtpStoragePercent           { get; set; } = null!; // decimal (5,2)
			/// <summary>
			/// Identified for informational purposes only. Not supported. Future compatibility is not guaranteed.
			/// </summary>
			[Column("avg_login_rate_percent"),         NotNull] public object   AvgLoginRatePercent         { get; set; } = null!; // decimal (5,2)
			/// <summary>
			/// Average database CPU usage as a percentage of the SQL Database process.
			/// </summary>
			[Column("avg_instance_cpu_percent"),       NotNull] public object   AvgInstanceCpuPercent       { get; set; } = null!; // decimal (5,2)
			/// <summary>
			/// Average database memory usage as a percentage of the SQL Database process.
			/// </summary>
			[Column("avg_instance_memory_percent"),    NotNull] public object   AvgInstanceMemoryPercent    { get; set; } = null!; // decimal (5,2)
			/// <summary>
			/// Number of vCores for this database during this interval. For databases using the DTU-based model, this column is NULL.
			/// </summary>
			[Column("cpu_limit"),                      NotNull] public object   CpuLimit                    { get; set; } = null!; // decimal (5,2)
			/// <summary>
			/// The amount of formatted file space in MB made available for storing database data. Formatted file space is also referred to as data space allocated.  For more information, see: <a href='https://docs.microsoft.com/en-us/azure/sql-database/sql-database-file-space-management'>File space management in SQL Database</a>
			/// </summary>
			[Column("allocated_storage_in_megabytes"), NotNull] public double   AllocatedStorageInMegaBytes { get; set; } // float
		}

		/// <summary>
		/// <para><strong>sys.resource_usage (Azure SQL Database)</strong></para>
		/// <para><strong>Applies to:</strong> √ Azure SQL Database √ Azure SQL Managed Instance</para>
		/// <para><br/>
		/// <note type='important'><br/>
		/// This feature is in a preview state. Do not take a dependency on the specific implementation of this feature because the feature might be changed or removed in a future release.<br/>
		/// While in a preview state, the Azure SQL Database operations team might turn data collection off and on for this DMV:<br/>
		/// -   When turned on, the DMV returns current data as it is aggregated.<br/>
		/// -   When turned off, the DMV returns historical data, which might be stale.<br/>
		/// </note><br/>
		///  Provides hourly summary of resource usage data for user databases in the current server. Historical data is retained for 90 days.<br/>
		///  For each user database, there is one row for every hour in continuous fashion. Even if the database was idle during that hour, there is one row, and the usage_in_seconds value for that database will be 0. Storage usage and SKU information is rolled up for the hour appropriately.</para><br/>
		/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-resource-usage-azure-sql-database'>sys.resource_usage</a>.</para>
		/// </summary>
		[Table(Schema="sys", Name="resource_usage", IsView=true)]
		public partial class ResourceUsage
		{
			/// <summary>
			/// Time (UTC) in hour increments.
			/// </summary>
			[Column("time"),                 NotNull] public DateTime Time               { get; set; } // datetime
			/// <summary>
			/// Name of user database.
			/// </summary>
			[Column("database_name"),        NotNull] public string   DatabaseName       { get; set; } = null!; // nvarchar
			/// <summary>
			/// Name of the SKU. The following are the possible values:<br/><br/> Web<br/><br/> Business<br/><br/> Basic<br/><br/> Standard<br/><br/> Premium
			/// </summary>
			[Column("sku"),                  NotNull] public string   Sku                { get; set; } = null!; // nvarchar
			/// <summary>
			/// Sum of CPU time used in the hour.<br/><br/> Note: This column is deprecated for V11 and does not apply to V12. <strong>Value is always set to 0.</strong>
			/// </summary>
			[Column("usage_in_seconds"),     NotNull] public int      UsageInSeconds     { get; set; } // int
			/// <summary>
			/// Maximum storage size for the hour, including database data, indexes, stored procedures and metadata.
			/// </summary>
			[Column("storage_in_megabytes"), NotNull] public object   StorageInMegaBytes { get; set; } = null!; // decimal
		}

		/// <summary>
		/// <para><strong>sys.server_resource_stats (Azure SQL Managed Instance)</strong></para>
		/// √ Azure SQL Managed Instance<br/>
		/// Returns CPU usage, IO, and storage data for Azure SQL Managed Instance. The data is collected, aggregated and updated within 5 to 10 minutes intervals. There is one row for every 15 seconds reporting. The data returned includes CPU usage, storage size, IO utilization, and SKU. Historical data is retained for approximately 14 days.<br/>
		/// The <c>sys.server_resource_stats</c> view has different definitions depending on the version of the Azure SQL Managed Instance that the database is associated with. Consider these differences and any modifications your application requires when upgrading to a new server version.<br/>
		/// <note type='note'><br/>
		/// This dynamic management view applies to Azure SQL Managed Instance only. For an equivalent view for Azure SQL Database, use <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-resource-stats-azure-sql-database'>sys.resource_stats</a>.<br/>
		/// </note><br/>
		/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-server-resource-stats-azure-sql-database'>sys.server_resource_stats</a>.</para>
		/// </summary>
		[Table(Schema="sys", Name="server_resource_stats", IsView=true)]
		public partial class ServerResourceStat
		{
			/// <summary>
			/// UTC time indicating the start of the fifteen-second reporting interval
			/// </summary>
			[Column("start_time"),            NotNull] public DateTime StartTime          { get; set; } // datetime2
			/// <summary>
			/// UTC time indicating the end of the fifteen-second reporting interval
			/// </summary>
			[Column("end_time"),              NotNull] public DateTime EndTime            { get; set; } // datetime
			/// <summary>
			/// Type of the resource for which metrics are provided
			/// </summary>
			[Column("resource_type"),         NotNull] public object   ResourceType       { get; set; } = null!; // Nvarchar(128)
			/// <summary>
			/// Name of the resource.
			/// </summary>
			[Column("resource_name"),         NotNull] public string   ResourceName       { get; set; } = null!; // nvarchar(128)
			/// <summary>
			/// Managed Instance Service Tier of the Instance. The following are the possible values: <br/><ul><li>General Purpose</li></ul><ul><li>Business Critical</li></ul>
			/// </summary>
			[Column("sku"),                   NotNull] public string   Sku                { get; set; } = null!; // nvarchar(128)
			/// <summary>
			/// Hardware generation identifier: such as Gen 4 or Gen 5
			/// </summary>
			[Column("hardware_generation"),   NotNull] public string   HardwareGeneration { get; set; } = null!; // nvarchar(128)
			/// <summary>
			/// Represents number of virtual cores per instance
			/// </summary>
			[Column("virtual_core_count"),    NotNull] public int      VirtualCoreCount   { get; set; } // int
			/// <summary>
			/// Average compute utilization in percentage of the limit of the Managed Instance service tier utilized by the instance. It is calculated as sum of CPU time of all resource pools for all databases in the instance and divided by available CPU time for that tier in the given interval.
			/// </summary>
			[Column("avg_cpu_percent"),       NotNull] public object   AvgCpuPercent      { get; set; } = null!; // decimal(5,2)
			/// <summary>
			/// Reserved storage per instance (amount of storage space that customer purchased for the managed instance)
			/// </summary>
			[Column("reserved_storage_mb"),   NotNull] public long     ReservedStorageMB  { get; set; } // bigint
			/// <summary>
			/// Storage used by all database files in a managed instance (including both user and system databases)
			/// </summary>
			[Column("storage_space_used_mb"), NotNull] public object   StorageSpaceUsedMB { get; set; } = null!; // decimal(18,2)
			/// <summary>
			/// Total number of i/o physical operations within the interval
			/// </summary>
			[Column("io_request"),            NotNull] public long     IORequest          { get; set; } // bigint
			/// <summary>
			/// Number of physical bytes read within the interval
			/// </summary>
			[Column("io_bytes_read"),         NotNull] public long     IOBytesRead        { get; set; } // bigint
			/// <summary>
			/// Number of physical bytes written within the interval
			/// </summary>
			[Column("io_bytes_written"),      NotNull] public long     IOBytesWritten     { get; set; } // bigint
		}
	}

	public static partial class AzureSynapseAnalyticsSchema
	{
		public partial class DataContext
		{
			/// <summary>
			/// <para><strong>sys.pdw_column_distribution_properties (Transact-SQL)</strong></para>
			/// <para><strong>Applies to:</strong> √ Azure Synapse Analytics √ Analytics Platform System (PDW)</para>
			/// <para>Holds distribution information for columns.</para><br/>
			/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-pdw-column-distribution-properties-transact-sql'>sys.pdw_column_distribution_properties</a>.</para>
			/// </summary>
			public ITable<ColumnDistributionProperty>                 ColumnDistributionProperties                 { get { return _dataContext.GetTable<ColumnDistributionProperty>(); } }
			/// <summary>
			/// <para><strong>sys.pdw_database_mappings (Transact-SQL)</strong></para>
			/// <para><strong>Applies to:</strong> √ Analytics Platform System (PDW)</para>
			/// <para>Maps the <strong>database_id</strong>s of databases to the physical name used on Compute nodes, and provides the <strong>principal id</strong> of the database owner on the system. Join <strong>sys.pdw_database_mappings</strong> to <strong>sys.databases</strong> and <strong>sys.pdw_nodes_pdw_physical_databases</strong>.</para><br/>
			/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-pdw-database-mappings-transact-sql'>sys.pdw_database_mappings</a>.</para>
			/// </summary>
			public ITable<DatabaseMapping>                            DatabaseMappings                             { get { return _dataContext.GetTable<DatabaseMapping>(); } }
			/// <summary>
			/// <para><strong>sys.pdw_diag_events (Transact-SQL)</strong></para>
			/// <para><strong>Applies to:</strong> √ Analytics Platform System (PDW)</para>
			/// <para>Holds information about events that can be included in diagnostic sessions on the system.</para><br/>
			/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-pdw-diag-events-transact-sql'>sys.pdw_diag_events</a>.</para>
			/// </summary>
			public ITable<DiagEvent>                                  DiagEvents                                   { get { return _dataContext.GetTable<DiagEvent>(); } }
			/// <summary>
			/// <para><strong>sys.pdw_diag_event_properties (Transact-SQL)</strong></para>
			/// <para><strong>Applies to:</strong> √ Analytics Platform System (PDW)</para>
			/// <para>Holds information about which properties are associated with diagnostic events.</para><br/>
			/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-pdw-diag-event-properties-transact-sql'>sys.pdw_diag_event_properties</a>.</para>
			/// </summary>
			public ITable<DiagEventProperty>                          DiagEventProperties                          { get { return _dataContext.GetTable<DiagEventProperty>(); } }
			/// <summary>
			/// <para><strong>sys.pdw_diag_sessions (Transact-SQL)</strong></para>
			/// <para><strong>Applies to:</strong> √ Analytics Platform System (PDW)</para>
			/// <para>Holds information regarding the various diagnostic sessions that have been created on the system.</para><br/>
			/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-pdw-diag-sessions-transact-sql'>sys.pdw_diag_sessions</a>.</para>
			/// </summary>
			public ITable<DiagSession>                                DiagSessions                                 { get { return _dataContext.GetTable<DiagSession>(); } }
			/// <summary>
			/// <para><strong>sys.pdw_distributions (Transact-SQL)</strong></para>
			/// <para><strong>Applies to:</strong> √ Azure Synapse Analytics √ Analytics Platform System (PDW)</para>
			/// <para>Holds information about the distributions on the appliance. It lists one row per appliance distribution.</para><br/>
			/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-pdw-distributions-transact-sql'>sys.pdw_distributions</a>.</para>
			/// </summary>
			public ITable<Distribution>                               Distributions                                { get { return _dataContext.GetTable<Distribution>(); } }
			/// <summary>
			/// <para><strong>sys.pdw_health_alerts (Transact-SQL)</strong></para>
			/// <para><strong>Applies to:</strong> √ Analytics Platform System (PDW)</para>
			/// <para>Stores properties for the different alerts that can occur on the system; this is a catalog table for alerts.</para><br/>
			/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-pdw-health-alerts-transact-sql'>sys.pdw_health_alerts</a>.</para>
			/// </summary>
			public ITable<HealthAlert>                                HealthAlerts                                 { get { return _dataContext.GetTable<HealthAlert>(); } }
			/// <summary>
			/// <para><strong>sys.pdw_health_components (Transact-SQL)</strong></para>
			/// <para><strong>Applies to:</strong> √ Analytics Platform System (PDW)</para>
			/// <para>Stores information about all components and devices that exist in the system. These include hardware, storage devices, and network devices.</para><br/>
			/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-pdw-health-components-transact-sql'>sys.pdw_health_components</a>.</para>
			/// </summary>
			public ITable<HealthComponent>                            HealthComponents                             { get { return _dataContext.GetTable<HealthComponent>(); } }
			/// <summary>
			/// <para><strong>sys.pdw_health_component_groups (Transact-SQL)</strong></para>
			/// <para><strong>Applies to:</strong> √ Analytics Platform System (PDW)</para>
			/// <para>Stores information about logical groupings of components and devices.</para><br/>
			/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-pdw-health-component-groups-transact-sql'>sys.pdw_health_component_groups</a>.</para>
			/// </summary>
			public ITable<HealthComponentGroup>                       HealthComponentGroups                        { get { return _dataContext.GetTable<HealthComponentGroup>(); } }
			/// <summary>
			/// <para><strong>sys.pdw_health_component_properties (Transact-SQL)</strong></para>
			/// <para><strong>Applies to:</strong> √ Analytics Platform System (PDW)</para>
			/// <para>Stores properties that describe a device. Some properties show device status and some properties describe the device itself.</para><br/>
			/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-pdw-health-component-properties-transact-sql'>sys.pdw_health_component_properties</a>.</para>
			/// </summary>
			public ITable<HealthComponentProperty>                    HealthComponentProperties                    { get { return _dataContext.GetTable<HealthComponentProperty>(); } }
			/// <summary>
			/// <para><strong>sys.pdw_health_component_status_mappings (Transact-SQL)</strong></para>
			/// <para><strong>Applies to:</strong> √ Analytics Platform System (PDW)</para>
			/// <para>Defines the mapping between the Microsoft Azure Synapse Analytics component statuses and the manufacturer-defined component names.</para><br/>
			/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-pdw-health-component-status-mappings-transact-sql'>sys.pdw_health_component_status_mappings</a>.</para>
			/// </summary>
			public ITable<HealthComponentStatusMapping>               HealthComponentStatusMappings                { get { return _dataContext.GetTable<HealthComponentStatusMapping>(); } }
			/// <summary>
			/// <para><strong>sys.pdw_index_mappings (Transact-SQL)</strong></para>
			/// <para><strong>Applies to:</strong> √ Azure Synapse Analytics √ Analytics Platform System (PDW)</para>
			/// <para>Maps the logical indexes to the physical name used on Compute nodes as reflected by a unique combination of <strong>object_id</strong> of the table holding the index and the <strong>index_id</strong> of a particular index within that table.</para><br/>
			/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-pdw-index-mappings-transact-sql'>sys.pdw_index_mappings</a>.</para>
			/// </summary>
			public ITable<IndexMapping>                               IndexMappings                                { get { return _dataContext.GetTable<IndexMapping>(); } }
			/// <summary>
			/// <para><strong>sys.pdw_loader_backup_runs (Transact-SQL)</strong></para>
			/// <para><strong>Applies to:</strong> √ Azure Synapse Analytics √ Analytics Platform System (PDW)</para>
			/// <para>Contains information about ongoing and completed backup and restore operations in Azure Synapse Analytics, and about ongoing and completed backup, restore, and load operations in Analytics Platform System (PDW). The information persists across system restarts.</para><br/>
			/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-pdw-loader-backup-runs-transact-sql'>sys.pdw_loader_backup_runs</a>.</para>
			/// </summary>
			public ITable<LoaderBackupRun>                            LoaderBackupRuns                             { get { return _dataContext.GetTable<LoaderBackupRun>(); } }
			/// <summary>
			/// <para><strong>sys.pdw_loader_backup_run_details (Transact-SQL)</strong></para>
			/// <para><strong>Applies to:</strong> √ Azure Synapse Analytics √ Analytics Platform System (PDW)</para>
			/// <para>Contains further detailed information, beyond the information in <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-pdw-loader-backup-runs-transact-sql'>sys.pdw_loader_backup_runs (Transact-SQL)</a>, about ongoing and completed backup and restore operations in Azure Synapse Analytics and about ongoing and completed backup, restore, and load operations in Analytics Platform System (PDW). The information persists across system restarts.</para><br/>
			/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-pdw-loader-backup-run-details-transact-sql'>sys.pdw_loader_backup_run_details</a>.</para>
			/// </summary>
			public ITable<LoaderBackupRunDetail>                      LoaderBackupRunDetails                       { get { return _dataContext.GetTable<LoaderBackupRunDetail>(); } }
			/// <summary>
			/// <para><strong>sys.pdw_loader_run_stages (Transact-SQL)</strong></para>
			/// <para><strong>Applies to:</strong> √ Analytics Platform System (PDW)</para>
			/// <para>Contains information about ongoing and completed load operations in Analytics Platform System (PDW). The information persists across system restarts.</para><br/>
			/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-pdw-loader-run-stages-transact-sql'>sys.pdw_loader_run_stages</a>.</para>
			/// </summary>
			public ITable<LoaderRunStage>                             LoaderRunStages                              { get { return _dataContext.GetTable<LoaderRunStage>(); } }
			/// <summary>
			/// <para><strong>sys.pdw_materialized_view_column_distribution_properties (Transact-SQL)</strong></para>
			/// <para><strong>Applies to:</strong> √ Azure Synapse Analytics</para>
			/// <para>Displays distribution information for columns in a materialized view.</para><br/>
			/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-pdw-materialized-view-column-distribution-properties-transact-sql'>sys.pdw_materialized_view_column_distribution_properties</a>.</para>
			/// </summary>
			public ITable<MaterializedViewColumnDistributionProperty> MaterializedViewColumnDistributionProperties { get { return _dataContext.GetTable<MaterializedViewColumnDistributionProperty>(); } }
			/// <summary>
			/// <para><strong>sys.pdw_materialized_view_distribution_properties (Transact-SQL) (preview)</strong></para>
			/// <para><strong>Applies to:</strong> √ Azure Synapse Analytics</para>
			/// <para>Displays distribution information materialized views.</para><br/>
			/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-pdw-materialized-view-distribution-properties-transact-sql'>sys.pdw_materialized_view_distribution_properties</a>.</para>
			/// </summary>
			public ITable<MaterializedViewDistributionProperty>       MaterializedViewDistributionProperties       { get { return _dataContext.GetTable<MaterializedViewDistributionProperty>(); } }
			/// <summary>
			/// <para><strong>sys.pdw_materialized_view_mappings (Transact-SQL)</strong></para>
			/// <para><strong>Applies to:</strong> √ Azure Synapse Analytics</para>
			/// <para>Ties the materialized view to internal object names by object_id.<br/>
			/// The columns physical_name and object_id form the key for this catalog view.</para><br/>
			/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-pdw-materialized-view-mappings-transact-sql'>sys.pdw_materialized_view_mappings</a>.</para>
			/// </summary>
			public ITable<MaterializedViewMapping>                    MaterializedViewMappings                     { get { return _dataContext.GetTable<MaterializedViewMapping>(); } }
			/// <summary>
			/// <para><strong>sys.pdw_nodes_columns (Transact-SQL)</strong></para>
			/// <para><strong>Applies to:</strong> √ Azure Synapse Analytics √ Analytics Platform System (PDW)</para>
			/// <para>Shows columns for user-defined tables and user-defined views.</para><br/>
			/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-pdw-nodes-columns-transact-sql'>sys.pdw_nodes_columns</a>.</para>
			/// </summary>
			public ITable<NodesColumn>                                NodesColumns                                 { get { return _dataContext.GetTable<NodesColumn>(); } }
			/// <summary>
			/// <para><strong>sys.pdw_nodes_column_store_dictionaries (Transact-SQL)</strong></para>
			/// <para><strong>Applies to:</strong> √ Azure Synapse Analytics √ Analytics Platform System (PDW)</para>
			/// <para>Contains a row for each dictionary used in columnstore indexes. Dictionaries are used to encode some, but not all data types, therefore not all columns in a columnstore index have dictionaries. A dictionary can exist as a primary dictionary (for all segments) and possibly for other secondary dictionaries used for a subset of the column's segments.</para><br/>
			/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-pdw-nodes-column-store-dictionaries-transact-sql'>sys.pdw_nodes_column_store_dictionaries</a>.</para>
			/// </summary>
			public ITable<NodesColumnStoreDictionary>                 NodesColumnStoreDictionaries                 { get { return _dataContext.GetTable<NodesColumnStoreDictionary>(); } }
			/// <summary>
			/// <para><strong>sys.pdw_nodes_column_store_row_groups (Transact-SQL)</strong></para>
			/// <para><strong>Applies to:</strong> √ Azure Synapse Analytics √ Analytics Platform System (PDW)</para>
			/// <para>Provides clustered columnstore index information on a per-segment basis to help the administrator make system management decisions in Azure Synapse Analytics. <strong>sys.pdw_nodes_column_store_row_groups</strong> has a column for the total number of rows physically stored (including those marked as deleted) and a column for the number of rows marked as deleted. Use <strong>sys.pdw_nodes_column_store_row_groups</strong> to determine which row groups have a high percentage of deleted rows and should be rebuilt.</para><br/>
			/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-pdw-nodes-column-store-row-groups-transact-sql'>sys.pdw_nodes_column_store_row_groups</a>.</para>
			/// </summary>
			public ITable<NodesColumnStoreRowGroup>                   NodesColumnStoreRowGroups                    { get { return _dataContext.GetTable<NodesColumnStoreRowGroup>(); } }
			/// <summary>
			/// <para><strong>sys.pdw_nodes_column_store_segments (Transact-SQL)</strong></para>
			/// <para><strong>Applies to:</strong> √ Azure Synapse Analytics √ Analytics Platform System (PDW)</para>
			/// <para>Contains a row for each column in a columnstore index.</para><br/>
			/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-pdw-nodes-column-store-segments-transact-sql'>sys.pdw_nodes_column_store_segments</a>.</para>
			/// </summary>
			public ITable<NodesColumnStoreSegment>                    NodesColumnStoreSegments                     { get { return _dataContext.GetTable<NodesColumnStoreSegment>(); } }
			/// <summary>
			/// <para><strong>sys.pdw_nodes_indexes (Transact-SQL)</strong></para>
			/// <para><strong>Applies to:</strong> √ Azure Synapse Analytics √ Analytics Platform System (PDW)</para>
			/// <para>Returns indexes for Azure Synapse Analytics.</para><br/>
			/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-pdw-nodes-indexes-transact-sql'>sys.pdw_nodes_indexes</a>.</para>
			/// </summary>
			public ITable<NodesIndex>                                 NodesIndexes                                 { get { return _dataContext.GetTable<NodesIndex>(); } }
			/// <summary>
			/// <para><strong>sys.pdw_nodes_partitions (Transact-SQL)</strong></para>
			/// <para><strong>Applies to:</strong> √ Azure Synapse Analytics √ Analytics Platform System (PDW)</para>
			/// <para>Contains a row for each partition of all the tables, and most types of indexes in a Azure Synapse Analytics database. All tables and indexes contain at least one partition, whether or not they are explicitly partitioned.</para><br/>
			/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-pdw-nodes-partitions-transact-sql'>sys.pdw_nodes_partitions</a>.</para>
			/// </summary>
			public ITable<NodesPartition>                             NodesPartitions                              { get { return _dataContext.GetTable<NodesPartition>(); } }
			/// <summary>
			/// <para><strong>sys.pdw_nodes_pdw_physical_databases (Transact-SQL)</strong></para>
			/// <para><strong>Applies to:</strong> √ Analytics Platform System (PDW)</para>
			/// <para>Contains a row for each physical database on a compute node. Aggregate physical database information to get detailed information about databases. To combine information, join the <c>sys.pdw_nodes_pdw_physical_databases</c> to the <c>sys.pdw_database_mappings</c> and <c>sys.databases</c> tables.</para><br/>
			/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-pdw-nodes-pdw-physical-databases-transact-sql'>sys.pdw_nodes_pdw_physical_databases</a>.</para>
			/// </summary>
			public ITable<NodesPhysicalDatabase>                      NodesPhysicalDatabases                       { get { return _dataContext.GetTable<NodesPhysicalDatabase>(); } }
			/// <summary>
			/// <para><strong>sys.pdw_nodes_tables (Transact-SQL)</strong></para>
			/// <para><strong>Applies to:</strong> √ Azure Synapse Analytics √ Analytics Platform System (PDW)</para>
			/// <para>Contains a row for each table object that a principal either owns or on which the principal has been granted some permission.</para><br/>
			/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-pdw-nodes-tables-transact-sql'>sys.pdw_nodes_tables</a>.</para>
			/// </summary>
			public ITable<NodesTable>                                 NodesTables                                  { get { return _dataContext.GetTable<NodesTable>(); } }
			/// <summary>
			/// <para><strong>sys.pdw_permanent_table_mappings (Transact-SQL)</strong></para>
			/// <para><strong>Applies to:</strong> √ Azure Synapse Analytics</para>
			/// <para>Ties permanent user tables to internal object names by <strong>object_id</strong>.<br/>
			/// <note type='note'><br/>
			/// <strong>sys.pdw_permanent_table_mappings</strong> holds mappings to permanent tables and does not include temporary or external table mappings.<br/>
			/// </note></para><br/>
			/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-pdw-permanent-table-mappings-transact-sql'>sys.pdw_permanent_table_mappings</a>.</para>
			/// </summary>
			public ITable<PermanentTableMapping>                      PermanentTableMappings                       { get { return _dataContext.GetTable<PermanentTableMapping>(); } }
			/// <summary>
			/// <para><strong>sys.pdw_replicated_table_cache_state (Transact-SQL)</strong></para>
			/// <para><strong>Applies to:</strong> √ Azure Synapse Analytics</para>
			/// <para>Returns the state of the cache associated with a replicated table by <strong>object_id</strong>.</para><br/>
			/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-pdw-replicated-table-cache-state-transact-sql'>sys.pdw_replicated_table_cache_state</a>.</para>
			/// </summary>
			public ITable<ReplicatedTableCacheState>                  ReplicatedTableCacheStates                   { get { return _dataContext.GetTable<ReplicatedTableCacheState>(); } }
			/// <summary>
			/// <para><strong>sys.pdw_table_distribution_properties (Transact-SQL)</strong></para>
			/// <para><strong>Applies to:</strong> √ Azure Synapse Analytics √ Analytics Platform System (PDW)</para>
			/// <para>Holds distribution information for tables.</para><br/>
			/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-pdw-table-distribution-properties-transact-sql'>sys.pdw_table_distribution_properties</a>.</para>
			/// </summary>
			public ITable<TableDistributionProperty>                  TableDistributionProperties                  { get { return _dataContext.GetTable<TableDistributionProperty>(); } }
			/// <summary>
			/// <para><strong>sys.pdw_table_mappings (Transact-SQL)</strong></para>
			/// <para><strong>Applies to:</strong> √ Azure Synapse Analytics √ Analytics Platform System (PDW)</para>
			/// <para>Ties user tables to internal object names by <strong>object_id</strong>.</para><br/>
			/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-pdw-table-mappings-transact-sql'>sys.pdw_table_mappings</a>.</para>
			/// </summary>
			public ITable<TableMapping>                               TableMappings                                { get { return _dataContext.GetTable<TableMapping>(); } }
			/// <summary>
			/// <para><strong>sys.workload_management_workload_classifiers (Transact-SQL)</strong></para>
			/// <para><strong>Applies to:</strong> √ Azure Synapse Analytics</para>
			/// <para> Returns details for workload classifiers.</para><br/>
			/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-workload-management-workload-classifiers-transact-sql'>sys.workload-management-workload-classifiers</a>.</para>
			/// </summary>
			public ITable<WorkloadManagementWorkloadClassifier>       WorkloadManagementWorkloadClassifiers        { get { return _dataContext.GetTable<WorkloadManagementWorkloadClassifier>(); } }
			/// <summary>
			/// <para><strong>sys.workload_management_workload_classifier_details (Transact-SQL)</strong></para>
			/// <para><strong>Applies to:</strong> √ Azure Synapse Analytics</para>
			/// <para>Returns details for each classifier.</para><br/>
			/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-workload-management-workload-classifier-details-transact-sql'>sys.workload-management-workload-classifier-details</a>.</para>
			/// </summary>
			public ITable<WorkloadManagementWorkloadClassifierDetail> WorkloadManagementWorkloadClassifierDetails  { get { return _dataContext.GetTable<WorkloadManagementWorkloadClassifierDetail>(); } }

			private readonly IDataContext _dataContext;

			public DataContext(IDataContext dataContext)
			{
				_dataContext = dataContext;
			}
		}

		/// <summary>
		/// <para><strong>sys.pdw_column_distribution_properties (Transact-SQL)</strong></para>
		/// <para><strong>Applies to:</strong> √ Azure Synapse Analytics √ Analytics Platform System (PDW)</para>
		/// <para>Holds distribution information for columns.</para><br/>
		/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-pdw-column-distribution-properties-transact-sql'>sys.pdw_column_distribution_properties</a>.</para>
		/// </summary>
		[Table(Schema="sys", Name="pdw_column_distribution_properties", IsView=true)]
		public partial class ColumnDistributionProperty
		{
			/// <summary>
			/// ID of the object to which the column belongs.
			/// </summary>
			[Column("object_id"),            NotNull] public int  ObjectID            { get; set; } // int
			/// <summary>
			/// ID of the column.
			/// </summary>
			[Column("column_id"),            NotNull] public int  ColumnID            { get; set; } // int
			/// <summary>
			/// Ordinal (1-based) within set of distribution.<br/>
			/// Range: 0 = Not a distribution column. 1 = Azure Synapse Analytics is using this column to distribute the parent table.
			/// </summary>
			[Column("distribution_ordinal"), NotNull] public byte DistributionOrdinal { get; set; } // tinyint

			#region Associations

			/// <summary>
			/// objects (sys.objects)
			/// </summary>
			[Association(ThisKey="ObjectID", OtherKey="ObjectID", CanBeNull=false)]
			public ObjectSchema.Object Object { get; set; } = null!;

			#endregion
		}

		/// <summary>
		/// <para><strong>sys.pdw_database_mappings (Transact-SQL)</strong></para>
		/// <para><strong>Applies to:</strong> √ Analytics Platform System (PDW)</para>
		/// <para>Maps the <strong>database_id</strong>s of databases to the physical name used on Compute nodes, and provides the <strong>principal id</strong> of the database owner on the system. Join <strong>sys.pdw_database_mappings</strong> to <strong>sys.databases</strong> and <strong>sys.pdw_nodes_pdw_physical_databases</strong>.</para><br/>
		/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-pdw-database-mappings-transact-sql'>sys.pdw_database_mappings</a>.</para>
		/// </summary>
		[Table(Schema="sys", Name="pdw_database_mappings", IsView=true)]
		public partial class DatabaseMapping
		{
			/// <summary>
			/// The physical name for the database on the Compute nodes.<br/><br/> <strong>physical_name</strong> and <strong>database_id</strong> form the key for this view.
			/// </summary>
			[Column("physical_name"), NotNull] public string PhysicalName { get; set; } = null!; // nvarchar(36)
			/// <summary>
			/// The object ID for the database. See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-databases-transact-sql'>sys.databases (Transact-SQL)</a>.<br/><br/> <strong>physical_name</strong> and <strong>database_id</strong> form the key for this view.
			/// </summary>
			[Column("database_id"),   NotNull] public int    DatabaseID   { get; set; } // int
		}

		/// <summary>
		/// <para><strong>sys.pdw_diag_events (Transact-SQL)</strong></para>
		/// <para><strong>Applies to:</strong> √ Analytics Platform System (PDW)</para>
		/// <para>Holds information about events that can be included in diagnostic sessions on the system.</para><br/>
		/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-pdw-diag-events-transact-sql'>sys.pdw_diag_events</a>.</para>
		/// </summary>
		[Table(Schema="sys", Name="pdw_diag_events", IsView=true)]
		public partial class DiagEvent
		{
			/// <summary>
			/// Name of the specific diagnostics event.
			/// </summary>
			[Column("name"),       NotNull] public string Name      { get; set; } = null!; // nvarchar(255)
			/// <summary>
			/// Source of the event (engine, general, dms, etc.)
			/// </summary>
			[Column("source"),     NotNull] public string Source    { get; set; } = null!; // nvarchar(255)
			/// <summary>
			/// Whether the event is being published.
			/// </summary>
			[Column("is_enabled"), NotNull] public bool   IsEnabled { get; set; } // bit
		}

		/// <summary>
		/// <para><strong>sys.pdw_diag_event_properties (Transact-SQL)</strong></para>
		/// <para><strong>Applies to:</strong> √ Analytics Platform System (PDW)</para>
		/// <para>Holds information about which properties are associated with diagnostic events.</para><br/>
		/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-pdw-diag-event-properties-transact-sql'>sys.pdw_diag_event_properties</a>.</para>
		/// </summary>
		[Table(Schema="sys", Name="pdw_diag_event_properties", IsView=true)]
		public partial class DiagEventProperty
		{
			/// <summary>
			/// Name of the specific diagnostics event.
			/// </summary>
			[Column("event_name"),    NotNull] public string EventName    { get; set; } = null!; // nvarchar(255)
			/// <summary>
			/// Name of a property of the event.
			/// </summary>
			[Column("property_name"), NotNull] public string PropertyName { get; set; } = null!; // nvarchar(255)
		}

		/// <summary>
		/// <para><strong>sys.pdw_diag_sessions (Transact-SQL)</strong></para>
		/// <para><strong>Applies to:</strong> √ Analytics Platform System (PDW)</para>
		/// <para>Holds information regarding the various diagnostic sessions that have been created on the system.</para><br/>
		/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-pdw-diag-sessions-transact-sql'>sys.pdw_diag_sessions</a>.</para>
		/// </summary>
		[Table(Schema="sys", Name="pdw_diag_sessions", IsView=true)]
		public partial class DiagSession
		{
			/// <summary>
			/// Name of the diagnostics session.<br/><br/> Key for this view.
			/// </summary>
			[Column("name"),         NotNull] public string Name        { get; set; } = null!; // nvarchar(255)
			/// <summary>
			/// XML payload describing the session.
			/// </summary>
			[Column("xml_data"),     NotNull] public string XmlData     { get; set; } = null!; // nvarchar(4000)
			/// <summary>
			/// Flag indicating whether the flag is active.
			/// </summary>
			[Column("is_active"),    NotNull] public bool   IsActive    { get; set; } // bit
			/// <summary>
			/// Address of the machine hosting the session definition (Control node).
			/// </summary>
			[Column("host_address"), NotNull] public string HostAddress { get; set; } = null!; // nvarchar(255)
			/// <summary>
			/// ID of the user that created the session at the database level.
			/// </summary>
			[Column("principal_id"), NotNull] public int    PrincipalID { get; set; } // int
			/// <summary>
			/// ID of the database that is the scope of the diagnostic session.
			/// </summary>
			[Column("database_id"),  NotNull] public int    DatabaseID  { get; set; } // int
		}

		/// <summary>
		/// <para><strong>sys.pdw_distributions (Transact-SQL)</strong></para>
		/// <para><strong>Applies to:</strong> √ Azure Synapse Analytics √ Analytics Platform System (PDW)</para>
		/// <para>Holds information about the distributions on the appliance. It lists one row per appliance distribution.</para><br/>
		/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-pdw-distributions-transact-sql'>sys.pdw_distributions</a>.</para>
		/// </summary>
		[Table(Schema="sys", Name="pdw_distributions", IsView=true)]
		public partial class Distribution
		{
			/// <summary>
			/// Unique numeric id associated with the distribution.<br/><br/> Key for this view.<br/>
			/// Range: 1 to the number of Compute nodes in appliance multiplied by the number of distributions per Compute node.
			/// </summary>
			[Column("distribution_id"), NotNull] public int    DistributionID { get; set; } // int
			/// <summary>
			/// ID of the node this distribution is on.<br/>
			/// Range: See pdw_node_id in [sys.dm_pdw_nodes (Transact-SQL)](https://docs.microsoft.com/en-us/sql/relational-databases/system-dynamic-management-views/sys-dm-pdw-nodes-transact-sql).
			/// </summary>
			[Column("pdw_node_id"),     NotNull] public int    PdwNodeID      { get; set; } // int
			/// <summary>
			/// String identifier associated with the distribution, used as a suffix on distributed tables.<br/>
			/// Range: String composed of 'A-Z','a-z','0-9','_','-'.
			/// </summary>
			[Column("name"),            NotNull] public string Name           { get; set; } = null!; // nvarchar(32)
			/// <summary>
			/// Position of the distribution within a node respective to other distributions on that node.<br/>
			/// Range: 1 to the number of distributions per node.
			/// </summary>
			[Column("position"),        NotNull] public int    Position       { get; set; } // int
		}

		/// <summary>
		/// <para><strong>sys.pdw_health_alerts (Transact-SQL)</strong></para>
		/// <para><strong>Applies to:</strong> √ Analytics Platform System (PDW)</para>
		/// <para>Stores properties for the different alerts that can occur on the system; this is a catalog table for alerts.</para><br/>
		/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-pdw-health-alerts-transact-sql'>sys.pdw_health_alerts</a>.</para>
		/// </summary>
		[Table(Schema="sys", Name="pdw_health_alerts", IsView=true)]
		public partial class HealthAlert
		{
			/// <summary>
			/// Unique identifier of the alert.<br/><br/> Key for this view.<br/>
			/// Range: NOT NULL
			/// </summary>
			[Column("alert_id"),        NotNull] public int    AlertID        { get; set; } // int
			/// <summary>
			/// ID of the component this alert applies to. The component is a general component identifier, such as 'Power Supply,' and is not specific to an installation. See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-pdw-health-components-transact-sql'>sys.pdw_health_components (Transact-SQL)</a>.<br/>
			/// Range: NOT NULL
			/// </summary>
			[Column("component_id"),    NotNull] public int    ComponentID    { get; set; } // int
			/// <summary>
			/// Name of the alert.<br/>
			/// Range: NOT NULL
			/// </summary>
			[Column("alert_name"),      NotNull] public string AlertName      { get; set; } = null!; // nvarchar(255)
			/// <summary>
			/// State of the alert.<br/>
			/// Range: NOT NULL<br/><br/> Possible values:<br/><br/> 'Operational'<br/><br/> 'NonOperational'<br/><br/> 'Degraded'<br/><br/> 'Failed'
			/// </summary>
			[Column("state"),           NotNull] public string State          { get; set; } = null!; // nvarchar(32)
			/// <summary>
			/// Severity of the alert.<br/>
			/// Range: NOT NULL<br/><br/> Possible values:<br/><br/> 'Informational'<br/><br/> 'Warning'<br/><br/> 'Error'
			/// </summary>
			[Column("severity"),        NotNull] public string Severity       { get; set; } = null!; // nvarchar(32)
			/// <summary>
			/// Type of alert.<br/>
			/// Range: NOT NULL<br/><br/> Possible values:<br/><br/> StatusChange - The device status has changed.<br/><br/> Threshold - A value has exceeded the threshold value.
			/// </summary>
			[Column("type"),            NotNull] public string TypeColumn     { get; set; } = null!; // nvarchar(32)
			/// <summary>
			/// Description of the alert.<br/>
			/// Range: NOT NULL
			/// </summary>
			[Column("description"),     NotNull] public string Description    { get; set; } = null!; // nvarchar(4000)
			/// <summary>
			/// Used when type = Threshold. Defines how the alert threshold is calculated.<br/>
			/// Range: NULL
			/// </summary>
			[Column("condition"),       NotNull] public string Condition      { get; set; } = null!; // nvarchar(255)
			/// <summary>
			/// Alert status<br/>
			/// Range: NULL
			/// </summary>
			[Column("status"),          NotNull] public string Status         { get; set; } = null!; // nvarchar(32)
			/// <summary>
			/// Indicates whether the alert is allowed to occur during system operation.<br/>
			/// Range: NULL<br/><br/> Possible values<br/><br/> 0 - alert is not generated.<br/><br/> 1 - alert is generated.
			/// </summary>
			[Column("condition_value"), NotNull] public bool   ConditionValue { get; set; } // bit
		}

		/// <summary>
		/// <para><strong>sys.pdw_health_components (Transact-SQL)</strong></para>
		/// <para><strong>Applies to:</strong> √ Analytics Platform System (PDW)</para>
		/// <para>Stores information about all components and devices that exist in the system. These include hardware, storage devices, and network devices.</para><br/>
		/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-pdw-health-components-transact-sql'>sys.pdw_health_components</a>.</para>
		/// </summary>
		[Table(Schema="sys", Name="pdw_health_components", IsView=true)]
		public partial class HealthComponent
		{
			/// <summary>
			/// Unique identifier of a component or device.<br/><br/> Key for this view.<br/>
			/// Range: NOT NULL
			/// </summary>
			[Column("component_id"),   NotNull] public int    ComponentID   { get; set; } // int
			/// <summary>
			/// The logical component group to which this component belongs. See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-pdw-health-components-transact-sql'>sys.pdw_health_components (Parallel Data Warehouse)</a>.<br/>
			/// Range: NOT NULL
			/// </summary>
			[Column("group_id"),       NotNull] public object GroupID       { get; set; } = null!; // Int
			/// <summary>
			/// Name of the component.<br/>
			/// Range: NOT NULL
			/// </summary>
			[Column("component_name"), NotNull] public string ComponentName { get; set; } = null!; // nvarchar(255)
		}

		/// <summary>
		/// <para><strong>sys.pdw_health_component_groups (Transact-SQL)</strong></para>
		/// <para><strong>Applies to:</strong> √ Analytics Platform System (PDW)</para>
		/// <para>Stores information about logical groupings of components and devices.</para><br/>
		/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-pdw-health-component-groups-transact-sql'>sys.pdw_health_component_groups</a>.</para>
		/// </summary>
		[Table(Schema="sys", Name="pdw_health_component_groups", IsView=true)]
		public partial class HealthComponentGroup
		{
			/// <summary>
			/// Unique identifier for components and devices.<br/><br/> Key for this view.<br/>
			/// Range: NOT NULL
			/// </summary>
			[Column("group_id"),   NotNull] public int    GroupID   { get; set; } // int
			/// <summary>
			/// Logical group name for the components and devices.<br/>
			/// Range: NOT NULL
			/// </summary>
			[Column("group_name"), NotNull] public string GroupName { get; set; } = null!; // nvarchar(255)
		}

		/// <summary>
		/// <para><strong>sys.pdw_health_component_properties (Transact-SQL)</strong></para>
		/// <para><strong>Applies to:</strong> √ Analytics Platform System (PDW)</para>
		/// <para>Stores properties that describe a device. Some properties show device status and some properties describe the device itself.</para><br/>
		/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-pdw-health-component-properties-transact-sql'>sys.pdw_health_component_properties</a>.</para>
		/// </summary>
		[Table(Schema="sys", Name="pdw_health_component_properties", IsView=true)]
		public partial class HealthComponentProperty
		{
			/// <summary>
			/// Unique identifier of the property of a component.<br/><br/> property_id and component_id form the key for this view.<br/>
			/// Range: NOT NULL
			/// </summary>
			[Column("property_id"),   NotNull] public int    PropertyID   { get; set; } // int
			/// <summary>
			/// The ID of the component. See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-pdw-health-components-transact-sql'>sys.pdw_health_components (Transact-SQL)</a>.<br/><br/> property_id and component_id form the key for this view.<br/>
			/// Range: NOT NULL
			/// </summary>
			[Column("component_id"),  NotNull] public int    ComponentID  { get; set; } // int
			/// <summary>
			/// Name of the property.<br/>
			/// Range: NOT NULL
			/// </summary>
			[Column("property_name"), NotNull] public string PropertyName { get; set; } = null!; // nvarchar(255)
			/// <summary>
			/// Property name as defined by the manufacturer.<br/>
			/// Range: NOT NULL
			/// </summary>
			[Column("physical_name"), NotNull] public string PhysicalName { get; set; } = null!; // nvarchar(32)
			/// <summary>
			/// Determines whether the device instance is unique or not unique.<br/>
			/// Range: NOT NULL<br/><br/> 0 - Device instance is unique.<br/><br/> 1 - Device instance is not unique.
			/// </summary>
			[Column("is_key"),        NotNull] public bool   IsKey        { get; set; } // bit
		}

		/// <summary>
		/// <para><strong>sys.pdw_health_component_status_mappings (Transact-SQL)</strong></para>
		/// <para><strong>Applies to:</strong> √ Analytics Platform System (PDW)</para>
		/// <para>Defines the mapping between the Microsoft Azure Synapse Analytics component statuses and the manufacturer-defined component names.</para><br/>
		/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-pdw-health-component-status-mappings-transact-sql'>sys.pdw_health_component_status_mappings</a>.</para>
		/// </summary>
		[Table(Schema="sys", Name="pdw_health_component_status_mappings", IsView=true)]
		public partial class HealthComponentStatusMapping
		{
			/// <summary>
			/// Unique identifier of the property.<br/><br/> property_id, component_id, and physical_name form the key for this view.<br/>
			/// Range: NOT NULL
			/// </summary>
			[Column("property_id"),   NotNull] public int    PropertyID   { get; set; } // int
			/// <summary>
			/// The ID of the component. See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-pdw-health-components-transact-sql'>sys.pdw_health_components (Transact-SQL)</a>.<br/><br/> property_id, component_id, and physical_name form the key for this view.<br/>
			/// Range: NOT NULL
			/// </summary>
			[Column("component_id"),  NotNull] public int    ComponentID  { get; set; } // int
			/// <summary>
			/// Property name as defined by the manufacturer.<br/><br/> property_id, component_id, and physical_name form the key for this view.<br/>
			/// Range: NOT NULL
			/// </summary>
			[Column("physical_name"), NotNull] public string PhysicalName { get; set; } = null!; // nvarchar(32)
			/// <summary>
			/// Property name as defined by Microsoft Azure Synapse Analytics.<br/>
			/// Range: NOT NULL<br/><br/> 0 - Device instance is unique.<br/><br/> 1 - Device instance is not unique.
			/// </summary>
			[Column("logical_name"),  NotNull] public string LogicalName  { get; set; } = null!; // nvarchar(255)
		}

		/// <summary>
		/// <para><strong>sys.pdw_index_mappings (Transact-SQL)</strong></para>
		/// <para><strong>Applies to:</strong> √ Azure Synapse Analytics √ Analytics Platform System (PDW)</para>
		/// <para>Maps the logical indexes to the physical name used on Compute nodes as reflected by a unique combination of <strong>object_id</strong> of the table holding the index and the <strong>index_id</strong> of a particular index within that table.</para><br/>
		/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-pdw-index-mappings-transact-sql'>sys.pdw_index_mappings</a>.</para>
		/// </summary>
		[Table(Schema="sys", Name="pdw_index_mappings", IsView=true)]
		public partial class IndexMapping
		{
			/// <summary>
			/// The object ID for the logical table on which this index exists. See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-objects-transact-sql'>sys.objects (Transact-SQL)</a>.<br/><br/> <strong>physical_name</strong> and <strong>object_id</strong> form the key for this view.
			/// </summary>
			[Column("object_id"),     NotNull] public int    ObjectID     { get; set; } // int
			/// <summary>
			/// The ID for the index. See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-indexes-transact-sql'>sys.indexes (Transact-SQL)</a>.
			/// </summary>
			[Column("index_id"),      NotNull] public string IndexID      { get; set; } = null!; // nvarchar(32)
			/// <summary>
			/// The name of the index in the databases on the Compute nodes.<br/><br/> <strong>physical_name</strong> and <strong>object_id</strong> form the key for this view.
			/// </summary>
			[Column("physical_name"), NotNull] public string PhysicalName { get; set; } = null!; // nvarchar(36)

			#region Associations

			/// <summary>
			/// objects (sys.objects)
			/// </summary>
			[Association(ThisKey="ObjectID", OtherKey="ObjectID", CanBeNull=false)]
			public ObjectSchema.Object Object { get; set; } = null!;

			#endregion
		}

		/// <summary>
		/// <para><strong>sys.pdw_loader_backup_runs (Transact-SQL)</strong></para>
		/// <para><strong>Applies to:</strong> √ Azure Synapse Analytics √ Analytics Platform System (PDW)</para>
		/// <para>Contains information about ongoing and completed backup and restore operations in Azure Synapse Analytics, and about ongoing and completed backup, restore, and load operations in Analytics Platform System (PDW). The information persists across system restarts.</para><br/>
		/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-pdw-loader-backup-runs-transact-sql'>sys.pdw_loader_backup_runs</a>.</para>
		/// </summary>
		[Table(Schema="sys", Name="pdw_loader_backup_runs", IsView=true)]
		public partial class LoaderBackupRun
		{
			/// <summary>
			/// Unique identifier for a specific backup, restore, or load run.<br/><br/> Key for this view.
			/// </summary>
			[Column("run_id"),             NotNull] public int      RunID            { get; set; } // int
			/// <summary>
			/// Null for load. Optional name for backup or restore.
			/// </summary>
			[Column("name"),               NotNull] public string   Name             { get; set; } = null!; // nvarchar(255)
			/// <summary>
			/// Time the request was submitted.
			/// </summary>
			[Column("submit_time"),        NotNull] public DateTime SubmitTime       { get; set; } // datetime
			/// <summary>
			/// Time the operation started.
			/// </summary>
			[Column("start_time"),         NotNull] public DateTime StartTime        { get; set; } // datetime
			/// <summary>
			/// Time the operation completed, failed, or was cancelled.
			/// </summary>
			[Column("end_time"),           NotNull] public DateTime EndTime          { get; set; } // datetime
			/// <summary>
			/// Total time elapsed between start_time and current time, or between start_time and end_time for completed, cancelled, or failed runs.<br/>
			/// Range: If total_elapsed_time exceeds the maximum value for an integer (24.8 days in milliseconds), it will cause materialization failure due to overflow.<br/><br/> The maximum value in milliseconds is equivalent to 24.8 days.
			/// </summary>
			[Column("total_elapsed_time"), NotNull] public int      TotalElapsedTime { get; set; } // int
			/// <summary>
			/// The load type.<br/>
			/// Range: 'BACKUP', 'LOAD', 'RESTORE'
			/// </summary>
			[Column("operation_type"),     NotNull] public string   OperationType    { get; set; } = null!; // nvarchar(16)
			/// <summary>
			/// The mode within the run type.<br/>
			/// Range: For operation_type = **BACKUP**<br/>**DIFFERENTIAL**<br/>**FULL**<br/><br/> For operation_type = **LOAD**<br/>**APPEND**<br/>**RELOAD**<br/>**UPSERT**<br/><br/> For operation_type = **RESTORE**<br/>**DATABASE**<br/>**HEADER_ONLY**
			/// </summary>
			[Column("mode"),               NotNull] public string   Mode             { get; set; } = null!; // nvarchar(16)
			/// <summary>
			/// Name of the database that is the context of this operation
			/// </summary>
			[Column("database_name"),      NotNull] public string   DatabaseName     { get; set; } = null!; // nvarchar(255)
			/// <summary>
			/// Information not available.
			/// </summary>
			[Column("table_name"),         NotNull] public string   TableName        { get; set; } = null!; // nvarchar(255)
			/// <summary>
			/// ID of the user requesting the operation.
			/// </summary>
			[Column("Principal_id"),       NotNull] public int      PrincipalID      { get; set; } // int
			/// <summary>
			/// ID of the session performing the operation.<br/>
			/// Range: See session_id in [sys.dm_pdw_exec_sessions (Transact-SQL)](https://docs.microsoft.com/en-us/sql/relational-databases/system-dynamic-management-views/sys-dm-pdw-exec-sessions-transact-sql).
			/// </summary>
			[Column("session_id"),         NotNull] public string   SessionID        { get; set; } = null!; // nvarchar(32)
			/// <summary>
			/// ID of the request performing the operation. For loads, this is the current or last request associated with this load..<br/>
			/// Range: See request_id in [sys.dm_pdw_exec_requests (Transact-SQL)](https://docs.microsoft.com/en-us/sql/relational-databases/system-dynamic-management-views/sys-dm-pdw-exec-requests-transact-sql).
			/// </summary>
			[Column("request_id"),         NotNull] public string   RequestID        { get; set; } = null!; // nvarchar(32)
			/// <summary>
			/// Status of the run.<br/>
			/// Range: 'CANCELLED','COMPLETED','FAILED','QUEUED','RUNNING'
			/// </summary>
			[Column("status"),             NotNull] public string   Status           { get; set; } = null!; // nvarchar(16)
			/// <summary>
			/// Percentage completed.<br/>
			/// Range: 0 to 100
			/// </summary>
			[Column("progress"),           NotNull] public int      Progress         { get; set; } // int
			/// <summary>
			/// Full text of the command submitted by the user.<br/>
			/// Range: Will be truncated if longer than 4000 characters (counting spaces).
			/// </summary>
			[Column("command"),            NotNull] public string   Command          { get; set; } = null!; // nvarchar(4000)
			/// <summary>
			/// Number of rows processed as part of this operation.
			/// </summary>
			[Column("rows_processed"),     NotNull] public long     RowsProcessed    { get; set; } // bigint
			/// <summary>
			/// Number of rows rejected as part of this operation.
			/// </summary>
			[Column("rows_rejected"),      NotNull] public long     RowsRejected     { get; set; } // bigint
			/// <summary>
			/// Number of rows inserted into the database table(s) as part of this operation.
			/// </summary>
			[Column("rows_inserted"),      NotNull] public long     RowsInserted     { get; set; } // bigint
		}

		/// <summary>
		/// <para><strong>sys.pdw_loader_backup_run_details (Transact-SQL)</strong></para>
		/// <para><strong>Applies to:</strong> √ Azure Synapse Analytics √ Analytics Platform System (PDW)</para>
		/// <para>Contains further detailed information, beyond the information in <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-pdw-loader-backup-runs-transact-sql'>sys.pdw_loader_backup_runs (Transact-SQL)</a>, about ongoing and completed backup and restore operations in Azure Synapse Analytics and about ongoing and completed backup, restore, and load operations in Analytics Platform System (PDW). The information persists across system restarts.</para><br/>
		/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-pdw-loader-backup-run-details-transact-sql'>sys.pdw_loader_backup_run_details</a>.</para>
		/// </summary>
		[Table(Schema="sys", Name="pdw_loader_backup_run_details", IsView=true)]
		public partial class LoaderBackupRunDetail
		{
			/// <summary>
			/// Unique identifier for a specific backup or restore run.<br/><br/> run_id and pdw_node_id form the key for this view.
			/// </summary>
			[Column("run_id"),             NotNull] public int      RunID            { get; set; } // int
			/// <summary>
			/// Unique identifier of an appliance node for which this record holds details.<br/><br/> run_id and pdw_node_id form the key for this view.<br/>
			/// Range: See node_id in [sys.dm_pdw_nodes (Transact-SQL)](https://docs.microsoft.com/en-us/sql/relational-databases/system-dynamic-management-views/sys-dm-pdw-nodes-transact-sql).
			/// </summary>
			[Column("pdw_node_id"),        NotNull] public int      PdwNodeID        { get; set; } // int
			/// <summary>
			/// The current status of the run.<br/>
			/// Range: 'CANCELLED', 'COMPLETED', 'FAILED', 'QUEUED', 'RUNNING'
			/// </summary>
			[Column("status"),             NotNull] public string   Status           { get; set; } = null!; // nvarchar(16)
			/// <summary>
			/// Time at which the operation started on this particular node.
			/// </summary>
			[Column("start_time"),         NotNull] public DateTime StartTime        { get; set; } // datetime
			/// <summary>
			/// Time at which the operation ended on this particular node, if any.
			/// </summary>
			[Column("end_time"),           NotNull] public DateTime EndTime          { get; set; } // datetime
			/// <summary>
			/// Total time the operation has been running on this particular node.<br/>
			/// Range: If total_elapsed_time exceeds the maximum value for an integer (24.8 days in milliseconds), it will cause materialization failure due to overflow.<br/><br/> The maximum value in milliseconds is equivalent to 24.8 days.
			/// </summary>
			[Column("total_elapsed_time"), NotNull] public int      TotalElapsedTime { get; set; } // int
			/// <summary>
			/// Progress of the operation expressed as a percentage.<br/>
			/// Range: 0 to 100
			/// </summary>
			[Column("progress"),           NotNull] public int      Progress         { get; set; } // int
		}

		/// <summary>
		/// <para><strong>sys.pdw_loader_run_stages (Transact-SQL)</strong></para>
		/// <para><strong>Applies to:</strong> √ Analytics Platform System (PDW)</para>
		/// <para>Contains information about ongoing and completed load operations in Analytics Platform System (PDW). The information persists across system restarts.</para><br/>
		/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-pdw-loader-run-stages-transact-sql'>sys.pdw_loader_run_stages</a>.</para>
		/// </summary>
		[Table(Schema="sys", Name="pdw_loader_run_stages", IsView=true)]
		public partial class LoaderRunStage
		{
			/// <summary>
			/// Unique identifier of a loader run.
			/// </summary>
			[Column("run_id"),             NotNull] public int      RunID            { get; set; } // int
			/// <summary>
			/// The current stage for the run.<br/>
			/// Range: 'CREATE_STAGING', 'DMS_LOAD', 'LOAD_INSERT', 'LOAD_CLEANUP'
			/// </summary>
			[Column("stage"),              NotNull] public string   Stage            { get; set; } = null!; // nvarchar(30)
			/// <summary>
			/// ID of the request running this stage.
			/// </summary>
			[Column("request_id"),         NotNull] public string   RequestID        { get; set; } = null!; // nvarchar(32)
			/// <summary>
			/// Status of this phase.
			/// </summary>
			[Column("status"),             NotNull] public string   Status           { get; set; } = null!; // nvarchar(16)
			/// <summary>
			/// Time at which the stage was started.
			/// </summary>
			[Column("start_time"),         NotNull] public DateTime StartTime        { get; set; } // datetime
			/// <summary>
			/// Time at which the stage ended, if any.<br/>
			/// Range: NULL if not started or in progress.
			/// </summary>
			[Column("end_time"),           NotNull] public DateTime EndTime          { get; set; } // datetime
			/// <summary>
			/// Total time this stage spent (or spent so far) running.<br/>
			/// Range: If total_elapsed_time exceeds the maximum value for an integer (24.8 days in milliseconds), it will cause materialization failure due to overflow.<br/><br/> The maximum value in milliseconds is equivalent to 24.8 days.
			/// </summary>
			[Column("total_elapsed_time"), NotNull] public int      TotalElapsedTime { get; set; } // int
		}

		/// <summary>
		/// <para><strong>sys.pdw_materialized_view_column_distribution_properties (Transact-SQL)</strong></para>
		/// <para><strong>Applies to:</strong> √ Azure Synapse Analytics</para>
		/// <para>Displays distribution information for columns in a materialized view.</para><br/>
		/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-pdw-materialized-view-column-distribution-properties-transact-sql'>sys.pdw_materialized_view_column_distribution_properties</a>.</para>
		/// </summary>
		[Table(Schema="sys", Name="pdw_materialized_view_column_distribution_properties", IsView=true)]
		public partial class MaterializedViewColumnDistributionProperty
		{
			/// <summary>
			/// ID of the object to which the column belongs.
			/// </summary>
			[Column("object_id"),            NotNull] public int  ObjectID            { get; set; } // int
			/// <summary>
			/// The ID of the column.
			/// </summary>
			[Column("column_id"),            NotNull] public int  ColumnID            { get; set; } // int
			/// <summary>
			/// 0 = Not a distribution column.<br/> 1 = Azure Synapse Analytics is using this column to distribute the materialized view.
			/// </summary>
			[Column("distribution_ordinal"), NotNull] public byte DistributionOrdinal { get; set; } // tinyint

			#region Associations

			/// <summary>
			/// objects (sys.objects)
			/// </summary>
			[Association(ThisKey="ObjectID", OtherKey="ObjectID", CanBeNull=false)]
			public ObjectSchema.Object Object { get; set; } = null!;

			#endregion
		}

		/// <summary>
		/// <para><strong>sys.pdw_materialized_view_distribution_properties (Transact-SQL) (preview)</strong></para>
		/// <para><strong>Applies to:</strong> √ Azure Synapse Analytics</para>
		/// <para>Displays distribution information materialized views.</para><br/>
		/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-pdw-materialized-view-distribution-properties-transact-sql'>sys.pdw_materialized_view_distribution_properties</a>.</para>
		/// </summary>
		[Table(Schema="sys", Name="pdw_materialized_view_distribution_properties", IsView=true)]
		public partial class MaterializedViewDistributionProperty
		{
			/// <summary>
			/// ID of the materialized view for which thee properties were specified.
			/// </summary>
			[Column("object_id"),                NotNull] public int    ObjectID               { get; set; } // int
			/// <summary>
			/// 2 = HASH<br/>4 = ROUND_ROBIN
			/// </summary>
			[Column("distribution_policy"),      NotNull] public byte   DistributionPolicy     { get; set; } // tinyint
			/// <summary>
			/// HASH, ROUND_ROBIN
			/// </summary>
			[Column("distribution_policy_desc"), NotNull] public string DistributionPolicyDesc { get; set; } = null!; // nvarchar(60)

			#region Associations

			/// <summary>
			/// objects (sys.objects)
			/// </summary>
			[Association(ThisKey="ObjectID", OtherKey="ObjectID", CanBeNull=false)]
			public ObjectSchema.Object Object { get; set; } = null!;

			#endregion
		}

		/// <summary>
		/// <para><strong>sys.pdw_materialized_view_mappings (Transact-SQL)</strong></para>
		/// <para><strong>Applies to:</strong> √ Azure Synapse Analytics</para>
		/// <para>Ties the materialized view to internal object names by object_id.<br/>
		/// The columns physical_name and object_id form the key for this catalog view.</para><br/>
		/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-pdw-materialized-view-mappings-transact-sql'>sys.pdw_materialized_view_mappings</a>.</para>
		/// </summary>
		[Table(Schema="sys", Name="pdw_materialized_view_mappings", IsView=true)]
		public partial class MaterializedViewMapping
		{
			/// <summary>
			/// The physical name for the materialized view.
			/// </summary>
			[Column("physical_name"), NotNull] public string PhysicalName { get; set; } = null!; // nvarchar(36)
			/// <summary>
			/// The object ID for the materialized view. See [sys.objects (Transact-SQL)](https://learn.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-objects-transact-sql?view=sql-server-ver16?view=azure-sqldw-latest&amp;preserve-view=true).
			/// </summary>
			[Column("object_id"),     NotNull] public int    ObjectID     { get; set; } // int

			#region Associations

			/// <summary>
			/// objects (sys.objects)
			/// </summary>
			[Association(ThisKey="ObjectID", OtherKey="ObjectID", CanBeNull=false)]
			public ObjectSchema.Object Object { get; set; } = null!;

			#endregion
		}

		/// <summary>
		/// <para><strong>sys.pdw_nodes_columns (Transact-SQL)</strong></para>
		/// <para><strong>Applies to:</strong> √ Azure Synapse Analytics √ Analytics Platform System (PDW)</para>
		/// <para>Shows columns for user-defined tables and user-defined views.</para><br/>
		/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-pdw-nodes-columns-transact-sql'>sys.pdw_nodes_columns</a>.</para>
		/// </summary>
		[Table(Schema="sys", Name="pdw_nodes_columns", IsView=true)]
		public partial class NodesColumn
		{
			/// <summary>
			/// ID of the object to which this column belongs.
			/// </summary>
			[Column("object_id"),             NotNull] public int    ObjectID           { get; set; } // int
			/// <summary>
			/// Name of the column. Unique in object.
			/// </summary>
			[Column("name"),                  NotNull] public string Name               { get; set; } = null!; // sysname
			/// <summary>
			/// ID of the column. Unique in object.
			/// </summary>
			[Column("column_id"),             NotNull] public int    ColumnID           { get; set; } // int
			/// <summary>
			/// ID of the system type of the column.
			/// </summary>
			[Column("system_type_id"),        NotNull] public byte   SystemTypeID       { get; set; } // tinyint
			/// <summary>
			/// ID of the type of the column as defined by the user.
			/// </summary>
			[Column("user_type_id"),          NotNull] public int    UserTypeID         { get; set; } // int
			/// <summary>
			/// Maximum length (in bytes) of the column.<br/>
			/// Range: Includes -1 (not valid) for unsupported column types.
			/// </summary>
			[Column("max_length"),            NotNull] public short  MaxLength          { get; set; } // smallint
			/// <summary>
			/// Precision of the column if numeric-based; otherwise, 0.
			/// </summary>
			[Column("precision"),             NotNull] public byte   Precision          { get; set; } // tinyint
			/// <summary>
			/// Scale of column if numeric-based; otherwise, 0.
			/// </summary>
			[Column("scale"),                 NotNull] public byte   Scale              { get; set; } // tinyint
			/// <summary>
			/// Name of the collation of the column if character-based; otherwise, NULL.
			/// </summary>
			[Column("collation_name"),        NotNull] public string CollationName      { get; set; } = null!; // sysname
			/// <summary>
			/// 1 = Column is nullable.
			/// </summary>
			[Column("is_nullable"),           NotNull] public bool   IsNullable         { get; set; } // bit
			/// <summary>
			/// 1 = Column uses ANSI_PADDING ON behavior if character, binary, or variant.<br/>
			/// Range: Always 0.
			/// </summary>
			[Column("is_ansi_padded"),        NotNull] public bool   IsAnsiPadded       { get; set; } // bit
			/// <summary>
			/// 1 = Column is a declared ROWGUIDCOL.<br/>
			/// Range: Always 0.
			/// </summary>
			[Column("is_rowguidcol"),         NotNull] public bool   IsRowGuidCol       { get; set; } // bit
			/// <summary>
			/// 1 = Column has identity values.<br/>
			/// Range: Always 0.
			/// </summary>
			[Column("is_identity"),           NotNull] public bool   IsIdentity         { get; set; } // bit
			/// <summary>
			/// 1 = Column is a computed column.<br/>
			/// Range: Always 0.
			/// </summary>
			[Column("is_computed"),           NotNull] public bool   IsComputed         { get; set; } // bit
			/// <summary>
			/// 1 = Column is a FILESTREAM column.<br/>
			/// Range: Always 0.
			/// </summary>
			[Column("is_filestream"),         NotNull] public bool   IsFilestream       { get; set; } // bit
			/// <summary>
			/// 1 = Column is replicated.<br/>
			/// Range: Always 0.
			/// </summary>
			[Column("is_replicated"),         NotNull] public bool   IsReplicated       { get; set; } // bit
			/// <summary>
			/// 1 = Column has a non-SQL subscriber.<br/>
			/// Range: Always 0.
			/// </summary>
			[Column("is_non_sql_subscribed"), NotNull] public bool   IsNonSqlSubscribed { get; set; } // bit
			/// <summary>
			/// 1 = Column is merge-published.<br/>
			/// Range: Always 0.
			/// </summary>
			[Column("is_merge_published"),    NotNull] public bool   IsMergePublished   { get; set; } // bit
			/// <summary>
			/// 1 = Column is replicated by using SSIS.<br/>
			/// Range: Always 0.
			/// </summary>
			[Column("is_dts_replicated"),     NotNull] public bool   IsDtsReplicated    { get; set; } // bit
			/// <summary>
			/// 1 = Content is a complete XML document.<br/>
			/// Range: Always 0.
			/// </summary>
			[Column("is_xml_document"),       NotNull] public bool   IsXmlDocument      { get; set; } // bit
			/// <summary>
			/// 0 = No XML schema collection.<br/>
			/// Range: Always 0.
			/// </summary>
			[Column("xml_collection_id"),     NotNull] public int    XmlCollectionID    { get; set; } // int
			/// <summary>
			/// ID of the default object; 0 = No default.<br/>
			/// Range: Always 0.
			/// </summary>
			[Column("default_object_id"),     NotNull] public int    DefaultObjectID    { get; set; } // int
			/// <summary>
			/// ID of the stand-alone rule bound to the column. <br/>0 = No stand-alone rule.<br/>
			/// Range: Always 0.
			/// </summary>
			[Column("rule_object_id"),        NotNull] public int    RuleObjectID       { get; set; } // int
			/// <summary>
			/// 1 = Column is a sparse column.<br/>
			/// Range: Always 0.
			/// </summary>
			[Column("is_sparse"),             NotNull] public bool   IsSparse           { get; set; } // bit
			/// <summary>
			/// 1 = Column is a column set.<br/>
			/// Range: Always 0.
			/// </summary>
			[Column("is_column_set"),         NotNull] public bool   IsColumnSet        { get; set; } // bit
			/// <summary>
			/// Unique identifier of a Azure Synapse Analytics node.<br/>
			/// Range: NOT NULL
			/// </summary>
			[Column("pdw_node_id"),           NotNull] public int    PdwNodeID          { get; set; } // int

			#region Associations

			/// <summary>
			/// objects (sys.objects)
			/// </summary>
			[Association(ThisKey="ObjectID", OtherKey="ObjectID", CanBeNull=false)]
			public ObjectSchema.Object Object { get; set; } = null!;

			#endregion
		}

		/// <summary>
		/// <para><strong>sys.pdw_nodes_column_store_dictionaries (Transact-SQL)</strong></para>
		/// <para><strong>Applies to:</strong> √ Azure Synapse Analytics √ Analytics Platform System (PDW)</para>
		/// <para>Contains a row for each dictionary used in columnstore indexes. Dictionaries are used to encode some, but not all data types, therefore not all columns in a columnstore index have dictionaries. A dictionary can exist as a primary dictionary (for all segments) and possibly for other secondary dictionaries used for a subset of the column's segments.</para><br/>
		/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-pdw-nodes-column-store-dictionaries-transact-sql'>sys.pdw_nodes_column_store_dictionaries</a>.</para>
		/// </summary>
		[Table(Schema="sys", Name="pdw_nodes_column_store_dictionaries", IsView=true)]
		public partial class NodesColumnStoreDictionary
		{
			/// <summary>
			/// Indicates the partition ID. Is unique within a database.
			/// </summary>
			[Column("partition_id"),  NotNull] public long PartitionID  { get; set; } // bigint
			/// <summary>
			/// ID of the heap or B-tree index (HoBT) for the table that has this columnstore index.
			/// </summary>
			[Column("hobt_id"),       NotNull] public long HoBTID       { get; set; } // bigint
			/// <summary>
			/// ID of the columnstore column.
			/// </summary>
			[Column("column_id"),     NotNull] public int  ColumnID     { get; set; } // int
			/// <summary>
			/// Id of the dictionary.
			/// </summary>
			[Column("dictionary_id"), NotNull] public int  DictionaryID { get; set; } // int
			/// <summary>
			/// Version of the dictionary format.
			/// </summary>
			[Column("version"),       NotNull] public int  Version      { get; set; } // int
			/// <summary>
			/// Dictionary type:<br/><br/> 1 - Hash dictionary containing <strong>int</strong> values<br/><br/> 2 - Not used<br/><br/> 3 - Hash dictionary containing string values<br/><br/> 4 - Hash dictionary containing <strong>float</strong> values
			/// </summary>
			[Column("type"),          NotNull] public int  TypeColumn   { get; set; } // int
			/// <summary>
			/// The last data id in the dictionary.
			/// </summary>
			[Column("last_id"),       NotNull] public int  LastID       { get; set; } // int
			/// <summary>
			/// Number of entries in the dictionary.
			/// </summary>
			[Column("entry_count"),   NotNull] public long EntryCount   { get; set; } // bigint
			/// <summary>
			/// Size of dictionary in bytes.
			/// </summary>
			[Column("on_disc_size"),  NotNull] public long OnDiscSize   { get; set; } // bigint
			/// <summary>
			/// Unique identifier of a Azure Synapse Analytics node.
			/// </summary>
			[Column("pdw_node_id"),   NotNull] public int  PdwNodeID    { get; set; } // int
		}

		/// <summary>
		/// <para><strong>sys.pdw_nodes_column_store_row_groups (Transact-SQL)</strong></para>
		/// <para><strong>Applies to:</strong> √ Azure Synapse Analytics √ Analytics Platform System (PDW)</para>
		/// <para>Provides clustered columnstore index information on a per-segment basis to help the administrator make system management decisions in Azure Synapse Analytics. <strong>sys.pdw_nodes_column_store_row_groups</strong> has a column for the total number of rows physically stored (including those marked as deleted) and a column for the number of rows marked as deleted. Use <strong>sys.pdw_nodes_column_store_row_groups</strong> to determine which row groups have a high percentage of deleted rows and should be rebuilt.</para><br/>
		/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-pdw-nodes-column-store-row-groups-transact-sql'>sys.pdw_nodes_column_store_row_groups</a>.</para>
		/// </summary>
		[Table(Schema="sys", Name="pdw_nodes_column_store_row_groups", IsView=true)]
		public partial class NodesColumnStoreRowGroup
		{
			/// <summary>
			/// ID of the underlying table. This is the physical table on the Compute node, not the object_id for the logical table on the Control node. For example, object_id does not match with the object_id in sys.tables.<br/><br/> To join with sys.tables, use sys.pdw_index_mappings.
			/// </summary>
			[Column("object_id"),            NotNull] public int    ObjectID          { get; set; } // int
			/// <summary>
			/// ID of the clustered columnstore index on *object_id* table.
			/// </summary>
			[Column("index_id"),             NotNull] public int    IndexID           { get; set; } // int
			/// <summary>
			/// ID of the table partition that holds row group *row_group_id*. You can use *partition_number* to join this DMV to sys.partitions.
			/// </summary>
			[Column("partition_number"),     NotNull] public int    PartitionNumber   { get; set; } // int
			/// <summary>
			/// ID of this row group. This is unique within the partition.
			/// </summary>
			[Column("row_group_id"),         NotNull] public int    RowGroupID        { get; set; } // int
			/// <summary>
			/// The hobt_id for delta row groups, or NULL if the row group type is not delta. A delta row group is a read/write row group that is accepting new records. A delta row group has the <strong>OPEN</strong> status. A delta row group is still in rowstore format and has not been compressed to columnstore format.
			/// </summary>
			[Column("dellta_store_hobt_id"), NotNull] public long   DelltaStoreHoBTID { get; set; } // bigint
			/// <summary>
			/// ID number associated with the state_description.<br/><br/> 1 = OPEN<br/><br/> 2 = CLOSED<br/><br/> 3 = COMPRESSED
			/// </summary>
			[Column("state"),                NotNull] public byte   State             { get; set; } // tinyint
			/// <summary>
			/// Description of the persistent state of the row group:<br/><br/> OPEN - A read/write row group that is accepting new records. An open row group is still in rowstore format and has not been compressed to columnstore format.<br/><br/> CLOSED - A row group that has been filled, but not yet compressed by the tuple mover process.<br/><br/> COMPRESSED - A row group that has filled and compressed.
			/// </summary>
			[Column("state_desccription"),   NotNull] public string StateDesccription { get; set; } = null!; // nvarchar(60)
			/// <summary>
			/// Total rows physically stored in the row group. Some may have been deleted but they are still stored. The maximum number of rows in a row group is 1,048,576 (hexadecimal FFFFF).
			/// </summary>
			[Column("total_rows"),           NotNull] public long   TotalRows         { get; set; } // bigint
			/// <summary>
			/// Number of rows physically stored in the row group that are marked for deletion.<br/><br/> Always 0 for DELTA row groups.
			/// </summary>
			[Column("deleted_rows"),         NotNull] public long   DeletedRows       { get; set; } // bigint
			/// <summary>
			/// Combined size, in bytes, of all the pages in this row group. This size does not include the size required to store metadata or shared dictionaries.
			/// </summary>
			[Column("size_in_bytes"),        NotNull] public int    SizeInBytes       { get; set; } // int
			/// <summary>
			/// Unique ID of a Azure Synapse Analytics node.
			/// </summary>
			[Column("pdw_node_id"),          NotNull] public int    PdwNodeID         { get; set; } // int
			/// <summary>
			/// Unique ID of the distribution.
			/// </summary>
			[Column("distribution_id"),      NotNull] public int    DistributionID    { get; set; } // int

			#region Associations

			/// <summary>
			/// objects (sys.objects)
			/// </summary>
			[Association(ThisKey="ObjectID", OtherKey="ObjectID", CanBeNull=false)]
			public ObjectSchema.Object Object { get; set; } = null!;

			#endregion
		}

		/// <summary>
		/// <para><strong>sys.pdw_nodes_column_store_segments (Transact-SQL)</strong></para>
		/// <para><strong>Applies to:</strong> √ Azure Synapse Analytics √ Analytics Platform System (PDW)</para>
		/// <para>Contains a row for each column in a columnstore index.</para><br/>
		/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-pdw-nodes-column-store-segments-transact-sql'>sys.pdw_nodes_column_store_segments</a>.</para>
		/// </summary>
		[Table(Schema="sys", Name="pdw_nodes_column_store_segments", IsView=true)]
		public partial class NodesColumnStoreSegment
		{
			/// <summary>
			/// Indicates the partition ID. Is unique within a database.
			/// </summary>
			[Column("partition_id"),            NotNull] public long   PartitionID           { get; set; } // bigint
			/// <summary>
			/// ID of the heap or B-tree index (hobt) for the table that has this columnstore index.
			/// </summary>
			[Column("hobt_id"),                 NotNull] public long   HoBTID                { get; set; } // bigint
			/// <summary>
			/// ID of the columnstore column.
			/// </summary>
			[Column("column_id"),               NotNull] public int    ColumnID              { get; set; } // int
			/// <summary>
			/// ID of the column segment. For backward compatibility, the column name continues to be called segment_id even though this is the rowgroup ID. You can uniquely identify a segment using &lt;hobt_id, partition_id, column_id&gt;, &lt;segment_id&gt;.
			/// </summary>
			[Column("segment_id"),              NotNull] public int    SegmentID             { get; set; } // int
			/// <summary>
			/// Version of the column segment format.
			/// </summary>
			[Column("version"),                 NotNull] public int    Version               { get; set; } // int
			/// <summary>
			/// Type of encoding used for that segment:<br/><br/> 1 = VALUE_BASED     -  non-string/binary with no dictionary (similar to 4 with some internal variations)<br/><br/> 2 = VALUE_HASH_BASED   - non-string/binary column with common values in dictionary<br/><br/> 3 = STRING_HASH_BASED  - string/binary column with common values in dictionary<br/><br/> 4 = STORE_BY_VALUE_BASED - non-string/binary with no dictionary<br/><br/> 5 = STRING_STORE_BY_VALUE_BASED - string/binary with no dictionary<br/><br/> All encodings take advantage of bit-packing and run-length encoding when possible.
			/// </summary>
			[Column("encoding_type"),           NotNull] public int    EncodingType          { get; set; } // int
			/// <summary>
			/// Number of rows in the row group.
			/// </summary>
			[Column("row_count"),               NotNull] public int    RowCount              { get; set; } // int
			/// <summary>
			/// 1 if the column segment has null values.
			/// </summary>
			[Column("has_nulls"),               NotNull] public int    HasNulls              { get; set; } // int
			/// <summary>
			/// Base value ID if encoding type 1 is being used.  If encoding type 1 is not being used, base_id is set to 1.
			/// </summary>
			[Column("base_id"),                 NotNull] public long   BaseID                { get; set; } // bigint
			/// <summary>
			/// Magnitude if encoding type 1 is being used.  If encoding type 1 is not being used, magnitude is set to 1.
			/// </summary>
			[Column("magnitude"),               NotNull] public double Magnitude             { get; set; } // float
			/// <summary>
			/// ID of primary dictionary. A non-zero value points to the local dictionary for this column in the current segment (i.e. the rowgroup). A value of -1 indicates that there is no local dictionary for this segment.
			/// </summary>
			[Column("primary__dictionary_id"),  NotNull] public int    PrimaryDictionaryID   { get; set; } // int
			/// <summary>
			/// ID of secondary dictionary. A non-zero value points to the local dictionary for this column in the current segment (i.e. the rowgroup). A value of -1 indicates that there is no local dictionary for this segment.
			/// </summary>
			[Column("secondary_dictionary_id"), NotNull] public int    SecondaryDictionaryID { get; set; } // int
			/// <summary>
			/// Minimum data ID in the column segment.
			/// </summary>
			[Column("min_data_id"),             NotNull] public long   MinDataID             { get; set; } // bigint
			/// <summary>
			/// Maximum data ID in the column segment.
			/// </summary>
			[Column("max_data_id"),             NotNull] public long   MaxDataID             { get; set; } // bigint
			/// <summary>
			/// Value used to represent nulls.
			/// </summary>
			[Column("null_value"),              NotNull] public long   NullValue             { get; set; } // bigint
			/// <summary>
			/// Size of segment in bytes.
			/// </summary>
			[Column("on_disk_size"),            NotNull] public long   OnDiskSize            { get; set; } // bigint
			/// <summary>
			/// Unique identifier of a Azure Synapse Analytics node.
			/// </summary>
			[Column("pdw_node_id"),             NotNull] public int    PdwNodeID             { get; set; } // int
		}

		/// <summary>
		/// <para><strong>sys.pdw_nodes_indexes (Transact-SQL)</strong></para>
		/// <para><strong>Applies to:</strong> √ Azure Synapse Analytics √ Analytics Platform System (PDW)</para>
		/// <para>Returns indexes for Azure Synapse Analytics.</para><br/>
		/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-pdw-nodes-indexes-transact-sql'>sys.pdw_nodes_indexes</a>.</para>
		/// </summary>
		[Table(Schema="sys", Name="pdw_nodes_indexes", IsView=true)]
		public partial class NodesIndex
		{
			/// <summary>
			/// id of the object to which this index belongs.
			/// </summary>
			[Column("object_id"),            NotNull] public int    ObjectID           { get; set; } // int
			/// <summary>
			/// Name of the index. Name is unique only within the object. NULL = Heap
			/// </summary>
			[Column("name"),                 NotNull] public string Name               { get; set; } = null!; // sysname
			/// <summary>
			/// id of the index. index_id is unique only within the object.<br/><br/> 0 = Heap<br/><br/> 1 = Clustered index<br/><br/> > 1 = Nonclustered index
			/// </summary>
			[Column("index_id"),             NotNull] public int    IndexID            { get; set; } // int
			/// <summary>
			/// Type of index:<br/><br/> 0 = Heap<br/><br/> 1 = Clustered<br/><br/> 2 = Nonclustered<br/><br/> 5 = Clustered xVelocity memory optimized columnstore index
			/// </summary>
			[Column("type"),                 NotNull] public byte   TypeColumn         { get; set; } // tinyint
			/// <summary>
			/// Description of index type:<br/><br/> HEAP<br/><br/> CLUSTERED<br/><br/> NONCLUSTERED<br/><br/> CLUSTERED   COLUMNSTORE
			/// </summary>
			[Column("type_desc"),            NotNull] public string TypeDesc           { get; set; } = null!; // nvarchar(60)
			/// <summary>
			/// 0 = Index is not unique.<br/>
			/// Range: Always 0.
			/// </summary>
			[Column("is_unique"),            NotNull] public bool   IsUnique           { get; set; } // bit
			/// <summary>
			/// id of the data space for this index. Data space is either a filegroup or partition scheme.<br/><br/> 0 = object_id is a table-valued function.
			/// </summary>
			[Column("data_space_id"),        NotNull] public int    DataSpaceID        { get; set; } // int
			/// <summary>
			/// 0 = IGNORE_DUP_KEY is OFF.<br/>
			/// Range: Always 0.
			/// </summary>
			[Column("ignore_dup_key"),       NotNull] public bool   IgnoreDupKey       { get; set; } // bit
			/// <summary>
			/// 1 = Index is part of a PRIMARY KEY constraint.<br/>
			/// Range: Always 0.
			/// </summary>
			[Column("is_primary_key"),       NotNull] public bool   IsPrimaryKey       { get; set; } // bit
			/// <summary>
			/// 1 = Index is part of a UNIQUE constraint.<br/>
			/// Range: Always 0.
			/// </summary>
			[Column("is_unique_constraint"), NotNull] public bool   IsUniqueConstraint { get; set; } // bit
			/// <summary>
			/// > 0 = FILLFACTOR percentage used when the index was created or rebuilt.<br/><br/> 0 = Default value<br/>
			/// Range: Always 0.
			/// </summary>
			[Column("fill_factor"),          NotNull] public byte   FillFactor         { get; set; } // tinyint
			/// <summary>
			/// 0 = PADINDEX is OFF.<br/>
			/// Range: Always 0.
			/// </summary>
			[Column("is_padded"),            NotNull] public bool   IsPadded           { get; set; } // bit
			/// <summary>
			/// 1 = Index is disabled.<br/><br/> 0 = Index is not disabled.
			/// </summary>
			[Column("is_disabled"),          NotNull] public bool   IsDisabled         { get; set; } // bit
			/// <summary>
			/// 0 = Index is not hypothetical.<br/>
			/// Range: Always 0.
			/// </summary>
			[Column("is_hypothetical"),      NotNull] public bool   IsHypothetical     { get; set; } // bit
			/// <summary>
			/// 1 = Index allows row locks.<br/>
			/// Range: Always 1.
			/// </summary>
			[Column("allow_row_locks"),      NotNull] public bool   AllowRowLocks      { get; set; } // bit
			/// <summary>
			/// 1 = Index allows page locks.<br/>
			/// Range: Always 1.
			/// </summary>
			[Column("allow_page_locks"),     NotNull] public bool   AllowPageLocks     { get; set; } // bit
			/// <summary>
			/// 0 = Index does not have a filter.<br/>
			/// Range: Always 0.
			/// </summary>
			[Column("has_filter"),           NotNull] public bool   HasFilter          { get; set; } // bit
			/// <summary>
			/// Expression for the subset of rows included in the filtered index.<br/>
			/// Range: Always NULL.
			/// </summary>
			[Column("filter_definition"),    NotNull] public string FilterDefinition   { get; set; } = null!; // nvarchar(max)
			/// <summary>
			/// Unique identifier of a Azure Synapse Analytics node.<br/>
			/// Range: NOT NULL
			/// </summary>
			[Column("pdw_node_id"),          NotNull] public int    PdwNodeID          { get; set; } // int

			#region Associations

			/// <summary>
			/// objects (sys.objects)
			/// </summary>
			[Association(ThisKey="ObjectID", OtherKey="ObjectID", CanBeNull=false)]
			public ObjectSchema.Object Object { get; set; } = null!;

			#endregion
		}

		/// <summary>
		/// <para><strong>sys.pdw_nodes_partitions (Transact-SQL)</strong></para>
		/// <para><strong>Applies to:</strong> √ Azure Synapse Analytics √ Analytics Platform System (PDW)</para>
		/// <para>Contains a row for each partition of all the tables, and most types of indexes in a Azure Synapse Analytics database. All tables and indexes contain at least one partition, whether or not they are explicitly partitioned.</para><br/>
		/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-pdw-nodes-partitions-transact-sql'>sys.pdw_nodes_partitions</a>.</para>
		/// </summary>
		[Table(Schema="sys", Name="pdw_nodes_partitions", IsView=true)]
		public partial class NodesPartition
		{
			/// <summary>
			/// ID of the partition. Is unique within a database.
			/// </summary>
			[Column("partition_id"),          NotNull] public long   PartitionID         { get; set; } // bigint
			/// <summary>
			/// ID of the object to which this partition belongs. Every table or view is composed of at least one partition.
			/// </summary>
			[Column("object_id"),             NotNull] public int    ObjectID            { get; set; } // int
			/// <summary>
			/// ID of the index within the object to which this partition belongs.
			/// </summary>
			[Column("index_id"),              NotNull] public int    IndexID             { get; set; } // int
			/// <summary>
			/// 1-based partition number within the owning index or heap. For Azure Synapse Analytics, the value of this column is 1.
			/// </summary>
			[Column("partition_number"),      NotNull] public int    PartitionNumber     { get; set; } // int
			/// <summary>
			/// ID of the data heap or B-tree (HoBT) that contains the rows for this partition.
			/// </summary>
			[Column("hobt_id"),               NotNull] public long   HoBTID              { get; set; } // bigint
			/// <summary>
			/// Approximate number of rows in this partition.
			/// </summary>
			[Column("rows"),                  NotNull] public long   Rows                { get; set; } // bigint
			/// <summary>
			/// Indicates the state of compression for each partition:<br/><br/> 0 = NONE<br/><br/> 1 = ROW<br/><br/> 2 = PAGE<br/><br/> 3 = COLUMNSTORE
			/// </summary>
			[Column("data_compression"),      NotNull] public int    DataCompression     { get; set; } // int
			/// <summary>
			/// Indicates the state of compression for each partition. Possible values are NONE, ROW, and PAGE.
			/// </summary>
			[Column("data_compression_desc"), NotNull] public string DataCompressionDesc { get; set; } = null!; // nvarchar(60)
			/// <summary>
			/// Unique identifier of a Azure Synapse Analytics node.
			/// </summary>
			[Column("pdw_node_id"),           NotNull] public int    PdwNodeID           { get; set; } // int

			#region Associations

			/// <summary>
			/// objects (sys.objects)
			/// </summary>
			[Association(ThisKey="ObjectID", OtherKey="ObjectID", CanBeNull=false)]
			public ObjectSchema.Object Object { get; set; } = null!;

			#endregion
		}

		/// <summary>
		/// <para><strong>sys.pdw_nodes_pdw_physical_databases (Transact-SQL)</strong></para>
		/// <para><strong>Applies to:</strong> √ Analytics Platform System (PDW)</para>
		/// <para>Contains a row for each physical database on a compute node. Aggregate physical database information to get detailed information about databases. To combine information, join the <c>sys.pdw_nodes_pdw_physical_databases</c> to the <c>sys.pdw_database_mappings</c> and <c>sys.databases</c> tables.</para><br/>
		/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-pdw-nodes-pdw-physical-databases-transact-sql'>sys.pdw_nodes_pdw_physical_databases</a>.</para>
		/// </summary>
		[Table(Schema="sys", Name="pdw_nodes_pdw_physical_databases", IsView=true)]
		public partial class NodesPhysicalDatabase
		{
			/// <summary>
			/// The object ID for the database. Note that this value is not same as a database_id in the <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-databases-transact-sql'>sys.databases (Transact-SQL)</a> view.
			/// </summary>
			[Column("database_id"),   NotNull] public int    DatabaseID   { get; set; } // int
			/// <summary>
			/// The physical name for the database on the Shell/Compute nodes. This value is same as a value in the physical_name column in the <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-pdw-database-mappings-transact-sql'>sys.pdw_database_mappings (Transact-SQL)</a> view.
			/// </summary>
			[Column("physical_name"), NotNull] public string PhysicalName { get; set; } = null!; // sysname
			/// <summary>
			/// Unique numeric id associated with the node.
			/// </summary>
			[Column("pdw_node_id"),   NotNull] public int    PdwNodeID    { get; set; } // int
		}

		/// <summary>
		/// <para><strong>sys.pdw_nodes_tables (Transact-SQL)</strong></para>
		/// <para><strong>Applies to:</strong> √ Azure Synapse Analytics √ Analytics Platform System (PDW)</para>
		/// <para>Contains a row for each table object that a principal either owns or on which the principal has been granted some permission.</para><br/>
		/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-pdw-nodes-tables-transact-sql'>sys.pdw_nodes_tables</a>.</para>
		/// </summary>
		[Table(Schema="sys", Name="pdw_nodes_tables", IsView=true)]
		public partial class NodesTable
		{
			/// <summary>
			/// Object name.
			/// </summary>
			[Column("name"),                         NotNull] public string   Name                     { get; set; } = null!; // sysname
			/// <summary>
			/// Object identification number. Is unique within a database.
			/// </summary>
			[Column("object_id"),                    NotNull] public int      ObjectID                 { get; set; } // int
			/// <summary>
			/// ID of the individual owner, if different from the schema owner. By default, schema-contained objects are owned by the schema owner. However, an alternate owner can be specified by using the ALTER AUTHORIZATION statement to change ownership.<br/><br/> Is NULL if there is no alternate individual owner.<br/><br/> Is NULL if the object type is one of the following:<br/><br/> C = CHECK constraint<br/><br/> D = DEFAULT (constraint or stand-alone)<br/><br/> F = FOREIGN KEY constraint<br/><br/> PK = PRIMARY KEY constraint<br/><br/> R = Rule (old-style, stand-alone)<br/><br/> TA = Assembly (CLR-integration) trigger<br/><br/> TR = SQL trigger<br/><br/> UQ = UNIQUE constraint<br/><br/> EC = Edge constraint
			/// </summary>
			[Column("principal_id"),                 NotNull] public int      PrincipalID              { get; set; } // int
			/// <summary>
			/// ID of the schema that the object is contained in.<br/><br/> Schema-scoped system objects are always contained in the sys or INFORMATION_SCHEMA schemas.
			/// </summary>
			[Column("schema_id"),                    NotNull] public int      SchemaID                 { get; set; } // int
			/// <summary>
			/// ID of the object to which this object belongs.<br/><br/> 0 = Not a child object.
			/// </summary>
			[Column("parent_object_id"),             NotNull] public int      ParentObjectID           { get; set; } // int
			/// <summary>
			/// Object type:<br/><br/> AF = Aggregate function (CLR)<br/><br/> C = CHECK constraint<br/><br/> D = DEFAULT (constraint or stand-alone)<br/><br/> F = FOREIGN KEY constraint<br/><br/> FN = SQL scalar function<br/><br/> FS = Assembly (CLR) scalar-function<br/><br/> FT = Assembly (CLR) table-valued function<br/><br/> IF = SQL inline table-valued function<br/><br/> IT = Internal table<br/><br/> P = SQL Stored Procedure<br/><br/> PC = Assembly (CLR) stored-procedure<br/><br/> PG = Plan guide<br/><br/> PK = PRIMARY KEY constraint<br/><br/> R = Rule (old-style, stand-alone)<br/><br/> RF = Replication-filter-procedure<br/><br/> S = System base table<br/><br/> SN = Synonym<br/><br/> SO = Sequence object<br/><br/> U = Table (user-defined)<br/><br/> V = View<br/><br/> EC = Edge constraint <br/><br/> <br/><br/> <strong>Applies to</strong>: SQL Server 2012 (11.x) and later.<br/><br/> SQ = Service queue<br/><br/> TA = Assembly (CLR) DML trigger<br/><br/> TF = SQL table-valued-function<br/><br/> TR = SQL DML trigger<br/><br/> TT = Table type<br/><br/> UQ = UNIQUE constraint<br/><br/> X = Extended stored procedure<br/><br/> <br/><br/> <strong>Applies to</strong>: SQL Server 2014 (12.x) and later, Azure SQL Database, Azure Synapse Analytics, Analytics Platform System (PDW).<br/><br/> ST = STATS_TREE<br/><br/> <br/><br/> <strong>Applies to</strong>: SQL Server 2016 (13.x) and later, Azure SQL Database, Azure Synapse Analytics, Analytics Platform System (PDW).<br/><br/> ET = External Table
			/// </summary>
			[Column("type"),                         NotNull] public string   TypeColumn               { get; set; } = null!; // char(2)
			/// <summary>
			/// Description of the object type:<br/><br/> AGGREGATE_FUNCTION<br/><br/> CHECK_CONSTRAINT<br/><br/> CLR_SCALAR_FUNCTION<br/><br/> CLR_STORED_PROCEDURE<br/><br/> CLR_TABLE_VALUED_FUNCTION<br/><br/> CLR_TRIGGER<br/><br/> DEFAULT_CONSTRAINT<br/><br/> EXTENDED_STORED_PROCEDURE<br/><br/> FOREIGN_KEY_CONSTRAINT<br/><br/> INTERNAL_TABLE<br/><br/> PLAN_GUIDE<br/><br/> PRIMARY_KEY_CONSTRAINT<br/><br/> REPLICATION_FILTER_PROCEDURE<br/><br/> RULE<br/><br/> SEQUENCE_OBJECT<br/><br/> <br/><br/> <strong>Applies to</strong>: SQL Server 2012 (11.x) and later.<br/><br/>  SERVICE_QUEUE<br/><br/> SQL_INLINE_TABLE_VALUED_FUNCTION<br/><br/> SQL_SCALAR_FUNCTION<br/><br/> SQL_STORED_PROCEDURE<br/><br/> SQL_TABLE_VALUED_FUNCTION<br/><br/> SQL_TRIGGER<br/><br/> SYNONYM<br/><br/> SYSTEM_TABLE<br/><br/> TABLE_TYPE<br/><br/> UNIQUE_CONSTRAINT<br/><br/> USER_TABLE<br/><br/> VIEW
			/// </summary>
			[Column("type_desc"),                    NotNull] public string   TypeDesc                 { get; set; } = null!; // nvarchar(60)
			/// <summary>
			/// Date the object was created.
			/// </summary>
			[Column("create_date"),                  NotNull] public DateTime CreateDate               { get; set; } // datetime
			/// <summary>
			/// Date the object was last modified by using an ALTER statement. If the object is a table or a view, modify_date also changes when an index on the table or view is created or altered.
			/// </summary>
			[Column("modify_date"),                  NotNull] public DateTime ModifyDate               { get; set; } // datetime
			/// <summary>
			/// Object is created by an internal SQL Server component.
			/// </summary>
			[Column("is_ms_shipped"),                NotNull] public bool     IsMSShipped              { get; set; } // bit
			/// <summary>
			/// Object is published.
			/// </summary>
			[Column("is_published"),                 NotNull] public bool     IsPublished              { get; set; } // bit
			/// <summary>
			/// Only the schema of the object is published.
			/// </summary>
			[Column("is_schema_published"),          NotNull] public bool     IsSchemaPublished        { get; set; } // bit
			/// <summary>
			/// Range: Always 0.
			/// </summary>
			[Column("lob_data_space_id"),            NotNull] public int      LobDataSpaceID           { get; set; } // int
			/// <summary>
			/// Data space ID for a FILESTREAM filegroup or Information not available.<br/>
			/// Range: NULL
			/// </summary>
			[Column("filestream_data_space_id"),     NotNull] public int      FilestreamDataSpaceID    { get; set; } // int
			/// <summary>
			/// Maximum column ID used by this table.
			/// </summary>
			[Column("max_column_id_used"),           NotNull] public int      MaxColumnIDUsed          { get; set; } // int
			/// <summary>
			/// Table is locked on bulk load.<br/>
			/// Range: TBD
			/// </summary>
			[Column("lock_on_bulk_load"),            NotNull] public bool     LockOnBulkLoad           { get; set; } // bit
			/// <summary>
			/// Table was created with the SET ANSI_NULLS database option ON.<br/>
			/// Range: 1
			/// </summary>
			[Column("uses_ansi_nulls"),              NotNull] public bool     UsesAnsiNulls            { get; set; } // bit
			/// <summary>
			/// 1 = Table is published using replication.<br/>
			/// Range: 0; replication is not supported.
			/// </summary>
			[Column("is_replicated"),                NotNull] public bool     IsReplicated             { get; set; } // bit
			/// <summary>
			/// 1 = Table has a replication filter.<br/>
			/// Range: 0
			/// </summary>
			[Column("has_replication_filter"),       NotNull] public bool     HasReplicationFilter     { get; set; } // bit
			/// <summary>
			/// 1 = Table is published using merge replication.<br/>
			/// Range: 0; not supported.
			/// </summary>
			[Column("is_merge_published"),           NotNull] public bool     IsMergePublished         { get; set; } // bit
			/// <summary>
			/// 1 = Table is subscribed using an immediate updating subscription.<br/>
			/// Range: 0; not supported.
			/// </summary>
			[Column("is_sync_tran_subscribed"),      NotNull] public bool     IsSyncTranSubscribed     { get; set; } // bit
			/// <summary>
			/// 1 = Table contains persisted data that depends on an assembly whose definition changed during the last ALTER ASSEMBLY. Will be reset to 0 after the next successful DBCC CHECKDB or DBCC CHECKTABLE.<br/>
			/// Range: 0; no CLR support.
			/// </summary>
			[Column("has_unchecked_assembly_data"),  NotNull] public bool     HasUncheckedAssemblyData { get; set; } // bit
			/// <summary>
			/// 0 = Text in row option is not set.<br/>
			/// Range: Always 0.
			/// </summary>
			[Column("text_in_row_limit"),            NotNull] public int      TextInRowLimit           { get; set; } // int
			/// <summary>
			/// 1 = Large value types are stored out-of-row.<br/>
			/// Range: Always 0.
			/// </summary>
			[Column("large_value_types_out_of_row"), NotNull] public bool     LargeValueTypesOutOfRow  { get; set; } // bit
			/// <summary>
			/// 1 = Table is enabled for change data capture<br/>
			/// Range: Always 0; no CDC support.
			/// </summary>
			[Column("is_tracked_by_cdc"),            NotNull] public bool     IsTrackedByCdc           { get; set; } // bit
			/// <summary>
			/// The value of the LOCK_ESCALATION option for the table: 2 = AUTO<br/>
			/// Range: Always 2.
			/// </summary>
			[Column("lock_escalation"),              NotNull] public byte     LockEscalation           { get; set; } // tinyint
			/// <summary>
			/// A text description of the lock_escalation option.<br/>
			/// Range: Always ꞌAUTOꞌ.
			/// </summary>
			[Column("lock_escalation_desc"),         NotNull] public string   LockEscalationDesc       { get; set; } = null!; // nvarchar(60)
			/// <summary>
			/// Unique identifier of a Azure Synapse Analytics node.<br/>
			/// Range: NOT NULL
			/// </summary>
			[Column("pdw_node_id"),                  NotNull] public int      PdwNodeID                { get; set; } // int

			#region Associations

			/// <summary>
			/// objects (sys.objects)
			/// </summary>
			[Association(ThisKey="ObjectID", OtherKey="ObjectID", CanBeNull=false)]
			public ObjectSchema.Object Object { get; set; } = null!;

			#endregion
		}

		/// <summary>
		/// <para><strong>sys.pdw_permanent_table_mappings (Transact-SQL)</strong></para>
		/// <para><strong>Applies to:</strong> √ Azure Synapse Analytics</para>
		/// <para>Ties permanent user tables to internal object names by <strong>object_id</strong>.<br/>
		/// <note type='note'><br/>
		/// <strong>sys.pdw_permanent_table_mappings</strong> holds mappings to permanent tables and does not include temporary or external table mappings.<br/>
		/// </note></para><br/>
		/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-pdw-permanent-table-mappings-transact-sql'>sys.pdw_permanent_table_mappings</a>.</para>
		/// </summary>
		[Table(Schema="sys", Name="pdw_permanent_table_mappings", IsView=true)]
		public partial class PermanentTableMapping
		{
			/// <summary>
			/// The physical name for the table.<br/><br/> <strong>physical_name</strong> and <strong>object_id</strong> form the key for this view.
			/// </summary>
			[Column("physical_name"), NotNull] public string PhysicalName { get; set; } = null!; // nvarchar(36)
			/// <summary>
			/// The object ID for the table. See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-objects-transact-sql'>sys.objects (Transact-SQL)</a>.<br/><br/> <strong>physical_name</strong> and <strong>object_id</strong> form the key for this view.
			/// </summary>
			[Column("object_id"),     NotNull] public int    ObjectID     { get; set; } // int

			#region Associations

			/// <summary>
			/// objects (sys.objects)
			/// </summary>
			[Association(ThisKey="ObjectID", OtherKey="ObjectID", CanBeNull=false)]
			public ObjectSchema.Object Object { get; set; } = null!;

			#endregion
		}

		/// <summary>
		/// <para><strong>sys.pdw_replicated_table_cache_state (Transact-SQL)</strong></para>
		/// <para><strong>Applies to:</strong> √ Azure Synapse Analytics</para>
		/// <para>Returns the state of the cache associated with a replicated table by <strong>object_id</strong>.</para><br/>
		/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-pdw-replicated-table-cache-state-transact-sql'>sys.pdw_replicated_table_cache_state</a>.</para>
		/// </summary>
		[Table(Schema="sys", Name="pdw_replicated_table_cache_state", IsView=true)]
		public partial class ReplicatedTableCacheState
		{
			/// <summary>
			/// The object ID for the table. See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-objects-transact-sql'>sys.objects (Transact-SQL)</a>.<br/><br/> <strong>object_id</strong> is the key for this view.
			/// </summary>
			[Column("object_id"), NotNull] public int    ObjectID { get; set; } // int
			/// <summary>
			/// The replicated table cache state for this table.<br/>
			/// Range: 'NotReady','Ready'
			/// </summary>
			[Column("state"),     NotNull] public string State    { get; set; } = null!; // nvarchar(40)

			#region Associations

			/// <summary>
			/// objects (sys.objects)
			/// </summary>
			[Association(ThisKey="ObjectID", OtherKey="ObjectID", CanBeNull=false)]
			public ObjectSchema.Object Object { get; set; } = null!;

			#endregion
		}

		/// <summary>
		/// <para><strong>sys.pdw_table_distribution_properties (Transact-SQL)</strong></para>
		/// <para><strong>Applies to:</strong> √ Azure Synapse Analytics √ Analytics Platform System (PDW)</para>
		/// <para>Holds distribution information for tables.</para><br/>
		/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-pdw-table-distribution-properties-transact-sql'>sys.pdw_table_distribution_properties</a>.</para>
		/// </summary>
		[Table(Schema="sys", Name="pdw_table_distribution_properties", IsView=true)]
		public partial class TableDistributionProperty
		{
			/// <summary>
			/// ID of the table for which thee properties were specified.
			/// </summary>
			[Column("object_id"),                NotNull] public int    ObjectID               { get; set; } // int
			/// <summary>
			/// 0 = UNDEFINED<br/><br/> 1 = NONE<br/><br/> 2 = HASH<br/><br/> 3 = REPLICATE<br/><br/> 4 = ROUND_ROBIN
			/// </summary>
			[Column("distribution_policy"),      NotNull] public byte   DistributionPolicy     { get; set; } // tinyint
			/// <summary>
			/// UNDEFINED, NONE, HASH, REPLICATE, ROUND_ROBIN<br/>
			/// Range: Azure Synapse Analytics returns either HASH, ROUND_ROBIN or REPLICATE.
			/// </summary>
			[Column("distribution_policy_desc"), NotNull] public string DistributionPolicyDesc { get; set; } = null!; // nvarchar(60)

			#region Associations

			/// <summary>
			/// objects (sys.objects)
			/// </summary>
			[Association(ThisKey="ObjectID", OtherKey="ObjectID", CanBeNull=false)]
			public ObjectSchema.Object Object { get; set; } = null!;

			#endregion
		}

		/// <summary>
		/// <para><strong>sys.pdw_table_mappings (Transact-SQL)</strong></para>
		/// <para><strong>Applies to:</strong> √ Azure Synapse Analytics √ Analytics Platform System (PDW)</para>
		/// <para>Ties user tables to internal object names by <strong>object_id</strong>.</para><br/>
		/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-pdw-table-mappings-transact-sql'>sys.pdw_table_mappings</a>.</para>
		/// </summary>
		[Table(Schema="sys", Name="pdw_table_mappings", IsView=true)]
		public partial class TableMapping
		{
			/// <summary>
			/// The physical name for the table.<br/><br/> <strong>physical_name</strong> and <strong>object_id</strong> form the key for this view.
			/// </summary>
			[Column("physical_name"), NotNull] public string PhysicalName { get; set; } = null!; // nvarchar(36)
			/// <summary>
			/// The object ID for the table. See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-objects-transact-sql'>sys.objects (Transact-SQL)</a>.<br/><br/> <strong>physical_name</strong> and <strong>object_id</strong> form the key for this view.
			/// </summary>
			[Column("object_id"),     NotNull] public int    ObjectID     { get; set; } // int

			#region Associations

			/// <summary>
			/// objects (sys.objects)
			/// </summary>
			[Association(ThisKey="ObjectID", OtherKey="ObjectID", CanBeNull=false)]
			public ObjectSchema.Object Object { get; set; } = null!;

			#endregion
		}

		/// <summary>
		/// <para><strong>sys.workload_management_workload_classifiers (Transact-SQL)</strong></para>
		/// <para><strong>Applies to:</strong> √ Azure Synapse Analytics</para>
		/// <para> Returns details for workload classifiers.</para><br/>
		/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-workload-management-workload-classifiers-transact-sql'>sys.workload-management-workload-classifiers</a>.</para>
		/// </summary>
		[Table(Schema="sys", Name="workload-management-workload-classifiers", IsView=true)]
		public partial class WorkloadManagementWorkloadClassifier
		{
			/// <summary>
			/// Unique ID of the classifier. Is not nullable
			/// </summary>
			[Column("classifier_id"), NotNull] public int      ClassifierID { get; set; } // int
			/// <summary>
			/// Name of the workload group the classifier is assigned to. Is not nullable. Joinable to sys.workload_management_workload_groups
			/// </summary>
			[Column("group_name"),    NotNull] public string   GroupName    { get; set; } = null!; // sysname
			/// <summary>
			/// Name of the classifier. Must be unique to the instance. Is not nullable.
			/// </summary>
			[Column("name"),          NotNull] public string   Name         { get; set; } = null!; // sysname
			/// <summary>
			/// Is the relative importance of a request in this workload group and across workload groups for shared resources.  Importance specified in the classifier overrides the workload group importance setting. Is nullable.  When null, the workload group importance setting is used.<br/>
			/// Range: low, below_normal, normal (default), above_normal, high
			/// </summary>
			[Column("importance"),    NotNull] public string   Importance   { get; set; } = null!; // sysname
			/// <summary>
			/// Time the classifier was created. Is not nullable.
			/// </summary>
			[Column("create_time"),   NotNull] public DateTime CreateTime   { get; set; } // datetime
			/// <summary>
			/// Time the classifier was last modified. Is not nullable.
			/// </summary>
			[Column("modify_time"),   NotNull] public DateTime ModifyTime   { get; set; } // datetime
			/// <summary>
			/// INTERNAL
			/// </summary>
			[Column("is_enabled"),    NotNull] public bool     IsEnabled    { get; set; } // bit
		}

		/// <summary>
		/// <para><strong>sys.workload_management_workload_classifier_details (Transact-SQL)</strong></para>
		/// <para><strong>Applies to:</strong> √ Azure Synapse Analytics</para>
		/// <para>Returns details for each classifier.</para><br/>
		/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-workload-management-workload-classifier-details-transact-sql'>sys.workload-management-workload-classifier-details</a>.</para>
		/// </summary>
		[Table(Schema="sys", Name="workload-management-workload-classifier-details", IsView=true)]
		public partial class WorkloadManagementWorkloadClassifierDetail
		{
			/// <summary>
			/// ID of the classifier.  Is not nullable.
			/// </summary>
			[Column("classifier_id"),    NotNull] public int    ClassifierID    { get; set; } // int
			/// <summary>
			/// Joinable to <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-workload-management-workload-classifiers-transact-sql'>sys.workload_management_workload_classifiers</a>.<br/>
			/// Range: <c>membername</c><br/><c>wlm_label</c><br/><c>wlm_context</c><br/><c>start_time</c><br/><c>end_time</c>
			/// </summary>
			[Column("classifier_type"),  NotNull] public string ClassifierType  { get; set; } = null!; // sysname
			/// <summary>
			/// The value of the classifier. Is not nullable.
			/// </summary>
			[Column("classifier_value"), NotNull] public string ClassifierValue { get; set; } = null!; // sysname
		}
	}

	public static partial class ChangeTrackingSchema
	{
		public partial class DataContext
		{
			/// <summary>
			/// <para><strong>Change Tracking Catalog Views - sys.change_tracking_databases</strong></para>
			/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)  √ Azure SQL Database</para>
			/// <para>Returns one row for each database that has change tracking enabled.</para><br/>
			/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/change-tracking-catalog-views-sys-change-tracking-databases'>sys.change_tracking_databases</a>.</para>
			/// </summary>
			public ITable<ChangeTrackingDatabase> ChangeTrackingDatabases { get { return _dataContext.GetTable<ChangeTrackingDatabase>(); } }
			/// <summary>
			/// <para><strong>Change Tracking Catalog Views - sys.change_tracking_tables</strong></para>
			/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)  √ Azure SQL Database</para>
			/// <para>Returns one row for each table in the current database that has change tracking enabled.</para><br/>
			/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/change-tracking-catalog-views-sys-change-tracking-tables'>sys.change_tracking_tables</a>.</para>
			/// </summary>
			public ITable<ChangeTrackingTable>    ChangeTrackingTables    { get { return _dataContext.GetTable<ChangeTrackingTable>(); } }

			private readonly IDataContext _dataContext;

			public DataContext(IDataContext dataContext)
			{
				_dataContext = dataContext;
			}
		}

		/// <summary>
		/// <para><strong>Change Tracking Catalog Views - sys.change_tracking_databases</strong></para>
		/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)  √ Azure SQL Database</para>
		/// <para>Returns one row for each database that has change tracking enabled.</para><br/>
		/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/change-tracking-catalog-views-sys-change-tracking-databases'>sys.change_tracking_databases</a>.</para>
		/// </summary>
		[Table(Schema="sys", Name="change_tracking_databases", IsView=true)]
		public partial class ChangeTrackingDatabase
		{
			/// <summary>
			/// ID of the database. This is unique within the instance of SQL Server.
			/// </summary>
			[Column("database_id"),                 NotNull    ] public int     DatabaseID               { get; set; } // int
			/// <summary>
			/// Indicates whether change tracking data is automatically cleaned up after the configured retention period:<br/><br/> 0 = Off<br/><br/> 1 = On
			/// </summary>
			[Column("is_auto_cleanup_on"),             Nullable] public bool?   IsAutoCleanupOn          { get; set; } // bit
			/// <summary>
			/// If autocleanup is being used, the retention period specifies how long the change tracking data is kept in the database.
			/// </summary>
			[Column("retention_period"),               Nullable] public int?    RetentionPeriod          { get; set; } // int
			/// <summary>
			/// Specifies the description of the retention period:<br/><br/> Minutes<br/><br/> Hours<br/><br/> Days
			/// </summary>
			[Column("retention_period_units_desc"),    Nullable] public string? RetentionPeriodUnitsDesc { get; set; } // nvarchar(60)
			/// <summary>
			/// Unit of time for the retention period:<br/><br/> 1 = Minutes<br/><br/> 2 = Hours<br/><br/> 3 = Days
			/// </summary>
			[Column("retention_period_units"),         Nullable] public byte?   RetentionPeriodUnits     { get; set; } // tinyint
		}

		/// <summary>
		/// <para><strong>Change Tracking Catalog Views - sys.change_tracking_tables</strong></para>
		/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)  √ Azure SQL Database</para>
		/// <para>Returns one row for each table in the current database that has change tracking enabled.</para><br/>
		/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/change-tracking-catalog-views-sys-change-tracking-tables'>sys.change_tracking_tables</a>.</para>
		/// </summary>
		[Table(Schema="sys", Name="change_tracking_tables", IsView=true)]
		public partial class ChangeTrackingTable
		{
			/// <summary>
			/// ID of a table that has a change journal. The table can have a change journal even if change tracking is currently off.<br/><br/> The table ID is unique within the database.
			/// </summary>
			[Column("object_id"),                   NotNull    ] public int   ObjectID                { get; set; } // int
			/// <summary>
			/// Current state of change tracking on the table:<br/><br/> 0 = OFF<br/><br/> 1 = ON
			/// </summary>
			[Column("is_track_columns_updated_on"), NotNull    ] public bool  IsTrackColumnsUpdatedOn { get; set; } // bit
			/// <summary>
			/// Version of the database when change tracking began for the table. This version is usually indicates when change tracking was enabled, but this value is reset if the table is truncated.
			/// </summary>
			[Column("begin_version"),                  Nullable] public long? BeginVersion            { get; set; } // bigint
			/// <summary>
			/// Version up to which cleanup might have removed change tracking information.
			/// </summary>
			[Column("cleanup_version"),                Nullable] public long? CleanupVersion          { get; set; } // bigint
			/// <summary>
			/// Minimum valid version of change tracking information that is available for the table.<br/><br/> When obtaining changes from the table that is associated with this row, the value of last_sync_version must be greater than or equal to the version reported by this column. For more information, see <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-functions/change-tracking-min-valid-version-transact-sql'>CHANGE_TRACKING_MIN_VALID_VERSION (Transact-SQL)</a>.
			/// </summary>
			[Column("min_valid_version"),              Nullable] public long? MinValidVersion         { get; set; } // bigint

			#region Associations

			/// <summary>
			/// objects (sys.objects)
			/// </summary>
			[Association(ThisKey="ObjectID", OtherKey="ObjectID", CanBeNull=false)]
			public ObjectSchema.Object Object { get; set; } = null!;

			#endregion
		}
	}

	public static partial class CLRAssemblySchema
	{
		public partial class DataContext
		{
			/// <summary>
			/// <para><strong>sys.assemblies (Transact-SQL)</strong></para>
			/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions) √ Azure SQL Managed Instance √ Azure Synapse Analytics √ Analytics Platform System (PDW)</para>
			/// <para>Returns a row for each assembly.</para><br/>
			/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-assemblies-transact-sql'>sys.assemblies</a>.</para>
			/// </summary>
			public ITable<Assembly>          Assemblies         { get { return _dataContext.GetTable<Assembly>(); } }
			/// <summary>
			/// <para><strong>sys.assembly_files (Transact-SQL)</strong></para>
			/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)</para>
			/// <para>Contains a row for each file that makes up an assembly.</para><br/>
			/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-assembly-files-transact-sql'>sys.assembly_files</a>.</para>
			/// </summary>
			public ITable<AssemblyFile>      AssemblyFiles      { get { return _dataContext.GetTable<AssemblyFile>(); } }
			/// <summary>
			/// <para><strong>sys.assembly_references (Transact-SQL)</strong></para>
			/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)</para>
			/// <para>Contains a row for each pair of assemblies where one is directly referencing another.</para><br/>
			/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-assembly-references-transact-sql'>sys.assembly_references</a>.</para>
			/// </summary>
			public ITable<AssemblyReference> AssemblyReferences { get { return _dataContext.GetTable<AssemblyReference>(); } }
			/// <summary>
			/// <para><strong>sys.trusted_assemblies (Transact-SQL)</strong></para>
			/// <para><strong>Applies to:</strong> √ SQL Server 2017 (14.x) and later</para>
			/// <para>Contains a row for each trusted assembly for the server.<br/>
			///  <a href='https://docs.microsoft.com/en-us/sql/t-sql/language-elements/transact-sql-syntax-conventions-transact-sql'>Transact-SQL Syntax Conventions</a></para><br/>
			/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-trusted-assemblies-transact-sql'>sys.trusted_assemblies</a>.</para>
			/// </summary>
			public ITable<TrustedAssembly>   TrustedAssemblies  { get { return _dataContext.GetTable<TrustedAssembly>(); } }

			private readonly IDataContext _dataContext;

			public DataContext(IDataContext dataContext)
			{
				_dataContext = dataContext;
			}
		}

		/// <summary>
		/// <para><strong>sys.assemblies (Transact-SQL)</strong></para>
		/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions) √ Azure SQL Managed Instance √ Azure Synapse Analytics √ Analytics Platform System (PDW)</para>
		/// <para>Returns a row for each assembly.</para><br/>
		/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-assemblies-transact-sql'>sys.assemblies</a>.</para>
		/// </summary>
		[Table(Schema="sys", Name="assemblies", IsView=true)]
		public partial class Assembly
		{
			/// <summary>
			/// Name of the assembly. Is unique within the database.
			/// </summary>
			[Column("name"),                NotNull    ] public string   Name              { get; set; } = null!; // sysname
			/// <summary>
			/// ID of the principal that owns this assembly.
			/// </summary>
			[Column("principal_id"),           Nullable] public int?     PrincipalID       { get; set; } // int
			/// <summary>
			/// Assembly identification number. Is unique within a database.
			/// </summary>
			[Column("assembly_id"),         NotNull    ] public int      AssemblyID        { get; set; } // int
			/// <summary>
			/// Canonical string that encodes the simple name, version number, culture, public key, and architecture of the assembly. This value uniquely identifies the assembly on the common language runtime (CLR) side.
			/// </summary>
			[Column("clr_name"),               Nullable] public string?  ClrName           { get; set; } // nvarchar(4000)
			/// <summary>
			/// Permission-set/security-level for assembly.<br/><br/> 1 = Safe Access<br/><br/> 2 = External Access<br/><br/> 3 = Unsafe Access
			/// </summary>
			[Column("permission_set"),         Nullable] public byte?    PermissionSet     { get; set; } // tinyint
			/// <summary>
			/// Description for permission-set/security-level for assembly.<br/><br/> SAFE_ACCESS<br/><br/> EXTERNAL_ACCESS<br/><br/> UNSAFE_ACCESS
			/// </summary>
			[Column("permission_set_desc"),    Nullable] public string?  PermissionSetDesc { get; set; } // nvarchar(60)
			/// <summary>
			/// 1 = Assembly is visible to register Transact\-SQL entry points.<br/><br/> 0 = Assembly is intended only for managed callers. That is, the assembly provides internal implementation for other assemblies in the database.
			/// </summary>
			[Column("is_visible"),          NotNull    ] public bool     IsVisible         { get; set; } // bit
			/// <summary>
			/// Date the assembly was created or registered.
			/// </summary>
			[Column("create_date"),         NotNull    ] public DateTime CreateDate        { get; set; } // datetime
			/// <summary>
			/// Date the assembly was modified.
			/// </summary>
			[Column("modify_date"),         NotNull    ] public DateTime ModifyDate        { get; set; } // datetime
			/// <summary>
			/// Indicates the source of the assembly.<br/><br/> 0 = System-defined assemblies (such as Microsoft.SqlServer.Types for the <strong>hierarchyid</strong> data type)<br/><br/> 1 = User-defined assemblies
			/// </summary>
			[Column("is_user_defined"),        Nullable] public bool?    IsUserDefined     { get; set; } // bit
		}

		/// <summary>
		/// <para><strong>sys.assembly_files (Transact-SQL)</strong></para>
		/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)</para>
		/// <para>Contains a row for each file that makes up an assembly.</para><br/>
		/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-assembly-files-transact-sql'>sys.assembly_files</a>.</para>
		/// </summary>
		[Table(Schema="sys", Name="assembly_files", IsView=true)]
		public partial class AssemblyFile
		{
			/// <summary>
			/// ID of the assembly to which this file belongs.
			/// </summary>
			[Column("assembly_id"), NotNull    ] public int     AssemblyID { get; set; } // int
			/// <summary>
			/// Name of the assembly file.
			/// </summary>
			[Column("name"),           Nullable] public string? Name       { get; set; } // nvarchar(260)
			/// <summary>
			/// ID of the file. Is unique within an assembly. The file ID numbered 1 represents the assembly DLL.
			/// </summary>
			[Column("file_id"),     NotNull    ] public int     FileID     { get; set; } // int
			/// <summary>
			/// Content of file.
			/// </summary>
			[Column("content"),        Nullable] public byte[]? Content    { get; set; } // varbinary(max)
		}

		/// <summary>
		/// <para><strong>sys.assembly_references (Transact-SQL)</strong></para>
		/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)</para>
		/// <para>Contains a row for each pair of assemblies where one is directly referencing another.</para><br/>
		/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-assembly-references-transact-sql'>sys.assembly_references</a>.</para>
		/// </summary>
		[Table(Schema="sys", Name="assembly_references", IsView=true)]
		public partial class AssemblyReference
		{
			/// <summary>
			/// ID of the assembly to which this reference belongs.
			/// </summary>
			[Column("assembly_id"),            NotNull] public int AssemblyID           { get; set; } // int
			/// <summary>
			/// ID of the assembly being referenced.
			/// </summary>
			[Column("referenced_assembly_id"), NotNull] public int ReferencedAssemblyID { get; set; } // int
		}

		/// <summary>
		/// <para><strong>sys.trusted_assemblies (Transact-SQL)</strong></para>
		/// <para><strong>Applies to:</strong> √ SQL Server 2017 (14.x) and later</para>
		/// <para>Contains a row for each trusted assembly for the server.<br/>
		///  <a href='https://docs.microsoft.com/en-us/sql/t-sql/language-elements/transact-sql-syntax-conventions-transact-sql'>Transact-SQL Syntax Conventions</a></para><br/>
		/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-trusted-assemblies-transact-sql'>sys.trusted_assemblies</a>.</para>
		/// </summary>
		[Table(Schema="sys", Name="trusted_assemblies", IsView=true)]
		public partial class TrustedAssembly
		{
			/// <summary>
			/// SHA2_512 hash of the assembly content.
			/// </summary>
			[Column("hash"),           Nullable] public byte[]? Hash        { get; set; } // varbinary(8000) 
			/// <summary>
			/// Optional user-defined description of the assembly. Microsoft recommends using the canonical name that encodes the simple name, version number, culture, public key, and architecture of the assembly to trust. This value uniquely identifies the assembly on the common language runtime (CLR) side and is the same as the clr_name value in sys.assemblies.
			/// </summary>
			[Column("description"),    Nullable] public string? Description { get; set; } // nvarchar(4000) 
			/// <summary>
			/// Date the assembly was added to the list of trusted assemblies.
			/// </summary>
			[Column("create_date"), NotNull    ] public object  CreateDate  { get; set; } = null!; // datetime2 
			/// <summary>
			/// Login name of the principal who added the assembly to the list.
			/// </summary>
			[Column("created_by"),  NotNull    ] public string  CreatedBy   { get; set; } = null!; // nvarchar(128)
		}
	}

	public static partial class CompatibilitySchema
	{
		public partial class DataContext
		{
			/// <summary>
			/// <para><strong>sys.sysaltfiles (Transact-SQL)</strong></para>
			/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)</para>
			/// <para>Under special circumstances, contains rows corresponding to the files in a database.<br/>
			/// <note type='important'><br/>
			/// This SQL Server 2000 system table is included as a view for backward compatibility. We  recommend that you use the current SQL Server system views instead. To find the equivalent system view or views, see <a href='https://docs.microsoft.com/en-us/sql/relational-databases/relational-databases/system-tables/mapping-system-tables-to-system-views-transact-sql'>Mapping System Tables to System Views (Transact-SQL)</a>. This feature will be removed in a future version of Microsoft SQL Server. Avoid using this feature in new development work, and plan to modify applications that currently use this feature.<br/>
			/// </note></para><br/>
			/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-compatibility-views/sys-sysaltfiles-transact-sql'>sys.sysaltfiles</a>.</para>
			/// </summary>
			public ITable<AltFile>         AltFiles         { get { return _dataContext.GetTable<AltFile>(); } }
			/// <summary>
			/// <para><strong>sys.syscacheobjects (Transact-SQL)</strong></para>
			/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)</para>
			/// <para>Contains information about how the cache is used.<br/>
			/// <note type='important'><br/>
			/// This SQL Server 2000 system table is included as a view for backward compatibility. We  recommend that you use the current SQL Server system views instead. To find the equivalent system view or views, see <a href='https://docs.microsoft.com/en-us/sql/relational-databases/relational-databases/system-tables/mapping-system-tables-to-system-views-transact-sql'>Mapping System Tables to System Views (Transact-SQL)</a>. This feature will be removed in a future version of Microsoft SQL Server. Avoid using this feature in new development work, and plan to modify applications that currently use this feature.<br/>
			/// </note></para><br/>
			/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-compatibility-views/sys-syscacheobjects-transact-sql'>sys.syscacheobjects</a>.</para>
			/// </summary>
			public ITable<CacheObject>     CacheObjects     { get { return _dataContext.GetTable<CacheObject>(); } }
			/// <summary>
			/// <para><strong>sys.syscharsets (Transact-SQL)</strong></para>
			/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions) √ Azure SQL Database √ Azure SQL Managed Instance √ Azure Synapse Analytics √ Analytics Platform System (PDW)</para>
			/// <para>Contains one row for each character set and sort order defined for use by the SQL Server Database Engine. One of the sort orders is marked in <strong>sysconfigures</strong> as the default sort order. This is the only one actually being used.</para><br/>
			/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-compatibility-views/sys-syscharsets-transact-sql'>sys.syscharsets</a>.</para>
			/// </summary>
			public ITable<Charset>         Charsets         { get { return _dataContext.GetTable<Charset>(); } }
			/// <summary>
			/// <para><strong>sys.syscolumns (Transact-SQL)</strong></para>
			/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions) √ Azure SQL Managed Instance √ Azure Synapse Analytics √ Analytics Platform System (PDW)</para>
			/// <para>Returns one row for every column in every table and view, and a row for each parameter in a stored procedure in the database.<br/>
			/// <note type='important'><br/>
			/// This SQL Server 2000 system table is included as a view for backward compatibility. We  recommend that you use the current SQL Server system views instead. To find the equivalent system view or views, see <a href='https://docs.microsoft.com/en-us/sql/relational-databases/relational-databases/system-tables/mapping-system-tables-to-system-views-transact-sql'>Mapping System Tables to System Views (Transact-SQL)</a>. This feature will be removed in a future version of Microsoft SQL Server. Avoid using this feature in new development work, and plan to modify applications that currently use this feature.<br/>
			/// </note></para><br/>
			/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-compatibility-views/sys-syscolumns-transact-sql'>sys.syscolumns</a>.</para>
			/// </summary>
			public ITable<Column>          Columns          { get { return _dataContext.GetTable<Column>(); } }
			/// <summary>
			/// <para><strong>sys.syscomments (Transact-SQL)</strong></para>
			/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)</para>
			/// <para>Contains entries for each view, rule, default, trigger, CHECK constraint, DEFAULT constraint, and stored procedure within the database. The <strong>text</strong> column contains the original SQL definition statements.<br/>
			/// <note type='important'><br/>
			/// This feature will be removed in a future version of Microsoft SQL Server. Avoid using this feature in new development work, and plan to modify applications that currently use this feature. We recommend that you use sys.sql_modules instead. For more information, see <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-sql-modules-transact-sql'>sys.sql_modules (Transact-SQL)</a>.<br/>
			/// </note></para><br/>
			/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-compatibility-views/sys-syscomments-transact-sql'>sys.syscomments</a>.</para>
			/// </summary>
			public ITable<Comment>         Comments         { get { return _dataContext.GetTable<Comment>(); } }
			/// <summary>
			/// <para><strong>sys.sysconfigures (Transact-SQL)</strong></para>
			/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)</para>
			/// <para>Contains one row for each configuration option set by a user. <strong>sysconfigures</strong> contains the configuration options that are defined before the most recent startup of SQL Server, plus any dynamic configuration options set since then.<br/>
			/// <note type='important'><br/>
			/// This SQL Server 2000 system table is included as a view for backward compatibility. We  recommend that you use the current SQL Server system views instead. To find the equivalent system view or views, see <a href='https://docs.microsoft.com/en-us/sql/relational-databases/relational-databases/system-tables/mapping-system-tables-to-system-views-transact-sql'>Mapping System Tables to System Views (Transact-SQL)</a>. This feature will be removed in a future version of Microsoft SQL Server. Avoid using this feature in new development work, and plan to modify applications that currently use this feature.<br/>
			/// </note></para><br/>
			/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-compatibility-views/sys-sysconfigures-transact-sql'>sys.sysconfigures</a>.</para>
			/// </summary>
			public ITable<Configure>       Configures       { get { return _dataContext.GetTable<Configure>(); } }
			/// <summary>
			/// <para><strong>sys.sysconstraints (Transact-SQL)</strong></para>
			/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)</para>
			/// <para>Contains mappings of constraints to the objects that own the constraints within the database.<br/>
			/// <note type='important'><br/>
			/// This SQL Server 2000 system table is included as a view for backward compatibility. We  recommend that you use the current SQL Server system views instead. To find the equivalent system view or views, see <a href='https://docs.microsoft.com/en-us/sql/relational-databases/relational-databases/system-tables/mapping-system-tables-to-system-views-transact-sql'>Mapping System Tables to System Views (Transact-SQL)</a>. This feature will be removed in a future version of Microsoft SQL Server. Avoid using this feature in new development work, and plan to modify applications that currently use this feature.<br/>
			/// </note></para><br/>
			/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-compatibility-views/sys-sysconstraints-transact-sql'>sys.sysconstraints</a>.</para>
			/// </summary>
			public ITable<Constraint>      Constraints      { get { return _dataContext.GetTable<Constraint>(); } }
			/// <summary>
			/// <para><strong>sys.syscurconfigs (Transact-SQL)</strong></para>
			/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)</para>
			/// <para>Contains an entry for each current configuration option. Also, this view contains four entries that describe the configuration structure. <strong>syscurconfigs</strong> is built dynamically when queried by a user. For more information, see <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-compatibility-views/sys-sysconfigures-transact-sql'>sys.sysconfigures (Transact-SQL)</a>.<br/>
			/// <note type='important'><br/>
			/// This SQL Server 2000 system table is included as a view for backward compatibility. We  recommend that you use the current SQL Server system views instead. To find the equivalent system view or views, see <a href='https://docs.microsoft.com/en-us/sql/relational-databases/relational-databases/system-tables/mapping-system-tables-to-system-views-transact-sql'>Mapping System Tables to System Views (Transact-SQL)</a>. This feature will be removed in a future version of Microsoft SQL Server. Avoid using this feature in new development work, and plan to modify applications that currently use this feature.<br/>
			/// </note></para><br/>
			/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-compatibility-views/sys-syscurconfigs-transact-sql'>sys.syscurconfigs</a>.</para>
			/// </summary>
			public ITable<CurConfig>       CurConfigs       { get { return _dataContext.GetTable<CurConfig>(); } }
			/// <summary>
			/// <para><strong>sys.sysdatabases (Transact-SQL)</strong></para>
			/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions) √ Azure SQL Managed Instance √ Azure Synapse Analytics √ Analytics Platform System (PDW)</para>
			/// <para>Contains one row for each database in an instance of Microsoft SQL Server. When SQL Server is first installed, <strong>sysdatabases</strong> contains entries for the <strong>master</strong>, <strong>model</strong>, <strong>msdb</strong>, and <strong>tempdb</strong> databases.<br/>
			/// <note type='important'><br/>
			/// This SQL Server 2000 system table is included as a view for backward compatibility. We  recommend that you use the current SQL Server system views instead. To find the equivalent system view or views, see <a href='https://docs.microsoft.com/en-us/sql/relational-databases/relational-databases/system-tables/mapping-system-tables-to-system-views-transact-sql'>Mapping System Tables to System Views (Transact-SQL)</a>. This feature will be removed in a future version of Microsoft SQL Server. Avoid using this feature in new development work, and plan to modify applications that currently use this feature.<br/>
			/// </note></para><br/>
			/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-compatibility-views/sys-sysdatabases-transact-sql'>sys.sysdatabases</a>.</para>
			/// </summary>
			public ITable<Database>        Databases        { get { return _dataContext.GetTable<Database>(); } }
			/// <summary>
			/// <para><strong>sys.sysdepends (Transact-SQL)</strong></para>
			/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)</para>
			/// <para>Contains dependency information between objects (views, procedures, and triggers) in the database, and the objects (tables, views, and procedures) that are contained in their definition.<br/>
			/// <note type='important'><br/>
			/// This SQL Server 2000 system table is included as a view for backward compatibility. We  recommend that you use the current SQL Server system views instead. To find the equivalent system view or views, see <a href='https://docs.microsoft.com/en-us/sql/relational-databases/relational-databases/system-tables/mapping-system-tables-to-system-views-transact-sql'>Mapping System Tables to System Views (Transact-SQL)</a>. This feature will be removed in a future version of Microsoft SQL Server. Avoid using this feature in new development work, and plan to modify applications that currently use this feature.<br/>
			/// </note></para><br/>
			/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-compatibility-views/sys-sysdepends-transact-sql'>sys.sysdepends</a>.</para>
			/// </summary>
			public ITable<Depend>          Depends          { get { return _dataContext.GetTable<Depend>(); } }
			/// <summary>
			/// <para><strong>sys.sysdevices (Transact-SQL)</strong></para>
			/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)</para>
			/// <para>Contains one row for each disk backup file, tape backup file, and database file.<br/>
			/// <note type='important'><br/>
			/// This SQL Server 2000 system table is included as a view for backward compatibility. We  recommend that you use the current SQL Server system views instead. To find the equivalent system view or views, see <a href='https://docs.microsoft.com/en-us/sql/relational-databases/relational-databases/system-tables/mapping-system-tables-to-system-views-transact-sql'>Mapping System Tables to System Views (Transact-SQL)</a>. This feature will be removed in a future version of Microsoft SQL Server. Avoid using this feature in new development work, and plan to modify applications that currently use this feature.<br/>
			/// </note></para><br/>
			/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-compatibility-views/sys-sysdevices-transact-sql'>sys.sysdevices</a>.</para>
			/// </summary>
			public ITable<Device>          Devices          { get { return _dataContext.GetTable<Device>(); } }
			/// <summary>
			/// <para><strong>sys.systypes (Transact-SQL)</strong></para>
			/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions) √ Azure SQL Database √ Azure SQL Managed Instance √ Azure Synapse Analytics √ Analytics Platform System (PDW)</para>
			/// <para>Returns one row for each system-supplied and each user-defined data type defined in the database.<br/>
			/// <note type='important'><br/>
			/// This SQL Server 2000 system table is included as a view for backward compatibility. We  recommend that you use the current SQL Server system views instead. To find the equivalent system view or views, see <a href='https://docs.microsoft.com/en-us/sql/relational-databases/relational-databases/system-tables/mapping-system-tables-to-system-views-transact-sql'>Mapping System Tables to System Views (Transact-SQL)</a>. This feature will be removed in a future version of Microsoft SQL Server. Avoid using this feature in new development work, and plan to modify applications that currently use this feature.<br/>
			/// </note></para><br/>
			/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-compatibility-views/sys-systypes-transact-sql'>sys.systypes</a>.</para>
			/// </summary>
			public ITable<ETable>          Types            { get { return _dataContext.GetTable<ETable>(); } }
			/// <summary>
			/// <para><strong>sys.sysfiles (Transact-SQL)</strong></para>
			/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)</para>
			/// <para>Contains one row for each file in a database.<br/>
			/// <note type='important'><br/>
			/// This SQL Server 2000 system table is included as a view for backward compatibility. We  recommend that you use the current SQL Server system views instead. To find the equivalent system view or views, see <a href='https://docs.microsoft.com/en-us/sql/relational-databases/relational-databases/system-tables/mapping-system-tables-to-system-views-transact-sql'>Mapping System Tables to System Views (Transact-SQL)</a>. This feature will be removed in a future version of Microsoft SQL Server. Avoid using this feature in new development work, and plan to modify applications that currently use this feature.<br/>
			/// </note></para><br/>
			/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-compatibility-views/sys-sysfiles-transact-sql'>sys.sysfiles</a>.</para>
			/// </summary>
			public ITable<File>            Files            { get { return _dataContext.GetTable<File>(); } }
			/// <summary>
			/// <para><strong>sys.sysfilegroups (Transact-SQL)</strong></para>
			/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)</para>
			/// <para>Contains one row for each file group in a database. There is at least one entry in this table that is for the primary file group.<br/>
			/// <note type='important'><br/>
			/// This SQL Server 2000 system table is included as a view for backward compatibility. We  recommend that you use the current SQL Server system views instead. To find the equivalent system view or views, see <a href='https://docs.microsoft.com/en-us/sql/relational-databases/relational-databases/system-tables/mapping-system-tables-to-system-views-transact-sql'>Mapping System Tables to System Views (Transact-SQL)</a>. This feature will be removed in a future version of Microsoft SQL Server. Avoid using this feature in new development work, and plan to modify applications that currently use this feature.<br/>
			/// </note></para><br/>
			/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-compatibility-views/sys-sysfilegroups-transact-sql'>sys.sysfilegroups</a>.</para>
			/// </summary>
			public ITable<FileGroup>       FileGroups       { get { return _dataContext.GetTable<FileGroup>(); } }
			/// <summary>
			/// <para><strong>sys.sysforeignkeys (Transact-SQL)</strong></para>
			/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)</para>
			/// <para>Contains information about the FOREIGN KEY constraints that are in the definitions of tables in the database.<br/>
			/// <note type='important'><br/>
			/// This SQL Server 2000 system table is included as a view for backward compatibility. We  recommend that you use the current SQL Server system views instead. To find the equivalent system view or views, see <a href='https://docs.microsoft.com/en-us/sql/relational-databases/relational-databases/system-tables/mapping-system-tables-to-system-views-transact-sql'>Mapping System Tables to System Views (Transact-SQL)</a>. This feature will be removed in a future version of Microsoft SQL Server. Avoid using this feature in new development work, and plan to modify applications that currently use this feature.<br/>
			/// </note></para><br/>
			/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-compatibility-views/sys-sysforeignkeys-transact-sql'>sys.sysforeignkeys</a>.</para>
			/// </summary>
			public ITable<ForeignKey>      ForeignKeys      { get { return _dataContext.GetTable<ForeignKey>(); } }
			/// <summary>
			/// <para><strong>sys.sysfulltextcatalogs (Transact-SQL)</strong></para>
			/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions) √ Azure SQL Managed Instance √ Analytics Platform System (PDW)</para>
			/// <para>Contains information about the full-text catalogs.<br/>
			/// <note type='important'><br/>
			/// This SQL Server 2000 system table is included as a view for backward compatibility. We  recommend that you use the current SQL Server system views instead. To find the equivalent system view or views, see <a href='https://docs.microsoft.com/en-us/sql/relational-databases/relational-databases/system-tables/mapping-system-tables-to-system-views-transact-sql'>Mapping System Tables to System Views (Transact-SQL)</a>. This feature will be removed in a future version of Microsoft SQL Server. Avoid using this feature in new development work, and plan to modify applications that currently use this feature.<br/>
			/// </note></para><br/>
			/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-compatibility-views/sys-sysfulltextcatalogs-transact-sql'>sys.sysfulltextcatalogs</a>.</para>
			/// </summary>
			public ITable<FullTextCatalog> FullTextCatalogs { get { return _dataContext.GetTable<FullTextCatalog>(); } }
			/// <summary>
			/// <para><strong>sys.sysindexes (Transact-SQL)</strong></para>
			/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)</para>
			/// <para>Contains one row for each index and table in the current database. XML indexes are not supported in this view. Partitioned tables and indexes are not fully supported in this view; use the <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-indexes-transact-sql'>sys.indexes</a> catalog view instead.<br/>
			/// <note type='important'><br/>
			/// This SQL Server 2000 system table is included as a view for backward compatibility. We  recommend that you use the current SQL Server system views instead. To find the equivalent system view or views, see <a href='https://docs.microsoft.com/en-us/sql/relational-databases/relational-databases/system-tables/mapping-system-tables-to-system-views-transact-sql'>Mapping System Tables to System Views (Transact-SQL)</a>. This feature will be removed in a future version of Microsoft SQL Server. Avoid using this feature in new development work, and plan to modify applications that currently use this feature.<br/>
			/// </note></para><br/>
			/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-compatibility-views/sys-sysindexes-transact-sql'>sys.sysindexes</a>.</para>
			/// </summary>
			public ITable<Index>           Indexes          { get { return _dataContext.GetTable<Index>(); } }
			/// <summary>
			/// <para><strong>sys.sysindexkeys (Transact-SQL)</strong></para>
			/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)</para>
			/// <para>Contains information about the keys or columns in an index of the database.<br/>
			/// <note type='important'><br/>
			/// This SQL Server 2000 system table is included as a view for backward compatibility. We  recommend that you use the current SQL Server system views instead. To find the equivalent system view or views, see <a href='https://docs.microsoft.com/en-us/sql/relational-databases/relational-databases/system-tables/mapping-system-tables-to-system-views-transact-sql'>Mapping System Tables to System Views (Transact-SQL)</a>. This feature will be removed in a future version of Microsoft SQL Server. Avoid using this feature in new development work, and plan to modify applications that currently use this feature.<br/>
			/// </note></para><br/>
			/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-compatibility-views/sys-sysindexkeys-transact-sql'>sys.sysindexkeys</a>.</para>
			/// </summary>
			public ITable<IndexKey>        IndexKeys        { get { return _dataContext.GetTable<IndexKey>(); } }
			/// <summary>
			/// <para><strong>sys.syslanguages (Transact-SQL)</strong></para>
			/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions) √ Azure SQL Database √ Azure SQL Managed Instance √ Azure Synapse Analytics √ Analytics Platform System (PDW)</para>
			/// <para>Contains one row for each language present in the instance of SQL Server.</para><br/>
			/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-compatibility-views/sys-syslanguages-transact-sql'>sys.syslanguages</a>.</para>
			/// </summary>
			public ITable<Language>        Languages        { get { return _dataContext.GetTable<Language>(); } }
			/// <summary>
			/// <para><strong>sys.syslockinfo (Transact-SQL)</strong></para>
			/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)</para>
			/// <para>Contains information about all granted, converting, and waiting lock requests.<br/>
			/// <note type='important'><br/>
			/// This SQL Server 2000 system table is included as a view for backward compatibility. We  recommend that you use the current SQL Server system views instead. To find the equivalent system view or views, see <a href='https://docs.microsoft.com/en-us/sql/relational-databases/relational-databases/system-tables/mapping-system-tables-to-system-views-transact-sql'>Mapping System Tables to System Views (Transact-SQL)</a>. This feature will be removed in a future version of Microsoft SQL Server. Avoid using this feature in new development work, and plan to modify applications that currently use this feature.<br/>
			/// </note><br/>
			/// <note type='important'><br/>
			/// This feature has changed from earlier versions of SQL Server. For more information, see <a href='https://docs.microsoft.com/en-us/sql/database-engine/breaking-changes-to-database-engine-features-in-sql-server-2016'>Breaking Changes to Database Engine Features in SQL Server 2016</a>.<br/>
			/// </note></para><br/>
			/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-compatibility-views/sys-syslockinfo-transact-sql'>sys.syslockinfo</a>.</para>
			/// </summary>
			public ITable<LockInfo>        LockInfoes       { get { return _dataContext.GetTable<LockInfo>(); } }
			/// <summary>
			/// <para><strong>sys.syslogins (Transact-SQL)</strong></para>
			/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)</para>
			/// <para>Contains one row for each login account.<br/>
			/// <note type='important'><br/>
			/// This SQL Server 2000 system table is included as a view for backward compatibility. We  recommend that you use the current SQL Server system views instead. To find the equivalent system view or views, see <a href='https://docs.microsoft.com/en-us/sql/relational-databases/relational-databases/system-tables/mapping-system-tables-to-system-views-transact-sql'>Mapping System Tables to System Views (Transact-SQL)</a>. This feature will be removed in a future version of Microsoft SQL Server. Avoid using this feature in new development work, and plan to modify applications that currently use this feature.<br/>
			/// </note><br/>
			/// <strong>Applies to</strong>: SQL Server ( SQL Server 2008 through [current version](/troubleshoot/sql/general/determine-version-edition-update-level)).</para><br/>
			/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-compatibility-views/sys-syslogins-transact-sql'>sys.syslogins</a>.</para>
			/// </summary>
			public ITable<Login>           Logins           { get { return _dataContext.GetTable<Login>(); } }
			/// <summary>
			/// <para><strong>sys.sysmembers (Transact-SQL)</strong></para>
			/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)</para>
			/// <para>Contains a row for each member of a database role.<br/>
			/// <note type='important'><br/>
			/// This SQL Server 2000 system table is included as a view for backward compatibility. We  recommend that you use the current SQL Server system views instead. To find the equivalent system view or views, see <a href='https://docs.microsoft.com/en-us/sql/relational-databases/relational-databases/system-tables/mapping-system-tables-to-system-views-transact-sql'>Mapping System Tables to System Views (Transact-SQL)</a>. This feature will be removed in a future version of Microsoft SQL Server. Avoid using this feature in new development work, and plan to modify applications that currently use this feature.<br/>
			/// </note></para><br/>
			/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-compatibility-views/sys-sysmembers-transact-sql'>sys.sysmembers</a>.</para>
			/// </summary>
			public ITable<Member>          Members          { get { return _dataContext.GetTable<Member>(); } }
			/// <summary>
			/// <para><strong>sys.sysmessages (Transact-SQL)</strong></para>
			/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)</para>
			/// <para>Contains one row for each system error or warning that can be returned by the SQL Server Database Engine. The Database Engine displays the error description on the user's screen.<br/>
			/// <note type='important'><br/>
			/// This SQL Server 2000 system table is included as a view for backward compatibility. We  recommend that you use the current SQL Server system views instead. To find the equivalent system view or views, see <a href='https://docs.microsoft.com/en-us/sql/relational-databases/relational-databases/system-tables/mapping-system-tables-to-system-views-transact-sql'>Mapping System Tables to System Views (Transact-SQL)</a>. This feature will be removed in a future version of Microsoft SQL Server. Avoid using this feature in new development work, and plan to modify applications that currently use this feature.<br/>
			/// </note></para><br/>
			/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-compatibility-views/sys-sysmessages-transact-sql'>sys.sysmessages</a>.</para>
			/// </summary>
			public ITable<Message>         Messages         { get { return _dataContext.GetTable<Message>(); } }
			/// <summary>
			/// <para><strong>sys.sysobjects (Transact-SQL)</strong></para>
			/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions) √ Azure SQL Managed Instance √ Azure Synapse Analytics √ Analytics Platform System (PDW)</para>
			/// <para>Contains one row for each object that is created within a database, such as a constraint, default, log, rule, and stored procedure.<br/>
			/// <note type='important'><br/>
			/// This SQL Server 2000 system table is included as a view for backward compatibility. We  recommend that you use the current SQL Server system views instead. To find the equivalent system view or views, see <a href='https://docs.microsoft.com/en-us/sql/relational-databases/relational-databases/system-tables/mapping-system-tables-to-system-views-transact-sql'>Mapping System Tables to System Views (Transact-SQL)</a>. This feature will be removed in a future version of Microsoft SQL Server. Avoid using this feature in new development work, and plan to modify applications that currently use this feature.<br/>
			/// </note></para><br/>
			/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-compatibility-views/sys-sysobjects-transact-sql'>sys.sysobjects</a>.</para>
			/// </summary>
			public ITable<Object>          Objects          { get { return _dataContext.GetTable<Object>(); } }
			/// <summary>
			/// <para><strong>sys.sysoledbusers (Transact-SQL)</strong></para>
			/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)</para>
			/// <para><br/>
			/// <note type='important'><br/>
			/// This SQL Server 2000 (8.x) system table is included in SQL Server as a view for backward compatibility only. We recommend that you use <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/catalog-views-transact-sql'>catalog views</a> instead.<br/>
			/// </note><br/>
			///  Contains one row for each user and password mapping for the specified linked server. <strong>sysoledbusers</strong> is stored in the <strong>master</strong> database.</para><br/>
			/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-compatibility-views/sys-sysoledbusers-transact-sql'>sys.sysoledbusers</a>.</para>
			/// </summary>
			public ITable<OleDBUser>       OleDBUsers       { get { return _dataContext.GetTable<OleDBUser>(); } }
			/// <summary>
			/// <para><strong>sys.sysperfinfo (Transact-SQL)</strong></para>
			/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)</para>
			/// <para>Contains a Microsoft SQL Server Database Engine representation of the internal performance counters that can be displayed through the Windows System Monitor.<br/>
			/// <note type='important'><br/>
			/// This SQL Server 2000 system table is included as a view for backward compatibility. We  recommend that you use the current SQL Server system views instead. To find the equivalent system view or views, see <a href='https://docs.microsoft.com/en-us/sql/relational-databases/relational-databases/system-tables/mapping-system-tables-to-system-views-transact-sql'>Mapping System Tables to System Views (Transact-SQL)</a>. This feature will be removed in a future version of Microsoft SQL Server. Avoid using this feature in new development work, and plan to modify applications that currently use this feature.<br/>
			/// </note></para><br/>
			/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-compatibility-views/sys-sysperfinfo-transact-sql'>sys.sysperfinfo</a>.</para>
			/// </summary>
			public ITable<PerfInfo>        PerfInfoes       { get { return _dataContext.GetTable<PerfInfo>(); } }
			/// <summary>
			/// <para><strong>sys.syspermissions (Transact-SQL)</strong></para>
			/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)</para>
			/// <para>Contains information about permissions granted and denied to users, groups, and roles in the database.<br/>
			/// <note type='important'><br/>
			/// This SQL Server 2000 system table is included as a view for backward compatibility. We  recommend that you use the current SQL Server system views instead. To find the equivalent system view or views, see <a href='https://docs.microsoft.com/en-us/sql/relational-databases/relational-databases/system-tables/mapping-system-tables-to-system-views-transact-sql'>Mapping System Tables to System Views (Transact-SQL)</a>. This feature will be removed in a future version of Microsoft SQL Server. Avoid using this feature in new development work, and plan to modify applications that currently use this feature.<br/>
			/// </note></para><br/>
			/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-compatibility-views/sys-syspermissions-transact-sql'>sys.syspermissions</a>.</para>
			/// </summary>
			public ITable<Permission>      Permissions      { get { return _dataContext.GetTable<Permission>(); } }
			/// <summary>
			/// <para><strong>sys.sysprocesses (Transact-SQL)</strong></para>
			/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)</para>
			/// <para>Contains information about processes that are running on an instance of SQL Server. These processes can be client processes or system processes. To access sysprocesses, you must be in the master database context, or you must use the master.dbo.sysprocesses three-part name.<br/>
			/// <note type='important'><br/>
			/// This SQL Server 2000 system table is included as a view for backward compatibility. We  recommend that you use the current SQL Server system views instead. To find the equivalent system view or views, see <a href='https://docs.microsoft.com/en-us/sql/relational-databases/relational-databases/system-tables/mapping-system-tables-to-system-views-transact-sql'>Mapping System Tables to System Views (Transact-SQL)</a>. This feature will be removed in a future version of Microsoft SQL Server. Avoid using this feature in new development work, and plan to modify applications that currently use this feature.<br/>
			/// </note></para><br/>
			/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-compatibility-views/sys-sysprocesses-transact-sql'>sys.sysprocesses</a>.</para>
			/// </summary>
			public ITable<Process>         Processes        { get { return _dataContext.GetTable<Process>(); } }
			/// <summary>
			/// <para><strong>sys.sysprotects (Transact-SQL)</strong></para>
			/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)</para>
			/// <para>Contains information about permissions that have been applied to security accounts in the database by using the GRANT and DENY statements.<br/>
			/// <note type='important'><br/>
			/// This SQL Server 2000 system table is included as a view for backward compatibility. We  recommend that you use the current SQL Server system views instead. To find the equivalent system view or views, see <a href='https://docs.microsoft.com/en-us/sql/relational-databases/relational-databases/system-tables/mapping-system-tables-to-system-views-transact-sql'>Mapping System Tables to System Views (Transact-SQL)</a>. This feature will be removed in a future version of Microsoft SQL Server. Avoid using this feature in new development work, and plan to modify applications that currently use this feature.<br/>
			/// </note></para><br/>
			/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-compatibility-views/sys-sysprotects-transact-sql'>sys.sysprotects</a>.</para>
			/// </summary>
			public ITable<Protect>         Protects         { get { return _dataContext.GetTable<Protect>(); } }
			/// <summary>
			/// <para><strong>sys.sysreferences (Transact-SQL)</strong></para>
			/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions) √ Azure SQL Managed Instance √ Azure Synapse Analytics √ Analytics Platform System (PDW)</para>
			/// <para>Contains mappings of the FOREIGN KEY constraint definitions to the referenced columns within the database.<br/>
			/// <note type='important'><br/>
			/// This SQL Server 2000 system table is included as a view for backward compatibility. We  recommend that you use the current SQL Server system views instead. To find the equivalent system view or views, see <a href='https://docs.microsoft.com/en-us/sql/relational-databases/relational-databases/system-tables/mapping-system-tables-to-system-views-transact-sql'>Mapping System Tables to System Views (Transact-SQL)</a>. This feature will be removed in a future version of Microsoft SQL Server. Avoid using this feature in new development work, and plan to modify applications that currently use this feature.<br/>
			/// </note></para><br/>
			/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-compatibility-views/sys-sysreferences-transact-sql'>sys.sysreferences</a>.</para>
			/// </summary>
			public ITable<Reference>       References       { get { return _dataContext.GetTable<Reference>(); } }
			/// <summary>
			/// <para><strong>sys.sysremotelogins (Transact-SQL)</strong></para>
			/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)</para>
			/// <para>Contains one row for each remote user that is permitted to call remote stored procedures on an instance of Microsoft SQL Server.<br/>
			/// <note type='important'><br/>
			/// This SQL Server 2000 system table is included as a view for backward compatibility. We  recommend that you use the current SQL Server system views instead. To find the equivalent system view or views, see <a href='https://docs.microsoft.com/en-us/sql/relational-databases/relational-databases/system-tables/mapping-system-tables-to-system-views-transact-sql'>Mapping System Tables to System Views (Transact-SQL)</a>. This feature will be removed in a future version of Microsoft SQL Server. Avoid using this feature in new development work, and plan to modify applications that currently use this feature.<br/>
			/// </note></para><br/>
			/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-compatibility-views/sys-sysremotelogins-transact-sql'>sys.sysremotelogins</a>.</para>
			/// </summary>
			public ITable<RemoteLogin>     RemoteLogins     { get { return _dataContext.GetTable<RemoteLogin>(); } }
			/// <summary>
			/// <para><strong>sys.sysservers (Transact-SQL)</strong></para>
			/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)</para>
			/// <para>Contains one row for each server that an instance of SQL Server can access as an OLE DB data source.<br/>
			/// <note type='important'><br/>
			/// This SQL Server 2000 system table is included as a view for backward compatibility. We  recommend that you use the current SQL Server system views instead. To find the equivalent system view or views, see <a href='https://docs.microsoft.com/en-us/sql/relational-databases/relational-databases/system-tables/mapping-system-tables-to-system-views-transact-sql'>Mapping System Tables to System Views (Transact-SQL)</a>. This feature will be removed in a future version of Microsoft SQL Server. Avoid using this feature in new development work, and plan to modify applications that currently use this feature.<br/>
			/// </note></para><br/>
			/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-compatibility-views/sys-sysservers-transact-sql'>sys.sysservers</a>.</para>
			/// </summary>
			public ITable<Server>          Servers          { get { return _dataContext.GetTable<Server>(); } }
			/// <summary>
			/// <para><strong>sys.sysusers (Transact-SQL)</strong></para>
			/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions) √ Azure SQL Managed Instance √ Azure Synapse Analytics √ Analytics Platform System (PDW)</para>
			/// <para>Contains one row for each Microsoft Windows user, Windows group, Microsoft SQL Server user, or SQL Server role in the database.<br/>
			/// <note type='important'><br/>
			/// This SQL Server 2000 system table is included as a view for backward compatibility. We  recommend that you use the current SQL Server system views instead. To find the equivalent system view or views, see <a href='https://docs.microsoft.com/en-us/sql/relational-databases/relational-databases/system-tables/mapping-system-tables-to-system-views-transact-sql'>Mapping System Tables to System Views (Transact-SQL)</a>. This feature will be removed in a future version of Microsoft SQL Server. Avoid using this feature in new development work, and plan to modify applications that currently use this feature.<br/>
			/// </note></para><br/>
			/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-compatibility-views/sys-sysusers-transact-sql'>sys.sysusers</a>.</para>
			/// </summary>
			public ITable<User>            Users            { get { return _dataContext.GetTable<User>(); } }

			private readonly IDataContext _dataContext;

			public DataContext(IDataContext dataContext)
			{
				_dataContext = dataContext;
			}
		}

		/// <summary>
		/// <para><strong>sys.sysaltfiles (Transact-SQL)</strong></para>
		/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)</para>
		/// <para>Under special circumstances, contains rows corresponding to the files in a database.<br/>
		/// <note type='important'><br/>
		/// This SQL Server 2000 system table is included as a view for backward compatibility. We  recommend that you use the current SQL Server system views instead. To find the equivalent system view or views, see <a href='https://docs.microsoft.com/en-us/sql/relational-databases/relational-databases/system-tables/mapping-system-tables-to-system-views-transact-sql'>Mapping System Tables to System Views (Transact-SQL)</a>. This feature will be removed in a future version of Microsoft SQL Server. Avoid using this feature in new development work, and plan to modify applications that currently use this feature.<br/>
		/// </note></para><br/>
		/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-compatibility-views/sys-sysaltfiles-transact-sql'>sys.sysaltfiles</a>.</para>
		/// </summary>
		[Table(Schema="sys", Name="sysaltfiles", IsView=true)]
		public partial class AltFile
		{
			/// <summary>
			/// File identification number. This is unique for each database.
			/// </summary>
			[Column("fileid"),      Nullable] public short?  FileID   { get; set; } // smallint
			/// <summary>
			/// File group identification number.
			/// </summary>
			[Column("groupid"),     Nullable] public short?  GroupID  { get; set; } // smallint
			/// <summary>
			/// File size, in 8-kilobyte (KB) pages.
			/// </summary>
			[Column("size"),     NotNull    ] public int     Size     { get; set; } // int
			/// <summary>
			/// Maximum file size, in 8-KB pages.<br/><br/> 0 = No growth.<br/><br/> -1 = File will grow until the disk is full.<br/><br/> 268435456 = Log file will grow to a maximum size of 2 TB.<br/><br/> Note: Databases that are upgraded with an unlimited log file size will report -1 for the maximum size of the log file.
			/// </summary>
			[Column("maxsize"),  NotNull    ] public int     MaxSize  { get; set; } // int
			/// <summary>
			/// Growth size of the database.<br/><br/> 0 = No growth. Can be either the number of pages or the percentage of file size, depending on the value of status. If <strong>status</strong> is 0x100000, <strong>growth</strong> is the percentage of file size; otherwise, it is the number of pages.
			/// </summary>
			[Column("growth"),   NotNull    ] public int     Growth   { get; set; } // int
			/// <summary>
			/// Identified for informational purposes only. Not supported. Future compatibility is not guaranteed.
			/// </summary>
			[Column("status"),      Nullable] public int?    Status   { get; set; } // int
			/// <summary>
			/// Reserved.
			/// </summary>
			[Column("perf"),        Nullable] public int?    Perf     { get; set; } // int
			/// <summary>
			/// Database identification number of the database to which this file belongs.
			/// </summary>
			[Column("dbid"),        Nullable] public short?  DbID     { get; set; } // smallint
			/// <summary>
			/// Logical name of the file.
			/// </summary>
			[Column("name"),     NotNull    ] public string  Name     { get; set; } = null!; // sysname
			/// <summary>
			/// Name of the physical device. This includes the full path of the file.
			/// </summary>
			[Column("filename"),    Nullable] public string? FileName { get; set; } // nvarchar(260)
		}

		/// <summary>
		/// <para><strong>sys.syscacheobjects (Transact-SQL)</strong></para>
		/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)</para>
		/// <para>Contains information about how the cache is used.<br/>
		/// <note type='important'><br/>
		/// This SQL Server 2000 system table is included as a view for backward compatibility. We  recommend that you use the current SQL Server system views instead. To find the equivalent system view or views, see <a href='https://docs.microsoft.com/en-us/sql/relational-databases/relational-databases/system-tables/mapping-system-tables-to-system-views-transact-sql'>Mapping System Tables to System Views (Transact-SQL)</a>. This feature will be removed in a future version of Microsoft SQL Server. Avoid using this feature in new development work, and plan to modify applications that currently use this feature.<br/>
		/// </note></para><br/>
		/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-compatibility-views/sys-syscacheobjects-transact-sql'>sys.syscacheobjects</a>.</para>
		/// </summary>
		[Table(Schema="sys", Name="syscacheobjects", IsView=true)]
		public partial class CacheObject
		{
			/// <summary>
			/// Bucket ID. Value indicates a range from 0 through (directory size - 1). Directory size is the size of the hash table.
			/// </summary>
			[Column("bucketid"),     NotNull    ] public int     BucketID     { get; set; } // int
			/// <summary>
			/// Type of object in the cache:<br/><br/> Compiled plan<br/><br/> Executable plan<br/><br/> Parse tree<br/><br/> Cursor<br/><br/> Extended stored procedure
			/// </summary>
			[Column("cacheobjtype"), NotNull    ] public string  CacheObjType { get; set; } = null!; // nvarchar(17)
			/// <summary>
			/// Type of object:<br/><br/> Stored procedure<br/><br/> Prepared statement<br/><br/> Ad hoc query (Transact\-SQL submitted as language events from the <strong>sqlcmd</strong> or <strong>osql</strong> utilities, instead of remote procedure calls)<br/><br/> ReplProc (replication procedure)<br/><br/> Trigger<br/><br/> View<br/><br/> Default<br/><br/> User table<br/><br/> System table<br/><br/> Check<br/><br/> Rule
			/// </summary>
			[Column("objtype"),      NotNull    ] public string  ObjType      { get; set; } = null!; // nvarchar(8)
			/// <summary>
			/// One of the main keys used for looking up an object in the cache. This is the object ID stored in <strong>sysobjects</strong> for database objects (procedures, views, triggers, and so on). For cache objects such as ad hoc or prepared SQL, <strong>objid</strong> is an internally generated value.
			/// </summary>
			[Column("objid"),           Nullable] public int?    ObjID        { get; set; } // int
			/// <summary>
			/// Database ID in which the cache object was compiled.
			/// </summary>
			[Column("dbid"),            Nullable] public short?  DbID         { get; set; } // smallint
			/// <summary>
			/// Database ID from which the query is executed.<br/><br/> For most objects, <strong>dbidexec</strong> has the same value as <strong>dbid</strong>.<br/><br/> For system views, <strong>dbidexec</strong> is the database ID from which the query is executed.<br/><br/> For ad hoc queries, <strong>dbidexec</strong> is 0. This means <strong>dbidexec</strong> has the same value as <strong>dbid</strong>.
			/// </summary>
			[Column("dbidexec"),        Nullable] public short?  DbIDExec     { get; set; } // smallint
			/// <summary>
			/// Indicates the creator of the plan for ad hoc query plans and prepared plans.<br/><br/> -2 = The batch submitted does not depend on implicit name resolution and can be shared among different users. This is the preferred method. Any other value represents the user ID of the user submitting the query in the database.<br/><br/> Overflows or returns NULL if the number of users and roles exceeds 32,767.
			/// </summary>
			[Column("uid"),             Nullable] public short?  UID          { get; set; } // smallint
			/// <summary>
			/// Number of other cache objects referencing this cache object. A count of 1 is the base.
			/// </summary>
			[Column("refcounts"),    NotNull    ] public int     RefCounts    { get; set; } // int
			/// <summary>
			/// Number of times this cache object has been used since inception.
			/// </summary>
			[Column("usecounts"),    NotNull    ] public int     UseCounts    { get; set; } // int
			/// <summary>
			/// Number of pages consumed by the cache object.
			/// </summary>
			[Column("pagesused"),       Nullable] public int?    PagesUsed    { get; set; } // int
			/// <summary>
			/// SET option settings that affect a compiled plan. These settings are part of the cache key. Changes to values in this column indicate users have modified SET options. These options include the following:<br/><br/> <strong>ANSI_PADDING</strong><br/><br/> <strong>FORCEPLAN</strong><br/><br/> <strong>CONCAT_NULL_YIELDS_NULL</strong><br/><br/> <strong>ANSI_WARNINGS</strong><br/><br/> <strong>ANSI_NULLS</strong><br/><br/> <strong>QUOTED_IDENTIFIER</strong><br/><br/> <strong>ANSI_NULL_DFLT_ON</strong><br/><br/> <strong>ANSI_NULL_DFLT_OFF</strong>
			/// </summary>
			[Column("setopts"),         Nullable] public int?    SetOptions   { get; set; } // int
			/// <summary>
			/// Language ID. ID of the language of the connection that created the cache object.
			/// </summary>
			[Column("langid"),          Nullable] public short?  LangID       { get; set; } // smallint
			/// <summary>
			/// Date format of the connection that created the cache object.
			/// </summary>
			[Column("dateformat"),      Nullable] public short?  DateFormat   { get; set; } // smallint
			/// <summary>
			/// Indicates whether the cache object is a cursor plan. Currently, only the least significant bit is used.
			/// </summary>
			[Column("status"),          Nullable] public int?    Status       { get; set; } // int
			/// <summary>
			/// For backward compatibility only. Always returns 0.
			/// </summary>
			[Column("lasttime"),        Nullable] public long?   LastTime     { get; set; } // bigint
			/// <summary>
			/// For backward compatibility only. Always returns 0.
			/// </summary>
			[Column("maxexectime"),     Nullable] public long?   MaxExecTime  { get; set; } // bigint
			/// <summary>
			/// For backward compatibility only. Always returns 0.
			/// </summary>
			[Column("avgexectime"),     Nullable] public long?   AvgExecTime  { get; set; } // bigint
			/// <summary>
			/// For backward compatibility only. Always returns 0.
			/// </summary>
			[Column("lastreads"),       Nullable] public long?   LastReads    { get; set; } // bigint
			/// <summary>
			/// For backward compatibility only. Always returns 0.
			/// </summary>
			[Column("lastwrites"),      Nullable] public long?   LastWrites   { get; set; } // bigint
			/// <summary>
			/// Length in bytes of the procedure definition or batch submitted.
			/// </summary>
			[Column("sqlbytes"),        Nullable] public int?    SqlBytes     { get; set; } // int
			/// <summary>
			/// Module definition or the first 3900 characters of the batch submitted.
			/// </summary>
			[Column("sql"),             Nullable] public string? Sql          { get; set; } // nvarchar(3900)
		}

		/// <summary>
		/// <para><strong>sys.syscharsets (Transact-SQL)</strong></para>
		/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions) √ Azure SQL Database √ Azure SQL Managed Instance √ Azure Synapse Analytics √ Analytics Platform System (PDW)</para>
		/// <para>Contains one row for each character set and sort order defined for use by the SQL Server Database Engine. One of the sort orders is marked in <strong>sysconfigures</strong> as the default sort order. This is the only one actually being used.</para><br/>
		/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-compatibility-views/sys-syscharsets-transact-sql'>sys.syscharsets</a>.</para>
		/// </summary>
		[Table(Schema="sys", Name="syscharsets", IsView=true)]
		public partial class Charset
		{
			/// <summary>
			/// Type of entity this row represents:<br/><br/> 1001 = Character set.<br/><br/> 2001 = Sort order.
			/// </summary>
			[Column("type"),             NotNull    ] public short   TypeColumn       { get; set; } // smallint
			/// <summary>
			/// Unique ID for the character set or sort order. Note sort orders and character sets cannot share the same ID number. The ID range of 1 through 240 is reserved for use by the Database Engine.
			/// </summary>
			[Column("id"),               NotNull    ] public byte    ID               { get; set; } // tinyint
			/// <summary>
			/// If the row represents a character set, this field is unused. If the row represents a sort order, this field is the ID of the character set that the sort order is built on. It is assumed a character set row with this ID exists in this table.
			/// </summary>
			[Column("csid"),             NotNull    ] public byte    CSID             { get; set; } // tinyint
			/// <summary>
			/// Internal system status information bits.
			/// </summary>
			[Column("status"),              Nullable] public short?  Status           { get; set; } // smallint
			/// <summary>
			/// Unique name for the character set or sort order. This field must contain only the letters A-Z or a-z, numbers 0 - 9, and underscores(_); and it must start with a letter.
			/// </summary>
			[Column("name"),             NotNull    ] public string  Name             { get; set; } = null!; // sysname
			/// <summary>
			/// Optional description of the features of the character set or sort order.
			/// </summary>
			[Column("description"),      NotNull    ] public string  Description      { get; set; } = null!; // nvarchar(255)
			/// <summary>
			/// Identified for informational purposes only. Not supported. Future compatibility is not guaranteed.
			/// </summary>
			[Column("binarydefinition"),    Nullable] public byte[]? BinaryDefinition { get; set; } // varbinary(6000)
			/// <summary>
			/// Internal definition of the character set or sort order. The structure of the data in this field depends on the type.
			/// </summary>
			[Column("definition"),          Nullable] public byte[]? Definition       { get; set; } // image
		}

		/// <summary>
		/// <para><strong>sys.syscolumns (Transact-SQL)</strong></para>
		/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions) √ Azure SQL Managed Instance √ Azure Synapse Analytics √ Analytics Platform System (PDW)</para>
		/// <para>Returns one row for every column in every table and view, and a row for each parameter in a stored procedure in the database.<br/>
		/// <note type='important'><br/>
		/// This SQL Server 2000 system table is included as a view for backward compatibility. We  recommend that you use the current SQL Server system views instead. To find the equivalent system view or views, see <a href='https://docs.microsoft.com/en-us/sql/relational-databases/relational-databases/system-tables/mapping-system-tables-to-system-views-transact-sql'>Mapping System Tables to System Views (Transact-SQL)</a>. This feature will be removed in a future version of Microsoft SQL Server. Avoid using this feature in new development work, and plan to modify applications that currently use this feature.<br/>
		/// </note></para><br/>
		/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-compatibility-views/sys-syscolumns-transact-sql'>sys.syscolumns</a>.</para>
		/// </summary>
		[Table(Schema="sys", Name="syscolumns", IsView=true)]
		public partial class Column
		{
			/// <summary>
			/// Name of the column or procedure parameter.
			/// </summary>
			[Column("name"),           Nullable] public string? Name        { get; set; } // sysname
			/// <summary>
			/// Object ID of the table to which this column belongs, or the ID of the stored procedure with which this parameter is associated.
			/// </summary>
			[Column("id"),          NotNull    ] public int     ID          { get; set; } // int
			/// <summary>
			/// Physical storage type from <strong>sys.types</strong>.
			/// </summary>
			[Column("xtype"),       NotNull    ] public byte    XType       { get; set; } // tinyint
			/// <summary>
			/// Identified for informational purposes only. Not supported. Future compatibility is not guaranteed.
			/// </summary>
			[Column("typestat"),       Nullable] public byte?   TypeStat    { get; set; } // tinyint
			/// <summary>
			/// ID of extended user-defined data type. Overflows or returns NULL if the number of data types exceeds 32,767.
			/// </summary>
			[Column("xusertype"),      Nullable] public short?  XUserType   { get; set; } // smallint
			/// <summary>
			/// Maximum physical storage length from <strong>sys</strong>.<strong>types</strong>.
			/// </summary>
			[Column("length"),      NotNull    ] public short   Length      { get; set; } // smallint
			/// <summary>
			/// Identified for informational purposes only. Not supported. Future compatibility is not guaranteed.
			/// </summary>
			[Column("xprec"),       NotNull    ] public byte    XPrec       { get; set; } // tinyint
			/// <summary>
			/// Identified for informational purposes only. Not supported. Future compatibility is not guaranteed.
			/// </summary>
			[Column("xscale"),      NotNull    ] public byte    XScale      { get; set; } // tinyint
			/// <summary>
			/// Column or parameter ID.
			/// </summary>
			[Column("colid"),          Nullable] public short?  ColumnID    { get; set; } // smallint
			/// <summary>
			/// Identified for informational purposes only. Not supported. Future compatibility is not guaranteed.
			/// </summary>
			[Column("xoffset"),        Nullable] public short?  XOffset     { get; set; } // smallint
			/// <summary>
			/// Identified for informational purposes only. Not supported. Future compatibility is not guaranteed.
			/// </summary>
			[Column("bitpos"),         Nullable] public byte?   BitPos      { get; set; } // tinyint
			/// <summary>
			/// Identified for informational purposes only. Not supported. Future compatibility is not guaranteed.
			/// </summary>
			[Column("reserved"),       Nullable] public byte?   Reserved    { get; set; } // tinyint
			/// <summary>
			/// Identified for informational purposes only. Not supported. Future compatibility is not guaranteed.
			/// </summary>
			[Column("colstat"),        Nullable] public short?  ColStat     { get; set; } // smallint
			/// <summary>
			/// ID of the default for this column.
			/// </summary>
			[Column("cdefault"),    NotNull    ] public int     CDefault    { get; set; } // int
			/// <summary>
			/// ID of the rule or CHECK constraint for this column.
			/// </summary>
			[Column("domain"),      NotNull    ] public int     Domain      { get; set; } // int
			/// <summary>
			/// Subprocedure number when the procedure is grouped.<br/><br/> 0 = Nonprocedure entries
			/// </summary>
			[Column("number"),         Nullable] public short?  Number      { get; set; } // smallint
			/// <summary>
			/// Identified for informational purposes only. Not supported. Future compatibility is not guaranteed.
			/// </summary>
			[Column("colorder"),       Nullable] public short?  ColorDer    { get; set; } // smallint
			/// <summary>
			/// Identified for informational purposes only. Not supported. Future compatibility is not guaranteed.
			/// </summary>
			[Column("autoval"),        Nullable] public byte[]? AutoVal     { get; set; } // varbinary(8000)
			/// <summary>
			/// Offset into the row in which this column appears.
			/// </summary>
			[Column("offset"),         Nullable] public short?  Offset      { get; set; } // smallint
			/// <summary>
			/// ID of the collation of the column. NULL for noncharacter-based columns.
			/// </summary>
			[Column("collationid"),    Nullable] public int?    CollationID { get; set; } // int
			/// <summary>
			/// Bitmap used to describe a property of the column or the parameter:<br/><br/> 0x08 = Column allows null values.<br/><br/> 0x10 = ANSI padding was in effect when <strong>varchar</strong> or <strong>varbinary</strong> columns were added. Trailing blanks are preserved for <strong>varchar</strong> and trailing zeros are preserved for <strong>varbinary</strong> columns.<br/><br/> 0x40 = Parameter is an OUTPUT parameter.<br/><br/> 0x80 = Column is an identity column.
			/// </summary>
			[Column("status"),         Nullable] public byte?   Status      { get; set; } // tinyint
			/// <summary>
			/// Physical storage type from <strong>sys</strong>.<strong>types</strong>.
			/// </summary>
			[Column("type"),        NotNull    ] public byte    TypeColumn  { get; set; } // tinyint
			/// <summary>
			/// ID of user-defined data type from <strong>sys.types</strong>. Overflows or returns NULL if the number of data types exceeds 32,767.
			/// </summary>
			[Column("usertype"),       Nullable] public short?  UserType    { get; set; } // smallint
			/// <summary>
			/// Identified for informational purposes only. Not supported. Future compatibility is not guaranteed.
			/// </summary>
			[Column("printfmt"),       Nullable] public string? PrintFmt    { get; set; } // varchar(255)
			/// <summary>
			/// Level of precision for this column.<br/><br/> -1 = <strong>xml</strong> or large value type.
			/// </summary>
			[Column("prec"),           Nullable] public short?  Prec        { get; set; } // smallint
			/// <summary>
			/// Scale for this column.<br/><br/> NULL = Data type is nonnumeric.
			/// </summary>
			[Column("scale"),          Nullable] public int?    Scale       { get; set; } // int
			/// <summary>
			/// Flag indicating whether the column is computed:<br/><br/> 0 = Noncomputed<br/><br/> 1 = Computed
			/// </summary>
			[Column("iscomputed"),     Nullable] public int?    IsComputed  { get; set; } // int
			/// <summary>
			/// Indicates whether the procedure parameter is an output parameter:<br/><br/> 1 = True<br/><br/> 0 = False
			/// </summary>
			[Column("isoutparam"),     Nullable] public int?    IsOutParam  { get; set; } // int
			/// <summary>
			/// Indicates whether the column allows null values:<br/><br/> 1 = True<br/><br/> 0 = False
			/// </summary>
			[Column("isnullable"),     Nullable] public int?    IsNullable  { get; set; } // int
			/// <summary>
			/// Name of the collation of the column. NULL if not a character-based column.
			/// </summary>
			[Column("collation"),      Nullable] public string? Collation   { get; set; } // sysname
		}

		/// <summary>
		/// <para><strong>sys.syscomments (Transact-SQL)</strong></para>
		/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)</para>
		/// <para>Contains entries for each view, rule, default, trigger, CHECK constraint, DEFAULT constraint, and stored procedure within the database. The <strong>text</strong> column contains the original SQL definition statements.<br/>
		/// <note type='important'><br/>
		/// This feature will be removed in a future version of Microsoft SQL Server. Avoid using this feature in new development work, and plan to modify applications that currently use this feature. We recommend that you use sys.sql_modules instead. For more information, see <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-sql-modules-transact-sql'>sys.sql_modules (Transact-SQL)</a>.<br/>
		/// </note></para><br/>
		/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-compatibility-views/sys-syscomments-transact-sql'>sys.syscomments</a>.</para>
		/// </summary>
		[Table(Schema="sys", Name="syscomments", IsView=true)]
		public partial class Comment
		{
			/// <summary>
			/// Object ID to which this text applies.
			/// </summary>
			[Column("id"),         NotNull    ] public int     ID         { get; set; } // int
			/// <summary>
			/// Number within procedure grouping, if grouped.<br/><br/> 0 = Entries are not procedures.
			/// </summary>
			[Column("number"),        Nullable] public short?  Number     { get; set; } // smallint
			/// <summary>
			/// Row sequence number for object definitions that are longer than 4,000 characters.
			/// </summary>
			[Column("colid"),      NotNull    ] public short   ColumnID   { get; set; } // smallint
			/// <summary>
			/// Identified for informational purposes only. Not supported. Future compatibility is not guaranteed.
			/// </summary>
			[Column("status"),     NotNull    ] public short   Status     { get; set; } // smallint
			/// <summary>
			/// The raw bytes of the SQL definition statement.
			/// </summary>
			[Column("ctext"),         Nullable] public byte[]? CText      { get; set; } // varbinary(8000)
			/// <summary>
			/// 0 = User-supplied comment<br/><br/> 1 = System-supplied comment<br/><br/> 4 = Encrypted comment
			/// </summary>
			[Column("texttype"),      Nullable] public short?  TextType   { get; set; } // smallint
			/// <summary>
			/// Identified for informational purposes only. Not supported. Future compatibility is not guaranteed.
			/// </summary>
			[Column("language"),      Nullable] public short?  Language   { get; set; } // smallint
			/// <summary>
			/// Indicates whether the procedure definition is obfuscated.<br/><br/> 0 = Not obfuscated<br/><br/> 1 = Obfuscated<br/><br/> <strong> Important \*\</strong>* To obfuscate stored procedure definitions, use CREATE PROCEDURE with the ENCRYPTION keyword.
			/// </summary>
			[Column("encrypted"),  NotNull    ] public bool    Encrypted  { get; set; } // bit
			/// <summary>
			/// Always returns 0. This indicates that the procedure is compressed.
			/// </summary>
			[Column("compressed"), NotNull    ] public bool    Compressed { get; set; } // bit
			/// <summary>
			/// Actual text of the SQL definition statement.<br/><br/> The semantics of the decoded expression are equivalent to the original text; however, there are no syntactic guarantees. For example, white spaces are removed from the decoded expression.<br/><br/> This SQL Server 2000 (8.x)-compatible view obtains information from current SQL Server structures and can return more characters than the <strong>nvarchar(4000)</strong> definition. <strong>sp_help</strong> returns <strong>nvarchar(4000)</strong> as the data type of the text column. When working with <strong>syscomments</strong> consider using <strong>nvarchar(max)</strong>. For new development work, do not use <strong>syscomments</strong>.
			/// </summary>
			[Column("text"),          Nullable] public string? Text       { get; set; } // nvarchar(4000)
		}

		/// <summary>
		/// <para><strong>sys.sysconfigures (Transact-SQL)</strong></para>
		/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)</para>
		/// <para>Contains one row for each configuration option set by a user. <strong>sysconfigures</strong> contains the configuration options that are defined before the most recent startup of SQL Server, plus any dynamic configuration options set since then.<br/>
		/// <note type='important'><br/>
		/// This SQL Server 2000 system table is included as a view for backward compatibility. We  recommend that you use the current SQL Server system views instead. To find the equivalent system view or views, see <a href='https://docs.microsoft.com/en-us/sql/relational-databases/relational-databases/system-tables/mapping-system-tables-to-system-views-transact-sql'>Mapping System Tables to System Views (Transact-SQL)</a>. This feature will be removed in a future version of Microsoft SQL Server. Avoid using this feature in new development work, and plan to modify applications that currently use this feature.<br/>
		/// </note></para><br/>
		/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-compatibility-views/sys-sysconfigures-transact-sql'>sys.sysconfigures</a>.</para>
		/// </summary>
		[Table(Schema="sys", Name="sysconfigures", IsView=true)]
		public partial class Configure
		{
			/// <summary>
			/// User-modifiable value for the variable. This is used by the Database Engine only if RECONFIGURE has been executed.
			/// </summary>
			[Column("value"),      Nullable] public int?   Value   { get; set; } // int
			/// <summary>
			/// Configuration variable number.
			/// </summary>
			[Column("config"),  NotNull    ] public int    Config  { get; set; } // int
			/// <summary>
			/// Explanation of the configuration option.
			/// </summary>
			[Column("comment"), NotNull    ] public string Comment { get; set; } = null!; // nvarchar(255)
			/// <summary>
			/// Bitmap that indicates the status for the option. Possible values include the following:<br/><br/> 0 = Static. Setting takes effect when the server is restarted.<br/><br/> 1 = Dynamic. Variable takes effect when the RECONFIGURE statement is executed.<br/><br/> 2 = Advanced. Variable is displayed only when the <strong>show advanced options</strong> is set. Setting takes effect when the server is restarted.<br/><br/> 3 = Dynamic and advanced.
			/// </summary>
			[Column("status"),     Nullable] public short? Status  { get; set; } // smallint
		}

		/// <summary>
		/// <para><strong>sys.sysconstraints (Transact-SQL)</strong></para>
		/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)</para>
		/// <para>Contains mappings of constraints to the objects that own the constraints within the database.<br/>
		/// <note type='important'><br/>
		/// This SQL Server 2000 system table is included as a view for backward compatibility. We  recommend that you use the current SQL Server system views instead. To find the equivalent system view or views, see <a href='https://docs.microsoft.com/en-us/sql/relational-databases/relational-databases/system-tables/mapping-system-tables-to-system-views-transact-sql'>Mapping System Tables to System Views (Transact-SQL)</a>. This feature will be removed in a future version of Microsoft SQL Server. Avoid using this feature in new development work, and plan to modify applications that currently use this feature.<br/>
		/// </note></para><br/>
		/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-compatibility-views/sys-sysconstraints-transact-sql'>sys.sysconstraints</a>.</para>
		/// </summary>
		[Table(Schema="sys", Name="sysconstraints", IsView=true)]
		public partial class Constraint
		{
			/// <summary>
			/// Constraint number.
			/// </summary>
			[Column("constid"), NotNull    ] public int    ConstraintID { get; set; } // int
			/// <summary>
			/// ID of the table that owns the constraint.
			/// </summary>
			[Column("id"),      NotNull    ] public int    ID           { get; set; } // int
			/// <summary>
			/// ID of the column on which the constraint is defined.<br/><br/> 0 = Table constraint
			/// </summary>
			[Column("colid"),      Nullable] public short? ColumnID     { get; set; } // smallint
			/// <summary>
			/// Reserved
			/// </summary>
			[Column("spare1"),     Nullable] public byte?  Spare1       { get; set; } // tinyint
			/// <summary>
			/// Pseudo-bit-mask indicating the status. Possible values include the following:<br/><br/> 1 = PRIMARY KEY constraint<br/><br/> 2 = UNIQUE KEY constraint<br/><br/> 3 = FOREIGN KEY constraint<br/><br/> 4 = CHECK constraint<br/><br/> 5 = DEFAULT constraint<br/><br/> 16 = Column-level constraint<br/><br/> 32 = Table-level constraint
			/// </summary>
			[Column("status"),     Nullable] public int?   Status       { get; set; } // int
			/// <summary>
			/// Reserved
			/// </summary>
			[Column("actions"),    Nullable] public int?   Actions      { get; set; } // int
			/// <summary>
			/// Reserved
			/// </summary>
			[Column("error"),      Nullable] public int?   Error        { get; set; } // int
		}

		/// <summary>
		/// <para><strong>sys.syscurconfigs (Transact-SQL)</strong></para>
		/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)</para>
		/// <para>Contains an entry for each current configuration option. Also, this view contains four entries that describe the configuration structure. <strong>syscurconfigs</strong> is built dynamically when queried by a user. For more information, see <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-compatibility-views/sys-sysconfigures-transact-sql'>sys.sysconfigures (Transact-SQL)</a>.<br/>
		/// <note type='important'><br/>
		/// This SQL Server 2000 system table is included as a view for backward compatibility. We  recommend that you use the current SQL Server system views instead. To find the equivalent system view or views, see <a href='https://docs.microsoft.com/en-us/sql/relational-databases/relational-databases/system-tables/mapping-system-tables-to-system-views-transact-sql'>Mapping System Tables to System Views (Transact-SQL)</a>. This feature will be removed in a future version of Microsoft SQL Server. Avoid using this feature in new development work, and plan to modify applications that currently use this feature.<br/>
		/// </note></para><br/>
		/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-compatibility-views/sys-syscurconfigs-transact-sql'>sys.syscurconfigs</a>.</para>
		/// </summary>
		[Table(Schema="sys", Name="syscurconfigs", IsView=true)]
		public partial class CurConfig
		{
			/// <summary>
			/// User-modifiable value for the variable. This is used by the SQL Server Database Engine only if RECONFIGURE has been executed.
			/// </summary>
			[Column("value"),   NotNull    ] public int    Value   { get; set; } // int
			/// <summary>
			/// Configuration variable number.
			/// </summary>
			[Column("config"),     Nullable] public short? Config  { get; set; } // smallint
			/// <summary>
			/// Explanation of the configuration option.
			/// </summary>
			[Column("comment"), NotNull    ] public string Comment { get; set; } = null!; // nvarchar(255)
			/// <summary>
			/// Bitmap indicating the status for the option. Possible values include the following:<br/><br/> 0 = Static. Setting takes effect when the server is restarted.<br/><br/> 1 = Dynamic. Variable takes effect when the RECONFIGURE statement is executed.<br/><br/> 2 = Advanced. Variable is displayed only when the <strong>show advanced options</strong> is set.<br/><br/> 3 = Dynamic and advanced.
			/// </summary>
			[Column("status"),     Nullable] public short? Status  { get; set; } // smallint
		}

		/// <summary>
		/// <para><strong>sys.sysdatabases (Transact-SQL)</strong></para>
		/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions) √ Azure SQL Managed Instance √ Azure Synapse Analytics √ Analytics Platform System (PDW)</para>
		/// <para>Contains one row for each database in an instance of Microsoft SQL Server. When SQL Server is first installed, <strong>sysdatabases</strong> contains entries for the <strong>master</strong>, <strong>model</strong>, <strong>msdb</strong>, and <strong>tempdb</strong> databases.<br/>
		/// <note type='important'><br/>
		/// This SQL Server 2000 system table is included as a view for backward compatibility. We  recommend that you use the current SQL Server system views instead. To find the equivalent system view or views, see <a href='https://docs.microsoft.com/en-us/sql/relational-databases/relational-databases/system-tables/mapping-system-tables-to-system-views-transact-sql'>Mapping System Tables to System Views (Transact-SQL)</a>. This feature will be removed in a future version of Microsoft SQL Server. Avoid using this feature in new development work, and plan to modify applications that currently use this feature.<br/>
		/// </note></para><br/>
		/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-compatibility-views/sys-sysdatabases-transact-sql'>sys.sysdatabases</a>.</para>
		/// </summary>
		[Table(Schema="sys", Name="sysdatabases", IsView=true)]
		public partial class Database
		{
			/// <summary>
			/// Database name
			/// </summary>
			[Column("name"),         Nullable] public string?   Name               { get; set; } // sysname
			/// <summary>
			/// Database ID
			/// </summary>
			[Column("dbid"),         Nullable] public short?    DbID               { get; set; } // smallint
			/// <summary>
			/// System ID of the database creator
			/// </summary>
			[Column("sid"),          Nullable] public byte[]?   SID                { get; set; } // varbinary(85)
			/// <summary>
			/// Used internally for locking a database while it is being created.
			/// </summary>
			[Column("mode"),         Nullable] public short?    Mode               { get; set; } // smallint
			/// <summary>
			/// Status bits, some of which can be set by using <a href='https://docs.microsoft.com/en-us/sql/t-sql/statements/alter-database-transact-sql'>ALTER DATABASE</a> as noted:<br/><br/> 1 = <strong>autoclose</strong> (ALTER DATABASE)<br/><br/> 4 = <strong>select into/bulkcopy</strong> (ALTER DATABASE using SET RECOVERY)<br/><br/> 8 = <strong>trunc. log on chkpt</strong> (ALTER DATABASE using SET RECOVERY)<br/><br/> 16 = <strong>torn page detection</strong> (ALTER DATABASE)<br/><br/> 32 = <strong>loading</strong><br/><br/> 64 = <strong>pre recovery</strong><br/><br/> 128 = <strong>recovering</strong><br/><br/> 256 = <strong>not recovered</strong><br/><br/> 512 = <strong>offline</strong> (ALTER DATABASE)<br/><br/> 1024 = <strong>read only</strong> (ALTER DATABASE)<br/><br/> 2048 = <strong>dbo use only</strong> (ALTER DATABASE using SET RESTRICTED_USER)<br/><br/> 4096 = <strong>single user</strong> (ALTER DATABASE)<br/><br/> 32768 = <strong>emergency mode</strong><br/><br/> 65536 = <strong>CHECKSUM</strong> (ALTER DATABASE)<br/><br/> 4194304 = <strong>autoshrink</strong> (ALTER DATABASE)<br/><br/> 1073741824 = <strong>cleanly shutdown</strong><br/><br/> Multiple bits can be ON at the same time.
			/// </summary>
			[Column("status"),       Nullable] public int?      Status             { get; set; } // int
			/// <summary>
			/// 16384 = <strong>ANSI null default</strong> (ALTER DATABASE)<br/><br/> 65536 = <strong>concat null yields null</strong> (ALTER DATABASE)<br/><br/> 131072 = <strong>recursive triggers</strong> (ALTER DATABASE)<br/><br/> 1048576 = <strong>default to local cursor</strong> (ALTER DATABASE)<br/><br/> 8388608 = <strong>quoted identifier</strong> (ALTER DATABASE)<br/><br/> 33554432 = <strong>cursor close on commit</strong> (ALTER DATABASE)<br/><br/> 67108864 = <strong>ANSI nulls</strong> (ALTER DATABASE)<br/><br/> 268435456 = <strong>ANSI warnings</strong> (ALTER DATABASE)<br/><br/> 536870912 = <strong>full text enabled</strong> (set by using <strong>sp_fulltext_database</strong>)
			/// </summary>
			[Column("status2"),      Nullable] public int?      Status2            { get; set; } // int
			/// <summary>
			/// Creation date
			/// </summary>
			[Column("crdate"),    NotNull    ] public DateTime  Crdate             { get; set; } // datetime
			/// <summary>
			/// Reserved for future use.
			/// </summary>
			[Column("reserved"),     Nullable] public DateTime? Reserved           { get; set; } // datetime
			/// <summary>
			/// Contains a bitmap of information used for replication:<br/><br/> 1 = Published for snapshot or transactional replication.<br/><br/> 2 = Subscribed to a snapshot or transactional publication.<br/><br/> 4 = Published for merge replication.<br/><br/> 8 = Subscribed to a merge publication.<br/><br/> 16 = Distribution database.
			/// </summary>
			[Column("category"),     Nullable] public int?      Category           { get; set; } // int
			/// <summary>
			/// Compatibility level for the database. For more information, see <a href='https://docs.microsoft.com/en-us/sql/t-sql/statements/alter-database-transact-sql-compatibility-level'>ALTER DATABASE Compatibility Level (Transact-SQL)</a>.
			/// </summary>
			[Column("cmptlevel"), NotNull    ] public byte      CompatibilityLevel { get; set; } // tinyint
			/// <summary>
			/// Operating-system path and name for the primary file for the database.<br/><br/> <strong>filename</strong> is visible to <strong>dbcreator</strong>, <strong>sysadmin</strong>, the database owner with CREATE ANY DATABASE permissions, or grantees that have any one of the following permissions: ALTER ANY DATABASE, CREATE ANY DATABASE, VIEW ANY DEFINITION. To return the path and file name, query the <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-compatibility-views/sys-sysfiles-transact-sql'>sys.sysfiles</a> compatibility view, or the <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-database-files-transact-sql'>sys.database_files</a> view.
			/// </summary>
			[Column("filename"),     Nullable] public string?   FileName           { get; set; } // nvarchar(260)
			/// <summary>
			/// Internal version number of the SQL Server code with which the database was created. Identified for informational purposes only. Not supported. Future compatibility is not guaranteed.
			/// </summary>
			[Column("version"),      Nullable] public short?    Version            { get; set; } // smallint
		}

		/// <summary>
		/// <para><strong>sys.sysdepends (Transact-SQL)</strong></para>
		/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)</para>
		/// <para>Contains dependency information between objects (views, procedures, and triggers) in the database, and the objects (tables, views, and procedures) that are contained in their definition.<br/>
		/// <note type='important'><br/>
		/// This SQL Server 2000 system table is included as a view for backward compatibility. We  recommend that you use the current SQL Server system views instead. To find the equivalent system view or views, see <a href='https://docs.microsoft.com/en-us/sql/relational-databases/relational-databases/system-tables/mapping-system-tables-to-system-views-transact-sql'>Mapping System Tables to System Views (Transact-SQL)</a>. This feature will be removed in a future version of Microsoft SQL Server. Avoid using this feature in new development work, and plan to modify applications that currently use this feature.<br/>
		/// </note></para><br/>
		/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-compatibility-views/sys-sysdepends-transact-sql'>sys.sysdepends</a>.</para>
		/// </summary>
		[Table(Schema="sys", Name="sysdepends", IsView=true)]
		public partial class Depend
		{
			/// <summary>
			/// Object ID.
			/// </summary>
			[Column("id"),        NotNull    ] public int    ID        { get; set; } // int
			/// <summary>
			/// Dependent object ID.
			/// </summary>
			[Column("depid"),     NotNull    ] public int    DepID     { get; set; } // int
			/// <summary>
			/// Procedure number.
			/// </summary>
			[Column("number"),       Nullable] public short? Number    { get; set; } // smallint
			/// <summary>
			/// Dependent procedure number.
			/// </summary>
			[Column("depnumber"),    Nullable] public short? DepNumber { get; set; } // smallint
			/// <summary>
			/// Identified for informational purposes only. Not supported. Future compatibility is not guaranteed.
			/// </summary>
			[Column("status"),       Nullable] public short? Status    { get; set; } // smallint
			/// <summary>
			/// Identifies the dependent object type:<br/><br/> 0 = Object or column (non-schema-bound references only<br/><br/> 1 = Object or column (schema-bound references)
			/// </summary>
			[Column("deptype"),   NotNull    ] public byte   DepType   { get; set; } // tinyint
			/// <summary>
			/// Identified for informational purposes only. Not supported. Future compatibility is not guaranteed.
			/// </summary>
			[Column("depdbid"),      Nullable] public short? DepDbID   { get; set; } // smallint
			/// <summary>
			/// Identified for informational purposes only. Not supported. Future compatibility is not guaranteed.
			/// </summary>
			[Column("depsiteid"),    Nullable] public short? DepSiteID { get; set; } // smallint
			/// <summary>
			/// 1 = Object is used in a SELECT * statement.<br/><br/> 0 = No.
			/// </summary>
			[Column("selall"),    NotNull    ] public bool   SelectAll { get; set; } // bit
			/// <summary>
			/// 1 = Object is being updated.<br/><br/> 0 = No.
			/// </summary>
			[Column("resultobj"), NotNull    ] public bool   ResultObj { get; set; } // bit
			/// <summary>
			/// 1 = The object is being read.<br/><br/> 0 = No.
			/// </summary>
			[Column("readobj"),   NotNull    ] public bool   ReadObj   { get; set; } // bit
		}

		/// <summary>
		/// <para><strong>sys.sysdevices (Transact-SQL)</strong></para>
		/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)</para>
		/// <para>Contains one row for each disk backup file, tape backup file, and database file.<br/>
		/// <note type='important'><br/>
		/// This SQL Server 2000 system table is included as a view for backward compatibility. We  recommend that you use the current SQL Server system views instead. To find the equivalent system view or views, see <a href='https://docs.microsoft.com/en-us/sql/relational-databases/relational-databases/system-tables/mapping-system-tables-to-system-views-transact-sql'>Mapping System Tables to System Views (Transact-SQL)</a>. This feature will be removed in a future version of Microsoft SQL Server. Avoid using this feature in new development work, and plan to modify applications that currently use this feature.<br/>
		/// </note></para><br/>
		/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-compatibility-views/sys-sysdevices-transact-sql'>sys.sysdevices</a>.</para>
		/// </summary>
		[Table(Schema="sys", Name="sysdevices", IsView=true)]
		public partial class Device
		{
			/// <summary>
			/// Logical name of the backup file or database file.
			/// </summary>
			[Column("name"),      NotNull    ] public string  Name           { get; set; } = null!; // sysname
			/// <summary>
			/// Size of the file in 2-kilobyte (KB) pages.
			/// </summary>
			[Column("size"),         Nullable] public int?    Size           { get; set; } // int
			/// <summary>
			/// Maintained for backward compatibility only.
			/// </summary>
			[Column("low"),          Nullable] public int?    Low            { get; set; } // int
			/// <summary>
			/// Maintained for backward compatibility only.
			/// </summary>
			[Column("high"),         Nullable] public int?    High           { get; set; } // int
			/// <summary>
			/// Bitmap indicating the type of device:<br/><br/> 1 = Default disk<br/><br/> 2 = Physical disk<br/><br/> 4 = Logical disk<br/><br/> 8 = Skip header<br/><br/> 16 = Backup file<br/><br/> 32 = Serial writes<br/><br/> 4096 = Read-only
			/// </summary>
			[Column("status"),       Nullable] public short?  Status         { get; set; } // smallint
			/// <summary>
			/// Controller type:<br/><br/> 0 = Non-CD-ROM database file<br/><br/> 2 = Disk backup file<br/><br/> 3 - 4 = Diskette backup file<br/><br/> 5 = Tape backup file<br/><br/> 6 = Named-pipe file
			/// </summary>
			[Column("cntrltype"),    Nullable] public short?  ControllerType { get; set; } // smallint
			/// <summary>
			/// Name of the physical file.
			/// </summary>
			[Column("phyname"),      Nullable] public string? PhysicalName   { get; set; } // nvarchar(260)
		}

		/// <summary>
		/// <para><strong>sys.systypes (Transact-SQL)</strong></para>
		/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions) √ Azure SQL Database √ Azure SQL Managed Instance √ Azure Synapse Analytics √ Analytics Platform System (PDW)</para>
		/// <para>Returns one row for each system-supplied and each user-defined data type defined in the database.<br/>
		/// <note type='important'><br/>
		/// This SQL Server 2000 system table is included as a view for backward compatibility. We  recommend that you use the current SQL Server system views instead. To find the equivalent system view or views, see <a href='https://docs.microsoft.com/en-us/sql/relational-databases/relational-databases/system-tables/mapping-system-tables-to-system-views-transact-sql'>Mapping System Tables to System Views (Transact-SQL)</a>. This feature will be removed in a future version of Microsoft SQL Server. Avoid using this feature in new development work, and plan to modify applications that currently use this feature.<br/>
		/// </note></para><br/>
		/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-compatibility-views/sys-systypes-transact-sql'>sys.systypes</a>.</para>
		/// </summary>
		[Table(Schema="sys", Name="systypes", IsView=true)]
		public partial class ETable
		{
			/// <summary>
			/// Data type name.
			/// </summary>
			[Column("name"),        NotNull    ] public string  Name        { get; set; } = null!; // sysname
			/// <summary>
			/// Physical storage type.
			/// </summary>
			[Column("xtype"),       NotNull    ] public byte    XType       { get; set; } // tinyint
			/// <summary>
			/// Identified for informational purposes only. Not supported. Future compatibility is not guaranteed.
			/// </summary>
			[Column("status"),         Nullable] public byte?   Status      { get; set; } // tinyint
			/// <summary>
			/// Extended user type. Overflows or returns NULL if the number of data types exceeds 32,767.
			/// </summary>
			[Column("xusertype"),      Nullable] public short?  XUserType   { get; set; } // smallint
			/// <summary>
			/// Physical length of the data type.
			/// </summary>
			[Column("length"),      NotNull    ] public short   Length      { get; set; } // smallint
			/// <summary>
			/// Internal precision, as used by the server. Not to be used in queries.
			/// </summary>
			[Column("xprec"),       NotNull    ] public byte    XPrec       { get; set; } // tinyint
			/// <summary>
			/// Internal scale, as used by the server. Not to be used in queries.
			/// </summary>
			[Column("xscale"),      NotNull    ] public byte    XScale      { get; set; } // tinyint
			/// <summary>
			/// ID of the stored procedure that contains integrity checks for this data type.
			/// </summary>
			[Column("tdefault"),    NotNull    ] public int     Tdefault    { get; set; } // int
			/// <summary>
			/// ID of the stored procedure that contains integrity checks for this data type.
			/// </summary>
			[Column("domain"),      NotNull    ] public int     Domain      { get; set; } // int
			/// <summary>
			/// Schema ID of the owner of the type.<br/><br/> For databases upgraded from an earlier version of SQL Server, the schema ID is equal to the user ID of the owner.<br/><br/> <strong> Important \*\</strong>* If you use any of the following SQL Server DDL statements, you must use the <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-types-transact-sql'>sys.types</a> catalog view instead of <strong>sys.systypes</strong>.<br/><br/> ALTER AUTHORIZATION ON TYPE<br/><br/> CREATE TYPE<br/><br/> Overflows or returns NULL if the number of users and roles exceeds 32,767.
			/// </summary>
			[Column("uid"),            Nullable] public short?  UID         { get; set; } // smallint
			/// <summary>
			/// Identified for informational purposes only. Not supported. Future compatibility is not guaranteed.
			/// </summary>
			[Column("reserved"),       Nullable] public short?  Reserved    { get; set; } // smallint
			/// <summary>
			/// If character based, <strong>collationid</strong> is the id of the collation of the current database; otherwise, it is NULL.
			/// </summary>
			[Column("collationid"),    Nullable] public int?    CollationID { get; set; } // int
			/// <summary>
			/// User type ID. Overflows or returns NULL if the number of data types exceeds 32,767.
			/// </summary>
			[Column("usertype"),       Nullable] public short?  UserType    { get; set; } // smallint
			/// <summary>
			/// Variable-length data type.<br/><br/> 1 = True<br/><br/> 0 = False
			/// </summary>
			[Column("variable"),    NotNull    ] public bool    Variable    { get; set; } // bit
			/// <summary>
			/// Indicates the default nullability for this data type. This default value is overridden by if nullability is specified by using <a href='https://docs.microsoft.com/en-us/sql/t-sql/statements/create-table-transact-sql'>CREATE TABLE</a> or <a href='https://docs.microsoft.com/en-us/sql/t-sql/statements/alter-table-transact-sql'>ALTER TABLE</a>.
			/// </summary>
			[Column("allownulls"),     Nullable] public bool?   Allownulls  { get; set; } // bit
			/// <summary>
			/// Physical storage data type.
			/// </summary>
			[Column("type"),        NotNull    ] public byte    TypeColumn  { get; set; } // tinyint
			/// <summary>
			/// Identified for informational purposes only. Not supported. Future compatibility is not guaranteed.
			/// </summary>
			[Column("printfmt"),       Nullable] public string? PrintFmt    { get; set; } // varchar(255)
			/// <summary>
			/// Level of precision for this data type.<br/><br/> -1 = <strong>xml</strong> or large value types.
			/// </summary>
			[Column("prec"),           Nullable] public short?  Prec        { get; set; } // smallint
			/// <summary>
			/// Scale for this data type, based on precision.<br/><br/> NULL = Data type is nonnumeric.
			/// </summary>
			[Column("scale"),          Nullable] public byte?   Scale       { get; set; } // tinyint
			/// <summary>
			/// If character based, <strong>collation</strong> is the collation of the current database; otherwise, it is NULL.
			/// </summary>
			[Column("collation"),      Nullable] public string? Collation   { get; set; } // sysname
		}

		/// <summary>
		/// <para><strong>sys.sysfiles (Transact-SQL)</strong></para>
		/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)</para>
		/// <para>Contains one row for each file in a database.<br/>
		/// <note type='important'><br/>
		/// This SQL Server 2000 system table is included as a view for backward compatibility. We  recommend that you use the current SQL Server system views instead. To find the equivalent system view or views, see <a href='https://docs.microsoft.com/en-us/sql/relational-databases/relational-databases/system-tables/mapping-system-tables-to-system-views-transact-sql'>Mapping System Tables to System Views (Transact-SQL)</a>. This feature will be removed in a future version of Microsoft SQL Server. Avoid using this feature in new development work, and plan to modify applications that currently use this feature.<br/>
		/// </note></para><br/>
		/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-compatibility-views/sys-sysfiles-transact-sql'>sys.sysfiles</a>.</para>
		/// </summary>
		[Table(Schema="sys", Name="sysfiles", IsView=true)]
		public partial class File
		{
			/// <summary>
			/// File identification number unique for each database.
			/// </summary>
			[Column("fileid"),      Nullable] public short?  FileID   { get; set; } // smallint
			/// <summary>
			/// File group identification number.
			/// </summary>
			[Column("groupid"),     Nullable] public short?  GroupID  { get; set; } // smallint
			/// <summary>
			/// Size of the file, in 8-KB pages.
			/// </summary>
			[Column("size"),     NotNull    ] public int     Size     { get; set; } // int
			/// <summary>
			/// Maximum file size, in 8-KB pages.<br/><br/> 0 = No growth.<br/><br/> -1 = File will grow until the disk is full.<br/><br/> 268435456 = Log file will grow to a maximum size of 2 TB.<br/><br/> Note: Databases that are upgraded with an unlimited log file size will report -1 for the maximum size of the log file.
			/// </summary>
			[Column("maxsize"),  NotNull    ] public int     MaxSize  { get; set; } // int
			/// <summary>
			/// Growth size of the database. Can be either the number of pages or the percentage of file size, depending on value of <strong>status</strong>.<br/><br/> 0 = No growth.
			/// </summary>
			[Column("growth"),   NotNull    ] public int     Growth   { get; set; } // int
			/// <summary>
			/// Status bits for the <strong>growth</strong> value in either megabytes (MB) or kilobytes (KB).<br/><br/> 0x2 = Disk file.<br/><br/> 0x40 = Log file.<br/><br/> 0x100000 = Growth. This value is a percentage and not the number of pages.
			/// </summary>
			[Column("status"),      Nullable] public int?    Status   { get; set; } // int
			/// <summary>
			/// Reserved.
			/// </summary>
			[Column("perf"),        Nullable] public int?    Perf     { get; set; } // int
			/// <summary>
			/// Logical name of the file.
			/// </summary>
			[Column("name"),     NotNull    ] public string  Name     { get; set; } = null!; // sysname
			/// <summary>
			/// Name of the physical device. This includes the full path of the file.
			/// </summary>
			[Column("filename"),    Nullable] public string? FileName { get; set; } // nvarchar(260)
		}

		/// <summary>
		/// <para><strong>sys.sysfilegroups (Transact-SQL)</strong></para>
		/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)</para>
		/// <para>Contains one row for each file group in a database. There is at least one entry in this table that is for the primary file group.<br/>
		/// <note type='important'><br/>
		/// This SQL Server 2000 system table is included as a view for backward compatibility. We  recommend that you use the current SQL Server system views instead. To find the equivalent system view or views, see <a href='https://docs.microsoft.com/en-us/sql/relational-databases/relational-databases/system-tables/mapping-system-tables-to-system-views-transact-sql'>Mapping System Tables to System Views (Transact-SQL)</a>. This feature will be removed in a future version of Microsoft SQL Server. Avoid using this feature in new development work, and plan to modify applications that currently use this feature.<br/>
		/// </note></para><br/>
		/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-compatibility-views/sys-sysfilegroups-transact-sql'>sys.sysfilegroups</a>.</para>
		/// </summary>
		[Table(Schema="sys", Name="sysfilegroups", IsView=true)]
		public partial class FileGroup
		{
			/// <summary>
			/// Group identification number unique for each database.
			/// </summary>
			[Column("groupid"),        Nullable] public short? GroupID     { get; set; } // smallint
			/// <summary>
			/// Reserved
			/// </summary>
			[Column("allocpolicy"),    Nullable] public short? AllocPolicy { get; set; } // smallint
			/// <summary>
			/// 0x8 = Read-only<br/><br/> 0x10 = Default
			/// </summary>
			[Column("status"),         Nullable] public int?   Status      { get; set; } // int
			/// <summary>
			/// Name of the file group.
			/// </summary>
			[Column("groupname"),   NotNull    ] public string GroupName   { get; set; } = null!; // sysname
		}

		/// <summary>
		/// <para><strong>sys.sysforeignkeys (Transact-SQL)</strong></para>
		/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)</para>
		/// <para>Contains information about the FOREIGN KEY constraints that are in the definitions of tables in the database.<br/>
		/// <note type='important'><br/>
		/// This SQL Server 2000 system table is included as a view for backward compatibility. We  recommend that you use the current SQL Server system views instead. To find the equivalent system view or views, see <a href='https://docs.microsoft.com/en-us/sql/relational-databases/relational-databases/system-tables/mapping-system-tables-to-system-views-transact-sql'>Mapping System Tables to System Views (Transact-SQL)</a>. This feature will be removed in a future version of Microsoft SQL Server. Avoid using this feature in new development work, and plan to modify applications that currently use this feature.<br/>
		/// </note></para><br/>
		/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-compatibility-views/sys-sysforeignkeys-transact-sql'>sys.sysforeignkeys</a>.</para>
		/// </summary>
		[Table(Schema="sys", Name="sysforeignkeys", IsView=true)]
		public partial class ForeignKey
		{
			/// <summary>
			/// ID of the FOREIGN KEY constraint.
			/// </summary>
			[Column("constid"), NotNull    ] public int    ConstraintID { get; set; } // int
			/// <summary>
			/// Object ID of the table with the FOREIGN KEY constraint.
			/// </summary>
			[Column("fkeyid"),  NotNull    ] public int    FKeyID       { get; set; } // int
			/// <summary>
			/// Object ID of the table referenced in the FOREIGN KEY constraint.
			/// </summary>
			[Column("rkeyid"),  NotNull    ] public int    RKeyID       { get; set; } // int
			/// <summary>
			/// ID of the referencing column.
			/// </summary>
			[Column("fkey"),       Nullable] public short? FKey         { get; set; } // smallint
			/// <summary>
			/// ID of the referenced column.
			/// </summary>
			[Column("rkey"),       Nullable] public short? RKey         { get; set; } // smallint
			/// <summary>
			/// Position of the column in the reference column list.
			/// </summary>
			[Column("keyno"),      Nullable] public short? KeyNo        { get; set; } // smallint
		}

		/// <summary>
		/// <para><strong>sys.sysfulltextcatalogs (Transact-SQL)</strong></para>
		/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions) √ Azure SQL Managed Instance √ Analytics Platform System (PDW)</para>
		/// <para>Contains information about the full-text catalogs.<br/>
		/// <note type='important'><br/>
		/// This SQL Server 2000 system table is included as a view for backward compatibility. We  recommend that you use the current SQL Server system views instead. To find the equivalent system view or views, see <a href='https://docs.microsoft.com/en-us/sql/relational-databases/relational-databases/system-tables/mapping-system-tables-to-system-views-transact-sql'>Mapping System Tables to System Views (Transact-SQL)</a>. This feature will be removed in a future version of Microsoft SQL Server. Avoid using this feature in new development work, and plan to modify applications that currently use this feature.<br/>
		/// </note></para><br/>
		/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-compatibility-views/sys-sysfulltextcatalogs-transact-sql'>sys.sysfulltextcatalogs</a>.</para>
		/// </summary>
		[Table(Schema="sys", Name="sysfulltextcatalogs", IsView=true)]
		public partial class FullTextCatalog
		{
			/// <summary>
			/// Identifier of the full-text catalog.
			/// </summary>
			[Column("ftcatid"),    Nullable] public short?  FTCatID { get; set; } // smallint
			/// <summary>
			/// Full-text catalog name specified by the user.
			/// </summary>
			[Column("name"),    NotNull    ] public string  Name    { get; set; } = null!; // sysname
			/// <summary>
			/// Identified for informational purposes only. Not supported. Future compatibility is not guaranteed.
			/// </summary>
			[Column("status"),     Nullable] public short?  Status  { get; set; } // smallint
			/// <summary>
			/// Root path specified by the user.<br/><br/> NULL = Path was not specified. The default (installation) path was used.
			/// </summary>
			[Column("path"),       Nullable] public string? Path    { get; set; } // nvarchar(260)
		}

		/// <summary>
		/// <para><strong>sys.sysindexes (Transact-SQL)</strong></para>
		/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)</para>
		/// <para>Contains one row for each index and table in the current database. XML indexes are not supported in this view. Partitioned tables and indexes are not fully supported in this view; use the <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-indexes-transact-sql'>sys.indexes</a> catalog view instead.<br/>
		/// <note type='important'><br/>
		/// This SQL Server 2000 system table is included as a view for backward compatibility. We  recommend that you use the current SQL Server system views instead. To find the equivalent system view or views, see <a href='https://docs.microsoft.com/en-us/sql/relational-databases/relational-databases/system-tables/mapping-system-tables-to-system-views-transact-sql'>Mapping System Tables to System Views (Transact-SQL)</a>. This feature will be removed in a future version of Microsoft SQL Server. Avoid using this feature in new development work, and plan to modify applications that currently use this feature.<br/>
		/// </note></para><br/>
		/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-compatibility-views/sys-sysindexes-transact-sql'>sys.sysindexes</a>.</para>
		/// </summary>
		[Table(Schema="sys", Name="sysindexes", IsView=true)]
		public partial class Index
		{
			/// <summary>
			/// ID of the table to which the index belongs.
			/// </summary>
			[Column("id"),        NotNull    ] public int     ID             { get; set; } // int
			/// <summary>
			/// System-status information.<br/><br/> Identified for informational purposes only. Not supported. Future compatibility is not guaranteed.
			/// </summary>
			[Column("status"),       Nullable] public int?    Status         { get; set; } // int
			/// <summary>
			/// Pointer to the first or root page.<br/><br/> Unused when <strong>indid</strong> = 0.<br/><br/> NULL = Index is partitioned when <strong>indid</strong> > 1.<br/><br/> NULL = Table is partitioned when <strong>indid</strong> is 0 or 1.
			/// </summary>
			[Column("first"),        Nullable] public byte[]? First          { get; set; } // binary(6)
			/// <summary>
			/// ID of the index:<br/><br/> 0 = Heap<br/><br/> 1 = Clustered index<br/><br/> >1 = Nonclustered index
			/// </summary>
			[Column("indid"),        Nullable] public short?  IndexID        { get; set; } // smallint
			/// <summary>
			/// For <strong>indid</strong> >= 1, <strong>root</strong> is the pointer to the root page.<br/><br/> Unused when <strong>indid</strong> = 0.<br/><br/> NULL = Index is partitioned when <strong>indid</strong> > 1.<br/><br/> NULL = Table is partitioned when <strong>indid</strong> is 0 or 1.
			/// </summary>
			[Column("root"),         Nullable] public byte[]? Root           { get; set; } // binary(6)
			/// <summary>
			/// Minimum size of a row.
			/// </summary>
			[Column("minlen"),       Nullable] public short?  MinLen         { get; set; } // smallint
			/// <summary>
			/// Number of keys.
			/// </summary>
			[Column("keycnt"),       Nullable] public short?  KeyCnt         { get; set; } // smallint
			/// <summary>
			/// Filegroup ID on which the object was created.<br/><br/> NULL = Index is partitioned when <strong>indid</strong> > 1.<br/><br/> NULL = Table is partitioned when <strong>indid</strong> is 0 or 1.
			/// </summary>
			[Column("groupid"),      Nullable] public short?  GroupID        { get; set; } // smallint
			/// <summary>
			/// For <strong>indid</strong> = 0 or <strong>indid</strong> = 1, <strong>dpages</strong> is the count of data pages used.<br/><br/> For <strong>indid</strong> > 1, <strong>dpages</strong> is the count of index pages used.<br/><br/> 0 = Index is partitioned when <strong>indid</strong> > 1.<br/><br/> 0 = Table is partitioned when <strong>indid</strong> is 0 or 1.<br/><br/> Does not yield accurate results if row-overflow occurs.
			/// </summary>
			[Column("dpages"),       Nullable] public int?    DPages         { get; set; } // int
			/// <summary>
			/// For <strong>indid</strong> = 0 or <strong>indid</strong> = 1, <strong>reserved</strong> is the count of pages allocated for all indexes and table data.<br/><br/> For <strong>indid</strong> > 1, <strong>reserved</strong> is the count of pages allocated for the index.<br/><br/> 0 = Index is partitioned when <strong>indid</strong> > 1.<br/><br/> 0 = Table is partitioned when <strong>indid</strong> is 0 or 1.<br/><br/> Does not yield accurate results if row-overflow occurs.
			/// </summary>
			[Column("reserved"),     Nullable] public int?    Reserved       { get; set; } // int
			/// <summary>
			/// For <strong>indid</strong> = 0 or <strong>indid</strong> = 1, <strong>used</strong> is the count of the total pages used for all index and table data.<br/><br/> For <strong>indid</strong> > 1, <strong>used</strong> is the count of pages used for the index.<br/><br/> 0 = Index is partitioned when <strong>indid</strong> > 1.<br/><br/> 0 = Table is partitioned when <strong>indid</strong> is 0 or 1.<br/><br/> Does not yield accurate results if row-overflow occurs.
			/// </summary>
			[Column("used"),         Nullable] public int?    Used           { get; set; } // int
			/// <summary>
			/// Data-level row count based on <strong>indid</strong> = 0 and <strong>indid</strong> = 1.<br/><br/> 0 = Index is partitioned when <strong>indid</strong> > 1.<br/><br/> 0 = Table is partitioned when <strong>indid</strong> is 0 or 1.
			/// </summary>
			[Column("rowcnt"),       Nullable] public long?   RowCnt         { get; set; } // bigint
			/// <summary>
			/// Counts the total number of inserted, deleted, or updated rows since the last time statistics were updated for the table.<br/><br/> 0 = Index is partitioned when <strong>indid</strong> > 1.<br/><br/> 0 = Table is partitioned when <strong>indid</strong> is 0 or 1.<br/><br/> In SQL Server 2005 (9.x) and later, <strong>rowmodctr</strong> is not fully compatible with earlier versions. For more information, see Remarks.
			/// </summary>
			[Column("rowmodctr"),    Nullable] public int?    RowModCtr      { get; set; } // int
			/// <summary>
			/// Returns 0.<br/><br/> Identified for informational purposes only. Not supported. Future compatibility is not guaranteed.
			/// </summary>
			[Column("reserved3"),    Nullable] public int?    Reserved3      { get; set; } // int
			/// <summary>
			/// Returns 0.<br/><br/> Identified for informational purposes only. Not supported. Future compatibility is not guaranteed.
			/// </summary>
			[Column("reserved4"),    Nullable] public int?    Reserved4      { get; set; } // int
			/// <summary>
			/// Maximum size of a row
			/// </summary>
			[Column("xmaxlen"),      Nullable] public short?  XMaxLen        { get; set; } // smallint
			/// <summary>
			/// Maximum size of a nonleaf index row.<br/><br/> In SQL Server 2005 (9.x) and later, <strong>maxirow</strong> is not fully compatible with earlier versions.
			/// </summary>
			[Column("maxirow"),      Nullable] public short?  MaxiRow        { get; set; } // smallint
			/// <summary>
			/// Original fill factor value used when the index was created. This value is not maintained; however, it can be helpful if you have to re-create an index and do not remember the fill factor value that was used.
			/// </summary>
			[Column(),               Nullable] public byte?   OrigFillFactor { get; set; } // tinyint
			/// <summary>
			/// Returns 0.<br/><br/> Identified for informational purposes only. Not supported. Future compatibility is not guaranteed.
			/// </summary>
			[Column(),               Nullable] public byte?   StatVersion    { get; set; } // tinyint
			/// <summary>
			/// Returns 0.<br/><br/> Identified for informational purposes only. Not supported. Future compatibility is not guaranteed.
			/// </summary>
			[Column("reserved2"),    Nullable] public int?    Reserved2      { get; set; } // int
			/// <summary>
			/// NULL = Index is partitioned.<br/><br/> Identified for informational purposes only. Not supported. Future compatibility is not guaranteed.
			/// </summary>
			[Column(),               Nullable] public byte[]? FirstIAM       { get; set; } // binary(6)
			/// <summary>
			/// Index implementation flag.<br/><br/> Returns 0.<br/><br/> Identified for informational purposes only. Not supported. Future compatibility is not guaranteed.
			/// </summary>
			[Column("impid"),        Nullable] public short?  ImpID          { get; set; } // smallint
			/// <summary>
			/// Used to constrain the considered lock granularities for an index. For example, to minimize locking cost, a lookup table that is essentially read-only could be set up to do only table-level locking.
			/// </summary>
			[Column("lockflags"),    Nullable] public short?  Lockflags      { get; set; } // smallint
			/// <summary>
			/// Returns 0.<br/><br/> Identified for informational purposes only. Not supported. Future compatibility is not guaranteed.
			/// </summary>
			[Column("pgmodctr"),     Nullable] public int?    PgModCtr       { get; set; } // int
			/// <summary>
			/// List of the column IDs of the columns that make up the index key.<br/><br/> Returns NULL.<br/><br/> To display the index key columns, use <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-compatibility-views/sys-sysindexkeys-transact-sql'>sys.sysindexkeys</a>.
			/// </summary>
			[Column("keys"),         Nullable] public byte[]? Keys           { get; set; } // varbinary(816)
			/// <summary>
			/// Name of the index or statistic. Returns NULL when <strong>indid</strong> = 0. Modify your application to look for a NULL heap name.
			/// </summary>
			[Column("name"),         Nullable] public string? Name           { get; set; } // sysname
			/// <summary>
			/// Statistics binary large object (BLOB).<br/><br/> Returns NULL.
			/// </summary>
			[Column("statblob"),     Nullable] public byte[]? StatBlob       { get; set; } // image
			/// <summary>
			/// Identified for informational purposes only. Not supported. Future compatibility is not guaranteed.
			/// </summary>
			[Column("maxlen"),       Nullable] public int?    MaxLen         { get; set; } // int
			/// <summary>
			/// Data-level row count based on <strong>indid</strong> = 0 and <strong>indid</strong> = 1, and the value is repeated for <strong>indid</strong> >1.
			/// </summary>
			[Column("rows"),         Nullable] public int?    Rows           { get; set; } // int
		}

		/// <summary>
		/// <para><strong>sys.sysindexkeys (Transact-SQL)</strong></para>
		/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)</para>
		/// <para>Contains information about the keys or columns in an index of the database.<br/>
		/// <note type='important'><br/>
		/// This SQL Server 2000 system table is included as a view for backward compatibility. We  recommend that you use the current SQL Server system views instead. To find the equivalent system view or views, see <a href='https://docs.microsoft.com/en-us/sql/relational-databases/relational-databases/system-tables/mapping-system-tables-to-system-views-transact-sql'>Mapping System Tables to System Views (Transact-SQL)</a>. This feature will be removed in a future version of Microsoft SQL Server. Avoid using this feature in new development work, and plan to modify applications that currently use this feature.<br/>
		/// </note></para><br/>
		/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-compatibility-views/sys-sysindexkeys-transact-sql'>sys.sysindexkeys</a>.</para>
		/// </summary>
		[Table(Schema="sys", Name="sysindexkeys", IsView=true)]
		public partial class IndexKey
		{
			/// <summary>
			/// ID of the table.
			/// </summary>
			[Column("id"),    NotNull    ] public int    ID       { get; set; } // int
			/// <summary>
			/// ID of the index.
			/// </summary>
			[Column("indid"),    Nullable] public short? IndexID  { get; set; } // smallint
			/// <summary>
			/// ID of the column.
			/// </summary>
			[Column("colid"),    Nullable] public short? ColumnID { get; set; } // smallint
			/// <summary>
			/// Position of the column in the index.
			/// </summary>
			[Column("keyno"),    Nullable] public short? KeyNo    { get; set; } // smallint
		}

		/// <summary>
		/// <para><strong>sys.syslanguages (Transact-SQL)</strong></para>
		/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions) √ Azure SQL Database √ Azure SQL Managed Instance √ Azure Synapse Analytics √ Analytics Platform System (PDW)</para>
		/// <para>Contains one row for each language present in the instance of SQL Server.</para><br/>
		/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-compatibility-views/sys-syslanguages-transact-sql'>sys.syslanguages</a>.</para>
		/// </summary>
		[Table(Schema="sys", Name="syslanguages", IsView=true)]
		public partial class Language
		{
			/// <summary>
			/// Unique language ID.
			/// </summary>
			[Column("langid"),      NotNull    ] public short   LangID      { get; set; } // smallint
			/// <summary>
			/// Date order, for example, DMY.
			/// </summary>
			[Column("dateformat"),  NotNull    ] public string  DateFormat  { get; set; } = null!; // nchar(3)
			/// <summary>
			/// First day of the week: 1 for Monday, 2 for Tuesday, and so on through 7 for Sunday.
			/// </summary>
			[Column("datefirst"),   NotNull    ] public byte    Datefirst   { get; set; } // tinyint
			/// <summary>
			/// Reserved for system use.
			/// </summary>
			[Column("upgrade"),        Nullable] public int?    Upgrade     { get; set; } // int
			/// <summary>
			/// Official language name, for example, Français.
			/// </summary>
			[Column("name"),        NotNull    ] public string  Name        { get; set; } = null!; // sysname
			/// <summary>
			/// Alternative language name, for example, French.
			/// </summary>
			[Column("alias"),       NotNull    ] public string  Alias       { get; set; } = null!; // sysname
			/// <summary>
			/// Comma-separated list of full-length month names in order from January through December, with each name having up to 20 characters.
			/// </summary>
			[Column("months"),         Nullable] public string? Months      { get; set; } // nvarchar(372)
			/// <summary>
			/// Comma-separated list of short-month names in order from January through December, with each name having up to 9 characters.
			/// </summary>
			[Column("shortmonths"),    Nullable] public string? ShortMonths { get; set; } // nvarchar(132)
			/// <summary>
			/// Comma-separated list of day names in order from Monday through Sunday, with each name having up to 30 characters.
			/// </summary>
			[Column("days"),           Nullable] public string? Days        { get; set; } // nvarchar(217)
			/// <summary>
			/// Microsoft Windows locale ID for the language.
			/// </summary>
			[Column("lcid"),        NotNull    ] public int     Lcid        { get; set; } // int
			/// <summary>
			/// Database Engine message group ID.
			/// </summary>
			[Column("msglangid"),   NotNull    ] public short   MsgLangID   { get; set; } // smallint
		}

		/// <summary>
		/// <para><strong>sys.syslockinfo (Transact-SQL)</strong></para>
		/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)</para>
		/// <para>Contains information about all granted, converting, and waiting lock requests.<br/>
		/// <note type='important'><br/>
		/// This SQL Server 2000 system table is included as a view for backward compatibility. We  recommend that you use the current SQL Server system views instead. To find the equivalent system view or views, see <a href='https://docs.microsoft.com/en-us/sql/relational-databases/relational-databases/system-tables/mapping-system-tables-to-system-views-transact-sql'>Mapping System Tables to System Views (Transact-SQL)</a>. This feature will be removed in a future version of Microsoft SQL Server. Avoid using this feature in new development work, and plan to modify applications that currently use this feature.<br/>
		/// </note><br/>
		/// <note type='important'><br/>
		/// This feature has changed from earlier versions of SQL Server. For more information, see <a href='https://docs.microsoft.com/en-us/sql/database-engine/breaking-changes-to-database-engine-features-in-sql-server-2016'>Breaking Changes to Database Engine Features in SQL Server 2016</a>.<br/>
		/// </note></para><br/>
		/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-compatibility-views/sys-syslockinfo-transact-sql'>sys.syslockinfo</a>.</para>
		/// </summary>
		[Table(Schema="sys", Name="syslockinfo", IsView=true)]
		public partial class LockInfo
		{
			/// <summary>
			/// Textual description of a lock resource. Contains a part of the resource name.
			/// </summary>
			[Column("rsc_text"),           NotNull    ] public string RscText           { get; set; } = null!; // nchar(32)
			/// <summary>
			/// Binary lock resource. Contains the actual lock resource that is contained in the lock manager. This column is included for tools that know about the lock resource format for generating their own formatted lock resource, and for performing self joins on <strong>syslockinfo</strong>.
			/// </summary>
			[Column("rsc_bin"),            NotNull    ] public byte[] RscBin            { get; set; } = null!; // binary(16)
			/// <summary>
			/// Lock value block. Some resource types may include additional data in the lock resource that is not hashed by the lock manager to determine ownership of a particular lock resource. For example, page locks are not owned by a particular object ID. For lock escalation and other purposes. However, the object ID of a page lock may be included in the lock value block.
			/// </summary>
			[Column("rsc_valblk"),         NotNull    ] public byte[] RscValblk         { get; set; } = null!; // binary(16)
			/// <summary>
			/// Database ID associated with the resource.
			/// </summary>
			[Column("rsc_dbid"),           NotNull    ] public short  RscDbID           { get; set; } // smallint
			/// <summary>
			/// Index ID associated with the resource, if appropriate.
			/// </summary>
			[Column("rsc_indid"),          NotNull    ] public short  RscIndid          { get; set; } // smallint
			/// <summary>
			/// Object ID associated with the resource, if appropriate.
			/// </summary>
			[Column("rsc_objid"),          NotNull    ] public int    RscObjID          { get; set; } // int
			/// <summary>
			/// Resource type:<br/><br/> 1 = NULL Resource (not used)<br/><br/> 2 = Database<br/><br/> 3 = File<br/><br/> 4 = Index<br/><br/> 5 = Table<br/><br/> 6 = Page<br/><br/> 7 = Key<br/><br/> 8 = Extent<br/><br/> 9 = RID (Row ID)<br/><br/> 10 = Application
			/// </summary>
			[Column("rsc_type"),           NotNull    ] public byte   RscType           { get; set; } // tinyint
			/// <summary>
			/// Internal resource flags.
			/// </summary>
			[Column("rsc_flag"),           NotNull    ] public byte   RscFlag           { get; set; } // tinyint
			/// <summary>
			/// Lock request mode. This column is the lock mode of the requester and represents either the granted mode, or the convert or waiting mode.<br/><br/> 0 = NULL. No access is granted to the resource. Serves as a placeholder.<br/><br/> 1 = Sch-S (Schema stability). Ensures that a schema element, such as a table or index, is not dropped while any session holds a schema stability lock on the schema element.<br/><br/> 2 = Sch-M (Schema modification). Must be held by any session that wants to change the schema of the specified resource. Ensures that no other sessions are referencing the indicated object.<br/><br/> 3 = S (Shared). The holding session is granted shared access to the resource.<br/><br/> 4 = U (Update). Indicates an update lock acquired on resources that may eventually be updated. It is used to prevent a common form of deadlock that occurs when multiple sessions lock resources for potential update in the future.<br/><br/> 5 = X (Exclusive). The holding session is granted exclusive access to the resource.<br/><br/> 6 = IS (Intent Shared). Indicates the intention to place S locks on some subordinate resource in the lock hierarchy.<br/><br/> 7 = IU (Intent Update). Indicates the intention to place U locks on some subordinate resource in the lock hierarchy.<br/><br/> 8 = IX (Intent Exclusive). Indicates the intention to place X locks on some subordinate resource in the lock hierarchy.<br/><br/> 9 = SIU (Shared Intent Update). Indicates shared access to a resource with the intent of acquiring update locks on subordinate resources in the lock hierarchy.<br/><br/> 10 = SIX (Shared Intent Exclusive). Indicates shared access to a resource with the intent of acquiring exclusive locks on subordinate resources in the lock hierarchy.<br/><br/> 11 = UIX (Update Intent Exclusive). Indicates an update lock hold on a resource with the intent of acquiring exclusive locks on subordinate resources in the lock hierarchy.<br/><br/> 12 = BU. Used by bulk operations.<br/><br/> 13 = RangeS_S (Shared Key-Range and Shared Resource lock). Indicates serializable range scan.<br/><br/> 14 = RangeS_U (Shared Key-Range and Update Resource lock). Indicates serializable update scan.<br/><br/> 15 = RangeI_N (Insert Key-Range and Null Resource lock). Used to test ranges before inserting a new key into an index.<br/><br/> 16 = RangeI_S. Key-Range Conversion lock, created by an overlap of RangeI_N and S locks.<br/><br/> 17 = RangeI_U. Key-Range Conversion lock, created by an overlap of RangeI_N and U locks.<br/><br/> 18 = RangeI_X. Key-Range Conversion lock, created by an overlap of RangeI_N and X locks.<br/><br/> 19 = RangeX_S. Key-Range Conversion lock, created by an overlap of RangeI_N and RangeS_S. locks.<br/><br/> 20 = RangeX_U. Key-Range Conversion lock, created by an overlap of RangeI_N and RangeS_U locks.<br/><br/> 21 = RangeX_X (Exclusive Key-Range and Exclusive Resource lock). This is a conversion lock used when updating a key in a range.
			/// </summary>
			[Column("req_mode"),           NotNull    ] public byte   ReqMode           { get; set; } // tinyint
			/// <summary>
			/// Status of the lock request:<br/><br/> 1 = Granted<br/><br/> 2 = Converting<br/><br/> 3 = Waiting
			/// </summary>
			[Column("req_status"),         NotNull    ] public byte   ReqStatus         { get; set; } // tinyint
			/// <summary>
			/// Lock reference count. Every time a transaction asks for a lock on a particular resource, a reference count is incremented. The lock cannot be released until the reference count equals 0.
			/// </summary>
			[Column("req_refcnt"),         NotNull    ] public short  ReqRefcnt         { get; set; } // smallint
			/// <summary>
			/// Reserved for future used. Always set to 0.
			/// </summary>
			[Column("req_cryrefcnt"),      NotNull    ] public short  ReqCryrefcnt      { get; set; } // smallint
			/// <summary>
			/// Lock lifetime bitmap. During certain query processing strategies, locks must be maintained on resources until the query processor has completed a particular phase of the query. The lock lifetime bitmap is used by the query processor and transaction manager to indicate groups of locks that can be released when a certain phase of a query has finished running. Certain bits in the bitmap are used to indicate locks that are held until the end of a transaction, even if their reference count equals 0.
			/// </summary>
			[Column("req_lifetime"),       NotNull    ] public int    ReqLifetime       { get; set; } // int
			/// <summary>
			/// Internal Microsoft SQL Server Database Engine process ID of the session requesting the lock.
			/// </summary>
			[Column("req_spid"),           NotNull    ] public int    ReqSpid           { get; set; } // int
			/// <summary>
			/// Execution context ID (ECID). Used to indicate which thread in a parallel operation owns a particular lock.
			/// </summary>
			[Column("req_ecid"),           NotNull    ] public int    ReqEcid           { get; set; } // int
			/// <summary>
			/// Type of object associated with the lock:<br/><br/> 1 = Transaction<br/><br/> 2 = Cursor<br/><br/> 3 = Session<br/><br/> 4 = ExSession<br/><br/> Note that 3 and 4 represent a special version of session locks, tracking database and file group locks, respectively.
			/// </summary>
			[Column("req_ownertype"),      NotNull    ] public short  ReqOwnertype      { get; set; } // smallint
			/// <summary>
			/// Unique transaction ID used in <strong>syslockinfo</strong> and in profiler event
			/// </summary>
			[Column("req_transactionID"),     Nullable] public long?  ReqTransactionID  { get; set; } // bigint
			/// <summary>
			/// Identifies the Unit of Work ID (UOW) of the DTC transaction. For non-MS DTC transactions, UOW is set to 0.
			/// </summary>
			[Column("req_transactionUOW"),    Nullable] public Guid?  ReqTransactionUOW { get; set; } // uniqueidentifier
		}

		/// <summary>
		/// <para><strong>sys.syslogins (Transact-SQL)</strong></para>
		/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)</para>
		/// <para>Contains one row for each login account.<br/>
		/// <note type='important'><br/>
		/// This SQL Server 2000 system table is included as a view for backward compatibility. We  recommend that you use the current SQL Server system views instead. To find the equivalent system view or views, see <a href='https://docs.microsoft.com/en-us/sql/relational-databases/relational-databases/system-tables/mapping-system-tables-to-system-views-transact-sql'>Mapping System Tables to System Views (Transact-SQL)</a>. This feature will be removed in a future version of Microsoft SQL Server. Avoid using this feature in new development work, and plan to modify applications that currently use this feature.<br/>
		/// </note><br/>
		/// <strong>Applies to</strong>: SQL Server ( SQL Server 2008 through [current version](/troubleshoot/sql/general/determine-version-edition-update-level)).</para><br/>
		/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-compatibility-views/sys-syslogins-transact-sql'>sys.syslogins</a>.</para>
		/// </summary>
		[Table(Schema="sys", Name="syslogins", IsView=true)]
		public partial class Login
		{
			/// <summary>
			/// Security identifier.
			/// </summary>
			[Column("sid"),              Nullable] public byte[]?  SID           { get; set; } // varbinary(85)
			/// <summary>
			/// Identified for informational purposes only. Not supported. Future compatibility is not guaranteed.
			/// </summary>
			[Column("status"),           Nullable] public short?   Status        { get; set; } // smallint
			/// <summary>
			/// Date the login was added.
			/// </summary>
			[Column("createdate"),    NotNull    ] public DateTime Createdate    { get; set; } // datetime
			/// <summary>
			/// Date the login was updated.
			/// </summary>
			[Column("updatedate"),    NotNull    ] public DateTime Updatedate    { get; set; } // datetime
			/// <summary>
			/// Identified for informational purposes only. Not supported. Future compatibility is not guaranteed.
			/// </summary>
			[Column("accdate"),       NotNull    ] public DateTime Accdate       { get; set; } // datetime
			/// <summary>
			/// Identified for informational purposes only. Not supported. Future compatibility is not guaranteed.
			/// </summary>
			[Column("totcpu"),           Nullable] public int?     Totcpu        { get; set; } // int
			/// <summary>
			/// Identified for informational purposes only. Not supported. Future compatibility is not guaranteed.
			/// </summary>
			[Column("totio"),            Nullable] public int?     Totio         { get; set; } // int
			/// <summary>
			/// Identified for informational purposes only. Not supported. Future compatibility is not guaranteed.
			/// </summary>
			[Column("spacelimit"),       Nullable] public int?     Spacelimit    { get; set; } // int
			/// <summary>
			/// Identified for informational purposes only. Not supported. Future compatibility is not guaranteed.
			/// </summary>
			[Column("timelimit"),        Nullable] public int?     Timelimit     { get; set; } // int
			/// <summary>
			/// Identified for informational purposes only. Not supported. Future compatibility is not guaranteed.
			/// </summary>
			[Column("resultlimit"),      Nullable] public int?     Resultlimit   { get; set; } // int
			/// <summary>
			/// Login name of the user.
			/// </summary>
			[Column("name"),          NotNull    ] public string   Name          { get; set; } = null!; // sysname
			/// <summary>
			/// Name of the default database of the user when a connection is established.
			/// </summary>
			[Column("dbname"),           Nullable] public string?  DbName        { get; set; } // sysname
			/// <summary>
			/// Returns NULL.
			/// </summary>
			[Column("password"),         Nullable] public string?  Password      { get; set; } // nvarchar(128)
			/// <summary>
			/// Default language of the user.
			/// </summary>
			[Column("language"),         Nullable] public string?  Language      { get; set; } // sysname
			/// <summary>
			/// 1 = Login is a Microsoft Windows user or group and has been denied access.
			/// </summary>
			[Column("denylogin"),        Nullable] public int?     Denylogin     { get; set; } // int
			/// <summary>
			/// 1 = Login has been granted access to the server.
			/// </summary>
			[Column("hasaccess"),        Nullable] public int?     Hasaccess     { get; set; } // int
			/// <summary>
			/// 1 = Login is a Windows user or group.<br/><br/> 0 = Login is a SQL Server login.
			/// </summary>
			[Column("isntname"),         Nullable] public int?     Isntname      { get; set; } // int
			/// <summary>
			/// 1 = Login is a Windows group.
			/// </summary>
			[Column("isntgroup"),        Nullable] public int?     Isntgroup     { get; set; } // int
			/// <summary>
			/// 1 = Login is a Windows user.
			/// </summary>
			[Column("isntuser"),         Nullable] public int?     Isntuser      { get; set; } // int
			/// <summary>
			/// 1 = Login is a member of the <strong>sysadmin</strong> server role.
			/// </summary>
			[Column("sysadmin"),         Nullable] public int?     SysAdmin      { get; set; } // int
			/// <summary>
			/// 1 = Login is a member of the <strong>securityadmin</strong> server role.
			/// </summary>
			[Column("securityadmin"),    Nullable] public int?     SecurityAdmin { get; set; } // int
			/// <summary>
			/// 1 = Login is a member of the <strong>serveradmin</strong> fixed server role.
			/// </summary>
			[Column("serveradmin"),      Nullable] public int?     ServerAdmin   { get; set; } // int
			/// <summary>
			/// 1 = Login is a member of the <strong>setupadmin</strong> fixed server role.
			/// </summary>
			[Column("setupadmin"),       Nullable] public int?     SetupAdmin    { get; set; } // int
			/// <summary>
			/// 1 = Login is a member of the <strong>processadmin</strong> fixed server role.
			/// </summary>
			[Column("processadmin"),     Nullable] public int?     ProcessAdmin  { get; set; } // int
			/// <summary>
			/// 1 = Login is a member of the <strong>diskadmin</strong> fixed server role.
			/// </summary>
			[Column("diskadmin"),        Nullable] public int?     DiskAdmin     { get; set; } // int
			/// <summary>
			/// 1 = Login is a member of the <strong>dbcreator</strong> fixed server role.
			/// </summary>
			[Column("dbcreator"),        Nullable] public int?     Dbcreator     { get; set; } // int
			/// <summary>
			/// 1 = Login is a member of the <strong>bulkadmin</strong> fixed server role.
			/// </summary>
			[Column("bulkadmin"),        Nullable] public int?     BulkAdmin     { get; set; } // int
			/// <summary>
			/// Login name of the user. Provided for backward compatibility.
			/// </summary>
			[Column("loginname"),     NotNull    ] public string   Loginname     { get; set; } = null!; // nvarchar(128)
		}

		/// <summary>
		/// <para><strong>sys.sysmembers (Transact-SQL)</strong></para>
		/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)</para>
		/// <para>Contains a row for each member of a database role.<br/>
		/// <note type='important'><br/>
		/// This SQL Server 2000 system table is included as a view for backward compatibility. We  recommend that you use the current SQL Server system views instead. To find the equivalent system view or views, see <a href='https://docs.microsoft.com/en-us/sql/relational-databases/relational-databases/system-tables/mapping-system-tables-to-system-views-transact-sql'>Mapping System Tables to System Views (Transact-SQL)</a>. This feature will be removed in a future version of Microsoft SQL Server. Avoid using this feature in new development work, and plan to modify applications that currently use this feature.<br/>
		/// </note></para><br/>
		/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-compatibility-views/sys-sysmembers-transact-sql'>sys.sysmembers</a>.</para>
		/// </summary>
		[Table(Schema="sys", Name="sysmembers", IsView=true)]
		public partial class Member
		{
			/// <summary>
			/// User ID for the role member. Overflows or returns NULL if the number of users and roles exceeds 32,767.
			/// </summary>
			[Column("memberuid"), Nullable] public short? Memberuid { get; set; } // smallint
			/// <summary>
			/// User ID for the role. Overflows or returns NULL if the number of users and roles exceeds 32,767.
			/// </summary>
			[Column("groupuid"),  Nullable] public short? Groupuid  { get; set; } // smallint
		}

		/// <summary>
		/// <para><strong>sys.sysmessages (Transact-SQL)</strong></para>
		/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)</para>
		/// <para>Contains one row for each system error or warning that can be returned by the SQL Server Database Engine. The Database Engine displays the error description on the user's screen.<br/>
		/// <note type='important'><br/>
		/// This SQL Server 2000 system table is included as a view for backward compatibility. We  recommend that you use the current SQL Server system views instead. To find the equivalent system view or views, see <a href='https://docs.microsoft.com/en-us/sql/relational-databases/relational-databases/system-tables/mapping-system-tables-to-system-views-transact-sql'>Mapping System Tables to System Views (Transact-SQL)</a>. This feature will be removed in a future version of Microsoft SQL Server. Avoid using this feature in new development work, and plan to modify applications that currently use this feature.<br/>
		/// </note></para><br/>
		/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-compatibility-views/sys-sysmessages-transact-sql'>sys.sysmessages</a>.</para>
		/// </summary>
		[Table(Schema="sys", Name="sysmessages", IsView=true)]
		public partial class Message
		{
			/// <summary>
			/// Unique error number.
			/// </summary>
			[Column("error"),       NotNull    ] public int     Error       { get; set; } // int
			/// <summary>
			/// Severity level of the error.
			/// </summary>
			[Column("severity"),       Nullable] public byte?   Severity    { get; set; } // tinyint
			/// <summary>
			/// Identified for informational purposes only. Not supported. Future compatibility is not guaranteed.
			/// </summary>
			[Column("dlevel"),         Nullable] public short?  Dlevel      { get; set; } // smallint
			/// <summary>
			/// Explanation of the error with placeholders for parameters.
			/// </summary>
			[Column("description"),    Nullable] public string? Description { get; set; } // nvarchar(255)
			/// <summary>
			/// System message group ID.
			/// </summary>
			[Column("msglangid"),   NotNull    ] public short   MsgLangID   { get; set; } // smallint
		}

		/// <summary>
		/// <para><strong>sys.sysobjects (Transact-SQL)</strong></para>
		/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions) √ Azure SQL Managed Instance √ Azure Synapse Analytics √ Analytics Platform System (PDW)</para>
		/// <para>Contains one row for each object that is created within a database, such as a constraint, default, log, rule, and stored procedure.<br/>
		/// <note type='important'><br/>
		/// This SQL Server 2000 system table is included as a view for backward compatibility. We  recommend that you use the current SQL Server system views instead. To find the equivalent system view or views, see <a href='https://docs.microsoft.com/en-us/sql/relational-databases/relational-databases/system-tables/mapping-system-tables-to-system-views-transact-sql'>Mapping System Tables to System Views (Transact-SQL)</a>. This feature will be removed in a future version of Microsoft SQL Server. Avoid using this feature in new development work, and plan to modify applications that currently use this feature.<br/>
		/// </note></para><br/>
		/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-compatibility-views/sys-sysobjects-transact-sql'>sys.sysobjects</a>.</para>
		/// </summary>
		[Table(Schema="sys", Name="sysobjects", IsView=true)]
		public partial class Object
		{
			/// <summary>
			/// Object name
			/// </summary>
			[Column("name"),             NotNull    ] public string   Name           { get; set; } = null!; // sysname
			/// <summary>
			/// Object identification number
			/// </summary>
			[Column("id"),               NotNull    ] public int      ID             { get; set; } // int
			/// <summary>
			/// Object type. Can be one of the following object types:<br/><br/> AF = Aggregate function (CLR)<br/><br/> C = CHECK constraint<br/><br/> D = Default or DEFAULT constraint<br/><br/> F = FOREIGN KEY constraint<br/><br/> L = Log<br/><br/> FN = Scalar function<br/><br/> FS = Assembly (CLR) scalar-function<br/><br/> FT = Assembly (CLR) table-valued function<br/><br/> IF = In-lined table-function<br/><br/> IT = Internal table<br/><br/> P = Stored procedure<br/><br/> PC = Assembly (CLR) stored-procedure<br/><br/> PK = PRIMARY KEY constraint (type is K)<br/><br/> RF = Replication filter stored procedure<br/><br/> S = System table<br/><br/> SN = Synonym<br/><br/> SQ = Service queue<br/><br/> TA = Assembly (CLR) DML trigger<br/><br/> TF = Table function<br/><br/> TR = SQL DML Trigger<br/><br/> TT = Table type<br/><br/> U = User table<br/><br/> UQ = UNIQUE constraint (type is K)<br/><br/> V = View<br/><br/> X = Extended stored procedure
			/// </summary>
			[Column("xtype"),            NotNull    ] public string   XType          { get; set; } = null!; // char(2)
			/// <summary>
			/// Schema ID of the owner of the object. For databases upgraded from an earlier version of SQL Server, the schema ID is equal to the user ID of the owner. Overflows or returns NULL if the number of users and roles exceeds 32,767.<br/><br/> <strong> Important \*\</strong>* If you use any of the following SQL Server DDL statements, you must use the <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-objects-transact-sql'>sys.objects</a> catalog view instead of sys.sysobjects.<br/><br/> CREATE &amp;#124; ALTER &amp;#124; DROP USER<br/><br/> CREATE &amp;#124; ALTER &amp;#124; DROP ROLE<br/><br/> CREATE &amp;#124; ALTER &amp;#124; DROP APPLICATION ROLE<br/><br/> CREATE SCHEMA<br/><br/> ALTER AUTHORIZATION ON OBJECT
			/// </summary>
			[Column("uid"),                 Nullable] public short?   UID            { get; set; } // smallint
			/// <summary>
			/// Identified for informational purposes only. Not supported. Future compatibility is not guaranteed.
			/// </summary>
			[Column("info"),                Nullable] public short?   Info           { get; set; } // smallint
			/// <summary>
			/// Identified for informational purposes only. Not supported. Future compatibility is not guaranteed.
			/// </summary>
			[Column("status"),              Nullable] public int?     Status         { get; set; } // int
			/// <summary>
			/// Identified for informational purposes only. Not supported. Future compatibility is not guaranteed.
			/// </summary>
			[Column("base_schema_ver"),     Nullable] public int?     BaseSchemaVer  { get; set; } // int
			/// <summary>
			/// Identified for informational purposes only. Not supported. Future compatibility is not guaranteed.
			/// </summary>
			[Column("replinfo"),            Nullable] public int?     Replinfo       { get; set; } // int
			/// <summary>
			/// Object identification number of the parent object. For example, the table ID if it is a trigger or constraint.
			/// </summary>
			[Column("parent_obj"),       NotNull    ] public int      ParentObj      { get; set; } // int
			/// <summary>
			/// Date the object was created.
			/// </summary>
			[Column("crdate"),           NotNull    ] public DateTime Crdate         { get; set; } // datetime
			/// <summary>
			/// Identifier of the full-text catalog for all user tables registered for full-text indexing, and 0 for all user tables that are not registered.
			/// </summary>
			[Column("ftcatid"),             Nullable] public short?   FTCatID        { get; set; } // smallint
			/// <summary>
			/// Version number that is incremented every time the schema for a table changes. Always returns 0.
			/// </summary>
			[Column("schema_ver"),          Nullable] public int?     SchemaVer      { get; set; } // int
			/// <summary>
			/// Identified for informational purposes only. Not supported. Future compatibility is not guaranteed.
			/// </summary>
			[Column("stats_schema_ver"),    Nullable] public int?     StatsSchemaVer { get; set; } // int
			/// <summary>
			/// Object type. Can be one of the following values:<br/><br/> AF = Aggregate function (CLR)<br/><br/> C = CHECK constraint<br/><br/> D = Default or DEFAULT constraint<br/><br/> F = FOREIGN KEY constraint<br/><br/> FN = Scalar function<br/><br/> FS = Assembly (CLR) scalar-function<br/><br/> FT = Assembly (CLR) table-valued functionIF = In-lined table-function<br/><br/> IT - Internal table<br/><br/> K = PRIMARY KEY or UNIQUE constraint<br/><br/> L = Log<br/><br/> P = Stored procedure<br/><br/> PC = Assembly (CLR) stored-procedure<br/><br/> R = Rule<br/><br/> RF = Replication filter stored procedure<br/><br/> S = System table<br/><br/> SN = Synonym<br/><br/> SQ = Service queue<br/><br/> TA = Assembly (CLR) DML trigger<br/><br/> TF = Table function<br/><br/> TR = SQL DML Trigger<br/><br/> TT = Table type<br/><br/> U = User table<br/><br/> V = View<br/><br/> X = Extended stored procedure
			/// </summary>
			[Column("type"),                Nullable] public string?  TypeColumn     { get; set; } // char(2)
			/// <summary>
			/// Identified for informational purposes only. Not supported. Future compatibility is not guaranteed.
			/// </summary>
			[Column("userstat"),            Nullable] public short?   Userstat       { get; set; } // smallint
			/// <summary>
			/// Identified for informational purposes only. Not supported. Future compatibility is not guaranteed.
			/// </summary>
			[Column("sysstat"),             Nullable] public short?   Sysstat        { get; set; } // smallint
			/// <summary>
			/// Identified for informational purposes only. Not supported. Future compatibility is not guaranteed.
			/// </summary>
			[Column("indexdel"),            Nullable] public short?   Indexdel       { get; set; } // smallint
			/// <summary>
			/// Identified for informational purposes only. Not supported. Future compatibility is not guaranteed.
			/// </summary>
			[Column("refdate"),          NotNull    ] public DateTime Refdate        { get; set; } // datetime
			/// <summary>
			/// Identified for informational purposes only. Not supported. Future compatibility is not guaranteed.
			/// </summary>
			[Column("version"),             Nullable] public int?     Version        { get; set; } // int
			/// <summary>
			/// Identified for informational purposes only. Not supported. Future compatibility is not guaranteed.
			/// </summary>
			[Column("deltrig"),             Nullable] public int?     Deltrig        { get; set; } // int
			/// <summary>
			/// Identified for informational purposes only. Not supported. Future compatibility is not guaranteed.
			/// </summary>
			[Column("instrig"),             Nullable] public int?     Instrig        { get; set; } // int
			/// <summary>
			/// Identified for informational purposes only. Not supported. Future compatibility is not guaranteed.
			/// </summary>
			[Column("updtrig"),             Nullable] public int?     Updtrig        { get; set; } // int
			/// <summary>
			/// Identified for informational purposes only. Not supported. Future compatibility is not guaranteed.
			/// </summary>
			[Column("seltrig"),             Nullable] public int?     Seltrig        { get; set; } // int
			/// <summary>
			/// Used for publication, constraints, and identity.
			/// </summary>
			[Column("category"),            Nullable] public int?     Category       { get; set; } // int
			/// <summary>
			/// Identified for informational purposes only. Not supported. Future compatibility is not guaranteed.
			/// </summary>
			[Column("cache"),               Nullable] public short?   Cache          { get; set; } // smallint
		}

		/// <summary>
		/// <para><strong>sys.sysoledbusers (Transact-SQL)</strong></para>
		/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)</para>
		/// <para><br/>
		/// <note type='important'><br/>
		/// This SQL Server 2000 (8.x) system table is included in SQL Server as a view for backward compatibility only. We recommend that you use <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/catalog-views-transact-sql'>catalog views</a> instead.<br/>
		/// </note><br/>
		///  Contains one row for each user and password mapping for the specified linked server. <strong>sysoledbusers</strong> is stored in the <strong>master</strong> database.</para><br/>
		/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-compatibility-views/sys-sysoledbusers-transact-sql'>sys.sysoledbusers</a>.</para>
		/// </summary>
		[Table(Schema="sys", Name="sysoledbusers", IsView=true)]
		public partial class OleDBUser
		{
			/// <summary>
			/// Security identification number (SID) of the server.
			/// </summary>
			[Column("rmtsrvid"),       Nullable] public short?   Rmtsrvid    { get; set; } // smallint
			/// <summary>
			/// Name of the remote login that <strong>loginsid</strong> maps to for linked <strong>rmtservid</strong>.
			/// </summary>
			[Column("rmtloginame"),    Nullable] public string?  Rmtloginame { get; set; } // nvarchar(
			/// <summary>
			/// Returns NULL.
			/// </summary>
			[Column("rmtpassword"),    Nullable] public string?  Rmtpassword { get; set; } // nvarchar(
			/// <summary>
			/// SID of the local login to be mapped.
			/// </summary>
			[Column("loginsid"),       Nullable] public byte[]?  Loginsid    { get; set; } // varbinary(
			/// <summary>
			/// If 1, the mapping should use the credentials of the user.
			/// </summary>
			[Column("status"),         Nullable] public short?   Status      { get; set; } // smallint
			/// <summary>
			/// Date the mapping information was last changed.
			/// </summary>
			[Column("changedate"),  NotNull    ] public DateTime Changedate  { get; set; } // datetime
		}

		/// <summary>
		/// <para><strong>sys.sysperfinfo (Transact-SQL)</strong></para>
		/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)</para>
		/// <para>Contains a Microsoft SQL Server Database Engine representation of the internal performance counters that can be displayed through the Windows System Monitor.<br/>
		/// <note type='important'><br/>
		/// This SQL Server 2000 system table is included as a view for backward compatibility. We  recommend that you use the current SQL Server system views instead. To find the equivalent system view or views, see <a href='https://docs.microsoft.com/en-us/sql/relational-databases/relational-databases/system-tables/mapping-system-tables-to-system-views-transact-sql'>Mapping System Tables to System Views (Transact-SQL)</a>. This feature will be removed in a future version of Microsoft SQL Server. Avoid using this feature in new development work, and plan to modify applications that currently use this feature.<br/>
		/// </note></para><br/>
		/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-compatibility-views/sys-sysperfinfo-transact-sql'>sys.sysperfinfo</a>.</para>
		/// </summary>
		[Table(Schema="sys", Name="sysperfinfo", IsView=true)]
		public partial class PerfInfo
		{
			/// <summary>
			/// Performance object name, such as <strong>SQLServer:LockManager</strong> or <strong>SQLServer:BufferManager</strong>.
			/// </summary>
			[Column("object_name"),   NotNull    ] public string  ObjectName   { get; set; } = null!; // nchar(128)
			/// <summary>
			/// Name of the performance counter within the object, such as <strong>Page Requests</strong> or <strong>Locks Requested</strong>.
			/// </summary>
			[Column("counter_name"),  NotNull    ] public string  CounterName  { get; set; } = null!; // nchar(128)
			/// <summary>
			/// Named instance of the counter. For example, there are counters maintained for each type of lock, such as <strong>Table</strong>, <strong>Page</strong>, <strong>Key</strong>, and so on. The instance name distinguishes between similar counters.
			/// </summary>
			[Column("instance_name"),    Nullable] public string? InstanceName { get; set; } // nchar(128)
			/// <summary>
			/// Actual counter value. Frequently, this will be a level or monotonically increasing counter that counts occurrences of the instance event.
			/// </summary>
			[Column("cntr_value"),    NotNull    ] public long    CntrValue    { get; set; } // bigint
			/// <summary>
			/// Type of counter as defined by the Windows performance architecture.
			/// </summary>
			[Column("cntr_type"),     NotNull    ] public int     CntrType     { get; set; } // int
		}

		/// <summary>
		/// <para><strong>sys.syspermissions (Transact-SQL)</strong></para>
		/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)</para>
		/// <para>Contains information about permissions granted and denied to users, groups, and roles in the database.<br/>
		/// <note type='important'><br/>
		/// This SQL Server 2000 system table is included as a view for backward compatibility. We  recommend that you use the current SQL Server system views instead. To find the equivalent system view or views, see <a href='https://docs.microsoft.com/en-us/sql/relational-databases/relational-databases/system-tables/mapping-system-tables-to-system-views-transact-sql'>Mapping System Tables to System Views (Transact-SQL)</a>. This feature will be removed in a future version of Microsoft SQL Server. Avoid using this feature in new development work, and plan to modify applications that currently use this feature.<br/>
		/// </note></para><br/>
		/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-compatibility-views/sys-syspermissions-transact-sql'>sys.syspermissions</a>.</para>
		/// </summary>
		[Table(Schema="sys", Name="syspermissions", IsView=true)]
		public partial class Permission
		{
			/// <summary>
			/// ID of the object for object permissions.<br/><br/> 0 = Statement permissions.
			/// </summary>
			[Column("id"),      NotNull    ] public int     ID      { get; set; } // int
			/// <summary>
			/// ID of the user, group, or role affected by the permission.
			/// </summary>
			[Column("grantee"),    Nullable] public short?  Grantee { get; set; } // smallint
			/// <summary>
			/// ID of the user, group, or role that granted or denied the permission.
			/// </summary>
			[Column("grantor"),    Nullable] public short?  Grantor { get; set; } // smallint
			/// <summary>
			/// Identified for informational purposes only. Not supported. Future compatibility is not guaranteed.
			/// </summary>
			[Column("actadd"),     Nullable] public short?  Actadd  { get; set; } // smallint
			/// <summary>
			/// Identified for informational purposes only. Not supported. Future compatibility is not guaranteed.
			/// </summary>
			[Column("actmod"),     Nullable] public short?  Actmod  { get; set; } // smallint
			/// <summary>
			/// Identified for informational purposes only. Not supported. Future compatibility is not guaranteed.
			/// </summary>
			[Column("seladd"),     Nullable] public byte[]? Seladd  { get; set; } // varbinary(4000)
			/// <summary>
			/// Identified for informational purposes only. Not supported. Future compatibility is not guaranteed.
			/// </summary>
			[Column("selmod"),     Nullable] public byte[]? Selmod  { get; set; } // varbinary(4000)
			/// <summary>
			/// Identified for informational purposes only. Not supported. Future compatibility is not guaranteed.
			/// </summary>
			[Column("updadd"),     Nullable] public byte[]? Updadd  { get; set; } // varbinary(4000)
			/// <summary>
			/// Identified for informational purposes only. Not supported. Future compatibility is not guaranteed.
			/// </summary>
			[Column("updmod"),     Nullable] public byte[]? Updmod  { get; set; } // varbinary(4000)
			/// <summary>
			/// Identified for informational purposes only. Not supported. Future compatibility is not guaranteed.
			/// </summary>
			[Column("refadd"),     Nullable] public byte[]? Refadd  { get; set; } // varbinary(4000)
			/// <summary>
			/// Identified for informational purposes only. Not supported. Future compatibility is not guaranteed.
			/// </summary>
			[Column("refmod"),     Nullable] public byte[]? Refmod  { get; set; } // varbinary(4000)
		}

		/// <summary>
		/// <para><strong>sys.sysprocesses (Transact-SQL)</strong></para>
		/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)</para>
		/// <para>Contains information about processes that are running on an instance of SQL Server. These processes can be client processes or system processes. To access sysprocesses, you must be in the master database context, or you must use the master.dbo.sysprocesses three-part name.<br/>
		/// <note type='important'><br/>
		/// This SQL Server 2000 system table is included as a view for backward compatibility. We  recommend that you use the current SQL Server system views instead. To find the equivalent system view or views, see <a href='https://docs.microsoft.com/en-us/sql/relational-databases/relational-databases/system-tables/mapping-system-tables-to-system-views-transact-sql'>Mapping System Tables to System Views (Transact-SQL)</a>. This feature will be removed in a future version of Microsoft SQL Server. Avoid using this feature in new development work, and plan to modify applications that currently use this feature.<br/>
		/// </note></para><br/>
		/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-compatibility-views/sys-sysprocesses-transact-sql'>sys.sysprocesses</a>.</para>
		/// </summary>
		[Table(Schema="sys", Name="sysprocesses", IsView=true)]
		public partial class Process
		{
			/// <summary>
			/// SQL Server session ID.
			/// </summary>
			[Column("spid"),          NotNull    ] public short    Spid         { get; set; } // smallint
			/// <summary>
			/// Windows thread ID.
			/// </summary>
			[Column("kpid"),          NotNull    ] public short    Kpid         { get; set; } // smallint
			/// <summary>
			/// ID of the session that is blocking the request. If this column is NULL, the request is not blocked, or the session information of the blocking session is not available (or cannot be identified).<br/><br/> -2 = The blocking resource is owned by an orphaned distributed transaction.<br/><br/> -3 = The blocking resource is owned by a deferred recovery transaction.<br/><br/> -4 = Session ID of the blocking latch owner could not be determined due to internal latch state transitions.
			/// </summary>
			[Column("blocked"),       NotNull    ] public short    Blocked      { get; set; } // smallint
			/// <summary>
			/// Reserved.
			/// </summary>
			[Column("waittype"),      NotNull    ] public byte[]   Waittype     { get; set; } = null!; // binary(2)
			/// <summary>
			/// Current wait time in milliseconds.<br/><br/> 0 = Process is not waiting.
			/// </summary>
			[Column("waittime"),      NotNull    ] public long     Waittime     { get; set; } // bigint
			/// <summary>
			/// A string indicating the name of the last or current wait type.
			/// </summary>
			[Column("lastwaittype"),  NotNull    ] public string   Lastwaittype { get; set; } = null!; // nchar(32)
			/// <summary>
			/// Textual representation of a lock resource.
			/// </summary>
			[Column("waitresource"),  NotNull    ] public string   Waitresource { get; set; } = null!; // nchar(256)
			/// <summary>
			/// ID of the database currently being used by the process.
			/// </summary>
			[Column("dbid"),          NotNull    ] public short    DbID         { get; set; } // smallint
			/// <summary>
			/// ID of the user that executed the command. Overflows or returns NULL if the number of users and roles exceeds 32,767.
			/// </summary>
			[Column("uid"),              Nullable] public short?   UID          { get; set; } // smallint
			/// <summary>
			/// Cumulative CPU time for the process. The entry is updated for all processes, regardless of whether the SET STATISTICS TIME option is ON or OFF.
			/// </summary>
			[Column("cpu"),           NotNull    ] public int      Cpu          { get; set; } // int
			/// <summary>
			/// Cumulative disk reads and writes for the process.
			/// </summary>
			[Column("physical_io"),   NotNull    ] public long     PhysicalIo   { get; set; } // bigint
			/// <summary>
			/// Number of pages in the procedure cache that are currently allocated to this process. A negative number indicates that the process is freeing memory allocated by another process.
			/// </summary>
			[Column("memusage"),      NotNull    ] public int      Memusage     { get; set; } // int
			/// <summary>
			/// Time at which a client process logged into the server.
			/// </summary>
			[Column("login_time"),    NotNull    ] public DateTime LoginTime    { get; set; } // datetime
			/// <summary>
			/// Last time a client process executed a remote stored procedure call or an EXECUTE statement.
			/// </summary>
			[Column("last_batch"),    NotNull    ] public DateTime LastBatch    { get; set; } // datetime
			/// <summary>
			/// Execution context ID used to uniquely identify the subthreads operating on behalf of a single process.
			/// </summary>
			[Column("ecid"),          NotNull    ] public short    Ecid         { get; set; } // smallint
			/// <summary>
			/// Number of open transactions for the process.
			/// </summary>
			[Column("open_tran"),     NotNull    ] public short    OpenTran     { get; set; } // smallint
			/// <summary>
			/// Process ID status. The possible values are:<br/><br/> <strong>dormant</strong> = SQL Server is resetting the session.<br/><br/> <strong>running</strong> = The session is running one or more batches. When Multiple Active Result Sets (MARS) is enabled, a session can run multiple batches. For more information, see <a href='https://docs.microsoft.com/en-us/sql/relational-databases/native-client/features/using-multiple-active-result-sets-mars'>Using Multiple Active Result Sets (MARS)</a>.<br/><br/> <strong>background</strong> = The session is running a background task, such as deadlock detection.<br/><br/> <strong>rollback</strong> = The session has a transaction rollback in process.<br/><br/> <strong>pending</strong> = The session is waiting for a worker thread to become available.<br/><br/> <strong>runnable</strong> = The task in the session is in the runnable queue of a scheduler while waiting to get a time quantum.<br/><br/> <strong>spinloop</strong> = The task in the session is waiting for a spinlock to become free.<br/><br/> <strong>suspended</strong> = The session is waiting for an event, such as I/O, to complete.
			/// </summary>
			[Column("status"),        NotNull    ] public string   Status       { get; set; } = null!; // nchar(30)
			/// <summary>
			/// Globally unique identifier (GUID) for the user.
			/// </summary>
			[Column("sid"),           NotNull    ] public byte[]   SID          { get; set; } = null!; // binary(86)
			/// <summary>
			/// Name of the workstation.
			/// </summary>
			[Column("hostname"),      NotNull    ] public string   Hostname     { get; set; } = null!; // nchar(128)
			/// <summary>
			/// Name of the application program.
			/// </summary>
			[Column("program_name"),  NotNull    ] public string   ProgramName  { get; set; } = null!; // nchar(128)
			/// <summary>
			/// Workstation process ID number.
			/// </summary>
			[Column("hostprocess"),   NotNull    ] public string   Hostprocess  { get; set; } = null!; // nchar(10)
			/// <summary>
			/// Command currently being executed.
			/// </summary>
			[Column("cmd"),           NotNull    ] public string   Cmd          { get; set; } = null!; // nchar(52)
			/// <summary>
			/// Windows domain for the client, if using Windows Authentication, or a trusted connection.
			/// </summary>
			[Column("nt_domain"),     NotNull    ] public string   NtDomain     { get; set; } = null!; // nchar(128)
			/// <summary>
			/// Windows user name for the process, if using Windows Authentication, or a trusted connection.
			/// </summary>
			[Column("nt_username"),   NotNull    ] public string   NtUsername   { get; set; } = null!; // nchar(128)
			/// <summary>
			/// Assigned unique identifier for the network adapter on the workstation of each user. When a user logs in, this identifier is inserted in the net_address column.
			/// </summary>
			[Column("net_address"),   NotNull    ] public string   NetAddress   { get; set; } = null!; // nchar(12)
			/// <summary>
			/// Column in which the client's network library is stored. Every client process comes in on a network connection. Network connections have a network library associated with them that enables them to make the connection.
			/// </summary>
			[Column("net_library"),   NotNull    ] public string   NetLibrary   { get; set; } = null!; // nchar(12)
			/// <summary>
			/// Login name.
			/// </summary>
			[Column("loginame"),      NotNull    ] public string   Loginame     { get; set; } = null!; // nchar(128)
			/// <summary>
			/// Data stored in a batch by using the SET CONTEXT_INFO statement.
			/// </summary>
			[Column("context_info"),  NotNull    ] public byte[]   ContextInfo  { get; set; } = null!; // binary(128)
			/// <summary>
			/// Represents the currently executing batch or object.<br/><br/> <strong>Note</strong> This value is derived from the batch or memory address of the object. This value is not calculated by using the SQL Server hash-based algorithm.
			/// </summary>
			[Column("sql_handle"),    NotNull    ] public byte[]   SqlHandle    { get; set; } = null!; // binary(20)
			/// <summary>
			/// Starting offset of the current SQL statement for the specified sql_handle.
			/// </summary>
			[Column("stmt_start"),    NotNull    ] public int      StmtStart    { get; set; } // int
			/// <summary>
			/// Ending offset of the current SQL statement for the specified sql_handle.<br/><br/> -1 = Current statement runs to the end of the results returned by the fn_get_sql function for the specified sql_handle.
			/// </summary>
			[Column("stmt_end"),      NotNull    ] public int      StmtEnd      { get; set; } // int
			/// <summary>
			/// ID of request. Used to identify requests running in a specific session.
			/// </summary>
			[Column("request_id"),    NotNull    ] public int      RequestID    { get; set; } // int
			/// <summary>
			/// <strong>Applies to</strong>: SQL Server 2019 (15.x) <br/><br/> An 8-byte hexadecimal representation of the page resource if the <c>waitresource</c> column contains a page.
			/// </summary>
			[Column("page_resource"),    Nullable] public byte[]?  PageResource { get; set; } // binary(8)
		}

		/// <summary>
		/// <para><strong>sys.sysprotects (Transact-SQL)</strong></para>
		/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)</para>
		/// <para>Contains information about permissions that have been applied to security accounts in the database by using the GRANT and DENY statements.<br/>
		/// <note type='important'><br/>
		/// This SQL Server 2000 system table is included as a view for backward compatibility. We  recommend that you use the current SQL Server system views instead. To find the equivalent system view or views, see <a href='https://docs.microsoft.com/en-us/sql/relational-databases/relational-databases/system-tables/mapping-system-tables-to-system-views-transact-sql'>Mapping System Tables to System Views (Transact-SQL)</a>. This feature will be removed in a future version of Microsoft SQL Server. Avoid using this feature in new development work, and plan to modify applications that currently use this feature.<br/>
		/// </note></para><br/>
		/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-compatibility-views/sys-sysprotects-transact-sql'>sys.sysprotects</a>.</para>
		/// </summary>
		[Table(Schema="sys", Name="sysprotects", IsView=true)]
		public partial class Protect
		{
			/// <summary>
			/// ID of the object to which these permissions apply.
			/// </summary>
			[Column("id"),          NotNull    ] public int     ID          { get; set; } // int
			/// <summary>
			/// ID of user or group to which these permissions apply. Overflows or returns NULL if the number of users and roles exceeds 32,767.
			/// </summary>
			[Column("uid"),            Nullable] public short?  UID         { get; set; } // smallint
			/// <summary>
			/// Can have one of the following permissions:<br/><br/> 26 = REFERENCES<br/><br/> 178 = CREATE FUNCTION<br/><br/> 193 = SELECT<br/><br/> 195 = INSERT<br/><br/> 196 = DELETE<br/><br/> 197 = UPDATE<br/><br/> 198 = CREATE TABLE<br/><br/> 203 = CREATE DATABASE<br/><br/> 207 = CREATE VIEW<br/><br/> 222 = CREATE PROCEDURE<br/><br/> 224 = EXECUTE<br/><br/> 228 = BACKUP DATABASE<br/><br/> 233 = CREATE DEFAULT<br/><br/> 235 = BACKUP LOG<br/><br/> 236 = CREATE RULE
			/// </summary>
			[Column("action"),         Nullable] public byte?   Action      { get; set; } // tinyint
			/// <summary>
			/// Can have the following values:<br/><br/> 204 = GRANT_W_GRANT<br/><br/> 205 = GRANT<br/><br/> 206 = DENY
			/// </summary>
			[Column("protecttype"),    Nullable] public byte?   Protecttype { get; set; } // tinyint
			/// <summary>
			/// Bitmap of columns to which these SELECT or UPDATE permissions apply.<br/><br/> Bit 0 = All columns.<br/><br/> Bit 1 = Permissions apply to that column.<br/><br/> NULL = No information.
			/// </summary>
			[Column("columns"),        Nullable] public byte[]? Columns     { get; set; } // varbinary(8000)
			/// <summary>
			/// User ID of the user that issued the GRANT or DENY permissions. Overflows or returns NULL if the number of users and roles exceeds 32,767.
			/// </summary>
			[Column("grantor"),        Nullable] public short?  Grantor     { get; set; } // smallint
		}

		/// <summary>
		/// <para><strong>sys.sysreferences (Transact-SQL)</strong></para>
		/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions) √ Azure SQL Managed Instance √ Azure Synapse Analytics √ Analytics Platform System (PDW)</para>
		/// <para>Contains mappings of the FOREIGN KEY constraint definitions to the referenced columns within the database.<br/>
		/// <note type='important'><br/>
		/// This SQL Server 2000 system table is included as a view for backward compatibility. We  recommend that you use the current SQL Server system views instead. To find the equivalent system view or views, see <a href='https://docs.microsoft.com/en-us/sql/relational-databases/relational-databases/system-tables/mapping-system-tables-to-system-views-transact-sql'>Mapping System Tables to System Views (Transact-SQL)</a>. This feature will be removed in a future version of Microsoft SQL Server. Avoid using this feature in new development work, and plan to modify applications that currently use this feature.<br/>
		/// </note></para><br/>
		/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-compatibility-views/sys-sysreferences-transact-sql'>sys.sysreferences</a>.</para>
		/// </summary>
		[Table(Schema="sys", Name="sysreferences", IsView=true)]
		public partial class Reference
		{
			/// <summary>
			/// ID of the FOREIGN KEY constraint.
			/// </summary>
			[Column("constid"),   NotNull    ] public int     ConstraintID { get; set; } // int
			/// <summary>
			/// ID of the referencing table.
			/// </summary>
			[Column("fkeyid"),    NotNull    ] public int     FKeyID       { get; set; } // int
			/// <summary>
			/// ID of the referenced table.
			/// </summary>
			[Column("rkeyid"),       Nullable] public int?    RKeyID       { get; set; } // int
			/// <summary>
			/// Index ID of the unique index on the referenced table covering the referenced key-columns.
			/// </summary>
			[Column("rkeyindid"),    Nullable] public short?  Rkeyindid    { get; set; } // smallint
			/// <summary>
			/// Number of columns in the key.
			/// </summary>
			[Column("keycnt"),       Nullable] public short?  KeyCnt       { get; set; } // smallint
			/// <summary>
			/// Identified for informational purposes only. Not supported. Future compatibility is not guaranteed.
			/// </summary>
			[Column("forkeys"),      Nullable] public byte[]? Forkeys      { get; set; } // varbinary(32)
			/// <summary>
			/// Identified for informational purposes only. Not supported. Future compatibility is not guaranteed.
			/// </summary>
			[Column("refkeys"),      Nullable] public byte[]? Refkeys      { get; set; } // varbinary(32)
			/// <summary>
			/// Reserved.
			/// </summary>
			[Column("fkeydbid"),     Nullable] public short?  FkeyDbID     { get; set; } // smallint
			/// <summary>
			/// Reserved.
			/// </summary>
			[Column("rkeydbid"),     Nullable] public short?  RkeyDbID     { get; set; } // smallint
			/// <summary>
			/// Column ID of the referencing column.
			/// </summary>
			[Column("fkey1"),        Nullable] public short?  Fkey1        { get; set; } // smallint
			/// <summary>
			/// Column ID of the referencing column.
			/// </summary>
			[Column("fkey2"),        Nullable] public short?  Fkey2        { get; set; } // smallint
			/// <summary>
			/// Column ID of the referencing column.
			/// </summary>
			[Column("fkey3"),        Nullable] public short?  Fkey3        { get; set; } // smallint
			/// <summary>
			/// Column ID of the referencing column.
			/// </summary>
			[Column("fkey4"),        Nullable] public short?  Fkey4        { get; set; } // smallint
			/// <summary>
			/// Column ID of the referencing column.
			/// </summary>
			[Column("fkey5"),        Nullable] public short?  Fkey5        { get; set; } // smallint
			/// <summary>
			/// Column ID of the referencing column.
			/// </summary>
			[Column("fkey6"),        Nullable] public short?  Fkey6        { get; set; } // smallint
			/// <summary>
			/// Column ID of the referencing column.
			/// </summary>
			[Column("fkey7"),        Nullable] public short?  Fkey7        { get; set; } // smallint
			/// <summary>
			/// Column ID of the referencing column.
			/// </summary>
			[Column("fkey8"),        Nullable] public short?  Fkey8        { get; set; } // smallint
			/// <summary>
			/// Column ID of the referencing column.
			/// </summary>
			[Column("fkey9"),        Nullable] public short?  Fkey9        { get; set; } // smallint
			/// <summary>
			/// Column ID of the referencing column.
			/// </summary>
			[Column("fkey10"),       Nullable] public short?  Fkey10       { get; set; } // smallint
			/// <summary>
			/// Column ID of the referencing column.
			/// </summary>
			[Column("fkey11"),       Nullable] public short?  Fkey11       { get; set; } // smallint
			/// <summary>
			/// Column ID of the referencing column.
			/// </summary>
			[Column("fkey12"),       Nullable] public short?  Fkey12       { get; set; } // smallint
			/// <summary>
			/// Column ID of the referencing column.
			/// </summary>
			[Column("fkey13"),       Nullable] public short?  Fkey13       { get; set; } // smallint
			/// <summary>
			/// Column ID of the referencing column.
			/// </summary>
			[Column("fkey14"),       Nullable] public short?  Fkey14       { get; set; } // smallint
			/// <summary>
			/// Column ID of the referencing column.
			/// </summary>
			[Column("fkey15"),       Nullable] public short?  Fkey15       { get; set; } // smallint
			/// <summary>
			/// Column ID of the referencing column.
			/// </summary>
			[Column("fkey16"),       Nullable] public short?  Fkey16       { get; set; } // smallint
			/// <summary>
			/// Column ID of the referenced column.
			/// </summary>
			[Column("rkey1"),        Nullable] public short?  Rkey1        { get; set; } // smallint
			/// <summary>
			/// Column ID of the referenced column.
			/// </summary>
			[Column("rkey2"),        Nullable] public short?  Rkey2        { get; set; } // smallint
			/// <summary>
			/// Column ID of the referenced column.
			/// </summary>
			[Column("rkey3"),        Nullable] public short?  Rkey3        { get; set; } // smallint
			/// <summary>
			/// Column ID of the referenced column.
			/// </summary>
			[Column("rkey4"),        Nullable] public short?  Rkey4        { get; set; } // smallint
			/// <summary>
			/// Column ID of the referenced column.
			/// </summary>
			[Column("rkey5"),        Nullable] public short?  Rkey5        { get; set; } // smallint
			/// <summary>
			/// Column ID of the referenced column.
			/// </summary>
			[Column("rkey6"),        Nullable] public short?  Rkey6        { get; set; } // smallint
			/// <summary>
			/// Column ID of the referenced column.
			/// </summary>
			[Column("rkey7"),        Nullable] public short?  Rkey7        { get; set; } // smallint
			/// <summary>
			/// Column ID of the referenced column.
			/// </summary>
			[Column("rkey8"),        Nullable] public short?  Rkey8        { get; set; } // smallint
			/// <summary>
			/// Column ID of the referenced column.
			/// </summary>
			[Column("rkey9"),        Nullable] public short?  Rkey9        { get; set; } // smallint
			/// <summary>
			/// Column ID of the referenced column.
			/// </summary>
			[Column("rkey10"),       Nullable] public short?  Rkey10       { get; set; } // smallint
			/// <summary>
			/// Column ID of the referenced column.
			/// </summary>
			[Column("rkey11"),       Nullable] public short?  Rkey11       { get; set; } // smallint
			/// <summary>
			/// Column ID of the referenced column.
			/// </summary>
			[Column("rkey12"),       Nullable] public short?  Rkey12       { get; set; } // smallint
			/// <summary>
			/// Column ID of the referenced column.
			/// </summary>
			[Column("rkey13"),       Nullable] public short?  Rkey13       { get; set; } // smallint
			/// <summary>
			/// Column ID of the referenced column.
			/// </summary>
			[Column("rkey14"),       Nullable] public short?  Rkey14       { get; set; } // smallint
			/// <summary>
			/// Column ID of the referenced column.
			/// </summary>
			[Column("rkey15"),       Nullable] public short?  Rkey15       { get; set; } // smallint
			/// <summary>
			/// Column ID of the referenced column.
			/// </summary>
			[Column("rkey16"),       Nullable] public short?  Rkey16       { get; set; } // smallint
		}

		/// <summary>
		/// <para><strong>sys.sysremotelogins (Transact-SQL)</strong></para>
		/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)</para>
		/// <para>Contains one row for each remote user that is permitted to call remote stored procedures on an instance of Microsoft SQL Server.<br/>
		/// <note type='important'><br/>
		/// This SQL Server 2000 system table is included as a view for backward compatibility. We  recommend that you use the current SQL Server system views instead. To find the equivalent system view or views, see <a href='https://docs.microsoft.com/en-us/sql/relational-databases/relational-databases/system-tables/mapping-system-tables-to-system-views-transact-sql'>Mapping System Tables to System Views (Transact-SQL)</a>. This feature will be removed in a future version of Microsoft SQL Server. Avoid using this feature in new development work, and plan to modify applications that currently use this feature.<br/>
		/// </note></para><br/>
		/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-compatibility-views/sys-sysremotelogins-transact-sql'>sys.sysremotelogins</a>.</para>
		/// </summary>
		[Table(Schema="sys", Name="sysremotelogins", IsView=true)]
		public partial class RemoteLogin
		{
			/// <summary>
			/// Remote server identification.
			/// </summary>
			[Column("remoteserverid"),    Nullable] public short?   Remoteserverid { get; set; } // smallint
			/// <summary>
			/// Login name of the user on a remote server.
			/// </summary>
			[Column("remoteusername"),    Nullable] public string?  Remoteusername { get; set; } // sysname
			/// <summary>
			/// Returns 0.
			/// </summary>
			[Column("status"),            Nullable] public short?   Status         { get; set; } // smallint
			/// <summary>
			/// Microsoft Windows user security ID.
			/// </summary>
			[Column("sid"),               Nullable] public byte[]?  SID            { get; set; } // varbinary(85)
			/// <summary>
			/// Date and time the remote user was added.
			/// </summary>
			[Column("changedate"),     NotNull    ] public DateTime Changedate     { get; set; } // datetime
		}

		/// <summary>
		/// <para><strong>sys.sysservers (Transact-SQL)</strong></para>
		/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)</para>
		/// <para>Contains one row for each server that an instance of SQL Server can access as an OLE DB data source.<br/>
		/// <note type='important'><br/>
		/// This SQL Server 2000 system table is included as a view for backward compatibility. We  recommend that you use the current SQL Server system views instead. To find the equivalent system view or views, see <a href='https://docs.microsoft.com/en-us/sql/relational-databases/relational-databases/system-tables/mapping-system-tables-to-system-views-transact-sql'>Mapping System Tables to System Views (Transact-SQL)</a>. This feature will be removed in a future version of Microsoft SQL Server. Avoid using this feature in new development work, and plan to modify applications that currently use this feature.<br/>
		/// </note></para><br/>
		/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-compatibility-views/sys-sysservers-transact-sql'>sys.sysservers</a>.</para>
		/// </summary>
		[Table(Schema="sys", Name="sysservers", IsView=true)]
		public partial class Server
		{
			/// <summary>
			/// ID (for local use only) of the remote server.
			/// </summary>
			[Column("srvid"),                   Nullable] public short?   Srvid                { get; set; } // smallint
			/// <summary>
			/// Identified for informational purposes only. Not supported. Future compatibility is not guaranteed.
			/// </summary>
			[Column("srvstatus"),               Nullable] public short?   Srvstatus            { get; set; } // smallint
			/// <summary>
			/// Name of the server.
			/// </summary>
			[Column("srvname"),              NotNull    ] public string   Srvname              { get; set; } = null!; // sysname
			/// <summary>
			/// Product name for the remote server.
			/// </summary>
			[Column("srvproduct"),           NotNull    ] public string   Srvproduct           { get; set; } = null!; // sysname
			/// <summary>
			/// OLE DB provider name for access to this server.
			/// </summary>
			[Column("providername"),         NotNull    ] public string   Providername         { get; set; } = null!; // nvarchar(128)
			/// <summary>
			/// OLE DB data source value.
			/// </summary>
			[Column("datasource"),              Nullable] public string?  Datasource           { get; set; } // nvarchar(4000)
			/// <summary>
			/// OLE DB location value.
			/// </summary>
			[Column("location"),                Nullable] public string?  Location             { get; set; } // nvarchar(4000)
			/// <summary>
			/// OLE DB provider string value.
			/// </summary>
			[Column("providerstring"),          Nullable] public string?  Providerstring       { get; set; } // nvarchar(4000)
			/// <summary>
			/// Date this row was last updated.
			/// </summary>
			[Column("schemadate"),           NotNull    ] public DateTime Schemadate           { get; set; } // datetime
			/// <summary>
			/// Not used.
			/// </summary>
			[Column("topologyx"),               Nullable] public int?     Topologyx            { get; set; } // int
			/// <summary>
			/// Not used.
			/// </summary>
			[Column("topologyy"),               Nullable] public int?     Topologyy            { get; set; } // int
			/// <summary>
			/// Catalog that is used when a connection is made to an OLE DB provider.
			/// </summary>
			[Column("catalog"),                 Nullable] public string?  Catalog              { get; set; } // sysname
			/// <summary>
			/// The collation of the server.
			/// </summary>
			[Column("srvcollation"),            Nullable] public string?  Srvcollation         { get; set; } // sysname
			/// <summary>
			/// Time-out setting for the server-connection.
			/// </summary>
			[Column("connecttimeout"),          Nullable] public int?     Connecttimeout       { get; set; } // int
			/// <summary>
			/// Time-out setting for queries against the server.
			/// </summary>
			[Column("querytimeout"),            Nullable] public int?     Querytimeout         { get; set; } // int
			/// <summary>
			/// Identified for informational purposes only. Not supported. Future compatibility is not guaranteed.
			/// </summary>
			[Column("srvnetname"),              Nullable] public string?  Srvnetname           { get; set; } // char(30)
			/// <summary>
			/// 1 = Server is a remote server.<br/><br/> 0 = Server is a linked server.
			/// </summary>
			[Column("isremote"),                Nullable] public bool?    Isremote             { get; set; } // bit
			/// <summary>
			/// 1 = <strong>sp_serveroption\@rpc</strong> set to <strong>true</strong> or <strong>on</strong>.<br/><br/> 0 = <strong>sp_serveroption\@rpc</strong> set to <strong>false</strong> or <strong>off</strong>.
			/// </summary>
			[Column("rpc"),                  NotNull    ] public bool     Rpc                  { get; set; } // bit
			/// <summary>
			/// 1 = <strong>sp_serveroption\@pub</strong> set to <strong>true</strong> or <strong>on</strong>.<br/><br/> 0 = <strong>sp_serveroption\@pub</strong> set to <strong>false</strong> or <strong>off</strong>.
			/// </summary>
			[Column("pub"),                  NotNull    ] public bool     Pub                  { get; set; } // bit
			/// <summary>
			/// 1 = <strong>sp_serveroption\@sub</strong> set to <strong>true</strong> or <strong>on</strong>.<br/><br/> 0 = <strong>sp_serveroption\@sub</strong> set to <strong>false</strong> or <strong>off</strong>.
			/// </summary>
			[Column("sub"),                     Nullable] public bool?    Sub                  { get; set; } // bit
			/// <summary>
			/// 1 = <strong>sp_serveroption\@dist</strong> set to <strong>true</strong> or <strong>on</strong>.<br/><br/> 0 = <strong>sp_serveroption\@dist</strong> set to <strong>false</strong> or <strong>off</strong>.
			/// </summary>
			[Column("dist"),                    Nullable] public bool?    Dist                 { get; set; } // bit
			/// <summary>
			/// 1 = <strong>sp_serveroption\@dpub</strong> set to <strong>true</strong> or <strong>on</strong>.<br/><br/> 0 = <strong>sp_serveroption\@dpub</strong> set to <strong>false</strong> or <strong>off</strong>.
			/// </summary>
			[Column("dpub"),                    Nullable] public bool?    Dpub                 { get; set; } // bit
			/// <summary>
			/// 1 = <strong>sp_serveroption\@rpc out</strong> set to <strong>true</strong> or <strong>on</strong>.<br/><br/> 0 = <strong>sp_serveroption\@rpc out</strong> set to <strong>false</strong> or <strong>off</strong>.
			/// </summary>
			[Column("rpcout"),               NotNull    ] public bool     Rpcout               { get; set; } // bit
			/// <summary>
			/// 1 = <strong>sp_serveroption\@data access</strong> set to <strong>true</strong> or <strong>on</strong>.<br/><br/> 0 = <strong>sp_serveroption\@data access</strong> set to <strong>false</strong> or <strong>off</strong>.
			/// </summary>
			[Column("dataaccess"),           NotNull    ] public bool     Dataaccess           { get; set; } // bit
			/// <summary>
			/// 1 = <strong>sp_serveroption\@collation compatible</strong> set to <strong>true</strong> or <strong>on</strong>.<br/><br/> 0 = <strong>sp_serveroption\@collation compatible</strong> set to <strong>false</strong> or <strong>off</strong>.
			/// </summary>
			[Column("collationcompatible"),  NotNull    ] public bool     Collationcompatible  { get; set; } // bit
			/// <summary>
			/// 1 = <strong>sp_serveroption\@system</strong> set to <strong>true</strong> or <strong>on</strong>.<br/><br/> 0 = <strong>sp_serveroption\@system</strong> set to <strong>false</strong> or <strong>off</strong>.
			/// </summary>
			[Column("system"),               NotNull    ] public bool     System               { get; set; } // bit
			/// <summary>
			/// 1 = <strong>sp_serveroption\@remote collation</strong> set to <strong>true</strong> or <strong>on</strong>.<br/><br/> 0 = <strong>sp_serveroption\@remote collation</strong> set to <strong>false</strong> or <strong>off</strong>.
			/// </summary>
			[Column("useremotecollation"),   NotNull    ] public bool     Useremotecollation   { get; set; } // bit
			/// <summary>
			/// 1 = <strong>sp_serveroption\@lazy schema validation</strong> set to <strong>true</strong> or <strong>on</strong>.<br/><br/> 0 = <strong>sp_serveroption\@lazy schema validation</strong> set to <strong>false</strong> or <strong>off</strong>.
			/// </summary>
			[Column("lazyschemavalidation"), NotNull    ] public bool     Lazyschemavalidation { get; set; } // bit
			/// <summary>
			/// Server collation as set by <strong>sp_serveroption\@collation name</strong>.
			/// </summary>
			[Column("collation"),               Nullable] public string?  Collation            { get; set; } // sysname
			/// <summary>
			/// 0 = server is an instance of SQL Server<br/><br/> 1 = server is not an instance of SQL Server
			/// </summary>
			[Column("nonsqlsub"),               Nullable] public bool?    Nonsqlsub            { get; set; } // bit
		}

		/// <summary>
		/// <para><strong>sys.sysusers (Transact-SQL)</strong></para>
		/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions) √ Azure SQL Managed Instance √ Azure Synapse Analytics √ Analytics Platform System (PDW)</para>
		/// <para>Contains one row for each Microsoft Windows user, Windows group, Microsoft SQL Server user, or SQL Server role in the database.<br/>
		/// <note type='important'><br/>
		/// This SQL Server 2000 system table is included as a view for backward compatibility. We  recommend that you use the current SQL Server system views instead. To find the equivalent system view or views, see <a href='https://docs.microsoft.com/en-us/sql/relational-databases/relational-databases/system-tables/mapping-system-tables-to-system-views-transact-sql'>Mapping System Tables to System Views (Transact-SQL)</a>. This feature will be removed in a future version of Microsoft SQL Server. Avoid using this feature in new development work, and plan to modify applications that currently use this feature.<br/>
		/// </note></para><br/>
		/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-compatibility-views/sys-sysusers-transact-sql'>sys.sysusers</a>.</para>
		/// </summary>
		[Table(Schema="sys", Name="sysusers", IsView=true)]
		public partial class User
		{
			/// <summary>
			/// User ID, unique in this database.<br/><br/> 1 = Database owner<br/><br/> Overflows or returns NULL if the number of users and roles exceeds 32,767.
			/// </summary>
			[Column("uid"),            Nullable] public short?   UID         { get; set; } // smallint
			/// <summary>
			/// Identified for informational purposes only. Not supported. Future compatibility is not guaranteed.
			/// </summary>
			[Column("status"),         Nullable] public short?   Status      { get; set; } // smallint
			/// <summary>
			/// User name or group name, unique in this database.
			/// </summary>
			[Column("name"),        NotNull    ] public string   Name        { get; set; } = null!; // sysname
			/// <summary>
			/// Security identifier for this entry.
			/// </summary>
			[Column("sid"),            Nullable] public byte[]?  SID         { get; set; } // varbinary(85)
			/// <summary>
			/// Identified for informational purposes only. Not supported. Future compatibility is not guaranteed.
			/// </summary>
			[Column("roles"),          Nullable] public byte[]?  Roles       { get; set; } // varbinary(2048)
			/// <summary>
			/// Date the account was added.
			/// </summary>
			[Column("createdate"),  NotNull    ] public DateTime Createdate  { get; set; } // datetime
			/// <summary>
			/// Date the account was last changed.
			/// </summary>
			[Column("updatedate"),  NotNull    ] public DateTime Updatedate  { get; set; } // datetime
			/// <summary>
			/// Identified for informational purposes only. Not supported. Future compatibility is not guaranteed.<br/><br/> Overflows or returns NULL if the number of users and roles exceeds 32,767.
			/// </summary>
			[Column("altuid"),         Nullable] public short?   Altuid      { get; set; } // smallint
			/// <summary>
			/// Identified for informational purposes only. Not supported. Future compatibility is not guaranteed.
			/// </summary>
			[Column("password"),       Nullable] public byte[]?  Password    { get; set; } // varbinary(256)
			/// <summary>
			/// Group ID to which this user belongs. If <strong>uid</strong> is the same as <strong>gid</strong>, this entry defines a group. Overflows or returns NULL if the combined number of groups and users exceeds 32,767.
			/// </summary>
			[Column("gid"),            Nullable] public short?   Gid         { get; set; } // smallint
			/// <summary>
			/// Reserved.
			/// </summary>
			[Column("environ"),        Nullable] public string?  Environ     { get; set; } // varchar(255)
			/// <summary>
			/// 1 = Account has database access.
			/// </summary>
			[Column("hasdbaccess"),    Nullable] public int?     Hasdbaccess { get; set; } // int
			/// <summary>
			/// 1 = Account is a Windows group, Windows user, or SQL Server user with a login account.
			/// </summary>
			[Column("islogin"),        Nullable] public int?     Islogin     { get; set; } // int
			/// <summary>
			/// 1 = Account is a Windows group or Windows user.
			/// </summary>
			[Column("isntname"),       Nullable] public int?     Isntname    { get; set; } // int
			/// <summary>
			/// 1 = Account is a Windows group.
			/// </summary>
			[Column("isntgroup"),      Nullable] public int?     Isntgroup   { get; set; } // int
			/// <summary>
			/// 1 = Account is a Windows user.
			/// </summary>
			[Column("isntuser"),       Nullable] public int?     Isntuser    { get; set; } // int
			/// <summary>
			/// 1 = Account is a SQL Server user.
			/// </summary>
			[Column("issqluser"),      Nullable] public int?     Issqluser   { get; set; } // int
			/// <summary>
			/// 1 = Account is aliased to another user.
			/// </summary>
			[Column("isaliased"),      Nullable] public int?     Isaliased   { get; set; } // int
			/// <summary>
			/// 1 = Account is a SQL Server role.
			/// </summary>
			[Column("issqlrole"),      Nullable] public int?     Issqlrole   { get; set; } // int
			/// <summary>
			/// 1 = Account is an application role.
			/// </summary>
			[Column("isapprole"),      Nullable] public int?     Isapprole   { get; set; } // int
		}
	}

	public static partial class DatabaseMailSchema
	{
		public partial class DataContext
		{
			/// <summary>
			/// <para><strong>sysmail_allitems (Transact-SQL)</strong></para>
			/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions) √ Azure SQL Managed Instance</para>
			/// <para>Contains one row for each message processed by Database Mail. Use this view when you want to see the status of all messages.<br/>
			///  To see only messages with the failed status, use <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sysmail-faileditems-transact-sql'>sysmail_faileditems (Transact-SQL)</a>. To see only unsent messages, use <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sysmail-unsentitems-transact-sql'>sysmail_unsentitems (Transact-SQL)</a>. To see only messages that were sent, use <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sysmail-sentitems-transact-sql'>sysmail_sentitems (Transact-SQL)</a>.</para><br/>
			/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sysmail-allitems-transact-sql'>dbo.sysmail_allitems</a>.</para>
			/// </summary>
			public ITable<AllItem>        AllItems        { get { return _dataContext.GetTable<AllItem>(); } }
			/// <summary>
			/// <para><strong>sysmail_event_log (Transact-SQL)</strong></para>
			/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)</para>
			/// <para>Contains one row for each Windows or SQL Server message returned by the Database Mail system. (Message in this context refers to a message such as an error message, not an e-mail message.) Configure the <strong>Logging Level</strong> parameter by using the <strong>Configure System Parameters</strong> dialog box of the Database Mail Configuration Wizard, or the <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-stored-procedures/sysmail-configure-sp-transact-sql'>sysmail_configure_sp</a> stored procedure, to determine which messages are returned.</para><br/>
			/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sysmail-event-log-transact-sql'>dbo.sysmail_event_log</a>.</para>
			/// </summary>
			public ITable<EventLog>       EventLogs       { get { return _dataContext.GetTable<EventLog>(); } }
			/// <summary>
			/// <para><strong>sysmail_faileditems (Transact-SQL)</strong></para>
			/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)</para>
			/// <para>Contains one row for each Database Mail message with the <strong>failed</strong> status. Use this view to determine which messages were not successfully sent.<br/>
			///  To see all messages processed by Database Mail, use <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sysmail-allitems-transact-sql'>sysmail_allitems (Transact-SQL)</a>. To see only unsent messages, use <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sysmail-unsentitems-transact-sql'>sysmail_unsentitems (Transact-SQL)</a>. To see only messages that were sent, use <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sysmail-sentitems-transact-sql'>sysmail_sentitems (Transact-SQL)</a>. To view e-mail attachments, use <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sysmail-mailattachments-transact-sql'>sysmail_mailattachments (Transact-SQL)</a>.</para><br/>
			/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sysmail-faileditems-transact-sql'>dbo.sysmail_faileditems</a>.</para>
			/// </summary>
			public ITable<FailedItem>     FailedItems     { get { return _dataContext.GetTable<FailedItem>(); } }
			/// <summary>
			/// <para><strong>sysmail_mailattachments (Transact-SQL)</strong></para>
			/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)</para>
			/// <para>Contains one row for each attachment submitted to Database Mail. Use this view when you want information about Database Mail attachments. To review all e-mails processed by Database Mail use <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sysmail-allitems-transact-sql'>sysmail_allitems (Transact-SQL)</a>.</para><br/>
			/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sysmail-mailattachments-transact-sql'>dbo.sysmail_mailattachments</a>.</para>
			/// </summary>
			public ITable<MailAttachment> MailAttachments { get { return _dataContext.GetTable<MailAttachment>(); } }
			/// <summary>
			/// <para><strong>sysmail_sentitems (Transact-SQL)</strong></para>
			/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions) √ Azure SQL Managed Instance</para>
			/// <para>Contains one row for each message sent by Database Mail. Use <strong>sysmail_sentitems</strong> when you want to see which messages were successfully sent.<br/>
			///  To see all messages processed by Database Mail, use <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sysmail-allitems-transact-sql'>sysmail_allitems (Transact-SQL)</a>. To see only messages with the failed status, use <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sysmail-faileditems-transact-sql'>sysmail_faileditems (Transact-SQL)</a>. To see only unsent or retrying messages, use <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sysmail-unsentitems-transact-sql'>sysmail_unsentitems (Transact-SQL)</a>. To see e-mail attachments, use <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sysmail-mailattachments-transact-sql'>sysmail_mailattachments (Transact-SQL)</a>.</para><br/>
			/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sysmail-sentitems-transact-sql'>dbo.sysmail_sentitems</a>.</para>
			/// </summary>
			public ITable<SentItem>       SentItems       { get { return _dataContext.GetTable<SentItem>(); } }
			/// <summary>
			/// <para><strong>sysmail_unsentitems (Transact-SQL)</strong></para>
			/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions) √ Azure SQL Managed Instance</para>
			/// <para>Contains one row for each Database Mail message with the <strong>unsent</strong> or <strong>retrying</strong> status. Messages with unsent or retrying status are still in the mail queue and may be sent at any time. Messages can have the <strong>unsent</strong> status for the following reasons:<br/>
			/// -   The message is new, and though the message has been placed on the mail queue, Database Mail is working on other messages and has not yet reached this message.<br/>
			/// -   The Database Mail external program is not running and no mail is being sent.<br/>
			///  Messages can have the <strong>retrying</strong> status for the following reasons:<br/>
			/// -   Database Mail has attempted to send the mail, but the SMTP mail server could not be contacted. Database Mail will continue to attempt to send the message using other Database Mail accounts assigned to the profile that sent the message. If no accounts can send the mail, Database Mail will wait for the length of time configured for the <strong>Account Retry Delay</strong> parameter and then attempt to send the message again. Database Mail uses the <strong>Account Retry Attempts</strong> parameter to determine how many times to attempt to send the message. Messages retain <strong>retrying</strong> status as long as Database Mail is attempting to send the message.<br/>
			///  Use this view when you want to see how many messages are waiting to be sent and how long they have been in the mail queue. Normally the number of <strong>unsent</strong> messages will be low. Conduct a benchmark test during normal operations to determine a reasonable number of messages in the message queue for your operations.<br/>
			///  To see all messages processed by Database Mail, use <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sysmail-allitems-transact-sql'>sysmail_allitems (Transact-SQL)</a>. To see only messages with the failed status, use <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sysmail-faileditems-transact-sql'>sysmail_faileditems (Transact-SQL)</a>. To see only messages that were sent, use <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sysmail-sentitems-transact-sql'>sysmail_sentitems (Transact-SQL)</a>.</para><br/>
			/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sysmail-unsentitems-transact-sql'>dbo.sysmail_unsentitems</a>.</para>
			/// </summary>
			public ITable<UnsentItem>     UnsentItems     { get { return _dataContext.GetTable<UnsentItem>(); } }

			private readonly IDataContext _dataContext;

			public DataContext(IDataContext dataContext)
			{
				_dataContext = dataContext;
			}
		}

		/// <summary>
		/// <para><strong>sysmail_allitems (Transact-SQL)</strong></para>
		/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions) √ Azure SQL Managed Instance</para>
		/// <para>Contains one row for each message processed by Database Mail. Use this view when you want to see the status of all messages.<br/>
		///  To see only messages with the failed status, use <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sysmail-faileditems-transact-sql'>sysmail_faileditems (Transact-SQL)</a>. To see only unsent messages, use <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sysmail-unsentitems-transact-sql'>sysmail_unsentitems (Transact-SQL)</a>. To see only messages that were sent, use <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sysmail-sentitems-transact-sql'>sysmail_sentitems (Transact-SQL)</a>.</para><br/>
		/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sysmail-allitems-transact-sql'>dbo.sysmail_allitems</a>.</para>
		/// </summary>
		[Table(Database="msdb", Schema="dbo", Name="sysmail_allitems", IsView=true)]
		public partial class AllItem
		{
			/// <summary>
			/// Identifier of the mail item in the mail queue.
			/// </summary>
			[Column("mailitem_id"),                 NotNull] public int      MailItemID              { get; set; } // int
			/// <summary>
			/// The identifier of the profile used to send the message.
			/// </summary>
			[Column("profile_id"),                  NotNull] public int      ProfileID               { get; set; } // int
			/// <summary>
			/// The e-mail addresses of the message recipients.
			/// </summary>
			[Column("recipients"),                  NotNull] public string   Recipients              { get; set; } = null!; // varchar(max)
			/// <summary>
			/// The e-mail addresses of those who receive copies of the message.
			/// </summary>
			[Column("copy_recipients"),             NotNull] public string   CopyRecipients          { get; set; } = null!; // varchar(max)
			/// <summary>
			/// The e-mail addresses of those who receive copies of the message but whose names do not appear in the message header.
			/// </summary>
			[Column("blind_copy_recipients"),       NotNull] public string   BlindCopyRecipients     { get; set; } = null!; // varchar(max)
			/// <summary>
			/// The subject line of the message.
			/// </summary>
			[Column("subject"),                     NotNull] public string   Subject                 { get; set; } = null!; // nvarchar(510)
			/// <summary>
			/// The body of the message.
			/// </summary>
			[Column("body"),                        NotNull] public string   Body                    { get; set; } = null!; // varchar(max)
			/// <summary>
			/// The body format of the message. The possible values are TEXT and HTML.
			/// </summary>
			[Column("body_format"),                 NotNull] public string   BodyFormat              { get; set; } = null!; // varchar(20)
			/// <summary>
			/// The <strong>importance</strong> parameter of the message.
			/// </summary>
			[Column("importance"),                  NotNull] public string   Importance              { get; set; } = null!; // varchar(6)
			/// <summary>
			/// The <strong>sensitivity</strong> parameter of the message.
			/// </summary>
			[Column("sensitivity"),                 NotNull] public string   Sensitivity             { get; set; } = null!; // varchar(12)
			/// <summary>
			/// A semicolon-delimited list of file names attached to the e-mail message.
			/// </summary>
			[Column("file_attachments"),            NotNull] public string   FileAttachments         { get; set; } = null!; // varchar(max)
			/// <summary>
			/// The type of mail attachment.
			/// </summary>
			[Column("attachment_encoding"),         NotNull] public string   AttachmentEncoding      { get; set; } = null!; // varchar(20)
			/// <summary>
			/// The query executed by the mail program.
			/// </summary>
			[Column("query"),                       NotNull] public string   Query                   { get; set; } = null!; // varchar(max)
			/// <summary>
			/// The database context within which the mail program executed the query.
			/// </summary>
			[Column("execute_query_database"),      NotNull] public string   ExecuteQueryDatabase    { get; set; } = null!; // sysname
			/// <summary>
			/// When the value is 0, the query results were included in the body of the e-mail message, after the contents of the body. When the value is 1, the results were returned as an attachment.
			/// </summary>
			[Column("attach_query_result_as_file"), NotNull] public bool     AttachQueryResultAsFile { get; set; } // bit
			/// <summary>
			/// When the value is 1, query results contained column headers. When the value is 0, query results did not include column headers.
			/// </summary>
			[Column("query_result_header"),         NotNull] public bool     QueryResultHeader       { get; set; } // bit
			/// <summary>
			/// The <strong>query_result_width</strong> parameter of the message.
			/// </summary>
			[Column("query_result_width"),          NotNull] public int      QueryResultWidth        { get; set; } // int
			/// <summary>
			/// The character used to separate columns in the query output.
			/// </summary>
			[Column("query_result_separator"),      NotNull] public string   QueryResultSeparator    { get; set; } = null!; // char(1)
			/// <summary>
			/// The <strong>exclude_query_output</strong> parameter of the message. For more information, see <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-stored-procedures/sp-send-dbmail-transact-sql'>sp_send_dbmail (Transact-SQL)</a>.
			/// </summary>
			[Column("exclude_query_output"),        NotNull] public bool     ExcludeQueryOutput      { get; set; } // bit
			/// <summary>
			/// The <strong>append_query_error</strong> parameter of the message. 0 indicates that Database Mail should not send the e-mail message if there is an error in the query.
			/// </summary>
			[Column("append_query_error"),          NotNull] public bool     AppendQueryError        { get; set; } // bit
			/// <summary>
			/// The date and time the message was placed on the mail queue.
			/// </summary>
			[Column("send_request_date"),           NotNull] public DateTime SendRequestDate         { get; set; } // datetime
			/// <summary>
			/// The user who submitted the message. This is the user context of the database mail procedure, not the From: field of the message.
			/// </summary>
			[Column("send_request_user"),           NotNull] public string   SendRequestUser         { get; set; } = null!; // sysname
			/// <summary>
			/// The identifier of the Database Mail account used to send the message.
			/// </summary>
			[Column("sent_account_id"),             NotNull] public int      SentAccountID           { get; set; } // int
			/// <summary>
			/// The status of the mail. Possible values are:<br/><br/> <strong>sent</strong> - The mail was sent.<br/><br/> <strong>unsent</strong> - Database mail is still attempting to send the message.<br/><br/> <strong>retrying</strong> - Database Mail failed to send the message but is attempting to send it again.<br/><br/> <strong>failed</strong> - Database mail was unable to send the message.
			/// </summary>
			[Column("sent_status"),                 NotNull] public string   SentStatus              { get; set; } = null!; // varchar(8)
			/// <summary>
			/// The date and time that the message was sent.
			/// </summary>
			[Column("sent_date"),                   NotNull] public DateTime SentDate                { get; set; } // datetime
			/// <summary>
			/// The date and time of the last modification of the row.
			/// </summary>
			[Column("last_mod_date"),               NotNull] public DateTime LastModDate             { get; set; } // datetime
			/// <summary>
			/// The user who last modified the row.
			/// </summary>
			[Column("last_mod_user"),               NotNull] public string   LastModUser             { get; set; } = null!; // sysname
		}

		/// <summary>
		/// <para><strong>sysmail_event_log (Transact-SQL)</strong></para>
		/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)</para>
		/// <para>Contains one row for each Windows or SQL Server message returned by the Database Mail system. (Message in this context refers to a message such as an error message, not an e-mail message.) Configure the <strong>Logging Level</strong> parameter by using the <strong>Configure System Parameters</strong> dialog box of the Database Mail Configuration Wizard, or the <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-stored-procedures/sysmail-configure-sp-transact-sql'>sysmail_configure_sp</a> stored procedure, to determine which messages are returned.</para><br/>
		/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sysmail-event-log-transact-sql'>dbo.sysmail_event_log</a>.</para>
		/// </summary>
		[Table(Database="msdb", Schema="dbo", Name="sysmail_event_log", IsView=true)]
		public partial class EventLog
		{
			/// <summary>
			/// Identifier of items in the log.
			/// </summary>
			[Column("Log_id"),        NotNull] public int      LogID       { get; set; } // int
			/// <summary>
			/// The type of notice inserted in the log. Possible values are errors, warnings, informational messages, success messages, and additional internal messages.
			/// </summary>
			[Column("event_type"),    NotNull] public string   EventType   { get; set; } = null!; // varchar(11)
			/// <summary>
			/// The date and time the log entry is made.
			/// </summary>
			[Column("log_date"),      NotNull] public DateTime LogDate     { get; set; } // datetime
			/// <summary>
			/// The text of the message being recorded.
			/// </summary>
			[Column("description"),   NotNull] public string   Description { get; set; } = null!; // nvarchar(max)
			/// <summary>
			/// The process id of the Database Mail external program. This typically changes each time the Database Mail external program starts.
			/// </summary>
			[Column("process_id"),    NotNull] public int      ProcessID   { get; set; } // int
			/// <summary>
			/// Identifier of the mail item in the mail queue. NULL if the message is not related to a specific e-mail item.
			/// </summary>
			[Column("mailitem_id"),   NotNull] public int      MailItemID  { get; set; } // int
			/// <summary>
			/// The <strong>account_id</strong> of the account related to the event. NULL if the message is not related to a specific account.
			/// </summary>
			[Column("account_id"),    NotNull] public int      AccountID   { get; set; } // int
			/// <summary>
			/// The date and time of the last modification of the row.
			/// </summary>
			[Column("last_mod_date"), NotNull] public DateTime LastModDate { get; set; } // datetime
			/// <summary>
			/// The user who last modified the row. For e-mails, this is the user who sent the mail. For messages generated by the Database Mail external program, this is the user context of the program.
			/// </summary>
			[Column("last_mod_user"), NotNull] public string   LastModUser { get; set; } = null!; // sysname
		}

		/// <summary>
		/// <para><strong>sysmail_faileditems (Transact-SQL)</strong></para>
		/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)</para>
		/// <para>Contains one row for each Database Mail message with the <strong>failed</strong> status. Use this view to determine which messages were not successfully sent.<br/>
		///  To see all messages processed by Database Mail, use <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sysmail-allitems-transact-sql'>sysmail_allitems (Transact-SQL)</a>. To see only unsent messages, use <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sysmail-unsentitems-transact-sql'>sysmail_unsentitems (Transact-SQL)</a>. To see only messages that were sent, use <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sysmail-sentitems-transact-sql'>sysmail_sentitems (Transact-SQL)</a>. To view e-mail attachments, use <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sysmail-mailattachments-transact-sql'>sysmail_mailattachments (Transact-SQL)</a>.</para><br/>
		/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sysmail-faileditems-transact-sql'>dbo.sysmail_faileditems</a>.</para>
		/// </summary>
		[Table(Database="msdb", Schema="dbo", Name="sysmail_faileditems", IsView=true)]
		public partial class FailedItem
		{
			/// <summary>
			/// Identifier of the mail item in the mail queue.
			/// </summary>
			[Column("mailitem_id"),                 NotNull] public int      MailItemID              { get; set; } // int
			/// <summary>
			/// The identifier of the profile used to submit the message.
			/// </summary>
			[Column("profile_id"),                  NotNull] public int      ProfileID               { get; set; } // int
			/// <summary>
			/// The e-mail addresses of the message recipients.
			/// </summary>
			[Column("recipients"),                  NotNull] public string   Recipients              { get; set; } = null!; // varchar(max)
			/// <summary>
			/// The e-mail addresses of those who receive copies of the message.
			/// </summary>
			[Column("copy_recipients"),             NotNull] public string   CopyRecipients          { get; set; } = null!; // varchar(max)
			/// <summary>
			/// The e-mail addresses of those who receive copies of the message but whose names do not appear in the message header.
			/// </summary>
			[Column("blind_copy_recipients"),       NotNull] public string   BlindCopyRecipients     { get; set; } = null!; // varchar(max)
			/// <summary>
			/// The subject line of the message.
			/// </summary>
			[Column("subject"),                     NotNull] public string   Subject                 { get; set; } = null!; // nvarchar(510)
			/// <summary>
			/// The body of the message.
			/// </summary>
			[Column("body"),                        NotNull] public string   Body                    { get; set; } = null!; // varchar(max)
			/// <summary>
			/// The body format of the message. The possible values are TEXT and HTML.
			/// </summary>
			[Column("body_format"),                 NotNull] public string   BodyFormat              { get; set; } = null!; // varchar(20)
			/// <summary>
			/// The <strong>importance</strong> parameter of the message.
			/// </summary>
			[Column("importance"),                  NotNull] public string   Importance              { get; set; } = null!; // varchar(6)
			/// <summary>
			/// The <strong>sensitivity</strong> parameter of the message.
			/// </summary>
			[Column("sensitivity"),                 NotNull] public string   Sensitivity             { get; set; } = null!; // varchar(12)
			/// <summary>
			/// A semicolon-delimited list of file names attached to the e-mail message.
			/// </summary>
			[Column("file_attachments"),            NotNull] public string   FileAttachments         { get; set; } = null!; // varchar(max)
			/// <summary>
			/// The type of mail attachment.
			/// </summary>
			[Column("Attachment_encoding"),         NotNull] public string   AttachmentEncoding      { get; set; } = null!; // varchar(20)
			/// <summary>
			/// The query executed by the mail program.
			/// </summary>
			[Column(),                              NotNull] public string   Query                   { get; set; } = null!; // varchar(max)
			/// <summary>
			/// The database context within which the mail program executed the query.
			/// </summary>
			[Column("execute_query_database"),      NotNull] public string   ExecuteQueryDatabase    { get; set; } = null!; // sysname
			/// <summary>
			/// When the value is 0, the query results were included in the body of the e-mail message, after the contents of the body. When the value is 1, the results were returned as an attachment.
			/// </summary>
			[Column("attach_query_result_as_file"), NotNull] public bool     AttachQueryResultAsFile { get; set; } // bit
			/// <summary>
			/// When the value is 1, query results contained column headers. When the value is 0, query results did not include column headers.
			/// </summary>
			[Column("query_result_header"),         NotNull] public bool     QueryResultHeader       { get; set; } // bit
			/// <summary>
			/// The <strong>query_result_width</strong> parameter of the message.
			/// </summary>
			[Column("query_result_width"),          NotNull] public int      QueryResultWidth        { get; set; } // int
			/// <summary>
			/// The character used to separate columns in the query output.
			/// </summary>
			[Column("query_result_separator"),      NotNull] public string   QueryResultSeparator    { get; set; } = null!; // char(1)
			/// <summary>
			/// The <strong>exclude_query_output</strong> parameter of the message. For more information, see <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-stored-procedures/sp-send-dbmail-transact-sql'>sp_send_dbmail (Transact-SQL)</a>.
			/// </summary>
			[Column("exclude_query_output"),        NotNull] public bool     ExcludeQueryOutput      { get; set; } // bit
			/// <summary>
			/// The <strong>append_query_error</strong> parameter of the message. 0 indicates that Database Mail should not send the e-mail message if there is an error in the query.
			/// </summary>
			[Column("append_query_error"),          NotNull] public bool     AppendQueryError        { get; set; } // bit
			/// <summary>
			/// The date and time the message was placed on the mail queue.
			/// </summary>
			[Column("send_request_date"),           NotNull] public DateTime SendRequestDate         { get; set; } // datetime
			/// <summary>
			/// The user who submitted the message. This is the user context of the database mail procedure, not the From: field of the message.
			/// </summary>
			[Column("send_request_user"),           NotNull] public string   SendRequestUser         { get; set; } = null!; // sysname
			/// <summary>
			/// The identifier of the Database Mail account used to send the message. Always NULL for this view.
			/// </summary>
			[Column("sent_account_id"),             NotNull] public int      SentAccountID           { get; set; } // int
			/// <summary>
			/// The status of the mail. Always <strong>failed</strong> for this view.
			/// </summary>
			[Column("sent_status"),                 NotNull] public string   SentStatus              { get; set; } = null!; // varchar(8)
			/// <summary>
			/// The date and time that the message was removed from the mail queue.
			/// </summary>
			[Column("sent_date"),                   NotNull] public DateTime SentDate                { get; set; } // datetime
			/// <summary>
			/// The date and time of the last modification of the row.
			/// </summary>
			[Column("last_mod_date"),               NotNull] public DateTime LastModDate             { get; set; } // datetime
			/// <summary>
			/// The user who last modified the row.
			/// </summary>
			[Column("last_mod_user"),               NotNull] public string   LastModUser             { get; set; } = null!; // sysname
		}

		/// <summary>
		/// <para><strong>sysmail_mailattachments (Transact-SQL)</strong></para>
		/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)</para>
		/// <para>Contains one row for each attachment submitted to Database Mail. Use this view when you want information about Database Mail attachments. To review all e-mails processed by Database Mail use <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sysmail-allitems-transact-sql'>sysmail_allitems (Transact-SQL)</a>.</para><br/>
		/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sysmail-mailattachments-transact-sql'>dbo.sysmail_mailattachments</a>.</para>
		/// </summary>
		[Table(Database="msdb", Schema="dbo", Name="sysmail_mailattachments", IsView=true)]
		public partial class MailAttachment
		{
			/// <summary>
			/// Identifier of the attachment.
			/// </summary>
			[Column("attachment_id"), NotNull] public int      AttachmentID { get; set; } // int
			/// <summary>
			/// Identifier of the mail item that contained the attachment.
			/// </summary>
			[Column("mailitem_id"),   NotNull] public int      MailItemID   { get; set; } // int
			/// <summary>
			/// The file name of the attachment. When <strong>attach_query_result</strong> is 1 and <strong>query_attachment_filename</strong> is NULL, Database Mail creates an arbitrary filename.
			/// </summary>
			[Column("filename"),      NotNull] public string   FileName     { get; set; } = null!; // nvarchar(520)
			/// <summary>
			/// The size of the attachment in bytes.
			/// </summary>
			[Column("filesize"),      NotNull] public int      FileSize     { get; set; } // int
			/// <summary>
			/// The content of the attachment.
			/// </summary>
			[Column("attachment"),    NotNull] public byte[]   Attachment   { get; set; } = null!; // varbinary(max)
			/// <summary>
			/// The date and time of the last modification of the row.
			/// </summary>
			[Column("last_mod_date"), NotNull] public DateTime LastModDate  { get; set; } // datetime
			/// <summary>
			/// The user who last modified the row.
			/// </summary>
			[Column("last_mod_user"), NotNull] public string   LastModUser  { get; set; } = null!; // sysname
		}

		/// <summary>
		/// <para><strong>sysmail_sentitems (Transact-SQL)</strong></para>
		/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions) √ Azure SQL Managed Instance</para>
		/// <para>Contains one row for each message sent by Database Mail. Use <strong>sysmail_sentitems</strong> when you want to see which messages were successfully sent.<br/>
		///  To see all messages processed by Database Mail, use <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sysmail-allitems-transact-sql'>sysmail_allitems (Transact-SQL)</a>. To see only messages with the failed status, use <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sysmail-faileditems-transact-sql'>sysmail_faileditems (Transact-SQL)</a>. To see only unsent or retrying messages, use <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sysmail-unsentitems-transact-sql'>sysmail_unsentitems (Transact-SQL)</a>. To see e-mail attachments, use <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sysmail-mailattachments-transact-sql'>sysmail_mailattachments (Transact-SQL)</a>.</para><br/>
		/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sysmail-sentitems-transact-sql'>dbo.sysmail_sentitems</a>.</para>
		/// </summary>
		[Table(Database="msdb", Schema="dbo", Name="sysmail_sentitems", IsView=true)]
		public partial class SentItem
		{
			/// <summary>
			/// Identifier of the mail item in the mail queue.
			/// </summary>
			[Column("mailitem_id"),                 NotNull] public int      MailItemID              { get; set; } // int
			/// <summary>
			/// The identifier of the profile used to send the message.
			/// </summary>
			[Column("profile_id"),                  NotNull] public int      ProfileID               { get; set; } // int
			/// <summary>
			/// The e-mail addresses of the message recipients.
			/// </summary>
			[Column("recipients"),                  NotNull] public string   Recipients              { get; set; } = null!; // varchar(max)
			/// <summary>
			/// The e-mail addresses of those who receive copies of the message.
			/// </summary>
			[Column("copy_recipients"),             NotNull] public string   CopyRecipients          { get; set; } = null!; // varchar(max)
			/// <summary>
			/// The e-mail addresses of those who receive copies of the message but whose names do not appear in the message header.
			/// </summary>
			[Column("blind_copy_recipients"),       NotNull] public string   BlindCopyRecipients     { get; set; } = null!; // varchar(max)
			/// <summary>
			/// The subject line of the message.
			/// </summary>
			[Column("subject"),                     NotNull] public string   Subject                 { get; set; } = null!; // nvarchar(510)
			/// <summary>
			/// The body of the message.
			/// </summary>
			[Column("body"),                        NotNull] public string   Body                    { get; set; } = null!; // varchar(max)
			/// <summary>
			/// The body format of the message. The possible values are <strong>TEXT</strong> and <strong>HTML</strong>.
			/// </summary>
			[Column("body_format"),                 NotNull] public string   BodyFormat              { get; set; } = null!; // varchar(20)
			/// <summary>
			/// The <strong>importance</strong> parameter of the message.
			/// </summary>
			[Column("importance"),                  NotNull] public string   Importance              { get; set; } = null!; // varchar(6)
			/// <summary>
			/// The <strong>sensitivity</strong> parameter of the message.
			/// </summary>
			[Column("sensitivity"),                 NotNull] public string   Sensitivity             { get; set; } = null!; // varchar(12)
			/// <summary>
			/// A semicolon-delimited list of file names attached to the e-mail message.
			/// </summary>
			[Column("file_attachments"),            NotNull] public string   FileAttachments         { get; set; } = null!; // varchar(max)
			/// <summary>
			/// The type of mail attachment.
			/// </summary>
			[Column("attachment_encoding"),         NotNull] public string   AttachmentEncoding      { get; set; } = null!; // varchar(20)
			/// <summary>
			/// The query executed by the mail program.
			/// </summary>
			[Column("query"),                       NotNull] public string   Query                   { get; set; } = null!; // varchar(max)
			/// <summary>
			/// The database context within which the mail program executed the query.
			/// </summary>
			[Column("execute_query_database"),      NotNull] public string   ExecuteQueryDatabase    { get; set; } = null!; // sysname
			/// <summary>
			/// When the value is 0, the query results were included in the body of the e-mail message, after the contents of the body. When the value is 1, the results were returned as an attachment.
			/// </summary>
			[Column("attach_query_result_as_file"), NotNull] public bool     AttachQueryResultAsFile { get; set; } // bit
			/// <summary>
			/// When the value is 1, query results contained column headers. When the value is 0, query results did not include column headers.
			/// </summary>
			[Column("query_result_header"),         NotNull] public bool     QueryResultHeader       { get; set; } // bit
			/// <summary>
			/// The <strong>query_result_width</strong> parameter of the message.
			/// </summary>
			[Column("query_result_width"),          NotNull] public int      QueryResultWidth        { get; set; } // int
			/// <summary>
			/// The character used to separate columns in the query output.
			/// </summary>
			[Column("query_result_separator"),      NotNull] public string   QueryResultSeparator    { get; set; } = null!; // char(1)
			/// <summary>
			/// The <strong>exclude_query_output</strong> parameter of the message. For more information, see <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-stored-procedures/sp-send-dbmail-transact-sql'>sp_send_dbmail (Transact-SQL)</a>.
			/// </summary>
			[Column("exclude_query_output"),        NotNull] public bool     ExcludeQueryOutput      { get; set; } // bit
			/// <summary>
			/// The <strong>append_query_error</strong> parameter of the message. 0 indicates that Database Mail should not send the e-mail message if there is an error in the query.
			/// </summary>
			[Column("append_query_error"),          NotNull] public bool     AppendQueryError        { get; set; } // bit
			/// <summary>
			/// The date and time the message was placed on the mail queue.
			/// </summary>
			[Column("send_request_date"),           NotNull] public DateTime SendRequestDate         { get; set; } // datetime
			/// <summary>
			/// The user who sent the message. This is the user context of the database mail procedure, not the From: field of the message.
			/// </summary>
			[Column("send_request_user"),           NotNull] public string   SendRequestUser         { get; set; } = null!; // sysname
			/// <summary>
			/// The identifier of the Database Mail account used to send the message.
			/// </summary>
			[Column("sent_account_id"),             NotNull] public int      SentAccountID           { get; set; } // int
			/// <summary>
			/// The status of the mail. Always <strong>sent</strong> for this view.
			/// </summary>
			[Column("sent_status"),                 NotNull] public string   SentStatus              { get; set; } = null!; // varchar(8)
			/// <summary>
			/// The date and time that the message was sent.
			/// </summary>
			[Column("sent_date"),                   NotNull] public DateTime SentDate                { get; set; } // datetime
			/// <summary>
			/// The date and time of the last modification of the row.
			/// </summary>
			[Column("last_mod_date"),               NotNull] public DateTime LastModDate             { get; set; } // datetime
			/// <summary>
			/// The user who last modified the row.
			/// </summary>
			[Column("last_mod_user"),               NotNull] public string   LastModUser             { get; set; } = null!; // sysname
		}

		/// <summary>
		/// <para><strong>sysmail_unsentitems (Transact-SQL)</strong></para>
		/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions) √ Azure SQL Managed Instance</para>
		/// <para>Contains one row for each Database Mail message with the <strong>unsent</strong> or <strong>retrying</strong> status. Messages with unsent or retrying status are still in the mail queue and may be sent at any time. Messages can have the <strong>unsent</strong> status for the following reasons:<br/>
		/// -   The message is new, and though the message has been placed on the mail queue, Database Mail is working on other messages and has not yet reached this message.<br/>
		/// -   The Database Mail external program is not running and no mail is being sent.<br/>
		///  Messages can have the <strong>retrying</strong> status for the following reasons:<br/>
		/// -   Database Mail has attempted to send the mail, but the SMTP mail server could not be contacted. Database Mail will continue to attempt to send the message using other Database Mail accounts assigned to the profile that sent the message. If no accounts can send the mail, Database Mail will wait for the length of time configured for the <strong>Account Retry Delay</strong> parameter and then attempt to send the message again. Database Mail uses the <strong>Account Retry Attempts</strong> parameter to determine how many times to attempt to send the message. Messages retain <strong>retrying</strong> status as long as Database Mail is attempting to send the message.<br/>
		///  Use this view when you want to see how many messages are waiting to be sent and how long they have been in the mail queue. Normally the number of <strong>unsent</strong> messages will be low. Conduct a benchmark test during normal operations to determine a reasonable number of messages in the message queue for your operations.<br/>
		///  To see all messages processed by Database Mail, use <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sysmail-allitems-transact-sql'>sysmail_allitems (Transact-SQL)</a>. To see only messages with the failed status, use <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sysmail-faileditems-transact-sql'>sysmail_faileditems (Transact-SQL)</a>. To see only messages that were sent, use <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sysmail-sentitems-transact-sql'>sysmail_sentitems (Transact-SQL)</a>.</para><br/>
		/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sysmail-unsentitems-transact-sql'>dbo.sysmail_unsentitems</a>.</para>
		/// </summary>
		[Table(Database="msdb", Schema="dbo", Name="sysmail_unsentitems", IsView=true)]
		public partial class UnsentItem
		{
			/// <summary>
			/// Identifier of the mail item in the mail queue.
			/// </summary>
			[Column("mailitem_id"),                 NotNull] public int      MailItemID              { get; set; } // int
			/// <summary>
			/// The identifier of the profile used to submit the message.
			/// </summary>
			[Column("profile_id"),                  NotNull] public int      ProfileID               { get; set; } // int
			/// <summary>
			/// The e-mail addresses of the message recipients.
			/// </summary>
			[Column("recipients"),                  NotNull] public string   Recipients              { get; set; } = null!; // varchar(max)
			/// <summary>
			/// The e-mail addresses of those who receive copies of the message.
			/// </summary>
			[Column("copy_recipients"),             NotNull] public string   CopyRecipients          { get; set; } = null!; // varchar(max)
			/// <summary>
			/// The e-mail addresses of those who receive copies of the message but whose names do not appear in the message header.
			/// </summary>
			[Column("blind_copy_recipients"),       NotNull] public string   BlindCopyRecipients     { get; set; } = null!; // varchar(max)
			/// <summary>
			/// The subject line of the message.
			/// </summary>
			[Column("subject"),                     NotNull] public string   Subject                 { get; set; } = null!; // nvarchar(510)
			/// <summary>
			/// The body of the message.
			/// </summary>
			[Column("body"),                        NotNull] public string   Body                    { get; set; } = null!; // varchar(max)
			/// <summary>
			/// The body format of the message. The possible values are <strong>TEXT</strong> and <strong>HTML</strong>.
			/// </summary>
			[Column("body_format"),                 NotNull] public string   BodyFormat              { get; set; } = null!; // varchar(20)
			/// <summary>
			/// The <strong>importance</strong> parameter of the message.
			/// </summary>
			[Column("importance"),                  NotNull] public string   Importance              { get; set; } = null!; // varchar(6)
			/// <summary>
			/// The <strong>sensitivity</strong> parameter of the message.
			/// </summary>
			[Column("sensitivity"),                 NotNull] public string   Sensitivity             { get; set; } = null!; // varchar(12)
			/// <summary>
			/// A semicolon-delimited list of file names attached to the e-mail message.
			/// </summary>
			[Column("file_attachments"),            NotNull] public string   FileAttachments         { get; set; } = null!; // varchar(max)
			/// <summary>
			/// The type of mail attachment.
			/// </summary>
			[Column("attachment_encoding"),         NotNull] public string   AttachmentEncoding      { get; set; } = null!; // varchar(20)
			/// <summary>
			/// The query executed by the mail program.
			/// </summary>
			[Column("query"),                       NotNull] public string   Query                   { get; set; } = null!; // varchar(max)
			/// <summary>
			/// The database context within which the mail program executed the query.
			/// </summary>
			[Column("execute_query_database"),      NotNull] public string   ExecuteQueryDatabase    { get; set; } = null!; // sysname
			/// <summary>
			/// When the value is 0, the query results were included in the body of the e-mail message, after the contents of the body. When the value is 1, the results were returned as an attachment.
			/// </summary>
			[Column("attach_query_result_as_file"), NotNull] public bool     AttachQueryResultAsFile { get; set; } // bit
			/// <summary>
			/// When the value is 1, query results contained column headers. When the value is 0, query results did not include column headers.
			/// </summary>
			[Column("query_result_header"),         NotNull] public bool     QueryResultHeader       { get; set; } // bit
			/// <summary>
			/// The <strong>query_result_width</strong> parameter of the message.
			/// </summary>
			[Column("query_result_width"),          NotNull] public int      QueryResultWidth        { get; set; } // int
			/// <summary>
			/// The character used to separate columns in the query output.
			/// </summary>
			[Column("query_result_separator"),      NotNull] public string   QueryResultSeparator    { get; set; } = null!; // char(1)
			/// <summary>
			/// The <strong>exclude_query_output</strong> parameter of the message. For more information, see <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-stored-procedures/sp-send-dbmail-transact-sql'>sp_send_dbmail (Transact-SQL)</a>.
			/// </summary>
			[Column("exclude_query_output"),        NotNull] public bool     ExcludeQueryOutput      { get; set; } // bit
			/// <summary>
			/// The <strong>append_query_error</strong> parameter of the message. 0 indicates that Database Mail should not send the e-mail message if there is an error in the query.
			/// </summary>
			[Column("append_query_error"),          NotNull] public bool     AppendQueryError        { get; set; } // bit
			/// <summary>
			/// The date and time the message was placed on the mail queue.
			/// </summary>
			[Column("send_request_date"),           NotNull] public DateTime SendRequestDate         { get; set; } // datetime
			/// <summary>
			/// The user who submitted the message. This is the user context of the database mail procedure, not the <strong>From</strong> field of the message.
			/// </summary>
			[Column("send_request_user"),           NotNull] public string   SendRequestUser         { get; set; } = null!; // sysname
			/// <summary>
			/// The identifier of the Database Mail account used to send the message. Always NULL for this view.
			/// </summary>
			[Column("sent_account_id"),             NotNull] public int      SentAccountID           { get; set; } // int
			/// <summary>
			/// Will be <strong>unsent</strong> if Database Mail has not attempted to send the mail. Will be <strong>retrying</strong> if Database Mail failed to send the message but is trying again.
			/// </summary>
			[Column("sent_status"),                 NotNull] public string   SentStatus              { get; set; } = null!; // varchar(8)
			/// <summary>
			/// The date and time the Database Mail last attempted to send the mail. NULL if Database Mail has not attempted to send the message.
			/// </summary>
			[Column("sent_date"),                   NotNull] public DateTime SentDate                { get; set; } // datetime
			/// <summary>
			/// The date and time of the last modification of the row.
			/// </summary>
			[Column("last_mod_date"),               NotNull] public DateTime LastModDate             { get; set; } // datetime
			/// <summary>
			/// The user who last modified the row.
			/// </summary>
			[Column("last_mod_user"),               NotNull] public string   LastModUser             { get; set; } = null!; // sysname
		}
	}

	public static partial class DatabaseMirroringSchema
	{
		public partial class DataContext
		{
			/// <summary>
			/// <para><strong>Database Mirroring Witness Catalog Views - sys.database_mirroring_witnesses</strong></para>
			///  <para><strong>Applies to:</strong> √ SQL Server (all supported versions)</para>
			/// <para>Contains a row for every witness role that a server plays in a database mirroring partnership. <br/>
			/// In a database mirroring session, automatic failover requires a witness server. Ideally, the witness resides on a separate computer from both the principal and mirror servers. The witness does not serve the database. Instead, it monitors the status of the principal and mirror servers. If the principal server fails, the witness may initiate automatic failover to the mirror server.</para><br/>
			/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/database-mirroring-witness-catalog-views-sys-database-mirroring-witnesses'>sys.database_mirroring_witnesses</a>.</para>
			/// </summary>
			public ITable<DatabaseMirroringWitness> DatabaseMirroringWitnesses { get { return _dataContext.GetTable<DatabaseMirroringWitness>(); } }

			private readonly IDataContext _dataContext;

			public DataContext(IDataContext dataContext)
			{
				_dataContext = dataContext;
			}
		}

		/// <summary>
		/// <para><strong>Database Mirroring Witness Catalog Views - sys.database_mirroring_witnesses</strong></para>
		///  <para><strong>Applies to:</strong> √ SQL Server (all supported versions)</para>
		/// <para>Contains a row for every witness role that a server plays in a database mirroring partnership. <br/>
		/// In a database mirroring session, automatic failover requires a witness server. Ideally, the witness resides on a separate computer from both the principal and mirror servers. The witness does not serve the database. Instead, it monitors the status of the principal and mirror servers. If the principal server fails, the witness may initiate automatic failover to the mirror server.</para><br/>
		/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/database-mirroring-witness-catalog-views-sys-database-mirroring-witnesses'>sys.database_mirroring_witnesses</a>.</para>
		/// </summary>
		[Table(Schema="sys", Name="database_mirroring_witnesses", IsView=true)]
		public partial class DatabaseMirroringWitness
		{
			/// <summary>
			/// Name of the two copies of the database in the database mirroring session.
			/// </summary>
			[Column("database_name"),                NotNull    ] public string  DatabaseName              { get; set; } = null!; // sysname
			/// <summary>
			/// Name of partner server whose copy of the database is currently the principal database.
			/// </summary>
			[Column("principal_server_name"),           Nullable] public string? PrincipalServerName       { get; set; } // sysname
			/// <summary>
			/// Name of the partner server whose copy of the database is currently the mirror database.
			/// </summary>
			[Column("mirror_server_name"),              Nullable] public string? MirrorServerName          { get; set; } // sysname
			/// <summary>
			/// Transaction safety setting for updates on the mirror database:<br/><br/> 0 = Unknown state<br/><br/> 1 = Off (asynchronous)<br/><br/> 2 = Full (synchronous)<br/><br/> Using a witness for automatic failover requires full transaction safety, which is the default.
			/// </summary>
			[Column("safety_level"),                 NotNull    ] public byte    SafetyLevel               { get; set; } // tinyint
			/// <summary>
			/// Description of safety guarantee of updates on the mirror database:<br/><br/> UNKNOWN<br/><br/> OFF<br/><br/> FULL
			/// </summary>
			[Column("safety_level_desc"),               Nullable] public string? SafetyLevelDesc           { get; set; } // nvarchar(60)
			/// <summary>
			/// Update sequence number for changes to <strong>safety_level</strong>.
			/// </summary>
			[Column("safety_sequence_number"),       NotNull    ] public int     SafetySequenceNumber      { get; set; } // int
			/// <summary>
			/// Update sequence number for changes to principal/mirror roles played by the mirroring partners.
			/// </summary>
			[Column("role_sequence_number"),         NotNull    ] public int     RoleSequenceNumber        { get; set; } // int
			/// <summary>
			/// Identifier of the mirroring partnership.
			/// </summary>
			[Column("mirroring_guid"),               NotNull    ] public Guid    MirroringGuid             { get; set; } // uniqueidentifier
			/// <summary>
			/// Identifier of the backup family for the database. Used for detecting matching restore states.
			/// </summary>
			[Column("family_guid"),                  NotNull    ] public Guid    FamilyGuid                { get; set; } // uniqueidentifier
			/// <summary>
			/// Database mirroring is suspended.
			/// </summary>
			[Column("is_suspended"),                    Nullable] public bool?   IsSuspended               { get; set; } // bit
			/// <summary>
			/// Sequence number for setting <strong>is_suspended</strong>.
			/// </summary>
			[Column("is_suspended_sequence_number"), NotNull    ] public int     IsSuspendedSequenceNumber { get; set; } // int
			/// <summary>
			/// Synchronization state of the mirroring session:<br/><br/> 5 = The partners are synchronized. Failover is potentially possible. For information about the requirements for failover see, <a href='https://docs.microsoft.com/en-us/sql/database-engine/database-mirroring/role-switching-during-a-database-mirroring-session-sql-server'>Role Switching During a Database Mirroring Session (SQL Server)</a>.<br/><br/> 6 = The partners are not synchronized. Failover is not possible now.
			/// </summary>
			[Column("partner_sync_state"),              Nullable] public byte?   PartnerSyncState          { get; set; } // tinyint
			/// <summary>
			/// Description of the synchronization state of the mirroring session:<br/><br/> SYNCHRONIZED<br/><br/> UNSYNCHRONIZED
			/// </summary>
			[Column("partner_sync_state_desc"),         Nullable] public string? PartnerSyncStateDesc      { get; set; } // nvarchar(60)
		}
	}

	public static partial class DatabasesAndFilesSchema
	{
		public partial class DataContext
		{
			/// <summary>
			/// <para><strong>sys.backup_devices (Transact-SQL)</strong></para>
			/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)</para>
			/// <para>Contains a row for each backup-device registered by using <strong>sp_addumpdevice</strong> or created in SQL Server Management Studio.</para><br/>
			/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-backup-devices-transact-sql'>sys.backup_devices</a>.</para>
			/// </summary>
			public ITable<BackupDevice>                  BackupDevices                  { get { return _dataContext.GetTable<BackupDevice>(); } }
			/// <summary>
			/// <para><strong>sys.databases (Transact-SQL)</strong></para>
			/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions) √ Azure SQL Database √ Azure SQL Managed Instance √ Azure Synapse Analytics √ Analytics Platform System (PDW)</para>
			/// <para>Contains one row per database in the instance of SQL Server.<br/>
			/// If a database is not <c>ONLINE</c>, or <c>AUTO_CLOSE</c> is set to <c>ON</c> and the database is closed, the values of some columns may be <c>NULL</c>. If a database is <c>OFFLINE</c>, the corresponding row is not visible to low-privileged users. To see the corresponding row if the database is <c>OFFLINE</c>, a user must have at least the <c>ALTER ANY DATABASE</c> server-level permission, or the <c>CREATE DATABASE</c> permission in the <c>master</c> database.</para><br/>
			/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-databases-transact-sql'>sys.databases</a>.</para>
			/// </summary>
			public ITable<Database>                      Databases                      { get { return _dataContext.GetTable<Database>(); } }
			/// <summary>
			/// <para><strong>sys.database\_automatic\_tuning_mode (Transact-SQL)</strong></para>
			/// <para><strong>Applies to:</strong> √ SQL Server 2017 (14.x) and later  √ Azure SQL Database √ Azure SQL Managed Instance</para>
			/// <para>Returns the Automatic Tuning mode for this database. Refer to <a href='https://docs.microsoft.com/en-us/sql/t-sql/statements/alter-database-transact-sql-set-options#auto_tuning'>ALTER DATABASE SET AUTOMATIC_TUNING (Transact-SQL)</a> for available options.</para><br/>
			/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-database-automatic-tuning-mode-transact-sql'>sys.database_automatic_tuning_mode</a>.</para>
			/// </summary>
			public ITable<DatabaseAutomaticTuningMode>   DatabaseAutomaticTuningModes   { get { return _dataContext.GetTable<DatabaseAutomaticTuningMode>(); } }
			/// <summary>
			/// <para><strong>sys.database\_automatic\_tuning_options (Transact-SQL)</strong></para>
			/// <para><strong>Applies to:</strong> √ SQL Server 2017 (14.x) and later  √ Azure SQL Database √ Azure SQL Managed Instance</para>
			/// <para>Returns the Automatic Tuning options for this database.</para><br/>
			/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-database-automatic-tuning-options-transact-sql'>sys.database_automatic_tuning_options</a>.</para>
			/// </summary>
			public ITable<DatabaseAutomaticTuningOption> DatabaseAutomaticTuningOptions { get { return _dataContext.GetTable<DatabaseAutomaticTuningOption>(); } }
			/// <summary>
			/// <para><strong>sys.database_files (Transact-SQL)</strong></para>
			/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions) √ Azure SQL Database √ Azure SQL Managed Instance √ Azure Synapse Analytics √ Analytics Platform System (PDW)</para>
			/// <para>Contains a row per file of a database as stored in the database itself. This is a per-database view.</para><br/>
			/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-database-files-transact-sql'>sys.database_files</a>.</para>
			/// </summary>
			public ITable<DatabaseFile>                  DatabaseFiles                  { get { return _dataContext.GetTable<DatabaseFile>(); } }
			/// <summary>
			/// <para><strong>sys.database_mirroring (Transact-SQL)</strong></para>
			/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)</para>
			/// <para>Contains one row for each database in the instance of SQL Server. If the database is not ONLINE or database mirroring is not enabled, the values of all columns except database_id will be NULL.<br/>
			///  To see the row for a database other than master or tempdb, you must either be the database owner or have at least ALTER ANY DATABASE or VIEW ANY DATABASE server-level permission or CREATE DATABASE permission in the master database. To see non-NULL values on a mirror database, you must be a member of the <strong>sysadmin</strong> fixed server role.<br/>
			/// <note type='note'><br/>
			/// If a database does not participate in mirroring, all columns prefixed with 'mirroring_' are NULL.<br/>
			/// </note></para><br/>
			/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-database-mirroring-transact-sql'>sys.database_mirroring</a>.</para>
			/// </summary>
			public ITable<DatabaseMirroring>             DatabaseMirrorings             { get { return _dataContext.GetTable<DatabaseMirroring>(); } }
			/// <summary>
			/// <para><strong>sys.database_recovery_status (Transact-SQL)</strong></para>
			/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)</para>
			/// <para>Contains one row per database. If the database is not opened, the SQL Server Database Engine tries to start it.<br/>
			///  To see the row for a database other than <strong>master</strong> or <strong>tempdb</strong>, one of the following must apply:<br/>
			/// -   Be the owner of the database.<br/>
			/// -   Have ALTER ANY DATABASE or VIEW ANY DATABASE server-level permissions.<br/>
			/// -   Have CREATE DATABASE permission in the <strong>master</strong> database.</para><br/>
			/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-database-recovery-status-transact-sql'>sys.database_recovery_status</a>.</para>
			/// </summary>
			public ITable<DatabaseRecoveryStatus>        DatabaseRecoveryStatus         { get { return _dataContext.GetTable<DatabaseRecoveryStatus>(); } }
			/// <summary>
			/// <para><strong>sys.database_scoped_configurations (Transact-SQL)</strong></para>
			/// <para><strong>APPLIES TO:</strong> (Yes) SQL Server 2016 and later (Yes) Azure SQL Database (Yes) Azure Synapse Analytics (No) Parallel Data Warehouse</para>
			/// <para>Contains one row per configuration.</para><br/>
			/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-database-scoped-configurations-transact-sql'>sys.database_scoped_configurations</a>.</para>
			/// </summary>
			public ITable<DatabaseScopedConfiguration>   DatabaseScopedConfigurations   { get { return _dataContext.GetTable<DatabaseScopedConfiguration>(); } }
			/// <summary>
			/// <para><strong>sys.master_files (Transact-SQL)</strong></para>
			/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions) √ Azure SQL Managed Instance √ Analytics Platform System (PDW)</para>
			/// <para>Contains a row per file of a database as stored in the master database. This is a single, system-wide view.</para><br/>
			/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-master-files-transact-sql'>sys.master_files</a>.</para>
			/// </summary>
			public ITable<MasterFile>                    MasterFiles                    { get { return _dataContext.GetTable<MasterFile>(); } }

			private readonly IDataContext _dataContext;

			public DataContext(IDataContext dataContext)
			{
				_dataContext = dataContext;
			}
		}

		/// <summary>
		/// <para><strong>sys.backup_devices (Transact-SQL)</strong></para>
		/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)</para>
		/// <para>Contains a row for each backup-device registered by using <strong>sp_addumpdevice</strong> or created in SQL Server Management Studio.</para><br/>
		/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-backup-devices-transact-sql'>sys.backup_devices</a>.</para>
		/// </summary>
		[Table(Schema="sys", Name="backup_devices", IsView=true)]
		public partial class BackupDevice
		{
			/// <summary>
			/// Name of the backup device. Is unique in the set.
			/// </summary>
			[Column("name"),          NotNull    ] public string  Name         { get; set; } = null!; // sysname
			/// <summary>
			/// Type of backup device:<br/><br/> 2 = Disk<br/><br/> 3 = Diskette (obsolete)<br/><br/> 5 = Tape<br/><br/> 6 = Pipe (obsolete)<br/><br/> 7 = Virtual device (for optional use by third-party backup vendors)<br/><br/> 9 = URL<br/><br/>Typically, only disk (2) and URL (9) are used.
			/// </summary>
			[Column("type"),             Nullable] public byte?   TypeColumn   { get; set; } // tinyint
			/// <summary>
			/// Description of backup device type:<br/><br/> DISK<br/><br/> DISKETTE (obsolete)<br/><br/> TAPE<br/><br/> PIPE (obsolete)<br/><br/> VIRTUAL_DEVICE (for optional use by third party backup vendors)<br/><br/> URL <br/><br/> Typically, only DISK and URL are used.
			/// </summary>
			[Column("type_desc"),        Nullable] public string? TypeDesc     { get; set; } // nvarchar(60)
			/// <summary>
			/// Physical file name or path of the backup device.
			/// </summary>
			[Column("physical_name"),    Nullable] public string? PhysicalName { get; set; } // nvarchar(260)
		}

		/// <summary>
		/// <para><strong>sys.databases (Transact-SQL)</strong></para>
		/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions) √ Azure SQL Database √ Azure SQL Managed Instance √ Azure Synapse Analytics √ Analytics Platform System (PDW)</para>
		/// <para>Contains one row per database in the instance of SQL Server.<br/>
		/// If a database is not <c>ONLINE</c>, or <c>AUTO_CLOSE</c> is set to <c>ON</c> and the database is closed, the values of some columns may be <c>NULL</c>. If a database is <c>OFFLINE</c>, the corresponding row is not visible to low-privileged users. To see the corresponding row if the database is <c>OFFLINE</c>, a user must have at least the <c>ALTER ANY DATABASE</c> server-level permission, or the <c>CREATE DATABASE</c> permission in the <c>master</c> database.</para><br/>
		/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-databases-transact-sql'>sys.databases</a>.</para>
		/// </summary>
		[Table(Schema="sys", Name="databases", IsView=true)]
		public partial class Database
		{
			/// <summary>
			/// Name of database, unique within an instance of SQL Server or within a Azure SQL Database server.
			/// </summary>
			[Column("name"),                                          Nullable] public string?  Name                                 { get; set; } // sysname
			/// <summary>
			/// ID of the database, unique within an instance of SQL Server or within a Azure SQL Database server.
			/// </summary>
			[Column("database_id"),                                NotNull    ] public int      DatabaseID                           { get; set; } // int
			/// <summary>
			/// Non-NULL = ID of the source database of this database snapshot.<br/> NULL = Not a database snapshot.
			/// </summary>
			[Column("source_database_id"),                            Nullable] public int?     SourceDatabaseID                     { get; set; } // int
			/// <summary>
			/// SID (Security-Identifier) of the external owner of the database, as registered to the server. For information about who can own a database, see the <strong>ALTER AUTHORIZATION for databases</strong> section of <a href='https://docs.microsoft.com/en-us/sql/t-sql/statements/alter-authorization-transact-sql'>ALTER AUTHORIZATION</a>.
			/// </summary>
			[Column("owner_sid"),                                     Nullable] public byte[]?  OwnerSID                             { get; set; } // varbinary(85)
			/// <summary>
			/// Date the database was created or renamed. For <strong>tempdb</strong>, this value changes every time the server restarts.
			/// </summary>
			[Column("create_date"),                                NotNull    ] public DateTime CreateDate                           { get; set; } // datetime
			/// <summary>
			/// Integer corresponding to the version of SQL Server for which behavior is compatible:<br/><br/><table border='0'><tr><td><strong>Value</strong></td><td><strong>Applies to</strong></td></tr><tr><td>70</td><td>SQL Server 7.0 through SQL Server 2008</td></tr><tr><td>80</td><td>SQL Server 2000 (8.x) through SQL Server 2008 R2</td></tr><tr><td>90</td><td>SQL Server 2008 through SQL Server 2012 (11.x)</td></tr><tr><td>100</td><td>SQL Server (Starting with SQL Server 2008) and Azure SQL Database</td></tr><tr><td>110</td><td>SQL Server (Starting with SQL Server 2012 (11.x)) and Azure SQL Database</td></tr><tr><td>120</td><td>SQL Server (Starting with SQL Server 2014 (12.x)) and Azure SQL Database</td></tr><tr><td>130</td><td>SQL Server (Starting with SQL Server 2016 (13.x)) and Azure SQL Database</td></tr><tr><td>140</td><td>SQL Server (Starting with SQL Server 2017 (14.x)) and Azure SQL Database</td></tr><tr><td>150</td><td>SQL Server (Starting with SQL Server 2019 (15.x)) and Azure SQL Database</td></tr></table>
			/// </summary>
			[Column("compatibility_level"),                        NotNull    ] public byte     CompatibilityLevel                   { get; set; } // tinyint
			/// <summary>
			/// Collation for the database. Acts as the default collation in the database.<br/> NULL = Database is not online or AUTO_CLOSE is set to ON and the database is closed.
			/// </summary>
			[Column("collation_name"),                                Nullable] public string?  CollationName                        { get; set; } // sysname
			/// <summary>
			/// User-access setting:<br/> 0 = MULTI_USER specified<br/> 1 = SINGLE_USER specified<br/> 2 = RESTRICTED_USER specified
			/// </summary>
			[Column("user_access"),                                   Nullable] public byte?    UserAccess                           { get; set; } // tinyint
			/// <summary>
			/// Description of user-access setting.
			/// </summary>
			[Column("user_access_desc"),                              Nullable] public string?  UserAccessDesc                       { get; set; } // nvarchar(60)
			/// <summary>
			/// 1 = Database is READ_ONLY<br/> 0 = Database is READ_WRITE
			/// </summary>
			[Column("is_read_only"),                                  Nullable] public bool?    IsReadOnly                           { get; set; } // bit
			/// <summary>
			/// 1 = AUTO_CLOSE is ON<br/> 0 = AUTO_CLOSE is OFF
			/// </summary>
			[Column("is_auto_close_on"),                           NotNull    ] public bool     IsAutoCloseOn                        { get; set; } // bit
			/// <summary>
			/// 1 = AUTO_SHRINK is ON<br/> 0 = AUTO_SHRINK is OFF
			/// </summary>
			[Column("is_auto_shrink_on"),                             Nullable] public bool?    IsAutoShrinkOn                       { get; set; } // bit
			/// <summary>
			/// <strong>Value</strong><br/> 0 = ONLINE <br/> 1 = RESTORING <br/> 2 = RECOVERING <sup>1</sup><br/> 3 = RECOVERY_PENDING <sup>1</sup><br/> 4 = SUSPECT <br/> 5 = EMERGENCY <sup>1</sup><br/> 6 = OFFLINE <sup>1</sup><br/> 7 = COPYING <sup>2</sup> <br/> 10 = OFFLINE_SECONDARY <sup>2</sup> <br/><br/> <strong>Note:</strong> For Always On databases, query the <c>database_state</c> or <c>database_state_desc</c> columns of <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-dynamic-management-views/sys-dm-hadr-database-replica-states-transact-sql'>sys.dm_hadr_database_replica_states</a>.<br/><br/><sup>1</sup> <strong>Applies to</strong>: SQL Server (starting with SQL Server 2008) and Azure SQL Database<br/><sup>2</sup> <strong>Applies to</strong>: Azure SQL Database Active Geo-Replication
			/// </summary>
			[Column("state"),                                         Nullable] public byte?    State                                { get; set; } // tinyint
			/// <summary>
			/// Description of the database state. See state.
			/// </summary>
			[Column("state_desc"),                                    Nullable] public string?  StateDesc                            { get; set; } // nvarchar(60)
			/// <summary>
			/// Database is read-only for restore log.
			/// </summary>
			[Column("is_in_standby"),                                 Nullable] public bool?    IsInStandby                          { get; set; } // bit
			/// <summary>
			/// 1 = Database shut down cleanly; no recovery required on startup<br/> 0 = Database did not shut down cleanly; recovery is required on startup
			/// </summary>
			[Column("is_cleanly_shutdown"),                           Nullable] public bool?    IsCleanlyShutdown                    { get; set; } // bit
			/// <summary>
			/// 1 = SUPPLEMENTAL_LOGGING is ON<br/> 0 = SUPPLEMENTAL_LOGGING is OFF
			/// </summary>
			[Column("is_supplemental_logging_enabled"),               Nullable] public bool?    IsSupplementalLoggingEnabled         { get; set; } // bit
			/// <summary>
			/// State of snapshot-isolation transactions being allowed, as set by the ALLOW_SNAPSHOT_ISOLATION option:<br/> 0 = Snapshot isolation state is OFF (default). Snapshot isolation is disallowed.<br/> 1 = Snapshot isolation state ON. Snapshot isolation is allowed.<br/> 2 = Snapshot isolation state is in transition to OFF state. All transactions have their modifications versioned. Cannot start new transactions using snapshot isolation. The database remains in the transition to OFF state until all transactions that were active when ALTER DATABASE was run can be completed.<br/> 3 = Snapshot isolation state is in transition to ON state. New transactions have their modifications versioned. Transactions cannot use snapshot isolation until the snapshot isolation state becomes 1 (ON). The database remains in the transition to ON state until all update transactions that were active when ALTER DATABASE was run can be completed.
			/// </summary>
			[Column("snapshot_isolation_state"),                      Nullable] public byte?    SnapshotIsolationState               { get; set; } // tinyint
			/// <summary>
			/// Description of state of snapshot-isolation transactions being allowed, as set by the ALLOW_SNAPSHOT_ISOLATION option.
			/// </summary>
			[Column("snapshot_isolation_state_desc"),                 Nullable] public string?  SnapshotIsolationStateDesc           { get; set; } // nvarchar(60)
			/// <summary>
			/// 1 = READ_COMMITTED_SNAPSHOT option is ON. Read operations under the read-committed isolation level are based on snapshot scans and do not acquire locks.<br/> 0 = READ_COMMITTED_SNAPSHOT option is OFF (default). Read operations under the read-committed isolation level use share locks.
			/// </summary>
			[Column("is_read_committed_snapshot_on"),                 Nullable] public bool?    IsReadCommittedSnapshotOn            { get; set; } // bit
			/// <summary>
			/// Recovery model selected:<br/> 1 = FULL<br/> 2 = BULK_LOGGED<br/> 3 = SIMPLE
			/// </summary>
			[Column("recovery_model"),                                Nullable] public byte?    RecoveryModel                        { get; set; } // tinyint
			/// <summary>
			/// Description of recovery model selected.
			/// </summary>
			[Column("recovery_model_desc"),                           Nullable] public string?  RecoveryModelDesc                    { get; set; } // nvarchar(60)
			/// <summary>
			/// Setting of PAGE_VERIFY option:<br/> 0 = NONE<br/> 1 = TORN_PAGE_DETECTION<br/> 2 = CHECKSUM
			/// </summary>
			[Column("page_verify_option"),                            Nullable] public byte?    PageVerifyOption                     { get; set; } // tinyint
			/// <summary>
			/// Description of PAGE_VERIFY option setting.
			/// </summary>
			[Column("page_verify_option_desc"),                       Nullable] public string?  PageVerifyOptionDesc                 { get; set; } // nvarchar(60)
			/// <summary>
			/// 1 = AUTO_CREATE_STATISTICS is ON<br/> 0 = AUTO_CREATE_STATISTICS is OFF
			/// </summary>
			[Column("is_auto_create_stats_on"),                       Nullable] public bool?    IsAutoCreateStatsOn                  { get; set; } // bit
			/// <summary>
			/// Indicates the default setting for the incremental option of auto stats.<br/> 0 = auto create stats are non-incremental<br/> 1 = auto create stats are incremental if possible<br/> <strong>Applies to</strong>: SQL Server (starting with SQL Server 2014 (12.x)).
			/// </summary>
			[Column("is_auto_create_stats_incremental_on"),           Nullable] public bool?    IsAutoCreateStatsIncrementalOn       { get; set; } // bit
			/// <summary>
			/// 1 = AUTO_UPDATE_STATISTICS is ON<br/> 0 = AUTO_UPDATE_STATISTICS is OFF
			/// </summary>
			[Column("is_auto_update_stats_on"),                       Nullable] public bool?    IsAutoUpdateStatsOn                  { get; set; } // bit
			/// <summary>
			/// 1 = AUTO_UPDATE_STATISTICS_ASYNC is ON<br/> 0 = AUTO_UPDATE_STATISTICS_ASYNC is OFF
			/// </summary>
			[Column("is_auto_update_stats_async_on"),                 Nullable] public bool?    IsAutoUpdateStatsAsyncOn             { get; set; } // bit
			/// <summary>
			/// 1 = ANSI_NULL_DEFAULT is ON<br/> 0 = ANSI_NULL_DEFAULT is OFF
			/// </summary>
			[Column("is_ansi_null_default_on"),                       Nullable] public bool?    IsAnsiNullDefaultOn                  { get; set; } // bit
			/// <summary>
			/// 1 = ANSI_NULLS is ON<br/> 0 = ANSI_NULLS is OFF
			/// </summary>
			[Column("is_ansi_nulls_on"),                              Nullable] public bool?    IsAnsiNullsOn                        { get; set; } // bit
			/// <summary>
			/// 1 = ANSI_PADDING is ON<br/> 0 = ANSI_PADDING is OFF
			/// </summary>
			[Column("is_ansi_padding_on"),                            Nullable] public bool?    IsAnsiPaddingOn                      { get; set; } // bit
			/// <summary>
			/// 1 = ANSI_WARNINGS is ON<br/> 0 = ANSI_WARNINGS is OFF
			/// </summary>
			[Column("is_ansi_warnings_on"),                           Nullable] public bool?    IsAnsiWarningsOn                     { get; set; } // bit
			/// <summary>
			/// 1 = ARITHABORT is ON<br/> 0 = ARITHABORT is OFF
			/// </summary>
			[Column("is_arithabort_on"),                              Nullable] public bool?    IsArithabortOn                       { get; set; } // bit
			/// <summary>
			/// 1 = CONCAT_NULL_YIELDS_NULL is ON<br/> 0 = CONCAT_NULL_YIELDS_NULL is OFF
			/// </summary>
			[Column("is_concat_null_yields_null_on"),                 Nullable] public bool?    IsConcatNullYieldsNullOn             { get; set; } // bit
			/// <summary>
			/// 1 = NUMERIC_ROUNDABORT is ON<br/> 0 = NUMERIC_ROUNDABORT is OFF
			/// </summary>
			[Column("is_numeric_roundabort_on"),                      Nullable] public bool?    IsNumericRoundabortOn                { get; set; } // bit
			/// <summary>
			/// 1 = QUOTED_IDENTIFIER is ON<br/> 0 = QUOTED_IDENTIFIER is OFF
			/// </summary>
			[Column("is_quoted_identifier_on"),                       Nullable] public bool?    IsQuotedIdentifierOn                 { get; set; } // bit
			/// <summary>
			/// 1 = RECURSIVE_TRIGGERS is ON<br/> 0 = RECURSIVE_TRIGGERS is OFF
			/// </summary>
			[Column("is_recursive_triggers_on"),                      Nullable] public bool?    IsRecursiveTriggersOn                { get; set; } // bit
			/// <summary>
			/// 1 = CURSOR_CLOSE_ON_COMMIT is ON<br/> 0 = CURSOR_CLOSE_ON_COMMIT is OFF
			/// </summary>
			[Column("is_cursor_close_on_commit_on"),                  Nullable] public bool?    IsCursorCloseOnCommitOn              { get; set; } // bit
			/// <summary>
			/// 1 = CURSOR_DEFAULT is local<br/> 0 = CURSOR_DEFAULT is global
			/// </summary>
			[Column("is_local_cursor_default"),                       Nullable] public bool?    IsLocalCursorDefault                 { get; set; } // bit
			/// <summary>
			/// 1 = Full-text is enabled for the database<br/> 0 = Full-text is disabled for the database
			/// </summary>
			[Column("is_fulltext_enabled"),                           Nullable] public bool?    IsFulltextEnabled                    { get; set; } // bit
			/// <summary>
			/// 1 = Database has been marked trustworthy<br/> 0 = Database has not been marked trustworthy<br/> By default, restored or attached databases have the trustworthy not enabled.
			/// </summary>
			[Column("is_trustworthy_on"),                             Nullable] public bool?    IsTrustworthyOn                      { get; set; } // bit
			/// <summary>
			/// 1 = Cross-database ownership chaining is ON<br/> 0 = Cross-database ownership chaining is OFF
			/// </summary>
			[Column("is_db_chaining_on"),                             Nullable] public bool?    IsDbChainingOn                       { get; set; } // bit
			/// <summary>
			/// 1 = Parameterization is FORCED<br/> 0 = Parameterization is SIMPLE
			/// </summary>
			[Column("is_parameterization_forced"),                    Nullable] public bool?    IsParameterizationForced             { get; set; } // bit
			/// <summary>
			/// 1 = Database has an encrypted master key<br/> 0 = Database does not have an encrypted master key
			/// </summary>
			[Column("is_master_key_encrypted_by_server"),          NotNull    ] public bool     IsMasterKeyEncryptedByServer         { get; set; } // bit
			/// <summary>
			/// 1 = The query store is enable for this database. Check <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-database-query-store-options-transact-sql'>sys.database_query_store_options</a> to view the query store status.<br/> 0 = The query store is not enabled<br/> <strong>Applies to</strong>: SQL Server (starting with SQL Server 2016 (13.x)).
			/// </summary>
			[Column("is_query_store_on"),                             Nullable] public bool?    IsQueryStoreOn                       { get; set; } // bit
			/// <summary>
			/// 1 = Database is a publication database in a transactional or snapshot replication topology<br/> 0 = Is not a publication database
			/// </summary>
			[Column("is_published"),                               NotNull    ] public bool     IsPublished                          { get; set; } // bit
			/// <summary>
			/// This column is not used. It will always return 0, regardless of the subscriber status of the database.
			/// </summary>
			[Column("is_subscribed"),                              NotNull    ] public bool     IsSubscribed                         { get; set; } // bit
			/// <summary>
			/// 1 = Database is a publication database in a merge replication topology<br/> 0 = Is not a publication database in a merge replication topology
			/// </summary>
			[Column("is_merge_published"),                         NotNull    ] public bool     IsMergePublished                     { get; set; } // bit
			/// <summary>
			/// 1 = Database is the distribution database for a replication topology<br/> 0 = Is not the distribution database for a replication topology
			/// </summary>
			[Column("is_distributor"),                             NotNull    ] public bool     IsDistributor                        { get; set; } // bit
			/// <summary>
			/// 1 = Database is marked for replication synchronization with backup<br/> 0 = Is not marked for replication synchronization with backup
			/// </summary>
			[Column("is_sync_with_backup"),                        NotNull    ] public bool     IsSyncWithBackup                     { get; set; } // bit
			/// <summary>
			/// Identifier of the service broker for this database. Used as the <strong>broker_instance</strong> of the target in the routing table.
			/// </summary>
			[Column("service_broker_guid"),                        NotNull    ] public Guid     ServiceBrokerGuid                    { get; set; } // uniqueidentifier
			/// <summary>
			/// 1 = The broker in this database is currently sending and receiving messages.<br/> 0 = All sent messages will stay on the transmission queue and received messages will not be put on queues in this database.<br/> By default, restored or attached databases have the broker disabled. The exception to this is database mirroring where the broker is enabled after failover.
			/// </summary>
			[Column("is_broker_enabled"),                          NotNull    ] public bool     IsBrokerEnabled                      { get; set; } // bit
			/// <summary>
			/// Reuse of transaction log space is currently waiting on one of the following as of the last checkpoint. For more detailed explanations of these values, see <a href='https://docs.microsoft.com/en-us/sql/relational-databases/logs/the-transaction-log-sql-server'>The Transaction Log</a>.<br/> <strong>Value</strong><br/> 0 = Nothing<br/> 1 = Checkpoint (When a database has a memory-optimized data filegroup, you should expect to see the <c>log_reuse_wait</c> column indicate <c>checkpoint</c> or <c>xtp_checkpoint</c>) <sup>1</sup><br/> 2 = Log Backup <sup>1</sup><br/> 3 = Active backup or restore <sup>1</sup><br/> 4 = Active transaction <sup>1</sup><br/> 5 = Database mirroring <sup>1</sup><br/> 6 = Replication <sup>1</sup><br/> 7 = Database snapshot creation <sup>1</sup><br/> 8 = Log scan <br/> 9 = An Always On Availability Groups secondary replica is applying transaction log records of this database to a corresponding secondary database. <sup>2</sup><br/> 9 = Other (Transient) <sup>3</sup><br/> 10 = For internal use only <sup>2</sup><br/> 11 = For internal use only <sup>2</sup><br/> 12 = For internal use only <sup>2</sup><br/> 13 = Oldest page <sup>2</sup><br/> 14 = Other <sup>2</sup><br/>  16 = XTP_CHECKPOINT (When a database has a memory-optimized data filegroup, you should expect to see the <c>log_reuse_wait</c> column indicate <c>checkpoint</c> or <c>xtp_checkpoint</c>) <sup>4</sup><br/>17 = sLog scanning when <a href='https://docs.microsoft.com/en-us/sql/relational-databases/accelerated-database-recovery-concepts#adr-recovery-components'>Accelerated Database Recovery</a> is used <sup>5</sup><br/><br/><sup>1</sup> <strong>Applies to</strong>: SQL Server (starting with SQL Server 2008)<br/><sup>2</sup> <strong>Applies to</strong>: SQL Server (starting with SQL Server 2012 (11.x))<br/><sup>3</sup> <strong>Applies to</strong>: SQL Server (up to, and including SQL Server 2008 R2)<br/><sup>4</sup> <strong>Applies to</strong>: SQL Server (starting with SQL Server 2014 (12.x)) <br/><sup>5</sup> <strong>Applies to</strong>: SQL Server (starting with SQL Server 2019 (15.x))
			/// </summary>
			[Column("log_reuse_wait"),                                Nullable] public byte?    LogReuseWait                         { get; set; } // tinyint
			/// <summary>
			/// Description of reuse of transaction log space is currently waiting on as of the last checkpoint. Possible values:<br/> NOTHING<br/> CHECKPOINT<br/> LOG_BACKUP<br/> ACTIVE_BACKUP_OR_RESTORE<br/> ACTIVE_TRANSACTION<br/> DATABASE_MIRRORING<br/> REPLICATION<br/> DATABASE_SNAPSHOT_CREATION<br/> LOG_SCAN<br/> AVAILABILITY_REPLICA<br/> OLDEST_PAGE<br/> XTP_CHECKPOINT<br/> SLOG_SCAN<br/>
			/// </summary>
			[Column("log_reuse_wait_desc"),                           Nullable] public string?  LogReuseWaitDesc                     { get; set; } // nvarchar(60)
			/// <summary>
			/// 1 = DATE_CORRELATION_OPTIMIZATION is ON<br/> 0 = DATE_CORRELATION_OPTIMIZATION is OFF
			/// </summary>
			[Column("is_date_correlation_on"),                     NotNull    ] public bool     IsDateCorrelationOn                  { get; set; } // bit
			/// <summary>
			/// 1 = Database is enabled for change data capture. For more information, see <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-stored-procedures/sys-sp-cdc-enable-db-transact-sql'>sys.sp_cdc_enable_db (Transact-SQL)</a>.
			/// </summary>
			[Column("is_cdc_enabled"),                             NotNull    ] public bool     IsCdcEnabled                         { get; set; } // bit
			/// <summary>
			/// Indicates whether the database is encrypted (reflects the state last set by using the <c>ALTER DATABASE SET ENCRYPTION</c> clause). Can be one of the following values:<br/> 1 = Encrypted<br/> 0 = Not Encrypted<br/> For more information about database encryption, see <a href='https://docs.microsoft.com/en-us/sql/relational-databases/security/encryption/transparent-data-encryption'>Transparent Data Encryption (TDE)</a>.<br/> If the database is in the process of being decrypted, <c>is_encrypted</c> shows a value of 0. You can see the state of the encryption process by using the <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-dynamic-management-views/sys-dm-database-encryption-keys-transact-sql'>sys.dm_database_encryption_keys</a> dynamic management view.
			/// </summary>
			[Column("is_encrypted"),                                  Nullable] public bool?    IsEncrypted                          { get; set; } // bit
			/// <summary>
			/// Indicates whether the database honors conversation priorities (reflects the state last set by using the <c>ALTER DATABASE SET HONOR_BROKER_PRIORITY</c> clause). Can be one of the following values:<br/> 1 = HONOR_BROKER_PRIORITY is ON<br/> 0 = HONOR_BROKER_PRIORITY is OFF<br/> By default, restored or attached databases have the broker priority off.
			/// </summary>
			[Column("is_honor_broker_priority_on"),                   Nullable] public bool?    IsHonorBrokerPriorityOn              { get; set; } // bit
			/// <summary>
			/// Unique identifier of the local Always On availability groups availability replica of the availability group, if any, in which the database is participating.<br/> NULL = database is not part of an availability replica of in availability group.<br/> <strong>Applies to</strong>: SQL Server (SQL Server 2012 (11.x) and later) and Azure SQL Database
			/// </summary>
			[Column("replica_id"),                                    Nullable] public Guid?    ReplicaID                            { get; set; } // uniqueidentifier
			/// <summary>
			/// Unique identifier of the database within an Always On availability group, if any, in which the database is participating. <strong>group_database_id</strong> is the same for this database on the primary replica and on every secondary replica on which the database has been joined to the availability group.<br/> NULL = database is not part of an availability replica in any availability group.<br/> <strong>Applies to</strong>: SQL Server (starting with SQL Server 2012 (11.x)) and Azure SQL Database
			/// </summary>
			[Column("group_database_id"),                             Nullable] public Guid?    GroupDatabaseID                      { get; set; } // uniqueidentifier
			/// <summary>
			/// The id of the resource pool that is mapped to this database. This resource pool controls total memory available to memory-optimized tables in this database.<br/> <strong>Applies to</strong>: SQL Server (starting with SQL Server 2014 (12.x))
			/// </summary>
			[Column("resource_pool_id"),                              Nullable] public int?     ResourcePoolID                       { get; set; } // int
			/// <summary>
			/// Indicates the local id (lcid) of the default language of a contained database.<br/> <strong>Note:</strong> Functions as the <a href='https://docs.microsoft.com/en-us/sql/database-engine/configure-windows/configure-the-default-language-server-configuration-option'>Configure the default language Server Configuration Option</a> of <c>sp_configure</c>. This value is <strong>null</strong> for a non-contained database.<br/> <strong>Applies to</strong>: SQL Server (starting with SQL Server 2012 (11.x)) and Azure SQL Database
			/// </summary>
			[Column("default_language_lcid"),                         Nullable] public short?   DefaultLanguageLcid                  { get; set; } // smallint
			/// <summary>
			/// Indicates the default language of a contained database.<br/> This value is <strong>null</strong> for a non-contained database.<br/> <strong>Applies to</strong>: SQL Server (SQL Server 2012 (11.x) and later) and Azure SQL Database
			/// </summary>
			[Column("default_language_name"),                         Nullable] public string?  DefaultLanguageName                  { get; set; } // nvarchar(128)
			/// <summary>
			/// Indicates the locale id (lcid) of the default fulltext language of the contained database.<br/> <strong>Note:</strong> Functions as the default <a href='https://docs.microsoft.com/en-us/sql/database-engine/configure-windows/configure-the-default-full-text-language-server-configuration-option'>Configure the default full-text language Server Configuration Option</a> of <c>sp_configure</c>. This value is <strong>null</strong> for a non-contained database.<br/> <strong>Applies to</strong>: SQL Server (starting with SQL Server 2012 (11.x)) and Azure SQL Database
			/// </summary>
			[Column("default_fulltext_language_lcid"),                Nullable] public int?     DefaultFulltextLanguageLcid          { get; set; } // int
			/// <summary>
			/// Indicates the default fulltext language of the contained database.<br/> This value is <strong>null</strong> for a non-contained database.<br/> <strong>Applies to</strong>: SQL Server (starting with SQL Server 2012 (11.x)) and Azure SQL Database
			/// </summary>
			[Column("default_fulltext_language_name"),                Nullable] public string?  DefaultFulltextLanguageName          { get; set; } // nvarchar(128)
			/// <summary>
			/// Indicates whether or not nested triggers are allowed in the contained database.<br/> 0 = nested triggers are not allowed<br/> 1 = nested triggers are allowed<br/> <strong>Note:</strong> Functions as the <a href='https://docs.microsoft.com/en-us/sql/database-engine/configure-windows/configure-the-nested-triggers-server-configuration-option'>Configure the nested triggers Server Configuration Option</a> of <c>sp_configure</c>. This value is <strong>null</strong> for a non-contained database. See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-configurations-transact-sql'>sys.configurations (Transact-SQL)</a> for further information.<br/> <strong>Applies to</strong>: SQL Server (starting with SQL Server 2012 (11.x)) and Azure SQL Database
			/// </summary>
			[Column("is_nested_triggers_on"),                         Nullable] public bool?    IsNestedTriggersOn                   { get; set; } // bit
			/// <summary>
			/// Indicates whether or noise words should be transformed in the contained database.<br/> 0 = noise words should not be transformed.<br/> 1 = noise words should be transformed.<br/> <strong>Note:</strong> Functions as the <a href='https://docs.microsoft.com/en-us/sql/database-engine/configure-windows/transform-noise-words-server-configuration-option'>transform noise words Server Configuration Option</a> of <c>sp_configure</c>. This value is <strong>null</strong> for a non-contained database. See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-configurations-transact-sql'>sys.configurations (Transact-SQL)</a> for further information.<br/> <strong>Applies to</strong>: SQL Server (starting with SQL Server 2012 (11.x))
			/// </summary>
			[Column("is_transform_noise_words_on"),                   Nullable] public bool?    IsTransformNoiseWordsOn              { get; set; } // bit
			/// <summary>
			/// Indicates a value of a number between 1753 and 9999 to represent the cutoff year for interpreting two-digit years as four-digit years.<br/> <strong>Note:</strong> Functions as the <a href='https://docs.microsoft.com/en-us/sql/database-engine/configure-windows/configure-the-two-digit-year-cutoff-server-configuration-option'>Configure the two digit year cutoff Server Configuration Option</a> of <c>sp_configure</c>. This value is <strong>null</strong> for a non-contained database. See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-configurations-transact-sql'>sys.configurations (Transact-SQL)</a> for further information.<br/> <strong>Applies to</strong>: SQL Server (starting with SQL Server 2012 (11.x)) and Azure SQL Database
			/// </summary>
			[Column("two_digit_year_cutoff"),                         Nullable] public short?   TwoDigitYearCutoff                   { get; set; } // smallint
			/// <summary>
			/// Indicates the containment status of the database.<br/>  0 = database containment is off. <strong>Applies to</strong>: SQL Server (starting with SQL Server 2012 (11.x)) and Azure SQL Database<br/> 1 = database is in partial containment <strong>Applies to</strong>: SQL Server (starting with SQL Server 2012 (11.x))
			/// </summary>
			[Column("containment"),                                   Nullable] public object?  Containment                          { get; set; } // tinyint not null
			/// <summary>
			/// Indicates the containment status of the database.<br/> NONE = legacy database (zero containment)<br/> PARTIAL = partially contained database<br/> <strong>Applies to</strong>: SQL Server (SQL Server 2012 (11.x) and later) and Azure SQL Database
			/// </summary>
			[Column("containment_desc"),                              Nullable] public string?  ContainmentDesc                      { get; set; } // nvarchar(60) not null
			/// <summary>
			/// The estimated time to recover the database, in seconds. Nullable.<br/> <strong>Applies to</strong>: SQL Server (starting with SQL Server 2012 (11.x)) and Azure SQL Database
			/// </summary>
			[Column("target_recovery_time_in_seconds"),               Nullable] public int?     TargetRecoveryTimeInSeconds          { get; set; } // int
			/// <summary>
			/// The delayed durability setting:<br/> 0 = DISABLED<br/> 1 = ALLOWED<br/> 2 = FORCED<br/> For more information, see <a href='https://docs.microsoft.com/en-us/sql/relational-databases/logs/control-transaction-durability'>Control Transaction Durability</a>.<br/> <strong>Applies to</strong>: SQL Server (starting with SQL Server 2014 (12.x)) and Azure SQL Database.
			/// </summary>
			[Column("delayed_durability"),                            Nullable] public int?     DelayedDurability                    { get; set; } // int
			/// <summary>
			/// The delayed durability setting:<br/> DISABLED<br/> ALLOWED<br/> FORCED<br/> <strong>Applies to</strong>: SQL Server (starting with SQL Server 2014 (12.x)) and Azure SQL Database.
			/// </summary>
			[Column("delayed_durability_desc"),                       Nullable] public string?  DelayedDurabilityDesc                { get; set; } // nvarchar(60)
			/// <summary>
			/// Memory-optimized tables are accessed using SNAPSHOT isolation when the session setting TRANSACTION ISOLATION LEVEL is set to a lower isolation level, READ COMMITTED or READ UNCOMMITTED.<br/> 1 = Minimum isolation level is SNAPSHOT.<br/> 0 = Isolation level is not elevated.
			/// </summary>
			[Column("is_memory_optimized_elevate_to_snapshot_on"),    Nullable] public bool?    IsMemoryOptimizedElevateToSnapshotOn { get; set; } // bit
			/// <summary>
			/// Indicates if the database is a member of a federation.<br/> <strong>Applies to</strong>: Azure SQL Database
			/// </summary>
			[Column("is_federation_member"),                          Nullable] public bool?    IsFederationMember                   { get; set; } // bit
			/// <summary>
			/// Indicates whether the database is stretched.<br/> 0 = The database is not Stretch-enabled.<br/> 1 = The database is Stretch-enabled.<br/> <strong>Applies to</strong>: SQL Server (starting with SQL Server 2016 (13.x))<br/> For more information, see <a href='https://docs.microsoft.com/en-us/sql/sql-server/stretch-database/stretch-database'>Stretch Database</a>.
			/// </summary>
			[Column("is_remote_data_archive_enabled"),                Nullable] public bool?    IsRemoteDataArchiveEnabled           { get; set; } // bit
			/// <summary>
			/// Indicates whether tables and indexes in the database can allocate initial pages from mixed extents.<br/> 0 = Tables and indexes in the database always allocate  initial pages from uniform extents.<br/> 1 =  Tables and indexes in the database can allocate initial pages from mixed extents.<br/> For more information, see the <c>SET MIXED_PAGE_ALLOCATION</c> option of <a href='https://docs.microsoft.com/en-us/sql/t-sql/statements/alter-database-transact-sql-set-options'>ALTER DATABASE SET Options (Transact-SQL)</a>.<br/> <strong>Applies to</strong>: SQL Server (starting with SQL Server 2016 (13.x))
			/// </summary>
			[Column("is_mixed_page_allocation_on"),                   Nullable] public bool?    IsMixedPageAllocationOn              { get; set; } // bit
			/// <summary>
			/// Indicates whether temporal retention policy cleanup task is enabled.<br/><br/>1 = temporal retention is enabled<br/>0 = temporal retention is disabled<br/><strong>Applies to</strong>: SQL Server (starting with SQL Server 2017 (14.x)) and Azure SQL Database
			/// </summary>
			[Column("is_temporal_history_retention_enabled"),         Nullable] public bool?    IsTemporalHistoryRetentionEnabled    { get; set; } // bit
			/// <summary>
			/// The catalog collation setting:<br/>0 = DATABASE_DEFAULT<br/>2 = SQL_Latin_1_General_CP1_CI_AS<br/> <strong>Applies to</strong>: Azure SQL Database
			/// </summary>
			[Column("catalog_collation_type"),                     NotNull    ] public int      CatalogCollationType                 { get; set; } // int
			/// <summary>
			/// The catalog collation setting:<br/>DATABASE_DEFAULT<br/>SQL_Latin_1_General_CP1_CI_AS<br/> <strong>Applies to</strong>: Azure SQL Database
			/// </summary>
			[Column("catalog_collation_type_desc"),                   Nullable] public string?  CatalogCollationTypeDesc             { get; set; } // nvarchar(60)
			/// <summary>
			/// For SQL Server, the physical name of the database. For Azure SQL Database, a common id for the databases on a server. <br/><strong>Applies to</strong>: SQL Server (starting with SQL Server 2019 (15.x)) and Azure SQL Database
			/// </summary>
			[Column("physical_database_name"),                        Nullable] public string?  PhysicalDatabaseName                 { get; set; } // nvarchar(128)
			/// <summary>
			/// Indicates whether result set caching is enabled.<br/>1 = result set caching is enabled<br/>0 = result set caching is disabled<br/><strong>Applies to</strong>: Azure Synapse Analytics Gen2. While this feature is being rolled out to all regions, please check the version deployed to your instance and the latest <a href='https://docs.microsoft.com/en-us/azure/synapse-analytics/sql-data-warehouse/release-notes-10-0-10106-0'>Azure Synapse release notes</a> and <a href='https://docs.microsoft.com/en-us/azure/synapse-analytics/sql-data-warehouse/gen2-migration-schedule'>Gen2 upgrade schedule</a> for feature availability.
			/// </summary>
			[Column("is_result_set_caching_on"),                      Nullable] public bool?    IsResultSetCachingOn                 { get; set; } // bit
			/// <summary>
			/// Indicates whether Accelerated Database Recovery (ADR) is enabled.<br/>1 = ADR is enabled<br/>0 = ADR is disabled<br/><strong>Applies to</strong>: SQL Server (starting with SQL Server 2019 (15.x)) and Azure SQL Database
			/// </summary>
			[Column("is_accelerated_database_recovery_on"),           Nullable] public bool?    IsAcceleratedDatabaseRecoveryOn      { get; set; } // bit
			/// <summary>
			/// Indicates whether tempdb spill to remote store is enabled.<br/>1 = enabled<br/>0 = disabled<br/><strong>Applies to</strong>: Azure Synapse Analytics Gen2. While this feature is being rolled out to all regions, please check the version deployed to your instance and the latest <a href='https://docs.microsoft.com/en-us/azure/synapse-analytics/sql-data-warehouse/release-notes-10-0-10106-0'>Azure Synapse release notes</a> and <a href='https://docs.microsoft.com/en-us/azure/synapse-analytics/sql-data-warehouse/gen2-migration-schedule'>Gen2 upgrade schedule</a> for feature availability.
			/// </summary>
			[Column("is_tempdb_spill_to_remote_store"),               Nullable] public bool?    IsTempdbSpillToRemoteStore           { get; set; } // bit
			/// <summary>
			/// Indicates whether stale page detection is enabled.<br/>1 = stale page detection is enabled<br/>0 = stale page detection is disabled<br/><strong>Applies to</strong>: Azure Synapse Analytics Gen2. While this feature is being rolled out to all regions, please check the version deployed to your instance and the latest <a href='https://docs.microsoft.com/en-us/azure/synapse-analytics/sql-data-warehouse/release-notes-10-0-10106-0'>Azure Synapse release notes</a> and <a href='https://docs.microsoft.com/en-us/azure/synapse-analytics/sql-data-warehouse/gen2-migration-schedule'>Gen2 upgrade schedule</a> for feature availability.
			/// </summary>
			[Column("is_stale_page_detection_on"),                    Nullable] public bool?    IsStalePageDetectionOn               { get; set; } // bit
			/// <summary>
			/// Indicates whether certain In-Memory features, such as <a href='https://docs.microsoft.com/en-us/sql/database-engine/configure-windows/hybrid-buffer-pool'>Hybrid Buffer Pool</a>, are enabled for the database. Does not reflect the availability or configuration state of <a href='https://docs.microsoft.com/en-us/sql/relational-databases/in-memory-oltp/overview-and-usage-scenarios'>In-Memory OLTP</a>. <br/>1 = memory-optimized features are enabled<br/>0 = memory-optimized features are disabled<br/><strong>Applies to</strong>: SQL Server (starting with SQL Server 2019 (15.x)) and Azure SQL Database
			/// </summary>
			[Column("is_memory_optimized_enabled"),                   Nullable] public bool?    IsMemoryOptimizedEnabled             { get; set; } // bit
			/// <summary>
			/// Indicates a <a href='https://docs.microsoft.com/en-us/azure/azure-sql/database/ledger-overview#ledger-database'>ledger database</a>, which is a database in which all user tables are ledger tables (all customer database is tamper-evident).<br/><br/><strong>Applies to</strong>: Azure SQL Database
			/// </summary>
			[Column("is_ledger_on"),                               NotNull    ] public bool     IsLedgerOn                           { get; set; } // bit
		}

		/// <summary>
		/// <para><strong>sys.database\_automatic\_tuning_mode (Transact-SQL)</strong></para>
		/// <para><strong>Applies to:</strong> √ SQL Server 2017 (14.x) and later  √ Azure SQL Database √ Azure SQL Managed Instance</para>
		/// <para>Returns the Automatic Tuning mode for this database. Refer to <a href='https://docs.microsoft.com/en-us/sql/t-sql/statements/alter-database-transact-sql-set-options#auto_tuning'>ALTER DATABASE SET AUTOMATIC_TUNING (Transact-SQL)</a> for available options.</para><br/>
		/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-database-automatic-tuning-mode-transact-sql'>sys.database_automatic_tuning_mode</a>.</para>
		/// </summary>
		[Table(Schema="sys", Name="database_automatic_tuning_mode", IsView=true)]
		public partial class DatabaseAutomaticTuningMode
		{
			/// <summary>
			/// Desired state of the Automatic Tuning mode.
			/// </summary>
			[Column("desired_state"),      Nullable] public short?  DesiredState     { get; set; } // smallint
			/// <summary>
			/// Textual description of the desired operation mode of Automatic Tuning.
			/// </summary>
			[Column("desired_state_desc"), Nullable] public string? DesiredStateDesc { get; set; } // nvarchar(60)
			/// <summary>
			/// Indicates the operation mode of Automatic Tuning mode.
			/// </summary>
			[Column("actual_state"),       Nullable] public short?  ActualState      { get; set; } // smallint
			/// <summary>
			/// Textual description of the actual operation mode of Automatic Tuning.
			/// </summary>
			[Column("actual_state_desc"),  Nullable] public string? ActualStateDesc  { get; set; } // nvarchar(60)
		}

		/// <summary>
		/// <para><strong>sys.database\_automatic\_tuning_options (Transact-SQL)</strong></para>
		/// <para><strong>Applies to:</strong> √ SQL Server 2017 (14.x) and later  √ Azure SQL Database √ Azure SQL Managed Instance</para>
		/// <para>Returns the Automatic Tuning options for this database.</para><br/>
		/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-database-automatic-tuning-options-transact-sql'>sys.database_automatic_tuning_options</a>.</para>
		/// </summary>
		[Table(Schema="sys", Name="database_automatic_tuning_options", IsView=true)]
		public partial class DatabaseAutomaticTuningOption
		{
			/// <summary>
			/// The name of the automatic tuning option. Refer to <a href='https://docs.microsoft.com/en-us/sql/t-sql/statements/alter-database-transact-sql-set-options#auto_tuning'>ALTER DATABASE SET AUTOMATIC_TUNING (Transact-SQL)</a> for available options.
			/// </summary>
			[Column("name"),               Nullable] public string? Name             { get; set; } // nvarchar(128)
			/// <summary>
			/// Indicates the desired operation mode for Automatic Tuning option, explicitly set by user.<br/>0 = OFF<br/>1 = ON
			/// </summary>
			[Column("desired_state"),      Nullable] public short?  DesiredState     { get; set; } // smallint
			/// <summary>
			/// Textual description of the desired operation mode of Automatic Tuning option.<br/>OFF<br/>ON
			/// </summary>
			[Column("desired_state_desc"), Nullable] public string? DesiredStateDesc { get; set; } // nvarchar(60)
			/// <summary>
			/// Indicates the operation mode of Automatic Tuning option.<br/>0 = OFF<br/>1 = ON
			/// </summary>
			[Column("actual_state"),       Nullable] public short?  ActualState      { get; set; } // smallint
			/// <summary>
			/// Textual description of the actual operation mode of Automatic Tuning option.<br/>OFF<br/>ON
			/// </summary>
			[Column("actual_state_desc"),  Nullable] public string? ActualStateDesc  { get; set; } // nvarchar(60)
			/// <summary>
			/// Indicates why actual and desired states are different.<br/>2 = DISABLED<br/>11 = QUERY_STORE_OFF<br/>12 = QUERY_STORE_READ_ONLY<br/>13 = NOT_SUPPORTED
			/// </summary>
			[Column("reason"),             Nullable] public short?  Reason           { get; set; } // smallint
			/// <summary>
			/// Textual description of the reason why actual and desired states are different.<br/>DISABLED = Option is disabled by system<br/>QUERY_STORE_OFF = Query Store is turned off<br/>QUERY_STORE_READ_ONLY = Query Store is in read-only mode<br/>NOT_SUPPORTED = Available only in SQL Server Enterprise edition
			/// </summary>
			[Column("reason_desc"),        Nullable] public string? ReasonDesc       { get; set; } // nvarchar(60)
		}

		/// <summary>
		/// <para><strong>sys.database_files (Transact-SQL)</strong></para>
		/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions) √ Azure SQL Database √ Azure SQL Managed Instance √ Azure Synapse Analytics √ Analytics Platform System (PDW)</para>
		/// <para>Contains a row per file of a database as stored in the database itself. This is a per-database view.</para><br/>
		/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-database-files-transact-sql'>sys.database_files</a>.</para>
		/// </summary>
		[Table(Schema="sys", Name="database_files", IsView=true)]
		public partial class DatabaseFile
		{
			/// <summary>
			/// ID of the file within database.
			/// </summary>
			[Column("file_id"),                NotNull    ] public int       FileID               { get; set; } // int
			/// <summary>
			/// GUID for the file.<br/><br/> NULL = Database was upgraded from an earlier version of SQL Server (Valid for SQL Server 2005 and earlier).
			/// </summary>
			[Column("file_guid"),                 Nullable] public Guid?     FileGuid             { get; set; } // uniqueidentifier
			/// <summary>
			/// File type:<br/><br/> 0 = Rows<br/><br/> 1 = Log<br/><br/> 2 = FILESTREAM<br/><br/> 3 = Identified for informational purposes only. Not supported. Future compatibility is not guaranteed.<br/><br/> 4 = Full-text
			/// </summary>
			[Column("type"),                   NotNull    ] public byte      TypeColumn           { get; set; } // tinyint
			/// <summary>
			/// Description of the file type:<br/><br/> ROWS <br/><br/> LOG<br/><br/> FILESTREAM<br/><br/> FULLTEXT
			/// </summary>
			[Column("type_desc"),                 Nullable] public string?   TypeDesc             { get; set; } // nvarchar(60)
			/// <summary>
			/// Value can be 0 or greater than 0. A value of 0 represents the database log file, and a value greater than 0 represents the ID of the filegroup where this data file is stored.
			/// </summary>
			[Column("data_space_id"),          NotNull    ] public int       DataSpaceID          { get; set; } // int
			/// <summary>
			/// Logical name of the file in the database.
			/// </summary>
			[Column("name"),                   NotNull    ] public string    Name                 { get; set; } = null!; // sysname
			/// <summary>
			/// Operating-system file name. If the database is hosted by an AlwaysOn <a href='https://docs.microsoft.com/en-us/sql/database-engine/availability-groups/windows/active-secondaries-readable-secondary-replicas-always-on-availability-groups'>readable secondary replica</a>, <strong>physical_name</strong> indicates the file location of the primary replica database. For the correct file location of a readable secondary database, query <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-compatibility-views/sys-sysaltfiles-transact-sql'>sys.sysaltfiles</a>.
			/// </summary>
			[Column("physical_name"),             Nullable] public string?   PhysicalName         { get; set; } // nvarchar(260)
			/// <summary>
			/// File state:<br/><br/> 0 = ONLINE<br/><br/> 1 = RESTORING<br/><br/> 2 = RECOVERING<br/><br/> 3 = RECOVERY_PENDING<br/><br/> 4 = SUSPECT<br/><br/> 5 = Identified for informational purposes only. Not supported. Future compatibility is not guaranteed.<br/><br/> 6 = OFFLINE<br/><br/> 7 = DEFUNCT
			/// </summary>
			[Column("state"),                     Nullable] public byte?     State                { get; set; } // tinyint
			/// <summary>
			/// Description of the file state:<br/><br/> ONLINE<br/><br/> RESTORING<br/><br/> RECOVERING<br/><br/> RECOVERY_PENDING<br/><br/> SUSPECT<br/><br/> OFFLINE<br/><br/> DEFUNCT<br/><br/> For more information, see <a href='https://docs.microsoft.com/en-us/sql/relational-databases/databases/file-states'>File States</a>.
			/// </summary>
			[Column("state_desc"),                Nullable] public string?   StateDesc            { get; set; } // nvarchar(60)
			/// <summary>
			/// Current size of the file, in 8-KB pages.<br/><br/> 0 = Not applicable<br/><br/> For a database snapshot, size reflects the maximum space that the snapshot can ever use for the file.<br/><br/> For FILESTREAM filegroup containers, size reflects the current used size of the container.
			/// </summary>
			[Column("size"),                   NotNull    ] public int       Size                 { get; set; } // int
			/// <summary>
			/// Maximum file size, in 8-KB pages:<br/><br/> 0 = No growth is allowed.<br/><br/> -1 = File will grow until the disk is full.<br/><br/> 268435456 = Log file will grow to a maximum size of 2 TB.<br/><br/> For FILESTREAM filegroup containers, max_size reflects the maximum size of the container.<br/><br/> Note that databases that are upgraded with an unlimited log file size will report -1 for the maximum size of the log file.
			/// </summary>
			[Column("max_size"),               NotNull    ] public int       MaxSize              { get; set; } // int
			/// <summary>
			/// 0 = File is fixed size and will not grow.<br/><br/> &gt;0 = File will grow automatically.<br/><br/> If is_percent_growth = 0, growth increment is in units of 8-KB pages, rounded to the nearest 64 KB.<br/><br/> If is_percent_growth = 1, growth increment is expressed as a whole number percentage.
			/// </summary>
			[Column("growth"),                 NotNull    ] public int       Growth               { get; set; } // int
			/// <summary>
			/// 1 = File is on read-only media.<br/><br/> 0 = File is on read-write media.
			/// </summary>
			[Column("is_media_read_only"),     NotNull    ] public bool      IsMediaReadOnly      { get; set; } // bit
			/// <summary>
			/// 1 = File is marked read-only.<br/><br/> 0 = File is marked read/write.
			/// </summary>
			[Column("is_read_only"),           NotNull    ] public bool      IsReadOnly           { get; set; } // bit
			/// <summary>
			/// 1 = File is a sparse file.<br/><br/> 0 = File is not a sparse file.<br/><br/> For more information, see <a href='https://docs.microsoft.com/en-us/sql/relational-databases/databases/view-the-size-of-the-sparse-file-of-a-database-snapshot-transact-sql'>View the Size of the Sparse File of a Database Snapshot (Transact-SQL)</a>.
			/// </summary>
			[Column("is_sparse"),              NotNull    ] public bool      IsSparse             { get; set; } // bit
			/// <summary>
			/// 1 = Growth of the file is a percentage.<br/><br/> 0 = Absolute growth size in pages.
			/// </summary>
			[Column("is_percent_growth"),      NotNull    ] public bool      IsPercentGrowth      { get; set; } // bit
			/// <summary>
			/// 1 = Dropped file name (name or physical_name) is reusable only after the next log backup. When files are dropped from a database, the logical names stay in a reserved state until the next log backup. This column is relevant only under the full recovery model and the bulk-logged recovery model.
			/// </summary>
			[Column("is_name_reserved"),       NotNull    ] public bool      IsNameReserved       { get; set; } // bit
			/// <summary>
			/// Log sequence number (LSN) at which the file was created.
			/// </summary>
			[Column("create_lsn"),                Nullable] public decimal?  CreateLsn            { get; set; } // numeric(25,0)
			/// <summary>
			/// LSN at which the file was dropped.<br/><br/> 0 = The file name is unavailable for reuse.
			/// </summary>
			[Column("drop_lsn"),                  Nullable] public decimal?  DropLsn              { get; set; } // numeric(25,0)
			/// <summary>
			/// LSN at which the filegroup that contains the file changed from read/write to read-only (most recent change).
			/// </summary>
			[Column("read_only_lsn"),             Nullable] public decimal?  ReadOnlyLsn          { get; set; } // numeric(25,0)
			/// <summary>
			/// LSN at which the filegroup that contains the file changed from read-only to read/write (most recent change).
			/// </summary>
			[Column("read_write_lsn"),            Nullable] public decimal?  ReadWriteLsn         { get; set; } // numeric(25,0)
			/// <summary>
			/// Base for differential backups. Data extents changed after this LSN will be included in a differential backup.
			/// </summary>
			[Column("differential_base_lsn"),     Nullable] public decimal?  DifferentialBaseLsn  { get; set; } // numeric(25,0)
			/// <summary>
			/// Unique identifier of the base backup on which a differential backup will be based.
			/// </summary>
			[Column("differential_base_guid"),    Nullable] public Guid?     DifferentialBaseGuid { get; set; } // uniqueidentifier
			/// <summary>
			/// Time corresponding to differential_base_lsn.
			/// </summary>
			[Column("differential_base_time"),    Nullable] public DateTime? DifferentialBaseTime { get; set; } // datetime
			/// <summary>
			/// LSN at which the next roll forward must start.<br/><br/> Is NULL unless state = RESTORING or state = RECOVERY_PENDING.
			/// </summary>
			[Column("redo_start_lsn"),            Nullable] public decimal?  RedoStartLsn         { get; set; } // numeric(25,0)
			/// <summary>
			/// Unique identifier of the recovery fork. The first_fork_guid of the next log backup restored must match this value. This represents the current state of the file.
			/// </summary>
			[Column("redo_start_fork_guid"),      Nullable] public Guid?     RedoStartForkGuid    { get; set; } // uniqueidentifier
			/// <summary>
			/// LSN at which the online roll forward on this file can stop.<br/><br/> Is NULL unless state = RESTORING or state = RECOVERY_PENDING.
			/// </summary>
			[Column("redo_target_lsn"),           Nullable] public decimal?  RedoTargetLsn        { get; set; } // numeric(25,0)
			/// <summary>
			/// The recovery fork on which the file can be recovered. Paired with redo_target_lsn.
			/// </summary>
			[Column("redo_target_fork_guid"),     Nullable] public Guid?     RedoTargetForkGuid   { get; set; } // uniqueidentifier
			/// <summary>
			/// The LSN of the most recent data or differential backup of the file.
			/// </summary>
			[Column("backup_lsn"),                Nullable] public decimal?  BackupLsn            { get; set; } // numeric(25,0)
		}

		/// <summary>
		/// <para><strong>sys.database_mirroring (Transact-SQL)</strong></para>
		/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)</para>
		/// <para>Contains one row for each database in the instance of SQL Server. If the database is not ONLINE or database mirroring is not enabled, the values of all columns except database_id will be NULL.<br/>
		///  To see the row for a database other than master or tempdb, you must either be the database owner or have at least ALTER ANY DATABASE or VIEW ANY DATABASE server-level permission or CREATE DATABASE permission in the master database. To see non-NULL values on a mirror database, you must be a member of the <strong>sysadmin</strong> fixed server role.<br/>
		/// <note type='note'><br/>
		/// If a database does not participate in mirroring, all columns prefixed with 'mirroring_' are NULL.<br/>
		/// </note></para><br/>
		/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-database-mirroring-transact-sql'>sys.database_mirroring</a>.</para>
		/// </summary>
		[Table(Schema="sys", Name="database_mirroring", IsView=true)]
		public partial class DatabaseMirroring
		{
			/// <summary>
			/// ID of the database. Is unique within an instance of SQL Server.
			/// </summary>
			[Column("database_id"),                  NotNull    ] public int      DatabaseID                 { get; set; } // int
			/// <summary>
			/// ID of the mirroring partnership.<br/><br/> NULL= Database is inaccessible or is not mirrored.<br/><br/> Note: If the database does not participate in mirroring, all columns prefixed with 'mirroring_' are NULL.
			/// </summary>
			[Column("mirroring_guid"),                  Nullable] public Guid?    MirroringGuid              { get; set; } // uniqueidentifier
			/// <summary>
			/// State of the mirror database and of the database mirroring session.<br/><br/> 0 = Suspended<br/><br/> 1 = Disconnected from the other partner<br/><br/> 2 = Synchronizing<br/><br/> 3 = Pending Failover<br/><br/> 4 = Synchronized<br/><br/> 5 = The partners are not synchronized. Failover is not possible now.<br/><br/> 6 = The partners are synchronized. Failover is potentially possible. For information about the requirements for failover see, <a href='https://docs.microsoft.com/en-us/sql/database-engine/database-mirroring/database-mirroring-operating-modes'>Database Mirroring Operating Modes</a>.<br/><br/> NULL = Database is inaccessible or is not mirrored.
			/// </summary>
			[Column("mirroring_state"),                 Nullable] public byte?    MirroringState             { get; set; } // tinyint
			/// <summary>
			/// Description of the state of the mirror database and of the database mirroring session, can be one of:<br/><br/> DISCONNECTED<br/><br/> SYNCHRONIZED<br/><br/> SYNCHRONIZING<br/><br/> PENDING_FAILOVER<br/><br/> SUSPENDED<br/><br/> UNSYNCHRONIZED<br/><br/> SYNCHRONIZED<br/><br/> NULL<br/><br/> For more information, see <a href='https://docs.microsoft.com/en-us/sql/database-engine/database-mirroring/mirroring-states-sql-server'>Mirroring States (SQL Server)</a>.
			/// </summary>
			[Column("mirroring_state_desc"),            Nullable] public string?  MirroringStateDesc         { get; set; } // nvarchar(60)
			/// <summary>
			/// Current role of the local database plays in the database mirroring session.<br/><br/> 1 = Principal<br/><br/> 2 = Mirror<br/><br/> NULL = Database is inaccessible or is not mirrored.
			/// </summary>
			[Column("mirroring_role"),                  Nullable] public byte?    MirroringRole              { get; set; } // tinyint
			/// <summary>
			/// Description of the role the local database plays in mirroring, can be one of:<br/><br/> PRINCIPAL<br/><br/> MIRROR
			/// </summary>
			[Column("mirroring_role_desc"),             Nullable] public string?  MirroringRoleDesc          { get; set; } // nvarchar(60)
			/// <summary>
			/// The number of times that mirroring partners have switched the principal and mirror roles due to a failover or forced service.<br/><br/> NULL = Database is inaccessible or is not mirrored.
			/// </summary>
			[Column("mirroring_role_sequence"),         Nullable] public int?     MirroringRoleSequence      { get; set; } // int
			/// <summary>
			/// Safety setting for updates on the mirror database:<br/><br/> 0 = Unknown state<br/><br/> 1 = Off [asynchronous]<br/><br/> 2 = Full [synchronous]<br/><br/> NULL = Database is inaccessible or is not mirrored.
			/// </summary>
			[Column("mirroring_safety_level"),          Nullable] public byte?    MirroringSafetyLevel       { get; set; } // tinyint
			/// <summary>
			/// Transaction safety setting for the updates on the mirror database, can be one of:<br/><br/> UNKNOWN<br/><br/> OFF<br/><br/> FULL<br/><br/> NULL
			/// </summary>
			[Column("mirroring_safety_level_desc"),     Nullable] public string?  MirroringSafetyLevelDesc   { get; set; } // nvarchar(60)
			/// <summary>
			/// Update the sequence number for changes to transaction safety level.<br/><br/> NULL = Database is inaccessible or is not mirrored.
			/// </summary>
			[Column("mirroring_safety_sequence"),       Nullable] public int?     MirroringSafetySequence    { get; set; } // int
			/// <summary>
			/// Server name of the database mirroring partner.<br/><br/> NULL = Database is inaccessible or is not mirrored.
			/// </summary>
			[Column("mirroring_partner_name"),          Nullable] public string?  MirroringPartnerName       { get; set; } // nvarchar(128)
			/// <summary>
			/// The instance name and computer name for the other partner. Clients require this information to connect to the partner if it becomes the principal server.<br/><br/> NULL = Database is inaccessible or is not mirrored.
			/// </summary>
			[Column("mirroring_partner_instance"),      Nullable] public string?  MirroringPartnerInstance   { get; set; } // nvarchar(128)
			/// <summary>
			/// Server name of the database mirroring witness.<br/><br/> NULL = No witness exists.
			/// </summary>
			[Column("mirroring_witness_name"),          Nullable] public string?  MirroringWitnessName       { get; set; } // nvarchar(128)
			/// <summary>
			/// State of the witness in the database mirroring session of the database, can be one of:<br/><br/> 0 = Unknown<br/><br/> 1 = Connected<br/><br/> 2 = Disconnected<br/><br/> NULL = No witness exists, the database is not online, or the database is not mirrored.
			/// </summary>
			[Column("mirroring_witness_state"),         Nullable] public byte?    MirroringWitnessState      { get; set; } // tinyint
			/// <summary>
			/// Description of state, can be one of:<br/><br/> UNKNOWN<br/><br/> CONNECTED<br/><br/> DISCONNECTED<br/><br/> NULL
			/// </summary>
			[Column("mirroring_witness_state_desc"),    Nullable] public string?  MirroringWitnessStateDesc  { get; set; } // nvarchar(60)
			/// <summary>
			/// Log sequence number (LSN) of the latest transaction log record that is guaranteed to be hardened to disk on both partners. After a failover, the <strong>mirroring_failover_lsn</strong> is used by the partners as the point of reconciliation at which the new mirror server begins to synchronize the new mirror database with the new principal database.
			/// </summary>
			[Column("mirroring_failover_lsn"),          Nullable] public decimal? MirroringFailoverLsn       { get; set; } // numeric(25,0)
			/// <summary>
			/// Mirroring connection time out in seconds. This is the number of seconds to wait for a reply from a partner or witness before considering them unavailable. The default time-out value is 10 seconds.<br/><br/> NULL = Database is inaccessible or is not mirrored.
			/// </summary>
			[Column("mirroring_connection_timeout"),    Nullable] public int?     MirroringConnectionTimeout { get; set; } // int
			/// <summary>
			/// Maximum amount of log to be redone on the mirror. If mirroring_redo_queue_type is set to UNLIMITED, which is the default setting, this column is NULL. If the database is not online, this column is also NULL.<br/><br/> Otherwise, this column contains the maximum amount of log in megabytes. When the maximum is reached, the log is temporarily stalled on the principal as the mirror server catches up. This feature limits failover time.<br/><br/> For more information, see <a href='https://docs.microsoft.com/en-us/sql/database-engine/database-mirroring/estimate-the-interruption-of-service-during-role-switching-database-mirroring'>Estimate the Interruption of Service During Role Switching (Database Mirroring)</a>.
			/// </summary>
			[Column("mirroring_redo_queue"),            Nullable] public int?     MirroringRedoQueue         { get; set; } // int
			/// <summary>
			/// UNLIMITED indicates that mirroring will not inhibit the redo queue. This is the default setting.<br/><br/> MB for maximum size of the redo queue in mega bytes. Note that if the queue size was specified as kilobytes or gigabytes, the Database Engine converts the value into megabytes.<br/><br/> If the database is not online, this column is NULL.
			/// </summary>
			[Column("mirroring_redo_queue_type"),       Nullable] public string?  MirroringRedoQueueType     { get; set; } // nvarchar(60)
			/// <summary>
			/// The local end-of-log that has been flushed to disk. This is comparable to the hardened LSN from the mirror server (see the <strong>mirroring_failover_lsn</strong> column).
			/// </summary>
			[Column("mirroring_end_of_log_lsn"),        Nullable] public decimal? MirroringEndOfLogLsn       { get; set; } // numeric(25,0)
			/// <summary>
			/// The maximum LSN that replication can send.
			/// </summary>
			[Column("mirroring_replication_lsn"),       Nullable] public decimal? MirroringReplicationLsn    { get; set; } // numeric(25,0)
		}

		/// <summary>
		/// <para><strong>sys.database_recovery_status (Transact-SQL)</strong></para>
		/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)</para>
		/// <para>Contains one row per database. If the database is not opened, the SQL Server Database Engine tries to start it.<br/>
		///  To see the row for a database other than <strong>master</strong> or <strong>tempdb</strong>, one of the following must apply:<br/>
		/// -   Be the owner of the database.<br/>
		/// -   Have ALTER ANY DATABASE or VIEW ANY DATABASE server-level permissions.<br/>
		/// -   Have CREATE DATABASE permission in the <strong>master</strong> database.</para><br/>
		/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-database-recovery-status-transact-sql'>sys.database_recovery_status</a>.</para>
		/// </summary>
		[Table(Schema="sys", Name="database_recovery_status", IsView=true)]
		public partial class DatabaseRecoveryStatus
		{
			/// <summary>
			/// ID of the database, unique within an instance of SQL Server.
			/// </summary>
			[Column("database_id"),              NotNull    ] public int      DatabaseID            { get; set; } // int
			/// <summary>
			/// Used to relate all the database files of a database together. All files must have this GUID in their header page for the database to start as expected. Only one database should ever have this GUID, but duplicates can be created by copying and attaching databases. RESTORE always generates a new GUID when you restore a database that does not yet exist.<br/><br/> NULL= Database is offline, or the database will not start.
			/// </summary>
			[Column("database_guid"),               Nullable] public Guid?    DatabaseGuid          { get; set; } // uniqueidentifier
			/// <summary>
			/// Identifier of the 'backup family' for the database for detecting matching restore states.<br/><br/> NULL= Database is offline or the database will not start.
			/// </summary>
			[Column("family_guid"),                 Nullable] public Guid?    FamilyGuid            { get; set; } // uniqueidentifier
			/// <summary>
			/// The starting log sequence number of the next log backup.<br/><br/> If NULL, a transaction log back up cannot be performed because either the database is in SIMPLE recovery or there is no current database backup.
			/// </summary>
			[Column("last_log_backup_lsn"),         Nullable] public decimal? LastLogBackupLsn      { get; set; } // numeric(25,0)
			/// <summary>
			/// Identifies the current recovery fork on which the database is currently active.<br/><br/> NULL= Database is offline, or the database will not start.
			/// </summary>
			[Column("recovery_fork_guid"),          Nullable] public Guid?    RecoveryForkGuid      { get; set; } // uniqueidentifier
			/// <summary>
			/// Identifier of the starting recovery fork.<br/><br/> NULL= Database is offline, or the database will not start.
			/// </summary>
			[Column("first_recovery_fork_guid"),    Nullable] public Guid?    FirstRecoveryForkGuid { get; set; } // uniqueidentifier
			/// <summary>
			/// If <strong>first_recovery_fork_guid</strong> is not equal (!=) to <strong>recovery_fork_guid</strong>, <strong>fork_point_lsn</strong> is the log sequence number of the current fork point. Otherwise, the value is NULL.
			/// </summary>
			[Column("fork_point_lsn"),              Nullable] public decimal? ForkPointLsn          { get; set; } // numeric(25,0)
		}

		/// <summary>
		/// <para><strong>sys.database_scoped_configurations (Transact-SQL)</strong></para>
		/// <para><strong>APPLIES TO:</strong> (Yes) SQL Server 2016 and later (Yes) Azure SQL Database (Yes) Azure Synapse Analytics (No) Parallel Data Warehouse</para>
		/// <para>Contains one row per configuration.</para><br/>
		/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-database-scoped-configurations-transact-sql'>sys.database_scoped_configurations</a>.</para>
		/// </summary>
		[Table(Schema="sys", Name="database_scoped_configurations", IsView=true)]
		public partial class DatabaseScopedConfiguration
		{
			/// <summary>
			/// ID of the configuration option.
			/// </summary>
			[Column("configuration_id"),    Nullable] public int?    ConfigurationID   { get; set; } // int
			/// <summary>
			/// The name of the configuration option. For information about the possible configurations, see <a href='https://docs.microsoft.com/en-us/sql/t-sql/statements/alter-database-scoped-configuration-transact-sql'>ALTER DATABASE SCOPED CONFIGURATION (Transact-SQL)</a>.
			/// </summary>
			[Column("name"),                Nullable] public string? Name              { get; set; } // nvarchar(60)
			/// <summary>
			/// The value set for this configuration option for the primary replica.
			/// </summary>
			[Column("value"),               Nullable] public object? Value             { get; set; } // sqlvariant
			/// <summary>
			/// The value set for this configuration option for the secondary replicas.
			/// </summary>
			[Column("value_for_secondary"), Nullable] public object? ValueForSecondary { get; set; } // sqlvariant
			/// <summary>
			/// Specifies whether the value set is the default value. Added in SQL Server 2017.
			/// </summary>
			[Column("is_value_default"),    Nullable] public bool?   IsValueDefault    { get; set; } // bit
		}

		/// <summary>
		/// <para><strong>sys.master_files (Transact-SQL)</strong></para>
		/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions) √ Azure SQL Managed Instance √ Analytics Platform System (PDW)</para>
		/// <para>Contains a row per file of a database as stored in the master database. This is a single, system-wide view.</para><br/>
		/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-master-files-transact-sql'>sys.master_files</a>.</para>
		/// </summary>
		[Table(Schema="sys", Name="master_files", IsView=true)]
		public partial class MasterFile
		{
			/// <summary>
			/// ID of the database to which this file applies. The masterdatabase_id is always 1.
			/// </summary>
			[Column("database_id"),            NotNull    ] public int       DatabaseID           { get; set; } // int
			/// <summary>
			/// ID of the file within database. The primary file_id is always 1.
			/// </summary>
			[Column("file_id"),                NotNull    ] public int       FileID               { get; set; } // int
			/// <summary>
			/// Unique identifier of the file.<br/><br/> NULL = Database was upgraded from an earlier version of SQL Server (Valid for SQL Server 2005 and earlier) .
			/// </summary>
			[Column("file_guid"),                 Nullable] public Guid?     FileGuid             { get; set; } // uniqueidentifier
			/// <summary>
			/// File type:<br/><br/> 0 = Rows.<br/><br/> 1 = Log<br/><br/> 2 = FILESTREAM<br/><br/> 3 = Identified for informational purposes only. Not supported. Future compatibility is not guaranteed.<br/><br/> 4 = Full-text (Full-text catalogs earlier than SQL Server 2008; full-text catalogs that are upgraded to or created in SQL Server 2008 or higher will report a file type 0.)
			/// </summary>
			[Column("type"),                   NotNull    ] public byte      TypeColumn           { get; set; } // tinyint
			/// <summary>
			/// Description of the file type:<br/><br/> ROWS<br/><br/> LOG<br/><br/> FILESTREAM<br/><br/> FULLTEXT (Full-text catalogs earlier than SQL Server 2008.)
			/// </summary>
			[Column("type_desc"),                 Nullable] public string?   TypeDesc             { get; set; } // nvarchar(60)
			/// <summary>
			/// ID of the data space to which this file belongs. Data space is a filegroup.<br/><br/> 0 = Log files
			/// </summary>
			[Column("data_space_id"),          NotNull    ] public int       DataSpaceID          { get; set; } // int
			/// <summary>
			/// Logical name of the file in the database.
			/// </summary>
			[Column("name"),                   NotNull    ] public string    Name                 { get; set; } = null!; // sysname
			/// <summary>
			/// Operating-system file name.
			/// </summary>
			[Column("physical_name"),          NotNull    ] public string    PhysicalName         { get; set; } = null!; // nvarchar(260)
			/// <summary>
			/// File state:<br/><br/> 0 = ONLINE<br/><br/> 1 = RESTORING<br/><br/> 2 = RECOVERING<br/><br/> 3 = RECOVERY_PENDING<br/><br/> 4 = SUSPECT<br/><br/> 5 = Identified for informational purposes only. Not supported. Future compatibility is not guaranteed.<br/><br/> 6 = OFFLINE<br/><br/> 7 = DEFUNCT
			/// </summary>
			[Column("state"),                     Nullable] public byte?     State                { get; set; } // tinyint
			/// <summary>
			/// Description of the file state:<br/><br/> ONLINE<br/><br/> RESTORING<br/><br/> RECOVERING<br/><br/> RECOVERY_PENDING<br/><br/> SUSPECT<br/><br/> OFFLINE<br/><br/> DEFUNCT<br/><br/> For more information, see <a href='https://docs.microsoft.com/en-us/sql/relational-databases/databases/file-states'>File States</a>.
			/// </summary>
			[Column("state_desc"),                Nullable] public string?   StateDesc            { get; set; } // nvarchar(60)
			/// <summary>
			/// Current file size, in 8-KB pages. For a database snapshot, size reflects the maximum space that the snapshot can ever use for the file.<br/><br/> Note: This field is populated as zero for FILESTREAM containers. Query the *sys.database_files* catalog view for the actual size of FILESTREAM containers.
			/// </summary>
			[Column("size"),                   NotNull    ] public int       Size                 { get; set; } // int
			/// <summary>
			/// Maximum file size, in 8-KB pages:<br/><br/> 0 = No growth is allowed.<br/><br/> -1 = File will grow until the disk is full.<br/><br/> 268435456 = Log file will grow to a maximum size of 2 TB.<br/><br/> Note: Databases that are upgraded with an unlimited log file size will report -1 for the maximum size of the log file.
			/// </summary>
			[Column("max_size"),               NotNull    ] public int       MaxSize              { get; set; } // int
			/// <summary>
			/// 0 = File is fixed size and will not grow.<br/><br/> &gt;0 = File will grow automatically.<br/><br/> If is_percent_growth = 0, growth increment is in units of 8-KB pages, rounded to the nearest 64 KB<br/><br/> If is_percent_growth = 1, growth increment is expressed as a whole number percentage.
			/// </summary>
			[Column("growth"),                 NotNull    ] public int       Growth               { get; set; } // int
			/// <summary>
			/// 1 = File is on read-only media.<br/><br/> 0 = File is on read/write media.
			/// </summary>
			[Column("is_media_read_only"),     NotNull    ] public bool      IsMediaReadOnly      { get; set; } // bit
			/// <summary>
			/// 1 = File is marked read-only.<br/><br/> 0 = file is marked read/write.
			/// </summary>
			[Column("is_read_only"),           NotNull    ] public bool      IsReadOnly           { get; set; } // bit
			/// <summary>
			/// 1 = File is a sparse file.<br/><br/> 0 = File is not a sparse file.<br/><br/> For more information, see <a href='https://docs.microsoft.com/en-us/sql/relational-databases/databases/view-the-size-of-the-sparse-file-of-a-database-snapshot-transact-sql'>View the Size of the Sparse File of a Database Snapshot (Transact-SQL)</a>.
			/// </summary>
			[Column("is_sparse"),              NotNull    ] public bool      IsSparse             { get; set; } // bit
			/// <summary>
			/// 1 = Growth of the file is a percentage.<br/><br/> 0 = Absolute growth size in pages.
			/// </summary>
			[Column("is_percent_growth"),      NotNull    ] public bool      IsPercentGrowth      { get; set; } // bit
			/// <summary>
			/// 1 = Dropped file name is reusable. A log backup must be taken before the name (name or physical_name) can be reused for a new file name.<br/><br/> 0 = File name is unavailable for reuse.
			/// </summary>
			[Column("is_name_reserved"),       NotNull    ] public bool      IsNameReserved       { get; set; } // bit
			/// <summary>
			/// Log sequence number (LSN) at which the file was created.
			/// </summary>
			[Column("create_lsn"),                Nullable] public decimal?  CreateLsn            { get; set; } // numeric(25,0)
			/// <summary>
			/// LSN at which the file was dropped.
			/// </summary>
			[Column("drop_lsn"),                  Nullable] public decimal?  DropLsn              { get; set; } // numeric(25,0)
			/// <summary>
			/// LSN at which the filegroup that contains the file changed from read/write to read-only (most recent change).
			/// </summary>
			[Column("read_only_lsn"),             Nullable] public decimal?  ReadOnlyLsn          { get; set; } // numeric(25,0)
			/// <summary>
			/// LSN at which the filegroup that contains the file changed from read-only to read/write (most recent change).
			/// </summary>
			[Column("read_write_lsn"),            Nullable] public decimal?  ReadWriteLsn         { get; set; } // numeric(25,0)
			/// <summary>
			/// Base for differential backups. Data extents changed after this LSN will be included in a differential backup.
			/// </summary>
			[Column("differential_base_lsn"),     Nullable] public decimal?  DifferentialBaseLsn  { get; set; } // numeric(25,0)
			/// <summary>
			/// Unique identifier of the base backup on which a differential backup will be based.
			/// </summary>
			[Column("differential_base_guid"),    Nullable] public Guid?     DifferentialBaseGuid { get; set; } // uniqueidentifier
			/// <summary>
			/// Time corresponding to differential_base_lsn.
			/// </summary>
			[Column("differential_base_time"),    Nullable] public DateTime? DifferentialBaseTime { get; set; } // datetime
			/// <summary>
			/// LSN at which the next roll forward must start.<br/><br/> Is NULL unless state = RESTORING or state = RECOVERY_PENDING.
			/// </summary>
			[Column("redo_start_lsn"),            Nullable] public decimal?  RedoStartLsn         { get; set; } // numeric(25,0)
			/// <summary>
			/// Unique identifier of the recovery fork. The first_fork_guid of the next log backup restored must match this value. This represents the current state of the container.
			/// </summary>
			[Column("redo_start_fork_guid"),      Nullable] public Guid?     RedoStartForkGuid    { get; set; } // uniqueidentifier
			/// <summary>
			/// LSN at which the online roll forward on this file can stop.<br/><br/> Is NULL unless state = RESTORING or state = RECOVERY_PENDING.
			/// </summary>
			[Column("redo_target_lsn"),           Nullable] public decimal?  RedoTargetLsn        { get; set; } // numeric(25,0)
			/// <summary>
			/// The recovery fork on which the container can be recovered. Paired with redo_target_lsn.
			/// </summary>
			[Column("redo_target_fork_guid"),     Nullable] public Guid?     RedoTargetForkGuid   { get; set; } // uniqueidentifier
			/// <summary>
			/// The LSN of the most recent data or differential backup of the file.
			/// </summary>
			[Column("backup_lsn"),                Nullable] public decimal?  BackupLsn            { get; set; } // numeric(25,0)
			/// <summary>
			/// The <c>credential_id</c> from <c>sys.credentials</c> used for storing the file. For example, when SQL Server is running on an Azure Virtual Machine and the database files are stored in Azure blob storage, a credential is configured with the access credentials to the storage location.
			/// </summary>
			[Column("credential_id"),             Nullable] public int?      CredentialID         { get; set; } // int
		}
	}

	public static partial class DataCollectorSchema
	{
		public partial class DataContext
		{
			/// <summary>
			/// <para><strong>syscollector_collection_items (Transact-SQL)</strong></para>
			/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)</para>
			/// <para>Returns information about an item in a collection set.</para><br/>
			/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/syscollector-collection-items-transact-sql'>dbo.syscollector_collection_items</a>.</para>
			/// </summary>
			public ITable<CollectionItem>   CollectionItems   { get { return _dataContext.GetTable<CollectionItem>(); } }
			/// <summary>
			/// <para><strong>syscollector_collection_sets (Transact-SQL)</strong></para>
			/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)</para>
			/// <para>Provides information about a collection set, including schedule, collection mode, and its state.</para><br/>
			/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/syscollector-collection-sets-transact-sql'>dbo.syscollector_collection_sets</a>.</para>
			/// </summary>
			public ITable<CollectionSet>    CollectionSets    { get { return _dataContext.GetTable<CollectionSet>(); } }
			/// <summary>
			/// <para><strong>syscollector_collector_types (Transact-SQL)</strong></para>
			/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)</para>
			/// <para>Provides information about a collector type for a collection item.</para><br/>
			/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/syscollector-collector-types-transact-sql'>dbo.syscollector_collector_types</a>.</para>
			/// </summary>
			public ITable<CollectorType>    CollectorTypes    { get { return _dataContext.GetTable<CollectorType>(); } }
			/// <summary>
			/// <para><strong>syscollector_config_store (Transact-SQL)</strong></para>
			/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)</para>
			/// <para>Returns properties that apply to the entire data collector, as opposed to a collection set instance. Each row in this view describes a specific data collector property, such as the name of the management data warehouse, and the instance name where the management data warehouse is located.</para><br/>
			/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/syscollector-config-store-transact-sql'>dbo.syscollector_config_store</a>.</para>
			/// </summary>
			public ITable<ConfigStore>      ConfigStores      { get { return _dataContext.GetTable<ConfigStore>(); } }
			/// <summary>
			/// <para><strong>syscollector_execution_log (Transact-SQL)</strong></para>
			/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)</para>
			/// <para>Provides information from the execution log for a collection set or package.</para><br/>
			/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/syscollector-execution-log-transact-sql'>dbo.syscollector_execution_log</a>.</para>
			/// </summary>
			public ITable<ExecutionLog>     ExecutionLogs     { get { return _dataContext.GetTable<ExecutionLog>(); } }
			/// <summary>
			/// <para><strong>syscollector_execution_log_full (Transact-SQL)</strong></para>
			/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)</para>
			/// <para>Provides information about a collection set or package when the execution log is full.</para><br/>
			/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/syscollector-execution-log-full-transact-sql'>dbo.syscollector_execution_log_full</a>.</para>
			/// </summary>
			public ITable<ExecutionLogFull> ExecutionLogFulls { get { return _dataContext.GetTable<ExecutionLogFull>(); } }
			/// <summary>
			/// <para><strong>syscollector_execution_stats (Transact-SQL)</strong></para>
			/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)</para>
			/// <para>Provides information about task execution for a collection set or package.</para><br/>
			/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/syscollector-execution-stats-transact-sql'>dbo.syscollector_execution_stats</a>.</para>
			/// </summary>
			public ITable<ExecutionStat>    ExecutionStats    { get { return _dataContext.GetTable<ExecutionStat>(); } }

			private readonly IDataContext _dataContext;

			public DataContext(IDataContext dataContext)
			{
				_dataContext = dataContext;
			}
		}

		/// <summary>
		/// <para><strong>syscollector_collection_items (Transact-SQL)</strong></para>
		/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)</para>
		/// <para>Returns information about an item in a collection set.</para><br/>
		/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/syscollector-collection-items-transact-sql'>dbo.syscollector_collection_items</a>.</para>
		/// </summary>
		[Table(Database="msdb", Schema="dbo", Name="syscollector_collection_items", IsView=true)]
		public partial class CollectionItem
		{
			/// <summary>
			/// Identifies the collection set. Is not nullable.
			/// </summary>
			[Column("collection_set_id"),  NotNull] public int    CollectionSetID  { get; set; } // int
			/// <summary>
			/// Identifies an item in the collection set. Is not nullable.
			/// </summary>
			[Column("collection_item_id"), NotNull] public int    CollectionItemID { get; set; } // int
			/// <summary>
			/// The GUID used to identify the collector type. Is not nullable.
			/// </summary>
			[Column("collector_type_uid"), NotNull] public Guid   CollectorTypeUID { get; set; } // uniqueidentifier
			/// <summary>
			/// The name of the collection set. Is nullable.
			/// </summary>
			[Column("name"),               NotNull] public string Name             { get; set; } = null!; // nvarchar(4000)
			/// <summary>
			/// The frequency that data is collected by a collection item. Is not nullable.
			/// </summary>
			[Column("frequency"),          NotNull] public int    Frequency        { get; set; } // int
			/// <summary>
			/// Describes the parameterization for the collector type associated with the collection item. The XML schema for this collection item is validated with the XML Schema (XSD) stored in the <strong>parameter_schema</strong> for a particular collector type. Is nullable. For more information, see <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/syscollector-collector-types-transact-sql'>syscollector_collector_types (Transact-SQL)</a>.
			/// </summary>
			[Column("parameters"),         NotNull] public object Parameters       { get; set; } = null!; // xml
		}

		/// <summary>
		/// <para><strong>syscollector_collection_sets (Transact-SQL)</strong></para>
		/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)</para>
		/// <para>Provides information about a collection set, including schedule, collection mode, and its state.</para><br/>
		/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/syscollector-collection-sets-transact-sql'>dbo.syscollector_collection_sets</a>.</para>
		/// </summary>
		[Table(Database="msdb", Schema="dbo", Name="syscollector_collection_sets", IsView=true)]
		public partial class CollectionSet
		{
			/// <summary>
			/// The local identifier for the collection set. Is not nullable.
			/// </summary>
			[Column("collection_set_id"),     NotNull] public int    CollectionSetID     { get; set; } // int
			/// <summary>
			/// The globally unique identifier for the collection set. Is not nullable.
			/// </summary>
			[Column("collection_set_uid"),    NotNull] public Guid   CollectionSetUID    { get; set; } // uniqueidentifier
			/// <summary>
			/// The name of the collection set. Is nullable.
			/// </summary>
			[Column("name"),                  NotNull] public string Name                { get; set; } = null!; // nvarchar(4000)
			/// <summary>
			/// Identifies the target for the collection set. Is nullable.
			/// </summary>
			[Column("target"),                NotNull] public string Target              { get; set; } = null!; // nvarchar(max)
			/// <summary>
			/// Turned on (1) or off (0) to indicate if the collection set was included with the data collector or if it was added later by the dc_admin. This could be a custom collection set developed in-house or by a third party. Is not nullable.
			/// </summary>
			[Column("is_system"),             NotNull] public bool   IsSystem            { get; set; } // bit
			/// <summary>
			/// Indicates whether or not the collection set is running. Is not nullable.
			/// </summary>
			[Column("is_running"),            NotNull] public bool   IsRunning           { get; set; } // bit
			/// <summary>
			/// Specifies the collection mode for the collection set. Is not nullable.<br/><br/> Collection mode is one of the following:<br/><br/> 0 - Cached mode. Data collection and upload are on separate schedules.<br/><br/> 1 - Non-cached mode. Data collection and upload are on the same schedule.
			/// </summary>
			[Column("collection_mode"),       NotNull] public short  CollectionMode      { get; set; } // smallint
			/// <summary>
			/// Identifies the proxy that is used to run the collection set job step. Is nullable.
			/// </summary>
			[Column("proxy_id"),              NotNull] public int    ProxyID             { get; set; } // int
			/// <summary>
			/// Provides a pointer to the collection set schedule. Is nullable.
			/// </summary>
			[Column("schedule_uid"),          NotNull] public Guid   ScheduleUID         { get; set; } // uniqueidentifier
			/// <summary>
			/// Identifies the collection job. Is nullable.
			/// </summary>
			[Column("collection_job_id"),     NotNull] public Guid   CollectionJobID     { get; set; } // uniqueidentifier
			/// <summary>
			/// Identifies the collection upload job. Is nullable.
			/// </summary>
			[Column("upload_job_id"),         NotNull] public Guid   UploadJobID         { get; set; } // uniqueidentifier
			/// <summary>
			/// Specifies the logging level (0, 1 or 2). Is not nullable.
			/// </summary>
			[Column("logging_level"),         NotNull] public short  LoggingLevel        { get; set; } // smallint
			/// <summary>
			/// The number of days that the collected data is saved in the management data warehouse. Is not nullable.
			/// </summary>
			[Column("days_until_expiration"), NotNull] public short  DaysUntilExpiration { get; set; } // smallint
			/// <summary>
			/// Describes the collection set. Is nullable.
			/// </summary>
			[Column("description"),           NotNull] public string Description         { get; set; } = null!; // nvarchar(4000)
			/// <summary>
			/// Turned on (1) or off (0) to indicate whether to create an SSIS dump file on any error. Is not nullable.
			/// </summary>
			[Column("dump_on_any_error"),     NotNull] public bool   DumpOnAnyError      { get; set; } // bit
			/// <summary>
			/// Contains the list of SSIS error codes that are used to trigger the dump file. Is nullable.
			/// </summary>
			[Column("dump_on_codes"),         NotNull] public string DumpOnCodes         { get; set; } = null!; // nvarchar(max)
		}

		/// <summary>
		/// <para><strong>syscollector_collector_types (Transact-SQL)</strong></para>
		/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)</para>
		/// <para>Provides information about a collector type for a collection item.</para><br/>
		/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/syscollector-collector-types-transact-sql'>dbo.syscollector_collector_types</a>.</para>
		/// </summary>
		[Table(Database="msdb", Schema="dbo", Name="syscollector_collector_types", IsView=true)]
		public partial class CollectorType
		{
			/// <summary>
			/// The GUID for a collection type. Is not nullable.
			/// </summary>
			[Column("collector_type_uid"),      NotNull] public object CollectorTypeUID      { get; set; } = null!; // uniqueidentifer
			/// <summary>
			/// The name of the collection type. Is not nullable.
			/// </summary>
			[Column("name"),                    NotNull] public string Name                  { get; set; } = null!; // sysname
			/// <summary>
			/// The XML schema that describes what the configuration for the specified collector type looks like. This XML schema is used to validate the actual XML configuration associated with a particular collection item instance. Is nullable.
			/// </summary>
			[Column("parameter_schema"),        NotNull] public object ParameterSchema       { get; set; } = null!; // xml
			/// <summary>
			/// Determines the template to use to transform the XML for use in the collection set property page. Is nullable.
			/// </summary>
			[Column("parameter_formatter"),     NotNull] public object ParameterFormatter    { get; set; } = null!; // xml
			/// <summary>
			/// The GUID for a collection package. Is not nullable.
			/// </summary>
			[Column("collection_package_id"),   NotNull] public object CollectionPackageID   { get; set; } = null!; // uniqueidentifer
			/// <summary>
			/// Provides the path to the collection package. Is nullable.
			/// </summary>
			[Column("collection_package_path"), NotNull] public string CollectionPackagePath { get; set; } = null!; // nvarchar(4000)
			/// <summary>
			/// The name of the collection package. Is not nullable.
			/// </summary>
			[Column("collection_package_name"), NotNull] public string CollectionPackageName { get; set; } = null!; // sysname
			/// <summary>
			/// The GUID for the upload package. Is not nullable.
			/// </summary>
			[Column("upload_package_id"),       NotNull] public object UploadPackageID       { get; set; } = null!; // uniqueidentifer
			/// <summary>
			/// Provides the path to the upload package. Is nullable.
			/// </summary>
			[Column("upload_package_path"),     NotNull] public string UploadPackagePath     { get; set; } = null!; // nvarchar(4000)
			/// <summary>
			/// The name of the upload package. Is not nullable.
			/// </summary>
			[Column("upload_package_name"),     NotNull] public string UploadPackageName     { get; set; } = null!; // sysname
			/// <summary>
			/// Turned on (1) or off (0) to indicate if the collector type was shipped with the data collector or if it was added later by the <strong>dc_admin</strong>. This could be a custom type developed in-house or by a third party. Is not nullable.
			/// </summary>
			[Column("is_system"),               NotNull] public bool   IsSystem              { get; set; } // bit
		}

		/// <summary>
		/// <para><strong>syscollector_config_store (Transact-SQL)</strong></para>
		/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)</para>
		/// <para>Returns properties that apply to the entire data collector, as opposed to a collection set instance. Each row in this view describes a specific data collector property, such as the name of the management data warehouse, and the instance name where the management data warehouse is located.</para><br/>
		/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/syscollector-config-store-transact-sql'>dbo.syscollector_config_store</a>.</para>
		/// </summary>
		[Table(Database="msdb", Schema="dbo", Name="syscollector_config_store", IsView=true)]
		public partial class ConfigStore
		{
			/// <summary>
			/// The name of the property. Is not nullable.
			/// </summary>
			[Column("parameter_name"),  NotNull] public string ParameterName  { get; set; } = null!; // nvarchar(128)
			/// <summary>
			/// The actual value of the property. Is nullable.
			/// </summary>
			[Column("parameter_value"), NotNull] public object ParameterValue { get; set; } = null!; // sql_variant
		}

		/// <summary>
		/// <para><strong>syscollector_execution_log (Transact-SQL)</strong></para>
		/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)</para>
		/// <para>Provides information from the execution log for a collection set or package.</para><br/>
		/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/syscollector-execution-log-transact-sql'>dbo.syscollector_execution_log</a>.</para>
		/// </summary>
		[Table(Database="msdb", Schema="dbo", Name="syscollector_execution_log", IsView=true)]
		public partial class ExecutionLog
		{
			/// <summary>
			/// Identifies each collection set execution. Used to join this view with other detailed logs. Is not nullable.
			/// </summary>
			[Column("log_id"),                 NotNull] public long     LogID                { get; set; } // bigint
			/// <summary>
			/// Identifies the parent package or collection set. Is not nullable. The IDs are chained in the parent-child relationship, which enables you to determine which package was started by which collection set. This view groups the log entries by their parent-child linkage and indents the names of the packages, so that the call chain is clearly visible.
			/// </summary>
			[Column("parent_log_id"),          NotNull] public long     ParentLogID          { get; set; } // bigint
			/// <summary>
			/// Identifies the collection set or package that this log entry represents. Is not nullable.
			/// </summary>
			[Column("collection_set_id"),      NotNull] public int      CollectionSetID      { get; set; } // int
			/// <summary>
			/// Identifies a collection item. Is nullable.
			/// </summary>
			[Column("collection_item_id"),     NotNull] public int      CollectionItemID     { get; set; } // int
			/// <summary>
			/// The time that the collection set or package started. Is not nullable.
			/// </summary>
			[Column("start_time"),             NotNull] public DateTime StartTime            { get; set; } // datetime
			/// <summary>
			/// For continuously running packages, the last time that the package captured a snapshot. Is nullable.
			/// </summary>
			[Column("last_iteration_time"),    NotNull] public DateTime LastIterationTime    { get; set; } // datetime
			/// <summary>
			/// The time the run completed for finished packages and collection sets. Is nullable.
			/// </summary>
			[Column("finish_time"),            NotNull] public DateTime FinishTime           { get; set; } // datetime
			/// <summary>
			/// Indicates whether the collection set activity was collecting data or uploading data. Is nullable.<br/><br/> Values are:<br/><br/> 0 = Collection<br/><br/> 1 = Upload
			/// </summary>
			[Column("runtime_execution_mode"), NotNull] public short    RuntimeExecutionMode { get; set; } // smallint
			/// <summary>
			/// Indicates the current status of the collection set or package. Is not nullable.<br/><br/> Values are:<br/><br/> 0 = running<br/><br/> 1 = finished<br/><br/> 2 = failed
			/// </summary>
			[Column("status"),                 NotNull] public short    Status               { get; set; } // smallint
			/// <summary>
			/// Identifies who started the collection set or package. Is not nullable.
			/// </summary>
			[Column("operator"),               NotNull] public string   Operator             { get; set; } = null!; // nvarchar(128)
			/// <summary>
			/// Identifies the collection set or package that generated this log. Is nullable.
			/// </summary>
			[Column("package_id"),             NotNull] public Guid     PackageID            { get; set; } // uniqueidentifier
			/// <summary>
			/// The name of the package that generated this log. Is nullable.
			/// </summary>
			[Column("package_name"),           NotNull] public string   PackageName          { get; set; } = null!; // nvarchar(4000)
			/// <summary>
			/// Provides a link to the SSIS log table. Is nullable.
			/// </summary>
			[Column("package_execution_id"),   NotNull] public Guid     PackageExecutionID   { get; set; } // uniqueidentifier
			/// <summary>
			/// If the collection set or package failed, the most recent error message for that component. Is nullable. To obtain more detailed error information, use the <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-functions/fn-syscollector-get-execution-details-transact-sql'>fn_syscollector_get_execution_details (Transact-SQL)</a> function.
			/// </summary>
			[Column("failure_message"),        NotNull] public string   FailureMessage       { get; set; } = null!; // nvarchar(2048)
		}

		/// <summary>
		/// <para><strong>syscollector_execution_log_full (Transact-SQL)</strong></para>
		/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)</para>
		/// <para>Provides information about a collection set or package when the execution log is full.</para><br/>
		/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/syscollector-execution-log-full-transact-sql'>dbo.syscollector_execution_log_full</a>.</para>
		/// </summary>
		[Table(Database="msdb", Schema="dbo", Name="syscollector_execution_log_full", IsView=true)]
		public partial class ExecutionLogFull
		{
			/// <summary>
			/// Identifies each collection set execution. Used to join this view with other detailed logs. Is nullable.
			/// </summary>
			[Column("log_id"),                 NotNull] public long     LogID                { get; set; } // bigint
			/// <summary>
			/// Identifies the parent package or collection set. Is not nullable. The IDs are chained in the parent-child relationship, which enables you to determine which package was started by which collection set. This view groups the log entries by their parent-child linkage and indents the names of the packages so that the call chain is clearly visible.
			/// </summary>
			[Column("parent_log_id"),          NotNull] public long     ParentLogID          { get; set; } // bigint
			/// <summary>
			/// The name of the collection set or package that this log entry represents. Is nullable.
			/// </summary>
			[Column("name"),                   NotNull] public string   Name                 { get; set; } = null!; // nvarchar(4000)
			/// <summary>
			/// Indicates the current status of the collection set or package. Is nullable.<br/><br/> Values are:<br/><br/> 0 = running<br/><br/> 1 = finished<br/><br/> 2 = failed
			/// </summary>
			[Column("status"),                 NotNull] public short    Status               { get; set; } // smallint
			/// <summary>
			/// Indicates whether the collection set activity was collecting data or uploading data. Is nullable.
			/// </summary>
			[Column("runtime_execution_mode"), NotNull] public short    RuntimeExecutionMode { get; set; } // smallint
			/// <summary>
			/// The time that the collection set or package started. Is nullable.
			/// </summary>
			[Column("start_time"),             NotNull] public DateTime StartTime            { get; set; } // datetime
			/// <summary>
			/// For continuously running packages, the last time that the package captured a snapshot. Is nullable.
			/// </summary>
			[Column("last_iteration_time"),    NotNull] public DateTime LastIterationTime    { get; set; } // datetime
			/// <summary>
			/// The time the run completed for finished packages and collection sets. Is nullable.
			/// </summary>
			[Column("finish_time"),            NotNull] public DateTime FinishTime           { get; set; } // datetime
			/// <summary>
			/// The time, in seconds, that the package or collection set has been running. Is nullable.
			/// </summary>
			[Column("duration"),               NotNull] public int      Duration             { get; set; } // int
			/// <summary>
			/// If the collection set or package failed, the most recent error message for that component. Is nullable. To obtain more detailed error information, use the <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-functions/fn-syscollector-get-execution-details-transact-sql'>fn_syscollector_get_execution_details (Transact-SQL)</a> function.
			/// </summary>
			[Column("failure_message"),        NotNull] public string   FailureMessage       { get; set; } = null!; // nvarchar(2048)
			/// <summary>
			/// Identifies who started the collection set or package. Is nullable.
			/// </summary>
			[Column("operator"),               NotNull] public string   Operator             { get; set; } = null!; // nvarchar(128)
			/// <summary>
			/// Provides a link to the SSIS log table. Is nullable.
			/// </summary>
			[Column("package_execution_id"),   NotNull] public Guid     PackageExecutionID   { get; set; } // uniqueidentifier
			/// <summary>
			/// Provides a link to the data collection configuration table in msdb. Is nullable.
			/// </summary>
			[Column("collection_set_id"),      NotNull] public int      CollectionSetID      { get; set; } // int
		}

		/// <summary>
		/// <para><strong>syscollector_execution_stats (Transact-SQL)</strong></para>
		/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)</para>
		/// <para>Provides information about task execution for a collection set or package.</para><br/>
		/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/syscollector-execution-stats-transact-sql'>dbo.syscollector_execution_stats</a>.</para>
		/// </summary>
		[Table(Database="msdb", Schema="dbo", Name="syscollector_execution_stats", IsView=true)]
		public partial class ExecutionStat
		{
			/// <summary>
			/// Identifies each collection set execution. Used to join this view with other detailed logs. Is not nullable.
			/// </summary>
			[Column("log_id"),                     NotNull] public long     LogID                   { get; set; } // bigint
			/// <summary>
			/// The name of the collection set or package task that this information is for. Is not nullable.
			/// </summary>
			[Column("task_name"),                  NotNull] public string   TaskName                { get; set; } = null!; // nvarchar(128)
			/// <summary>
			/// Number of rows processed at the beginning of data flow. Is nullable.
			/// </summary>
			[Column("execution_row_count_in"),     NotNull] public int      ExecutionRowCountIn     { get; set; } // int
			/// <summary>
			/// Number of rows processed at the end of data flow. Is nullable.
			/// </summary>
			[Column("execution_row_count_out"),    NotNull] public int      ExecutionRowCountOut    { get; set; } // int
			/// <summary>
			/// Number of rows that failed during the data flow. Is nullable.
			/// </summary>
			[Column("execution_row_count_errors"), NotNull] public int      ExecutionRowCountErrors { get; set; } // int
			/// <summary>
			/// The time, in milliseconds, required for the task to complete. Is nullable.
			/// </summary>
			[Column("execution_time_ms"),          NotNull] public int      ExecutionTimeMs         { get; set; } // int
			/// <summary>
			/// The time that this information was logged. Is not nullable.
			/// </summary>
			[Column("log_time"),                   NotNull] public DateTime LogTime                 { get; set; } // datetime
		}
	}

	public static partial class DataSpacesSchema
	{
		public partial class DataContext
		{
			/// <summary>
			/// <para><strong>sys.data_spaces (Transact-SQL)</strong></para>
			/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions) √ Azure SQL Managed Instance √ Azure Synapse Analytics √ Analytics Platform System (PDW)</para>
			/// <para>Contains a row for each data space. This can be a filegroup, partition scheme, or FILESTREAM data filegroup.</para><br/>
			/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-data-spaces-transact-sql'>sys.data_spaces</a>.</para>
			/// </summary>
			public ITable<DataSpace>            DataSpaces            { get { return _dataContext.GetTable<DataSpace>(); } }
			/// <summary>
			/// <para><strong>sys.destination_data_spaces (Transact-SQL)</strong></para>
			/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)</para>
			/// <para>Contains a row for each data space destination of a partition scheme.</para><br/>
			/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-destination-data-spaces-transact-sql'>sys.destination_data_spaces</a>.</para>
			/// </summary>
			public ITable<DestinationDataSpace> DestinationDataSpaces { get { return _dataContext.GetTable<DestinationDataSpace>(); } }
			/// <summary>
			/// <para><strong>sys.filegroups (Transact-SQL)</strong></para>
			/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions) √ Azure SQL Database √ Azure SQL Managed Instance √ Azure Synapse Analytics √ Analytics Platform System (PDW)</para>
			/// <para>Contains a row for each data space that is a filegroup.</para><br/>
			/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-filegroups-transact-sql'>sys.filegroups</a>.</para>
			/// </summary>
			public ITable<FileGroup>            FileGroups            { get { return _dataContext.GetTable<FileGroup>(); } }
			/// <summary>
			/// <para><strong>sys.partition_schemes (Transact-SQL)</strong></para>
			/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions) √ Azure SQL Managed Instance √ Azure Synapse Analytics √ Analytics Platform System (PDW)</para>
			/// <para>Contains a row for each Data Space that is a partition scheme, with <strong>type</strong> = PS.</para><br/>
			/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-partition-schemes-transact-sql'>sys.partition_schemes</a>.</para>
			/// </summary>
			public ITable<PartitionScheme>      PartitionSchemes      { get { return _dataContext.GetTable<PartitionScheme>(); } }

			private readonly IDataContext _dataContext;

			public DataContext(IDataContext dataContext)
			{
				_dataContext = dataContext;
			}
		}

		/// <summary>
		/// <para><strong>sys.data_spaces (Transact-SQL)</strong></para>
		/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions) √ Azure SQL Managed Instance √ Azure Synapse Analytics √ Analytics Platform System (PDW)</para>
		/// <para>Contains a row for each data space. This can be a filegroup, partition scheme, or FILESTREAM data filegroup.</para><br/>
		/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-data-spaces-transact-sql'>sys.data_spaces</a>.</para>
		/// </summary>
		[Table(Schema="sys", Name="data_spaces", IsView=true)]
		public partial class DataSpace
		{
			/// <summary>
			/// Name of data space, unique within the database.
			/// </summary>
			[Column("name"),          NotNull    ] public string  Name        { get; set; } = null!; // sysname
			/// <summary>
			/// Data space ID number, unique within the database.
			/// </summary>
			[Column("data_space_id"), NotNull    ] public int     DataSpaceID { get; set; } // int
			/// <summary>
			/// Data space type:<br/><br/> FG = Filegroup<br/><br/> FD = FILESTREAM data filegroup<br/><br/> FX = Memory-optimized tables filegroup<br/><br/> <strong>Applies to</strong>: SQL Server 2014 (12.x) and later.<br/><br/> PS = Partition scheme
			/// </summary>
			[Column("type"),          NotNull    ] public string  TypeColumn  { get; set; } = null!; // char(2)
			/// <summary>
			/// Description of data space type:<br/><br/> FILESTREAM_DATA_FILEGROUP<br/><br/> MEMORY_OPTIMIZED_DATA_FILEGROUP<br/><br/> <strong>Applies to</strong>: SQL Server 2014 (12.x) and later.<br/><br/> PARTITION_SCHEME<br/><br/> ROWS_FILEGROUP
			/// </summary>
			[Column("type_desc"),        Nullable] public string? TypeDesc    { get; set; } // nvarchar(60)
			/// <summary>
			/// 1 = This is the default data space. The default data space is used when a filegroup or partition scheme is not specified in a CREATE TABLE or CREATE INDEX statement.<br/><br/> 0 = This is not the default data space.
			/// </summary>
			[Column("is_default"),    NotNull    ] public bool    IsDefault   { get; set; } // bit
			/// <summary>
			/// <strong>Applies to</strong>: SQL Server 2012 (11.x) and later.<br/><br/> 1 = Data space is used for full-text index fragments.<br/><br/> 0 = Data space is not used for full-text index fragments.
			/// </summary>
			[Column("is_system"),        Nullable] public bool?   IsSystem    { get; set; } // bit
		}

		/// <summary>
		/// <para><strong>sys.destination_data_spaces (Transact-SQL)</strong></para>
		/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)</para>
		/// <para>Contains a row for each data space destination of a partition scheme.</para><br/>
		/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-destination-data-spaces-transact-sql'>sys.destination_data_spaces</a>.</para>
		/// </summary>
		[Table(Schema="sys", Name="destination_data_spaces", IsView=true)]
		public partial class DestinationDataSpace
		{
			/// <summary>
			/// ID of the partition-scheme that is partitioning to the data space. For partitioned tables, this can be joined to <strong>data_space_id</strong> in <c>sys.partition_schemes</c>.
			/// </summary>
			[Column("partition_scheme_id"), NotNull] public int PartitionSchemeID { get; set; } // int
			/// <summary>
			/// ID (1-based ordinal) of the destination-mapping, unique within the partition scheme.
			/// </summary>
			[Column("destination_id"),      NotNull] public int DestinationID     { get; set; } // int
			/// <summary>
			/// ID of the data space to which data for this scheme's destination is being mapped.
			/// </summary>
			[Column("data_space_id"),       NotNull] public int DataSpaceID       { get; set; } // int
		}

		/// <summary>
		/// <para><strong>sys.filegroups (Transact-SQL)</strong></para>
		/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions) √ Azure SQL Database √ Azure SQL Managed Instance √ Azure Synapse Analytics √ Analytics Platform System (PDW)</para>
		/// <para>Contains a row for each data space that is a filegroup.</para><br/>
		/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-filegroups-transact-sql'>sys.filegroups</a>.</para>
		/// </summary>
		[Table(Schema="sys", Name="filegroups", IsView=true)]
		public partial class FileGroup
		{
			/// <summary>
			/// Name of data space, unique within the database.
			/// </summary>
			[Column("name"),                  NotNull    ] public string  Name               { get; set; } = null!; // sysname
			/// <summary>
			/// Data space ID number, unique within the database.
			/// </summary>
			[Column("data_space_id"),         NotNull    ] public int     DataSpaceID        { get; set; } // int
			/// <summary>
			/// Data space type:<br/><br/> FG = Filegroup<br/><br/> FD = FILESTREAM data filegroup<br/><br/> FX = Memory-optimized tables filegroup<br/><br/> <strong>Applies to</strong>: SQL Server 2014 (12.x) and later.<br/><br/> PS = Partition scheme
			/// </summary>
			[Column("type"),                  NotNull    ] public string  TypeColumn         { get; set; } = null!; // char(2)
			/// <summary>
			/// Description of data space type:<br/><br/> FILESTREAM_DATA_FILEGROUP<br/><br/> MEMORY_OPTIMIZED_DATA_FILEGROUP<br/><br/> <strong>Applies to</strong>: SQL Server 2014 (12.x) and later.<br/><br/> PARTITION_SCHEME<br/><br/> ROWS_FILEGROUP
			/// </summary>
			[Column("type_desc"),                Nullable] public string? TypeDesc           { get; set; } // nvarchar(60)
			/// <summary>
			/// 1 = This is the default data space. The default data space is used when a filegroup or partition scheme is not specified in a CREATE TABLE or CREATE INDEX statement.<br/><br/> 0 = This is not the default data space.
			/// </summary>
			[Column("is_default"),               Nullable] public bool?   IsDefault          { get; set; } // bit
			/// <summary>
			/// <strong>Applies to</strong>: SQL Server 2012 (11.x) and later.<br/><br/> 1 = Data space is used for full-text index fragments.<br/><br/> 0 = Data space is not used for full-text index fragments.
			/// </summary>
			[Column("is_system"),                Nullable] public bool?   IsSystem           { get; set; } // bit
			/// <summary>
			/// GUID for the filegroup.<br/><br/> NULL = PRIMARY filegroup
			/// </summary>
			[Column("filegroup_guid"),           Nullable] public Guid?   FilegroupGuid      { get; set; } // uniqueidentifier
			/// <summary>
			/// Identified for informational purposes only. Not supported. Future compatibility is not guaranteed. In SQL Server, the value is NULL.
			/// </summary>
			[Column("log_filegroup_id"),         Nullable] public int?    LogFileGroupID     { get; set; } // int
			/// <summary>
			/// 1 = Filegroup is read-only.<br/><br/> 0 = Filegroup is read/write.
			/// </summary>
			[Column("is_read_only"),             Nullable] public bool?   IsReadOnly         { get; set; } // bit
			/// <summary>
			/// <strong>Applies to:</strong> √ SQL Server 2016 (13.x) and later.<br/><br/> 1 = When a file in the filegroup meets the autogrow threshold, all files in the filegroup grow.<br/><br/> 0 = When a file in the filegroup meets the autogrow threshold, only that file grows. This is the default.
			/// </summary>
			[Column("is_autogrow_all_files"),    Nullable] public bool?   IsAutogrowAllFiles { get; set; } // bit
		}

		/// <summary>
		/// <para><strong>sys.partition_schemes (Transact-SQL)</strong></para>
		/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions) √ Azure SQL Managed Instance √ Azure Synapse Analytics √ Analytics Platform System (PDW)</para>
		/// <para>Contains a row for each Data Space that is a partition scheme, with <strong>type</strong> = PS.</para><br/>
		/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-partition-schemes-transact-sql'>sys.partition_schemes</a>.</para>
		/// </summary>
		[Table(Schema="sys", Name="partition_schemes", IsView=true)]
		public partial class PartitionScheme
		{
			/// <summary>
			/// Name of data space, unique within the database.
			/// </summary>
			[Column("name"),          NotNull    ] public string  Name        { get; set; } = null!; // sysname
			/// <summary>
			/// Data space ID number, unique within the database.
			/// </summary>
			[Column("data_space_id"), NotNull    ] public int     DataSpaceID { get; set; } // int
			/// <summary>
			/// Data space type:<br/><br/> FG = Filegroup<br/><br/> FD = FILESTREAM data filegroup<br/><br/> FX = Memory-optimized tables filegroup<br/><br/> <strong>Applies to</strong>: SQL Server 2014 (12.x) and later.<br/><br/> PS = Partition scheme
			/// </summary>
			[Column("type"),          NotNull    ] public string  TypeColumn  { get; set; } = null!; // char(2)
			/// <summary>
			/// Description of data space type:<br/><br/> FILESTREAM_DATA_FILEGROUP<br/><br/> MEMORY_OPTIMIZED_DATA_FILEGROUP<br/><br/> <strong>Applies to</strong>: SQL Server 2014 (12.x) and later.<br/><br/> PARTITION_SCHEME<br/><br/> ROWS_FILEGROUP
			/// </summary>
			[Column("type_desc"),        Nullable] public string? TypeDesc    { get; set; } // nvarchar(60)
			/// <summary>
			/// 1 = This is the default data space. The default data space is used when a filegroup or partition scheme is not specified in a CREATE TABLE or CREATE INDEX statement.<br/><br/> 0 = This is not the default data space.
			/// </summary>
			[Column("is_default"),       Nullable] public bool?   IsDefault   { get; set; } // bit
			/// <summary>
			/// <strong>Applies to</strong>: SQL Server 2012 (11.x) and later.<br/><br/> 1 = Data space is used for full-text index fragments.<br/><br/> 0 = Data space is not used for full-text index fragments.
			/// </summary>
			[Column("is_system"),        Nullable] public bool?   IsSystem    { get; set; } // bit
			/// <summary>
			/// ID of partition function used in the scheme.
			/// </summary>
			[Column("function_id"),   NotNull    ] public int     FunctionID  { get; set; } // int
		}
	}

	public static partial class DataTierApplicationsSchema
	{
		public partial class DataContext
		{
			/// <summary>
			/// <para><strong>Data-tier Application Views - dbo.sysdac_instances</strong></para>
			///  <para><strong>Applies to:</strong> √ SQL Server (all supported versions)</para>
			/// <para>Displays one row for each data-tier application (DAC) instance deployed to an instance of the Database Engine. sysdac_instances belongs to the dbo schema in the msdb database. The following table describes the columns in the sysdac_instances view.</para><br/>
			/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/data-tier-application-views-dbo-sysdac-instances'>dbo.sysdac_instances</a>.</para>
			/// </summary>
			public ITable<Instance> Instances { get { return _dataContext.GetTable<Instance>(); } }

			private readonly IDataContext _dataContext;

			public DataContext(IDataContext dataContext)
			{
				_dataContext = dataContext;
			}
		}

		/// <summary>
		/// <para><strong>Data-tier Application Views - dbo.sysdac_instances</strong></para>
		///  <para><strong>Applies to:</strong> √ SQL Server (all supported versions)</para>
		/// <para>Displays one row for each data-tier application (DAC) instance deployed to an instance of the Database Engine. sysdac_instances belongs to the dbo schema in the msdb database. The following table describes the columns in the sysdac_instances view.</para><br/>
		/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/data-tier-application-views-dbo-sysdac-instances'>dbo.sysdac_instances</a>.</para>
		/// </summary>
		[Table(Database="msdb", Schema="dbo", Name="sysdac_instances", IsView=true)]
		public partial class Instance
		{
			/// <summary>
			/// Identifier of the DAC instance.
			/// </summary>
			[Column("instance_id"),   NotNull] public Guid     InstanceID   { get; set; } // uniqueidentifier
			/// <summary>
			/// Name of the DAC instance specified when the DAC was deployed.
			/// </summary>
			[Column("instance_name"), NotNull] public string   InstanceName { get; set; } = null!; // sysname
			/// <summary>
			/// Name of the DAC specified when the DAC package was created.
			/// </summary>
			[Column("type_name"),     NotNull] public string   TypeName     { get; set; } = null!; // sysname
			/// <summary>
			/// Version of the DAC specified when the DAC package was created.
			/// </summary>
			[Column("type_version"),  NotNull] public string   TypeVersion  { get; set; } = null!; // nvarchar(64)
			/// <summary>
			/// A description of the DAC written when the DAC package was created.
			/// </summary>
			[Column("description"),   NotNull] public string   Description  { get; set; } = null!; // nvarchar(4000)
			/// <summary>
			/// A bit stream that contains an encoded representation of the logical objects, such as tables and views, contained in the DAC.
			/// </summary>
			[Column("type_stream"),   NotNull] public byte[]   TypeStream   { get; set; } = null!; // varbinary(max)
			/// <summary>
			/// Date and time the DAC instance was created.
			/// </summary>
			[Column("date_created"),  NotNull] public DateTime DateCreated  { get; set; } // datetime
			/// <summary>
			/// Login that created the DAC instance.
			/// </summary>
			[Column("created_by"),    NotNull] public string   CreatedBy    { get; set; } = null!; // sysname
			/// <summary>
			/// Name of the database created for the DAC isntance.
			/// </summary>
			[Column("database_name"), NotNull] public string   DatabaseName { get; set; } = null!; // sysname
		}
	}

	public static partial class EndpointsSchema
	{
		public partial class DataContext
		{
			/// <summary>
			/// <para><strong>sys.database_mirroring_endpoints (Transact-SQL)</strong></para>
			/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)</para>
			/// <para>Contains one row for the database mirroring endpoint of an instance of SQL Server.<br/>
			/// <note type='note'><br/>
			/// The database mirroring endpoint supports both sessions between database mirroring partners and with witnesses and sessions between the primary replica of a Always On availability group and its secondary replicas.<br/>
			/// </note></para><br/>
			/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-database-mirroring-endpoints-transact-sql'>sys.database_mirroring_endpoints</a>.</para>
			/// </summary>
			public ITable<DatabaseMirroringEndpoint> DatabaseMirroringEndpoints { get { return _dataContext.GetTable<DatabaseMirroringEndpoint>(); } }
			/// <summary>
			/// <para><strong>sys.endpoints (Transact-SQL)</strong></para>
			/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)</para>
			/// <para>Contains one row per endpoint that is created in the system. There is always exactly one SYSTEM endpoint.</para><br/>
			/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-endpoints-transact-sql'>sys.endpoints</a>.</para>
			/// </summary>
			public ITable<Endpoint>                  Endpoints                  { get { return _dataContext.GetTable<Endpoint>(); } }
			/// <summary>
			/// <para><strong>sys.endpoint_webmethods (Transact-SQL)</strong></para>
			/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)</para>
			/// <para>This feature will be removed in a future version of Microsoft SQL Server. Avoid using this feature in new development work, and plan to modify applications that currently use this feature.<br/>
			///  Contains a row FOR EACH SOAP method defined on a SOAP-enabled HTTP endpoint. The combination of the endpoint_id and namespace columns is unique.</para><br/>
			/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-endpoint-webmethods-transact-sql'>sys.endpoint_webmethods</a>.</para>
			/// </summary>
			public ITable<EndpointWebMethod>         EndpointWebMethods         { get { return _dataContext.GetTable<EndpointWebMethod>(); } }
			/// <summary>
			/// <para><strong>sys.http_endpoints (Transact-SQL)</strong></para>
			/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)</para>
			/// <para> This feature will be removed in a future version of Microsoft SQL Server. Avoid using this feature in new development work, and plan to modify applications that currently use this feature.<br/>
			/// Contains a row for each endpoint created in the server that uses the HTTP protocol.</para><br/>
			/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-http-endpoints-transact-sql'>sys.http_endpoints</a>.</para>
			/// </summary>
			public ITable<HttpEndpoint>              HttpEndpoints              { get { return _dataContext.GetTable<HttpEndpoint>(); } }
			/// <summary>
			/// <para><strong>sys.service_broker_endpoints (Transact-SQL)</strong></para>
			/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)</para>
			/// <para>This catalog view contains one row for the Service Broker endpoint. For every row in this view, there is a corresponding row with the same <strong>endpoint_id</strong> in the <strong>sys.tcp_endpoints</strong> view that contains the TCP configuration metadata. TCP is the only allowed protocol for Service Broker.</para><br/>
			/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-service-broker-endpoints-transact-sql'>sys.service_broker_endpoints</a>.</para>
			/// </summary>
			public ITable<ServiceBrokerEndpoint>     ServiceBrokerEndpoints     { get { return _dataContext.GetTable<ServiceBrokerEndpoint>(); } }
			/// <summary>
			/// <para><strong>sys.soap_endpoints (Transact-SQL)</strong></para>
			/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)</para>
			/// <para>This feature will be removed in a future version of Microsoft SQL Server. Avoid using this feature in new development work, and plan to modify applications that currently use this feature.<br/>
			///  Contains one row for each endpoint in the server that carries a SOAP-type payload. For every row in this view, there is a corresponding row with the same <strong>endpoint_id</strong> in the <strong>sys.http_endpoints</strong> catalog view that carries the HTTP configuration metadata.</para><br/>
			/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-soap-endpoints-transact-sql'>sys.soap_endpoints</a>.</para>
			/// </summary>
			public ITable<SoapEndpoint>              SoapEndpoints              { get { return _dataContext.GetTable<SoapEndpoint>(); } }
			/// <summary>
			/// <para><strong>sys.tcp_endpoints (Transact-SQL)</strong></para>
			/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)</para>
			/// <para>Contains one row for each TCP endpoint that is in the system. The endpoints that are described by <strong>sys.tcp_endpoints</strong> provide an object to grant and revoke the connection privilege. The information that is displayed regarding ports and IP addresses is not used to configure the protocols and may not match the actual protocol configuration. To view and configure protocols, use SQL Server Configuration Manager.</para><br/>
			/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-tcp-endpoints-transact-sql'>sys.tcp_endpoints</a>.</para>
			/// </summary>
			public ITable<TcpEndpoint>               TcpEndpoints               { get { return _dataContext.GetTable<TcpEndpoint>(); } }

			private readonly IDataContext _dataContext;

			public DataContext(IDataContext dataContext)
			{
				_dataContext = dataContext;
			}
		}

		/// <summary>
		/// <para><strong>sys.database_mirroring_endpoints (Transact-SQL)</strong></para>
		/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)</para>
		/// <para>Contains one row for the database mirroring endpoint of an instance of SQL Server.<br/>
		/// <note type='note'><br/>
		/// The database mirroring endpoint supports both sessions between database mirroring partners and with witnesses and sessions between the primary replica of a Always On availability group and its secondary replicas.<br/>
		/// </note></para><br/>
		/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-database-mirroring-endpoints-transact-sql'>sys.database_mirroring_endpoints</a>.</para>
		/// </summary>
		[Table(Schema="sys", Name="database_mirroring_endpoints", IsView=true)]
		public partial class DatabaseMirroringEndpoint
		{
			/// <summary>
			/// Name of the endpoint. Is unique within the server. Is not nullable.
			/// </summary>
			[Column("name"),                      NotNull    ] public string  Name                    { get; set; } = null!; // sysname
			/// <summary>
			/// ID of the endpoint. Is unique within the server. An endpoint with an ID less then 65536 is a system endpoint. Is not nullable.
			/// </summary>
			[Column("endpoint_id"),               NotNull    ] public int     EndpointID              { get; set; } // int
			/// <summary>
			/// ID of the server principal that created and owns this endpoint. Is nullable.
			/// </summary>
			[Column("principal_id"),                 Nullable] public int?    PrincipalID             { get; set; } // int
			/// <summary>
			/// Endpoint protocol.<br/><br/> 1 = HTTP<br/><br/> 2 = TCP<br/><br/> 3 = Name pipes<br/><br/> 4 = Shared memory<br/><br/> 5 = Virtual Interface Adapter (VIA)<br/><br/> Is not nullable.
			/// </summary>
			[Column("protocol"),                  NotNull    ] public byte    Protocol                { get; set; } // tinyint
			/// <summary>
			/// Description of the endpoint protocol. NULLABLE. One of the following values:<br/><br/> <strong>HTTP</strong><br/><br/> <strong>TCP</strong><br/><br/> <strong>NAMED_PIPES</strong><br/><br/> <strong>SHARED_MEMORY</strong><br/><br/> <strong>VIA</strong> Note: The VIA protocol is deprecated. This feature will be removed in a future version of Microsoft SQL Server. Avoid using this feature in new development work, and plan to modify applications that currently use this feature.
			/// </summary>
			[Column("protocol_desc"),                Nullable] public string? ProtocolDesc            { get; set; } // nvarchar(60)
			/// <summary>
			/// Endpoint payload type.<br/><br/> 1 = SOAP<br/><br/> 2 = TSQL<br/><br/> 3 = SERVICE_BROKER<br/><br/> 4 = DATABASE_MIRRORING<br/><br/> Is not nullable.
			/// </summary>
			[Column("type"),                      NotNull    ] public byte    TypeColumn              { get; set; } // tinyint
			/// <summary>
			/// Description of the endpoint payload type. Is nullable. One of the following values:<br/><br/> <strong>SOAP</strong><br/><br/> <strong>TSQL</strong><br/><br/> <strong>SERVICE_BROKER</strong><br/><br/> <strong>DATABASE_MIRRORING</strong>
			/// </summary>
			[Column("type_desc"),                    Nullable] public string? TypeDesc                { get; set; } // nvarchar(60)
			/// <summary>
			/// The endpoint state.<br/><br/> 0 = STARTED, listening and processing requests.<br/><br/> 1 = STOPPED, listening, but not processing requests.<br/><br/> 2 = DISABLED, not listening.<br/><br/> The default state is 1. Is nullable.
			/// </summary>
			[Column("state"),                        Nullable] public byte?   State                   { get; set; } // tinyint
			/// <summary>
			/// Description of the endpoint state.<br/><br/> STARTED = Listening and processing requests.<br/><br/> STOPPED = Listening, but not processing requests.<br/><br/> DISABLED = Not listening.<br/><br/> The default state is STOPPED.<br/><br/> Is nullable.
			/// </summary>
			[Column("state_desc"),                   Nullable] public string? StateDesc               { get; set; } // nvarchar(60)
			/// <summary>
			/// Indicates whether the endpoint is for administrative use.<br/><br/> 0 = Nonadministrative endpoint.<br/><br/> 1 = Endpoint is an administrative endpoint.<br/><br/> Is not nullable.
			/// </summary>
			[Column("is_admin_endpoint"),         NotNull    ] public bool    IsAdminEndpoint         { get; set; } // bit
			/// <summary>
			/// Mirroring role, one of:<br/><br/> <strong>0</strong> = None<br/><br/> <strong>1</strong> = Partner<br/><br/> <strong>2</strong> = Witness<br/><br/> <strong>3</strong> = All<br/><br/> Note: This value is relevant only for database mirroring.
			/// </summary>
			[Column("role"),                         Nullable] public byte?   Role                    { get; set; } // tinyint
			/// <summary>
			/// Description of mirroring role, one of:<br/><br/> <strong>NONE</strong><br/><br/> <strong>PARTNER</strong><br/><br/> <strong>WITNESS</strong><br/><br/> <strong>ALL</strong><br/><br/> Note: This value is relevant only for database mirroring.
			/// </summary>
			[Column("role_desc"),                    Nullable] public string? RoleDesc                { get; set; } // nvarchar(60)
			/// <summary>
			/// <strong>1</strong> means that encryption is enabled.<br/><br/> <strong>0</strong> means that encryption is disabled.
			/// </summary>
			[Column("is_encryption_enabled"),     NotNull    ] public bool    IsEncryptionEnabled     { get; set; } // bit
			/// <summary>
			/// The type of connection authentication required for connections to this endpoint, one of:<br/><br/> <strong>1</strong> - NTLM<br/><br/> <strong>2</strong> - KERBEROS<br/><br/> <strong>3</strong> - NEGOTIATE<br/><br/> <strong>4</strong> - CERTIFICATE<br/><br/> <strong>5</strong> - NTLM, CERTIFICATE<br/><br/> <strong>6</strong> - KERBEROS, CERTIFICATE<br/><br/> <strong>7</strong> - NEGOTIATE, CERTIFICATE<br/><br/> <strong>8</strong> - CERTIFICATE, NTLM<br/><br/> <strong>9</strong> - CERTIFICATE, KERBEROS<br/><br/> <strong>10</strong> - CERTIFICATE, NEGOTIATE
			/// </summary>
			[Column("connection_auth"),           NotNull    ] public byte    ConnectionAuth          { get; set; } // tinyint
			/// <summary>
			/// Description of the type of authentication required for connections to this endpoint, one of:<br/><br/> NTLM<br/><br/> KERBEROS<br/><br/> NEGOTIATE<br/><br/> CERTIFICATE<br/><br/> NTLM, CERTIFICATE<br/><br/> KERBEROS, CERTIFICATE<br/><br/> NEGOTIATE, CERTIFICATE<br/><br/> CERTIFICATE, NTLM<br/><br/> CERTIFICATE, KERBEROS<br/><br/> CERTIFICATE, NEGOTIATE
			/// </summary>
			[Column("connection_auth_desc"),         Nullable] public object? ConnectionAuthDesc      { get; set; } // Nvarchar (60)
			/// <summary>
			/// ID of certificate used for authentication, if any.<br/><br/> 0 = Windows Authentication is being used.
			/// </summary>
			[Column("certificate_id"),            NotNull    ] public int     CertificateID           { get; set; } // int
			/// <summary>
			/// Encryption algorithm, one of:<br/><br/> <strong>0</strong> - NONE<br/><br/> <strong>1</strong> - RC4<br/><br/> <strong>2</strong> - AES<br/><br/> <strong>3</strong> - NONE, RC4<br/><br/> <strong>4</strong> - NONE, AES<br/><br/> <strong>5</strong> - RC4, AES<br/><br/> <strong>6</strong> - AES, RC4<br/><br/> <strong>7</strong> - NONE, RC4, AES<br/><br/> <strong>8</strong> - NONE, AES, RC4
			/// </summary>
			[Column("encryption_algorithm"),      NotNull    ] public byte    EncryptionAlgorithm     { get; set; } // tinyint
			/// <summary>
			/// Description of the encryption algorithm, one of:<br/><br/> NONE<br/><br/> RC4<br/><br/> AES<br/><br/> NONE, RC4<br/><br/> NONE, AES<br/><br/> RC4, AES<br/><br/> AES, RC4<br/><br/> NONE, RC4, AES<br/><br/> NONE, AES, RC4
			/// </summary>
			[Column("encryption_algorithm_desc"),    Nullable] public string? EncryptionAlgorithmDesc { get; set; } // nvarchar(60)
		}

		/// <summary>
		/// <para><strong>sys.endpoints (Transact-SQL)</strong></para>
		/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)</para>
		/// <para>Contains one row per endpoint that is created in the system. There is always exactly one SYSTEM endpoint.</para><br/>
		/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-endpoints-transact-sql'>sys.endpoints</a>.</para>
		/// </summary>
		[Table(Schema="sys", Name="endpoints", IsView=true)]
		public partial class Endpoint
		{
			/// <summary>
			/// Name of the endpoint. Is unique within the server. Is not nullable.
			/// </summary>
			[Column("name"),              NotNull    ] public string  Name            { get; set; } = null!; // sysname
			/// <summary>
			/// ID of the endpoint. Is unique within the server. An endpoint with an ID less then 65536 is a system endpoint. Is not nullable.
			/// </summary>
			[Column("endpoint_id"),       NotNull    ] public int     EndpointID      { get; set; } // int
			/// <summary>
			/// ID of the server principal that created and owns this endpoint. Is nullable.
			/// </summary>
			[Column("principal_id"),         Nullable] public int?    PrincipalID     { get; set; } // int
			/// <summary>
			/// Endpoint protocol.<br/><br/> 1 = HTTP<br/><br/> 2 = TCP<br/><br/> 3 = Name pipes<br/><br/> 4 = Shared memory<br/><br/> 5 = Virtual Interface Adapter (VIA)<br/><br/> Is not nullable.
			/// </summary>
			[Column("protocol"),          NotNull    ] public byte    Protocol        { get; set; } // tinyint
			/// <summary>
			/// Description of the endpoint protocol. NULLABLE. One of the following values:<br/><br/> <strong>HTTP</strong><br/><br/> <strong>TCP</strong><br/><br/> <strong>NAMED_PIPES</strong><br/><br/> <strong>SHARED_MEMORY</strong><br/><br/> <strong>VIA</strong> Note: The VIA protocol is deprecated. This feature will be removed in a future version of Microsoft SQL Server. Avoid using this feature in new development work, and plan to modify applications that currently use this feature.
			/// </summary>
			[Column("protocol_desc"),        Nullable] public string? ProtocolDesc    { get; set; } // nvarchar(60)
			/// <summary>
			/// Endpoint payload type.<br/><br/> 1 = SOAP<br/><br/> 2 = TSQL<br/><br/> 3 = SERVICE_BROKER<br/><br/> 4 = DATABASE_MIRRORING<br/><br/> Is not nullable.
			/// </summary>
			[Column("type"),              NotNull    ] public byte    TypeColumn      { get; set; } // tinyint
			/// <summary>
			/// Description of the endpoint payload type. Is nullable. One of the following values:<br/><br/> <strong>SOAP</strong><br/><br/> <strong>TSQL</strong><br/><br/> <strong>SERVICE_BROKER</strong><br/><br/> <strong>DATABASE_MIRRORING</strong>
			/// </summary>
			[Column("type_desc"),            Nullable] public string? TypeDesc        { get; set; } // nvarchar(60)
			/// <summary>
			/// The endpoint state.<br/><br/> 0 = STARTED, listening and processing requests.<br/><br/> 1 = STOPPED, listening, but not processing requests.<br/><br/> 2 = DISABLED, not listening.<br/><br/> The default state is 1. Is nullable.
			/// </summary>
			[Column("state"),                Nullable] public byte?   State           { get; set; } // tinyint
			/// <summary>
			/// Description of the endpoint state.<br/><br/> STARTED = Listening and processing requests.<br/><br/> STOPPED = Listening, but not processing requests.<br/><br/> DISABLED = Not listening.<br/><br/> The default state is STOPPED.<br/><br/> Is nullable.
			/// </summary>
			[Column("state_desc"),           Nullable] public string? StateDesc       { get; set; } // nvarchar(60)
			/// <summary>
			/// Indicates whether the endpoint is for administrative use.<br/><br/> 0 = Nonadministrative endpoint.<br/><br/> 1 = Endpoint is an administrative endpoint.<br/><br/> Is not nullable.
			/// </summary>
			[Column("is_admin_endpoint"), NotNull    ] public bool    IsAdminEndpoint { get; set; } // bit
		}

		/// <summary>
		/// <para><strong>sys.endpoint_webmethods (Transact-SQL)</strong></para>
		/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)</para>
		/// <para>This feature will be removed in a future version of Microsoft SQL Server. Avoid using this feature in new development work, and plan to modify applications that currently use this feature.<br/>
		///  Contains a row FOR EACH SOAP method defined on a SOAP-enabled HTTP endpoint. The combination of the endpoint_id and namespace columns is unique.</para><br/>
		/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-endpoint-webmethods-transact-sql'>sys.endpoint_webmethods</a>.</para>
		/// </summary>
		[Table(Schema="sys", Name="endpoint_webmethods", IsView=true)]
		public partial class EndpointWebMethod
		{
			/// <summary>
			/// ID of the endpoint that the webmethod is defined on.
			/// </summary>
			[Column("endpoint_id"),        NotNull    ] public int     EndpointID       { get; set; } // int
			/// <summary>
			/// Namespace for the webmethod.
			/// </summary>
			[Column("namespace"),             Nullable] public string? Namespace        { get; set; } // nvarchar(384)
			/// <summary>
			/// Alias for the method.<br/><br/> Note: Transact\-SQL identifiers allow characters that are not legal in WSDL method names.<br/><br/> The alias is used to map the name exposed in the WSDL description of the endpoint to the actual underlying Transact\-SQL executable object that is called when the webmethod is invoked.
			/// </summary>
			[Column("method_alias"),       NotNull    ] public string  MethodAlias      { get; set; } = null!; // nvarchar(64)
			/// <summary>
			/// The object name that the webmethod is redirected to, as specified in the NAME = option. Name parts are separated by a period (.), and delimited using brackets, <c>[</c><c>]</c>.<br/><br/> The object name must be a three-part name, as specified in the WSDL option.
			/// </summary>
			[Column("object_name"),           Nullable] public string? ObjectName       { get; set; } // nvarchar(776)
			/// <summary>
			/// Option that determines which, if any, XSD is sent back with a response.<br/><br/> 0 = None<br/><br/> 1 = Standard<br/><br/> 2 = Default
			/// </summary>
			[Column("result_schema"),         Nullable] public byte?   ResultSchema     { get; set; } // tinyint
			/// <summary>
			/// Description of option that determines which, if any, XSD is sent back with a response.<br/><br/> NONE<br/><br/> STANDARD<br/><br/> DEFAULT
			/// </summary>
			[Column("result_schema_desc"),    Nullable] public string? ResultSchemaDesc { get; set; } // nvarchar(60)
			/// <summary>
			/// Option that determines how results are formatted in the response.<br/><br/> 1 = ALL_RESULTS<br/><br/> 2 = ROWSETS_ONLY<br/><br/> 3 = NONE
			/// </summary>
			[Column("result_format"),         Nullable] public byte?   ResultFormat     { get; set; } // tinyint
			/// <summary>
			/// Description of the option that determines how results are formatted in the response.<br/><br/> ALL_RESULTS<br/><br/> ROWSETS_ONLY<br/><br/> NONE
			/// </summary>
			[Column("result_format_desc"),    Nullable] public string? ResultFormatDesc { get; set; } // nvarchar(60)
		}

		/// <summary>
		/// <para><strong>sys.http_endpoints (Transact-SQL)</strong></para>
		/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)</para>
		/// <para> This feature will be removed in a future version of Microsoft SQL Server. Avoid using this feature in new development work, and plan to modify applications that currently use this feature.<br/>
		/// Contains a row for each endpoint created in the server that uses the HTTP protocol.</para><br/>
		/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-http-endpoints-transact-sql'>sys.http_endpoints</a>.</para>
		/// </summary>
		[Table(Schema="sys", Name="http_endpoints", IsView=true)]
		public partial class HttpEndpoint
		{
			/// <summary>
			/// Inherits columns from <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-endpoints-transact-sql'>sys.endpoints (Transact-SQL)</a>.
			/// </summary>
			[Column("< inherited columns>"),       NotNull    ] public object  InheritedColumns        { get; set; } = null!; // object
			/// <summary>
			/// Name of the host computer for the site, as specified in the SITE = option.
			/// </summary>
			[Column("site"),                          Nullable] public string? Site                    { get; set; } // nvarchar(128)
			/// <summary>
			/// Path-only portion of the URL for this HTTP endpoint, as specified by the PATH= option.
			/// </summary>
			[Column("url_path"),                      Nullable] public string? UrlPath                 { get; set; } // nvarchar(4000)
			/// <summary>
			/// 1 = Clear port is enabled using the PORT = CLEAR option.
			/// </summary>
			[Column("is_clear_port_enabled"),      NotNull    ] public bool    IsClearPortEnabled      { get; set; } // bit
			/// <summary>
			/// Port number specified in the CLEAR PORT = option.<br/><br/> NULL = Not specified.
			/// </summary>
			[Column("clear_port"),                 NotNull    ] public int     ClearPort               { get; set; } // int
			/// <summary>
			/// 1 = SSL port is enabled using the PORT = SSL option.
			/// </summary>
			[Column("is_ssl_port_enabled"),        NotNull    ] public bool    IsSslPortEnabled        { get; set; } // bit
			/// <summary>
			/// Port number value specified in the SSL PORT = option.<br/><br/> NULL = Not specified.
			/// </summary>
			[Column("ssl_port"),                   NotNull    ] public int     SslPort                 { get; set; } // int
			/// <summary>
			/// 1 = Anonymous access is enabled using the AUTHENTICATION = ANONYMOUS option.
			/// </summary>
			[Column("is_anonymous_enabled"),       NotNull    ] public bool    IsAnonymousEnabled      { get; set; } // bit
			/// <summary>
			/// 1 = Basic authentication is enabled using the AUTHENTICATION = BASIC option.
			/// </summary>
			[Column("is_basic_auth_enabled"),      NotNull    ] public bool    IsBasicAuthEnabled      { get; set; } // bit
			/// <summary>
			/// 1 = Digest authentication is enabled using the AUTHENTICATION = DIGEST option.
			/// </summary>
			[Column("is_digest_auth_enabled"),     NotNull    ] public bool    IsDigestAuthEnabled     { get; set; } // bit
			/// <summary>
			/// 1 = Integrated authentication enabled using the AUTHENTICATION = KERBEROS option.
			/// </summary>
			[Column("is_kerberos_auth_enabled"),   NotNull    ] public bool    IsKerberosAuthEnabled   { get; set; } // bit
			/// <summary>
			/// 1 = Integrated authentication enabled using the AUTHENTICATION = NTLM option.
			/// </summary>
			[Column("is_ntlm_auth_enabled"),       NotNull    ] public bool    IsNtlmAuthEnabled       { get; set; } // bit
			/// <summary>
			/// 1 = Integrated authentication is enabled using the AUTHENTICATION = INTEGRATED option.
			/// </summary>
			[Column("is_integrated_auth_enabled"), NotNull    ] public bool    IsIntegratedAuthEnabled { get; set; } // bit
			/// <summary>
			/// Hint that is returned to the client as part of the HTTP DIGEST authentication challenge. The value of the AUTH REALM option.<br/><br/> Is NULL if not specified or if DIGEST authentication is not enabled.
			/// </summary>
			[Column("authorization_realm"),           Nullable] public string? AuthorizationRealm      { get; set; } // nvarchar(128)
			/// <summary>
			/// Default login domain if you enable BASIC authentication. The value of the DEFAULT LOGON DOMAIN option.<br/><br/> Is NULL if not specified or if BASIC authentication is not enabled.
			/// </summary>
			[Column("default_logon_domain"),          Nullable] public string? DefaultLogonDomain      { get; set; } // nvarchar(128)
			/// <summary>
			/// 1 = COMPRESSION = ENABLED option is set.
			/// </summary>
			[Column("is_compression_enabled"),     NotNull    ] public bool    IsCompressionEnabled    { get; set; } // bit
		}

		/// <summary>
		/// <para><strong>sys.service_broker_endpoints (Transact-SQL)</strong></para>
		/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)</para>
		/// <para>This catalog view contains one row for the Service Broker endpoint. For every row in this view, there is a corresponding row with the same <strong>endpoint_id</strong> in the <strong>sys.tcp_endpoints</strong> view that contains the TCP configuration metadata. TCP is the only allowed protocol for Service Broker.</para><br/>
		/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-service-broker-endpoints-transact-sql'>sys.service_broker_endpoints</a>.</para>
		/// </summary>
		[Table(Schema="sys", Name="service_broker_endpoints", IsView=true)]
		public partial class ServiceBrokerEndpoint
		{
			/// <summary>
			/// Name of the endpoint. Is unique within the server. Is not nullable.
			/// </summary>
			[Column("name"),                          NotNull    ] public string  Name                       { get; set; } = null!; // sysname
			/// <summary>
			/// ID of the endpoint. Is unique within the server. An endpoint with an ID less then 65536 is a system endpoint. Is not nullable.
			/// </summary>
			[Column("endpoint_id"),                   NotNull    ] public int     EndpointID                 { get; set; } // int
			/// <summary>
			/// ID of the server principal that created and owns this endpoint. Is nullable.
			/// </summary>
			[Column("principal_id"),                     Nullable] public int?    PrincipalID                { get; set; } // int
			/// <summary>
			/// Endpoint protocol.<br/><br/> 1 = HTTP<br/><br/> 2 = TCP<br/><br/> 3 = Name pipes<br/><br/> 4 = Shared memory<br/><br/> 5 = Virtual Interface Adapter (VIA)<br/><br/> Is not nullable.
			/// </summary>
			[Column("protocol"),                      NotNull    ] public byte    Protocol                   { get; set; } // tinyint
			/// <summary>
			/// Description of the endpoint protocol. NULLABLE. One of the following values:<br/><br/> <strong>HTTP</strong><br/><br/> <strong>TCP</strong><br/><br/> <strong>NAMED_PIPES</strong><br/><br/> <strong>SHARED_MEMORY</strong><br/><br/> <strong>VIA</strong> Note: The VIA protocol is deprecated. This feature will be removed in a future version of Microsoft SQL Server. Avoid using this feature in new development work, and plan to modify applications that currently use this feature.
			/// </summary>
			[Column("protocol_desc"),                    Nullable] public string? ProtocolDesc               { get; set; } // nvarchar(60)
			/// <summary>
			/// Endpoint payload type.<br/><br/> 1 = SOAP<br/><br/> 2 = TSQL<br/><br/> 3 = SERVICE_BROKER<br/><br/> 4 = DATABASE_MIRRORING<br/><br/> Is not nullable.
			/// </summary>
			[Column("type"),                          NotNull    ] public byte    TypeColumn                 { get; set; } // tinyint
			/// <summary>
			/// Description of the endpoint payload type. Is nullable. One of the following values:<br/><br/> <strong>SOAP</strong><br/><br/> <strong>TSQL</strong><br/><br/> <strong>SERVICE_BROKER</strong><br/><br/> <strong>DATABASE_MIRRORING</strong>
			/// </summary>
			[Column("type_desc"),                        Nullable] public string? TypeDesc                   { get; set; } // nvarchar(60)
			/// <summary>
			/// The endpoint state.<br/><br/> 0 = STARTED, listening and processing requests.<br/><br/> 1 = STOPPED, listening, but not processing requests.<br/><br/> 2 = DISABLED, not listening.<br/><br/> The default state is 1. Is nullable.
			/// </summary>
			[Column("state"),                            Nullable] public byte?   State                      { get; set; } // tinyint
			/// <summary>
			/// Description of the endpoint state.<br/><br/> STARTED = Listening and processing requests.<br/><br/> STOPPED = Listening, but not processing requests.<br/><br/> DISABLED = Not listening.<br/><br/> The default state is STOPPED.<br/><br/> Is nullable.
			/// </summary>
			[Column("state_desc"),                       Nullable] public string? StateDesc                  { get; set; } // nvarchar(60)
			/// <summary>
			/// Indicates whether the endpoint is for administrative use.<br/><br/> 0 = Nonadministrative endpoint.<br/><br/> 1 = Endpoint is an administrative endpoint.<br/><br/> Is not nullable.
			/// </summary>
			[Column("is_admin_endpoint"),             NotNull    ] public bool    IsAdminEndpoint            { get; set; } // bit
			/// <summary>
			/// Does endpoint support message forwarding. This is initially set to <strong>0</strong> (disabled). Not NULLABLE.
			/// </summary>
			[Column("is_message_forwarding_enabled"), NotNull    ] public bool    IsMessageForwardingEnabled { get; set; } // bit
			/// <summary>
			/// The maximum number of megabytes of <strong>tempdb</strong> space allowed to be used  for messages being forwarded. This is initially set to <strong>10</strong>. Not NULLABLE.
			/// </summary>
			[Column("message_forwarding_size"),       NotNull    ] public int     MessageForwardingSize      { get; set; } // int
			/// <summary>
			/// The type of connection authentication required for connections to this endpoint, one of:<br/><br/> <strong>1</strong> - NTLM<br/><br/> <strong>2</strong> - KERBEROS<br/><br/> <strong>3</strong> - NEGOTIATE<br/><br/> <strong>4</strong> - CERTIFICATE<br/><br/> <strong>5</strong> - NTLM, CERTIFICATE<br/><br/> <strong>6</strong> - KERBEROS, CERTIFICATE<br/><br/> <strong>7</strong> - NEGOTIATE, CERTIFICATE<br/><br/> <strong>8</strong> - CERTIFICATE, NTLM<br/><br/> <strong>9</strong> - CERTIFICATE, KERBEROS<br/><br/> <strong>10</strong> - CERTIFICATE, NEGOTIATE<br/><br/> Not NULLABLE.
			/// </summary>
			[Column("connection_auth"),               NotNull    ] public byte    ConnectionAuth             { get; set; } // tinyint
			/// <summary>
			/// Description of the type of connection authentication required for connections to this endpoint, one of:<br/><br/> NTLM<br/><br/> KERBEROS<br/><br/> NEGOTIATE<br/><br/> CERTIFICATE<br/><br/> NTLM, CERTIFICATE<br/><br/> KERBEROS, CERTIFICATE<br/><br/> NEGOTIATE, CERTIFICATE<br/><br/> CERTIFICATE, NTLM<br/><br/> CERTIFICATE, KERBEROS<br/><br/> CERTIFICATE, NEGOTIATE<br/><br/> NULLABLE.
			/// </summary>
			[Column("connection_auth_desc"),             Nullable] public string? ConnectionAuthDesc         { get; set; } // nvarchar(60)
			/// <summary>
			/// ID of certificate used for authentication, if any.<br/><br/> 0 = Windows Authentication is being used.
			/// </summary>
			[Column("certificate_id"),                NotNull    ] public int     CertificateID              { get; set; } // int
			/// <summary>
			/// Encryption algorithm. The following are the possible values with their descriptions and corresponding DDL options.<br/><br/> <strong>0</strong> : NONE. Corresponding DDL option: Disabled.<br/><br/> <strong>1</strong> :  RC4. Corresponding DDL option: {Required   &amp;#124; Required   algorithm RC4}.<br/><br/> <strong>2</strong> : AES. Corresponding DDL option: Required Algorithm AES.<br/><br/> <strong>3</strong> : NONE, RC4. Corresponding DDL option: {Supported &amp;#124; Supported Algorithm RC4}.<br/><br/> <strong>4</strong> : NONE, AES. Corresponding DDL option: Supported Algorithm AES.<br/><br/> <strong>5</strong> : RC4, AES. Corresponding DDL option: Required Algorithm RC4 AES.<br/><br/> <strong>6</strong> : AES, RC4. Corresponding DDL option: Required Algorithm AES RC4.<br/><br/> <strong>7</strong> : NONE, RC4, AES. Corresponding DDL option: Supported Algorithm RC4 AES.<br/><br/> <strong>8</strong> : NONE, AES, RC4. Corresponding DDL option: Supported Algorithm AES RC4.<br/><br/> Not NULLABLE.
			/// </summary>
			[Column("encryption_algorithm"),          NotNull    ] public byte    EncryptionAlgorithm        { get; set; } // tinyint
			/// <summary>
			/// Encryption algorithm description. The possible values and their corresponding DDL options are listed below:<br/><br/> NONE : Disabled<br/><br/> RC4  : {Required &amp;#124; Required Algorithm RC4}<br/><br/> AES  : Required Algorithm AES<br/><br/> NONE, RC4 : {Supported &amp;#124; Supported Algorithm RC4}<br/><br/> NONE, AES : Supported Algorithm AES<br/><br/> RC4, AES : Required Algorithm RC4 AES<br/><br/> AES, RC4 : Required Algorithm AES RC4<br/><br/> NONE, RC4, AES : Supported Algorithm RC4 AES<br/><br/> NONE, AES, RC4 : Supported Algorithm AES RC4<br/><br/> NULLABLE.
			/// </summary>
			[Column("encryption_algorithm_desc"),        Nullable] public string? EncryptionAlgorithmDesc    { get; set; } // nvarchar(60)
		}

		/// <summary>
		/// <para><strong>sys.soap_endpoints (Transact-SQL)</strong></para>
		/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)</para>
		/// <para>This feature will be removed in a future version of Microsoft SQL Server. Avoid using this feature in new development work, and plan to modify applications that currently use this feature.<br/>
		///  Contains one row for each endpoint in the server that carries a SOAP-type payload. For every row in this view, there is a corresponding row with the same <strong>endpoint_id</strong> in the <strong>sys.http_endpoints</strong> catalog view that carries the HTTP configuration metadata.</para><br/>
		/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-soap-endpoints-transact-sql'>sys.soap_endpoints</a>.</para>
		/// </summary>
		[Table(Schema="sys", Name="soap_endpoints", IsView=true)]
		public partial class SoapEndpoint
		{
			/// <summary>
			/// For a list of columns that this view inherits, see <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-endpoints-transact-sql'>sys.endpoints (Transact-SQL)</a>.
			/// </summary>
			[Column("< inherited columns>"),       NotNull    ] public object  InheritedColumns        { get; set; } = null!; // object
			/// <summary>
			/// 1 = BATCHES = ENABLED option was specified, meaning that ad-hoc SQL batches are allowed on the endpoint.
			/// </summary>
			[Column("is_sql_language_enabled"),    NotNull    ] public bool    IsSqlLanguageEnabled    { get; set; } // bit
			/// <summary>
			/// The three-part name of the stored procedure that implements this method.<br/><br/> Names of methods require strict three-part syntax. one, two, or four-part names are not allowed.
			/// </summary>
			[Column("wsdl_generator_procedure"),      Nullable] public string? WsdlGeneratorProcedure  { get; set; } // nvarchar(776)
			/// <summary>
			/// The name of the default database given in the DATABASE = option.<br/><br/> NULL = DEFAULT was specified.
			/// </summary>
			[Column("default_database"),              Nullable] public string? DefaultDatabase         { get; set; } // sysname
			/// <summary>
			/// The default namespace specified in the NAMESPACE = option, or <c>https://tempuri.org</c> if DEFAULT was specified instead.
			/// </summary>
			[Column("default_namespace"),             Nullable] public string? DefaultNamespace        { get; set; } // nvarchar(384)
			/// <summary>
			/// The default value of the SCHEMA = option.<br/><br/> 0 = NONE<br/><br/> 1 = STANDARD
			/// </summary>
			[Column("default_result_schema"),         Nullable] public byte?   DefaultResultSchema     { get; set; } // tinyint
			/// <summary>
			/// Description of the default value of the SCHEMA = option.<br/><br/> NONE<br/><br/> STANDARD
			/// </summary>
			[Column("default_result_schema_desc"),    Nullable] public string? DefaultResultSchemaDesc { get; set; } // nvarchar(60)
			/// <summary>
			/// 0 = CHARACTER_SET = SQL option was specified.<br/><br/> 1 = CHARACTER_SET = XML option was specified.
			/// </summary>
			[Column("is_xml_charset_enforced"),    NotNull    ] public bool    IsXmlCharsetEnforced    { get; set; } // bit
			/// <summary>
			/// 0 = SESSION = DISABLE option was specified.<br/><br/> 1 = SESSION = ENABLED option was specified.
			/// </summary>
			[Column("is_session_enabled"),         NotNull    ] public bool    IsSessionEnabled        { get; set; } // bit
			/// <summary>
			/// Value specified in SESSION_TIMEOUT = option.
			/// </summary>
			[Column("session_timeout"),            NotNull    ] public int     SessionTimeout          { get; set; } // int
			/// <summary>
			/// Kind of authentication allowed on this endpoint.<br/><br/> <c>WINDOWS</c> <br/><br/> <c>MIXED</c>
			/// </summary>
			[Column("login_type"),                    Nullable] public string? LoginType               { get; set; } // nvarchar(60)
			/// <summary>
			/// Maximum allowable size of the SOAP header.
			/// </summary>
			[Column("header_limit"),               NotNull    ] public int     HeaderLimit             { get; set; } // int
		}

		/// <summary>
		/// <para><strong>sys.tcp_endpoints (Transact-SQL)</strong></para>
		/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)</para>
		/// <para>Contains one row for each TCP endpoint that is in the system. The endpoints that are described by <strong>sys.tcp_endpoints</strong> provide an object to grant and revoke the connection privilege. The information that is displayed regarding ports and IP addresses is not used to configure the protocols and may not match the actual protocol configuration. To view and configure protocols, use SQL Server Configuration Manager.</para><br/>
		/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-tcp-endpoints-transact-sql'>sys.tcp_endpoints</a>.</para>
		/// </summary>
		[Table(Schema="sys", Name="tcp_endpoints", IsView=true)]
		public partial class TcpEndpoint
		{
			/// <summary>
			/// Inherits columns from <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-endpoints-transact-sql'>sys.endpoints</a>.
			/// </summary>
			[Column("< inherited columns>"), NotNull    ] public object  InheritedColumns { get; set; } = null!; // object
			/// <summary>
			/// The port number that the endpoint is listening on. Is not nullable.
			/// </summary>
			[Column("port"),                 NotNull    ] public int     Port             { get; set; } // int
			/// <summary>
			/// 1 = Port number was dynamically assigned.<br/><br/> Is not nullable.
			/// </summary>
			[Column("is_dynamic_port"),      NotNull    ] public bool    IsDynamicPort    { get; set; } // bit
			/// <summary>
			/// Listener IP address as specified by the LISTENER_IP clause. Is nullable.
			/// </summary>
			[Column("ip_address"),              Nullable] public string? IPAddress        { get; set; } // nvarchar(45)
		}
	}

	public static partial class ExtendedEventsSchema
	{
		public partial class DataContext
		{
			/// <summary>
			/// <para><strong>sys.database_event_sessions (Azure SQL Database)</strong></para>
			/// <para><strong>Applies to:</strong> √ Azure SQL Database √ Azure SQL Managed Instance</para>
			/// <para>Lists all the event session definitions that exist in the current database, in Azure SQL Database.<br/>
			/// <note type='note'><br/>
			/// The similar catalog view named <c>sys.server_event_sessions</c> applies only to MicrosoftSQL Server.<br/>
			/// </note><br/>
			/// ||<br/>
			/// |-|<br/>
			/// |<strong>Applies to</strong>: SQL Database, and to any later versions.|</para><br/>
			/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-database-event-sessions-azure-sql-database'>sys.database_event_sessions</a>.</para>
			/// </summary>
			public ITable<DatabaseEventSession>       DatabaseEventSessions       { get { return _dataContext.GetTable<DatabaseEventSession>(); } }
			/// <summary>
			/// <para><strong>sys.database_event_session_actions (Azure SQL Database)</strong></para>
			/// <para><strong>Applies to:</strong> √ SQL Server 2016 (13.x) and later √ Azure SQL Database √ Azure SQL Managed Instance</para>
			/// <para>Returns a row for each action on each event of an event session.<br/>
			/// ||<br/>
			/// |-|<br/>
			/// |<strong>Applies to</strong>: Azure SQL Database V12 and any later versions.|</para><br/>
			/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-database-event-session-actions-azure-sql-database'>sys.database_event_session_actions</a>.</para>
			/// </summary>
			public ITable<DatabaseEventSessionAction> DatabaseEventSessionActions { get { return _dataContext.GetTable<DatabaseEventSessionAction>(); } }
			/// <summary>
			/// <para><strong>sys.database_event_session_events (Azure SQL Database)</strong></para>
			/// <para><strong>Applies to:</strong> √ SQL Server 2016 (13.x) and later √ Azure SQL Database √ Azure SQL Managed Instance</para>
			/// <para>Returns a row for each event in an event session.<br/>
			/// ||<br/>
			/// |-|<br/>
			/// |<strong>Applies to</strong>: Azure SQL Database V12 and any later versions.|</para><br/>
			/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-database-event-session-events-azure-sql-database'>sys.database_event_session_events</a>.</para>
			/// </summary>
			public ITable<DatabaseEventSessionEvent>  DatabaseEventSessionEvents  { get { return _dataContext.GetTable<DatabaseEventSessionEvent>(); } }
			/// <summary>
			/// <para><strong>sys.database_event_session_fields (Azure SQL Database)</strong></para>
			/// <para><strong>Applies to:</strong> √ SQL Server 2016 (13.x) and later √ Azure SQL Database √ Azure SQL Managed Instance</para>
			/// <para>Returns a row for each customizable column that was explicitly set on events and targets.<br/>
			/// ||<br/>
			/// |-|<br/>
			/// |<strong>Applies to</strong>: Azure SQL Database V12 and any later versions.|</para><br/>
			/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-database-event-session-fields-azure-sql-database'>sys.database_event_session_fields</a>.</para>
			/// </summary>
			public ITable<DatabaseEventSessionField>  DatabaseEventSessionFields  { get { return _dataContext.GetTable<DatabaseEventSessionField>(); } }
			/// <summary>
			/// <para><strong>sys.database_event_session_targets (Azure SQL Database)</strong></para>
			/// <para><strong>Applies to:</strong> √ SQL Server 2016 (13.x) and later √ Azure SQL Database √ Azure SQL Managed Instance</para>
			/// <para>Returns a row for each event target for an event session.<br/>
			/// ||<br/>
			/// |-|<br/>
			/// |<strong>Applies to</strong>: Azure SQL Database V12 and any later versions.|</para><br/>
			/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-database-event-session-targets-azure-sql-database'>sys.database_event_session_targets</a>.</para>
			/// </summary>
			public ITable<DatabaseEventSessionTarget> DatabaseEventSessionTargets { get { return _dataContext.GetTable<DatabaseEventSessionTarget>(); } }
			/// <summary>
			/// <para><strong>sys.server_event_sessions (Transact-SQL)</strong></para>
			/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)</para>
			/// <para>Lists all the event session definitions that exist in SQL Server.</para><br/>
			/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-server-event-sessions-transact-sql'>sys.server_event_sessions</a>.</para>
			/// </summary>
			public ITable<ServerEventSession>         ServerEventSessions         { get { return _dataContext.GetTable<ServerEventSession>(); } }
			/// <summary>
			/// <para><strong>sys.server_event_session_actions (Transact-SQL)</strong></para>
			/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)</para>
			/// <para>Returns a row for each action on each event of an event session.</para><br/>
			/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-server-event-session-actions-transact-sql'>sys.server_event_session_actions</a>.</para>
			/// </summary>
			public ITable<ServerEventSessionAction>   ServerEventSessionActions   { get { return _dataContext.GetTable<ServerEventSessionAction>(); } }
			/// <summary>
			/// <para><strong>sys.server_event_session_events (Transact-SQL)</strong></para>
			/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)</para>
			/// <para>Returns a row for each event in an event session.</para><br/>
			/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-server-event-session-events-transact-sql'>sys.server_event_session_events</a>.</para>
			/// </summary>
			public ITable<ServerEventSessionEvent>    ServerEventSessionEvents    { get { return _dataContext.GetTable<ServerEventSessionEvent>(); } }
			/// <summary>
			/// <para><strong>sys.server_event_session_fields (Transact-SQL)</strong></para>
			/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)</para>
			/// <para>Returns a row for each customizable column that was explicitly set on events and targets.</para><br/>
			/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-server-event-session-fields-transact-sql'>sys.server_event_session_fields</a>.</para>
			/// </summary>
			public ITable<ServerEventSessionField>    ServerEventSessionFields    { get { return _dataContext.GetTable<ServerEventSessionField>(); } }
			/// <summary>
			/// <para><strong>sys.server_event_session_targets (Transact-SQL)</strong></para>
			/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)</para>
			/// <para>Returns a row for each event target for an event session.</para><br/>
			/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-server-event-session-targets-transact-sql'>sys.server_event_session_targets</a>.</para>
			/// </summary>
			public ITable<ServerEventSessionTarget>   ServerEventSessionTargets   { get { return _dataContext.GetTable<ServerEventSessionTarget>(); } }

			private readonly IDataContext _dataContext;

			public DataContext(IDataContext dataContext)
			{
				_dataContext = dataContext;
			}
		}

		/// <summary>
		/// <para><strong>sys.database_event_sessions (Azure SQL Database)</strong></para>
		/// <para><strong>Applies to:</strong> √ Azure SQL Database √ Azure SQL Managed Instance</para>
		/// <para>Lists all the event session definitions that exist in the current database, in Azure SQL Database.<br/>
		/// <note type='note'><br/>
		/// The similar catalog view named <c>sys.server_event_sessions</c> applies only to MicrosoftSQL Server.<br/>
		/// </note><br/>
		/// ||<br/>
		/// |-|<br/>
		/// |<strong>Applies to</strong>: SQL Database, and to any later versions.|</para><br/>
		/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-database-event-sessions-azure-sql-database'>sys.database_event_sessions</a>.</para>
		/// </summary>
		[Table(Schema="sys", Name="database_event_sessions", IsView=true)]
		public partial class DatabaseEventSession
		{
			/// <summary>
			/// The unique ID of the event session. Is not nullable.
			/// </summary>
			[Column("event_session_id"),           NotNull] public int    EventSessionID          { get; set; } // int
			/// <summary>
			/// The user-defined name for identifying the event session. name is unique. Is not nullable.
			/// </summary>
			[Column("name"),                       NotNull] public string Name                    { get; set; } = null!; // sysname
			/// <summary>
			/// Determines how event loss is handled. The default is S. Is not nullable. Is one of the following:<br/><br/> S. Maps to event_retention_mode_desc = ALLOW_SINGLE_EVENT_LOSS<br/><br/> M. Maps to event_retention_mode_desc = ALLOW_MULTIPLE_EVENT_LOSS<br/><br/> N. Maps to event_retention_mode_desc = NO_EVENT_LOSS
			/// </summary>
			[Column("event_retention_mode"),       NotNull] public string EventRetentionMode      { get; set; } = null!; // nchar(1)
			/// <summary>
			/// Describes how event loss is handled. The default is ALLOW_SINGLE_EVENT_LOSS. Is not nullable. Is one of the following:<br/><br/> ALLOW_SINGLE_EVENT_LOSS. Events can be lost from the session. Single events are dropped only when all event buffers are full. Losing single events when buffers are full allows for acceptable SQL Server performance characteristics, while minimizing the loss in the processed event stream.<br/><br/> ALLOW_MULTIPLE_EVENT_LOSS. Full event buffers can be lost from the session. The number of events lost depends on the memory size allocated to the session, the partitioning of the memory, and the size of the events in the buffer. This option minimizes performance impact on the server when event buffers are quickly filled. However, large numbers of events can be lost from the session.<br/><br/> NO_EVENT_LOSS. No event loss is allowed. This option ensures that all events raised are retained. Using this option forces all the tasks that fire events to wait until space is available in an event buffer. This may lead to detectable performance degradation while the event session is active.
			/// </summary>
			[Column("event_retention_mode_desc"),  NotNull] public string EventRetentionModeDesc  { get; set; } = null!; // sysname
			/// <summary>
			/// The amount of time, in milliseconds, that events will be buffered in memory before they are served to session targets. Valid values are from 1 to 2147483648, and -1. A value of -1 indicates that dispatch latency is infinite. Is nullable.
			/// </summary>
			[Column("max_dispatch_latency"),       NotNull] public int    MaxDispatchLatency      { get; set; } // int
			/// <summary>
			/// The amount of memory allocated to the session for event buffering. The default value is 4 MB. Is nullable.
			/// </summary>
			[Column("max_memory"),                 NotNull] public int    MaxMemory               { get; set; } // int
			/// <summary>
			/// The amount of memory set aside for events that do not fit in event session buffers. If max_event_size exceeds the calculated buffer size, two additional buffers of max_event_size are allocated to the event session. Is nullable.
			/// </summary>
			[Column("max_event_size"),             NotNull] public int    MaxEventSize            { get; set; } // int
			/// <summary>
			/// The location in memory where event buffers are created. The default partition mode is G. Is not nullable. memory_partition_mode is one of:<br/><br/> G - NONE<br/><br/> C - PER_CPU<br/><br/> N - PER_NODE
			/// </summary>
			[Column("memory_partition_mode"),      NotNull] public string MemoryPartitionMode     { get; set; } = null!; // nchar(1)
			/// <summary>
			/// The default is NONE. Is not nullable. Is one of the following:<br/><br/> NONE. A single set of buffers are created within a SQL Server instance.<br/><br/> PER_CPU. A set of buffers is created for each CPU.<br/><br/> PER_NODE. A set of buffers is created for each non-uniform memory access (NUMA) node.
			/// </summary>
			[Column("memory_partition_mode_desc"), NotNull] public string MemoryPartitionModeDesc { get; set; } = null!; // sysname
			/// <summary>
			/// Enable or disable causality tracking. If set to 1 (ON), tracking is enabled and related events on different server connections can be correlated. The default setting is 0 (OFF). Is not nullable.
			/// </summary>
			[Column("track_causality"),            NotNull] public bool   TrackCausality          { get; set; } // bit
			/// <summary>
			/// Value determines whether or not session is started automatically when the server starts. The default is 0. Is not nullable. Is one of:<br/><br/> 0 (OFF). The session does not start when the server starts.<br/><br/> 1 (ON). The event session starts when the server starts.
			/// </summary>
			[Column("startup_state"),              NotNull] public bool   StartupState            { get; set; } // bit
		}

		/// <summary>
		/// <para><strong>sys.database_event_session_actions (Azure SQL Database)</strong></para>
		/// <para><strong>Applies to:</strong> √ SQL Server 2016 (13.x) and later √ Azure SQL Database √ Azure SQL Managed Instance</para>
		/// <para>Returns a row for each action on each event of an event session.<br/>
		/// ||<br/>
		/// |-|<br/>
		/// |<strong>Applies to</strong>: Azure SQL Database V12 and any later versions.|</para><br/>
		/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-database-event-session-actions-azure-sql-database'>sys.database_event_session_actions</a>.</para>
		/// </summary>
		[Table(Schema="sys", Name="database_event_session_actions", IsView=true)]
		public partial class DatabaseEventSessionAction
		{
			/// <summary>
			/// The ID of the event session. Is not nullable.
			/// </summary>
			[Column("event_session_id"), NotNull] public int    EventSessionID { get; set; } // int
			/// <summary>
			/// The ID of the event. This ID is unique within the event session object. Is not nullable.
			/// </summary>
			[Column("event_id"),         NotNull] public int    EventID        { get; set; } // int
			/// <summary>
			/// The name of the action. Is nullable.
			/// </summary>
			[Column("name"),             NotNull] public string Name           { get; set; } = null!; // sysname
			/// <summary>
			/// The name of the event package that contains the event. Is nullable.
			/// </summary>
			[Column("package"),          NotNull] public string Package        { get; set; } = null!; // sysname
			/// <summary>
			/// The name of the module that contains the event. Is nullable.
			/// </summary>
			[Column("module"),           NotNull] public string Module         { get; set; } = null!; // sysname
		}

		/// <summary>
		/// <para><strong>sys.database_event_session_events (Azure SQL Database)</strong></para>
		/// <para><strong>Applies to:</strong> √ SQL Server 2016 (13.x) and later √ Azure SQL Database √ Azure SQL Managed Instance</para>
		/// <para>Returns a row for each event in an event session.<br/>
		/// ||<br/>
		/// |-|<br/>
		/// |<strong>Applies to</strong>: Azure SQL Database V12 and any later versions.|</para><br/>
		/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-database-event-session-events-azure-sql-database'>sys.database_event_session_events</a>.</para>
		/// </summary>
		[Table(Schema="sys", Name="database_event_session_events", IsView=true)]
		public partial class DatabaseEventSessionEvent
		{
			/// <summary>
			/// The ID of the event session. Is not nullable.
			/// </summary>
			[Column("event_session_id"), NotNull] public int    EventSessionID { get; set; } // int
			/// <summary>
			/// The ID of the event. This ID is unique within an event session object. Is not nullable.
			/// </summary>
			[Column("event_id"),         NotNull] public int    EventID        { get; set; } // int
			/// <summary>
			/// The name of the event. Is not nullable.
			/// </summary>
			[Column("name"),             NotNull] public string Name           { get; set; } = null!; // sysname
			/// <summary>
			/// The name of the event package that contains the event. Is not nullable.
			/// </summary>
			[Column("package"),          NotNull] public string Package        { get; set; } = null!; // sysname
			/// <summary>
			/// The name of the module that contains the event. Is not nullable.
			/// </summary>
			[Column("module"),           NotNull] public string Module         { get; set; } = null!; // sysname
			/// <summary>
			/// The predicate expression that is applied to the event. Is nullable.
			/// </summary>
			[Column("predicate"),        NotNull] public string Predicate      { get; set; } = null!; // nvarchar(3000)
			/// <summary>
			/// The XML predicate expression that is applied to the event. Is nullable.
			/// </summary>
			[Column("predicate_xml"),    NotNull] public string PredicateXml   { get; set; } = null!; // nvarchar(3000)
		}

		/// <summary>
		/// <para><strong>sys.database_event_session_fields (Azure SQL Database)</strong></para>
		/// <para><strong>Applies to:</strong> √ SQL Server 2016 (13.x) and later √ Azure SQL Database √ Azure SQL Managed Instance</para>
		/// <para>Returns a row for each customizable column that was explicitly set on events and targets.<br/>
		/// ||<br/>
		/// |-|<br/>
		/// |<strong>Applies to</strong>: Azure SQL Database V12 and any later versions.|</para><br/>
		/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-database-event-session-fields-azure-sql-database'>sys.database_event_session_fields</a>.</para>
		/// </summary>
		[Table(Schema="sys", Name="database_event_session_fields", IsView=true)]
		public partial class DatabaseEventSessionField
		{
			/// <summary>
			/// The ID of the event session. Is not nullable.
			/// </summary>
			[Column("event_session_id"), NotNull] public int    EventSessionID { get; set; } // int
			/// <summary>
			/// The ID of the object this field is associated with. Is not nullable.
			/// </summary>
			[Column("object_id"),        NotNull] public int    ObjectID       { get; set; } // int
			/// <summary>
			/// The name of the field. Is not nullable.
			/// </summary>
			[Column("name"),             NotNull] public string Name           { get; set; } = null!; // sysname
			/// <summary>
			/// The value of the field. Is not nullable.
			/// </summary>
			[Column("value"),            NotNull] public object Value          { get; set; } = null!; // sql_variant

			#region Associations

			/// <summary>
			/// objects (sys.objects)
			/// </summary>
			[Association(ThisKey="ObjectID", OtherKey="ObjectID", CanBeNull=false)]
			public ObjectSchema.Object Object { get; set; } = null!;

			#endregion
		}

		/// <summary>
		/// <para><strong>sys.database_event_session_targets (Azure SQL Database)</strong></para>
		/// <para><strong>Applies to:</strong> √ SQL Server 2016 (13.x) and later √ Azure SQL Database √ Azure SQL Managed Instance</para>
		/// <para>Returns a row for each event target for an event session.<br/>
		/// ||<br/>
		/// |-|<br/>
		/// |<strong>Applies to</strong>: Azure SQL Database V12 and any later versions.|</para><br/>
		/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-database-event-session-targets-azure-sql-database'>sys.database_event_session_targets</a>.</para>
		/// </summary>
		[Table(Schema="sys", Name="database_event_session_targets", IsView=true)]
		public partial class DatabaseEventSessionTarget
		{
			/// <summary>
			/// The ID of the event session. Is not nullable.
			/// </summary>
			[Column("event_session_id"), NotNull] public int    EventSessionID { get; set; } // int
			/// <summary>
			/// The ID of the target. ID is unique within the event session object. Is not nullable.
			/// </summary>
			[Column("target_id"),        NotNull] public int    TargetID       { get; set; } // int
			/// <summary>
			/// The name of the event target. Is not nullable.
			/// </summary>
			[Column("name"),             NotNull] public string Name           { get; set; } = null!; // sysname
			/// <summary>
			/// The name of the event package that contains the event target. Is not nullable.
			/// </summary>
			[Column("package"),          NotNull] public string Package        { get; set; } = null!; // sysname
			/// <summary>
			/// The name of the module that contains the event target. Is not nullable.
			/// </summary>
			[Column("module"),           NotNull] public string Module         { get; set; } = null!; // sysname
		}

		/// <summary>
		/// <para><strong>sys.server_event_sessions (Transact-SQL)</strong></para>
		/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)</para>
		/// <para>Lists all the event session definitions that exist in SQL Server.</para><br/>
		/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-server-event-sessions-transact-sql'>sys.server_event_sessions</a>.</para>
		/// </summary>
		[Table(Schema="sys", Name="server_event_sessions", IsView=true)]
		public partial class ServerEventSession
		{
			/// <summary>
			/// The unique ID of the event session. Is not nullable.
			/// </summary>
			[Column("event_session_id"),           NotNull    ] public int     EventSessionID          { get; set; } // int
			/// <summary>
			/// The user-defined name for identifying the event session. name is unique. Is not nullable.
			/// </summary>
			[Column("name"),                          Nullable] public string? Name                    { get; set; } // sysname
			/// <summary>
			/// Determines how event loss is handled. The default is S. Is not nullable. Is one of the following:<br/><br/> S. Maps to event_retention_mode_desc = ALLOW_SINGLE_EVENT_LOSS<br/><br/> M. Maps to event_retention_mode_desc = ALLOW_MULTIPLE_EVENT_LOSS<br/><br/> N. Maps to event_retention_mode_desc = NO_EVENT_LOSS
			/// </summary>
			[Column("event_retention_mode"),          Nullable] public string? EventRetentionMode      { get; set; } // nchar(1)
			/// <summary>
			/// Describes how event loss is handled. The default is ALLOW_SINGLE_EVENT_LOSS. Is not nullable. Is one of the following:<br/><br/> ALLOW_SINGLE_EVENT_LOSS. Events can be lost from the session. Single events are dropped only when all event buffers are full. Losing single events when buffers are full allows for acceptable SQL Server performance characteristics, while minimizing the loss in the processed event stream.<br/><br/> ALLOW_MULTIPLE_EVENT_LOSS. Full event buffers can be lost from the session. The number of events lost depends on the memory size allocated to the session, the partitioning of the memory, and the size of the events in the buffer. This option minimizes performance impact on the server when event buffers are quickly filled. However, large numbers of events can be lost from the session.<br/><br/> NO_EVENT_LOSS. No event loss is allowed. This option ensures that all events raised are retained. Using this option forces all the tasks that fire events to wait until space is available in an event buffer. This may lead to detectable performance degradation while the event session is active.
			/// </summary>
			[Column("event_retention_mode_desc"),     Nullable] public string? EventRetentionModeDesc  { get; set; } // sysname
			/// <summary>
			/// The amount of time, in milliseconds, that events will be buffered in memory before they are served to session targets. Valid values are from 0 to 2147483648, and 0. A value of 0 indicates that dispatch latency is infinite. Is nullable.
			/// </summary>
			[Column("max_dispatch_latency"),          Nullable] public int?    MaxDispatchLatency      { get; set; } // int
			/// <summary>
			/// The amount of memory allocated to the session for event buffering. The default value is 4 MB. Is nullable.
			/// </summary>
			[Column("max_memory"),                    Nullable] public int?    MaxMemory               { get; set; } // int
			/// <summary>
			/// The amount of memory set aside for events that do not fit in event session buffers. If max_event_size exceeds the calculated buffer size, two additional buffers of max_event_size are allocated to the event session. Is nullable.
			/// </summary>
			[Column("max_event_size"),                Nullable] public int?    MaxEventSize            { get; set; } // int
			/// <summary>
			/// The location in memory where event buffers are created. The default partition mode is G. Is not nullable. memory_partition_mode is one of:<br/><br/> G - NONE<br/><br/> C - PER_CPU<br/><br/> N - PER_NODE
			/// </summary>
			[Column("memory_partition_mode"),         Nullable] public string? MemoryPartitionMode     { get; set; } // nchar(1)
			/// <summary>
			/// The default is NONE. Is not nullable. Is one of the following:<br/><br/> NONE. A single set of buffers are created within a SQL Server instance.<br/><br/> PER_CPU. A set of buffers is created for each CPU.<br/><br/> PER_NODE. A set of buffers is created for each non-uniform memory access (NUMA) node.
			/// </summary>
			[Column("memory_partition_mode_desc"),    Nullable] public string? MemoryPartitionModeDesc { get; set; } // sysname
			/// <summary>
			/// Enable or disable causality tracking. If set to 1 (ON), tracking is enabled and related events on different server connections can be correlated. The default setting is 0 (OFF). Is not nullable.
			/// </summary>
			[Column("track_causality"),               Nullable] public bool?   TrackCausality          { get; set; } // bit
			/// <summary>
			/// Value determines whether or not session is started automatically when the server starts. The default is 0. Is not nullable. Is one of:<br/><br/> 0 (OFF). The session does not start when the server starts.<br/><br/> 1 (ON). The event session starts when the server starts.
			/// </summary>
			[Column("startup_state"),                 Nullable] public bool?   StartupState            { get; set; } // bit
		}

		/// <summary>
		/// <para><strong>sys.server_event_session_actions (Transact-SQL)</strong></para>
		/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)</para>
		/// <para>Returns a row for each action on each event of an event session.</para><br/>
		/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-server-event-session-actions-transact-sql'>sys.server_event_session_actions</a>.</para>
		/// </summary>
		[Table(Schema="sys", Name="server_event_session_actions", IsView=true)]
		public partial class ServerEventSessionAction
		{
			/// <summary>
			/// The ID of the event session. Is not nullable.
			/// </summary>
			[Column("event_session_id"), NotNull    ] public int     EventSessionID { get; set; } // int
			/// <summary>
			/// The ID of the event. This ID is unique within the event session object. Is not nullable.
			/// </summary>
			[Column("event_id"),         NotNull    ] public int     EventID        { get; set; } // int
			/// <summary>
			/// The name of the action. Is nullable.
			/// </summary>
			[Column("name"),                Nullable] public string? Name           { get; set; } // sysname
			/// <summary>
			/// The name of the event package that contains the event. Is nullable.
			/// </summary>
			[Column("package"),             Nullable] public string? Package        { get; set; } // sysname
			/// <summary>
			/// The name of the module that contains the event. Is nullable.
			/// </summary>
			[Column("module"),              Nullable] public string? Module         { get; set; } // sysname
		}

		/// <summary>
		/// <para><strong>sys.server_event_session_events (Transact-SQL)</strong></para>
		/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)</para>
		/// <para>Returns a row for each event in an event session.</para><br/>
		/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-server-event-session-events-transact-sql'>sys.server_event_session_events</a>.</para>
		/// </summary>
		[Table(Schema="sys", Name="server_event_session_events", IsView=true)]
		public partial class ServerEventSessionEvent
		{
			/// <summary>
			/// The ID of the event session. Is not nullable.
			/// </summary>
			[Column("event_session_id"), NotNull    ] public int     EventSessionID { get; set; } // int
			/// <summary>
			/// The ID of the event. This ID is unique within an event session object. Is not nullable.
			/// </summary>
			[Column("event_id"),         NotNull    ] public int     EventID        { get; set; } // int
			/// <summary>
			/// The name of the event. Is not nullable.
			/// </summary>
			[Column("name"),                Nullable] public string? Name           { get; set; } // sysname
			/// <summary>
			/// The name of the event package that contains the event. Is not nullable.
			/// </summary>
			[Column("package"),             Nullable] public string? Package        { get; set; } // sysname
			/// <summary>
			/// The name of the module that contains the event. Is not nullable.
			/// </summary>
			[Column("module"),              Nullable] public string? Module         { get; set; } // sysname
			/// <summary>
			/// The predicate expression that is applied to the event. Is nullable.
			/// </summary>
			[Column("predicate"),           Nullable] public string? Predicate      { get; set; } // nvarchar(3000)
			/// <summary>
			/// The XML predicate expression that is applied to the event. Is nullable.
			/// </summary>
			[Column("predicate_xml"),       Nullable] public string? PredicateXml   { get; set; } // nvarchar(3000)
		}

		/// <summary>
		/// <para><strong>sys.server_event_session_fields (Transact-SQL)</strong></para>
		/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)</para>
		/// <para>Returns a row for each customizable column that was explicitly set on events and targets.</para><br/>
		/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-server-event-session-fields-transact-sql'>sys.server_event_session_fields</a>.</para>
		/// </summary>
		[Table(Schema="sys", Name="server_event_session_fields", IsView=true)]
		public partial class ServerEventSessionField
		{
			/// <summary>
			/// The ID of the event session. Is not nullable.
			/// </summary>
			[Column("event_session_id"), NotNull    ] public int     EventSessionID { get; set; } // int
			/// <summary>
			/// The ID of the object this field is associated with. Is not nullable.
			/// </summary>
			[Column("object_id"),        NotNull    ] public int     ObjectID       { get; set; } // int
			/// <summary>
			/// The name of the field. Is not nullable.
			/// </summary>
			[Column("name"),                Nullable] public string? Name           { get; set; } // sysname
			/// <summary>
			/// The value of the field. Is not nullable.
			/// </summary>
			[Column("value"),               Nullable] public object? Value          { get; set; } // sql_variant

			#region Associations

			/// <summary>
			/// objects (sys.objects)
			/// </summary>
			[Association(ThisKey="ObjectID", OtherKey="ObjectID", CanBeNull=false)]
			public ObjectSchema.Object Object { get; set; } = null!;

			#endregion
		}

		/// <summary>
		/// <para><strong>sys.server_event_session_targets (Transact-SQL)</strong></para>
		/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)</para>
		/// <para>Returns a row for each event target for an event session.</para><br/>
		/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-server-event-session-targets-transact-sql'>sys.server_event_session_targets</a>.</para>
		/// </summary>
		[Table(Schema="sys", Name="server_event_session_targets", IsView=true)]
		public partial class ServerEventSessionTarget
		{
			/// <summary>
			/// The ID of the event session. Is not nullable.
			/// </summary>
			[Column("event_session_id"), NotNull    ] public int     EventSessionID { get; set; } // int
			/// <summary>
			/// The ID of the target. ID is unique within the event session object. Is not nullable.
			/// </summary>
			[Column("target_id"),        NotNull    ] public int     TargetID       { get; set; } // int
			/// <summary>
			/// The name of the event target. Is not nullable.
			/// </summary>
			[Column("name"),                Nullable] public string? Name           { get; set; } // sysname
			/// <summary>
			/// The name of the event package that contains the event target. Is not nullable.
			/// </summary>
			[Column("package"),             Nullable] public string? Package        { get; set; } // sysname
			/// <summary>
			/// The name of the module that contains the event target. Is not nullable.
			/// </summary>
			[Column("module"),              Nullable] public string? Module         { get; set; } // sysname
		}
	}

	public static partial class ExternalOperationsSchema
	{
		public partial class DataContext
		{
			/// <summary>
			/// <para><strong>sys.external_data_sources (Transact-SQL)</strong></para>
			/// <para><strong>Applies to:</strong> √ SQL Server 2016 (13.x) and later √ Azure SQL Database √ Azure SQL Managed Instance √ Azure Synapse Analytics √ Analytics Platform System (PDW)</para>
			/// <para>Contains a row for each external data source in the current database for SQL Server, SQL Database, and Azure Synapse Analytics.<br/>
			///  Contains a row for each external data source on the server for Analytics Platform System (PDW).</para><br/>
			/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-external-data-sources-transact-sql'>sys.external_data_sources</a>.</para>
			/// </summary>
			public ITable<ExternalDataSource> ExternalDataSources { get { return _dataContext.GetTable<ExternalDataSource>(); } }
			/// <summary>
			/// <para><strong>sys.external_file_formats (Transact-SQL)</strong></para>
			/// <para><strong>Applies to:</strong> √ SQL Server 2016 (13.x) and later √ Azure SQL Managed Instance √ Azure Synapse Analytics √ Analytics Platform System (PDW)</para>
			/// <para>Contains a row for each external file format in the current database for SQL Server, SQL Database, and Azure Synapse Analytics.<br/>
			///  Contains a row for each external file format on the server for Analytics Platform System (PDW).</para><br/>
			/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-external-file-formats-transact-sql'>sys.external_file_formats</a>.</para>
			/// </summary>
			public ITable<ExternalFileFormat> ExternalFileFormats { get { return _dataContext.GetTable<ExternalFileFormat>(); } }
			/// <summary>
			/// <para><strong>sys.external_tables (Transact-SQL)</strong></para>
			/// <para><strong>Applies to:</strong> √ SQL Server 2016 (13.x) and later √ Azure SQL Database √ Azure SQL Managed Instance √ Azure Synapse Analytics √ Analytics Platform System (PDW)</para>
			/// <para>Contains a row for each external table in the current database.</para><br/>
			/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-external-tables-transact-sql'>sys.external_tables</a>.</para>
			/// </summary>
			public ITable<ExternalTable>      ExternalTables      { get { return _dataContext.GetTable<ExternalTable>(); } }

			private readonly IDataContext _dataContext;

			public DataContext(IDataContext dataContext)
			{
				_dataContext = dataContext;
			}
		}

		/// <summary>
		/// <para><strong>sys.external_data_sources (Transact-SQL)</strong></para>
		/// <para><strong>Applies to:</strong> √ SQL Server 2016 (13.x) and later √ Azure SQL Database √ Azure SQL Managed Instance √ Azure Synapse Analytics √ Analytics Platform System (PDW)</para>
		/// <para>Contains a row for each external data source in the current database for SQL Server, SQL Database, and Azure Synapse Analytics.<br/>
		///  Contains a row for each external data source on the server for Analytics Platform System (PDW).</para><br/>
		/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-external-data-sources-transact-sql'>sys.external_data_sources</a>.</para>
		/// </summary>
		[Table(Schema="sys", Name="external_data_sources", IsView=true)]
		public partial class ExternalDataSource
		{
			/// <summary>
			/// Object ID for the external data source.
			/// </summary>
			[Column("data_source_id"),            NotNull    ] public int     DataSourceID            { get; set; } // int
			/// <summary>
			/// Name of the external data source.
			/// </summary>
			[Column("name"),                      NotNull    ] public string  Name                    { get; set; } = null!; // sysname
			/// <summary>
			/// The connection string, which includes the protocol, IP address, and port for the external data source.
			/// </summary>
			[Column("location"),                  NotNull    ] public string  Location                { get; set; } = null!; // nvarchar(4000)
			/// <summary>
			/// Data source type displayed as a string.<br/>
			/// Range: HADOOP, RDBMS, SHARD_MAP_MANAGER, REMOTE_DATA_ARCHIVE, BLOB_STORAGE, NONE
			/// </summary>
			[Column("type_desc"),                    Nullable] public string? TypeDesc                { get; set; } // nvarchar(255)
			/// <summary>
			/// Data source type displayed as a number.<br/>
			/// Range: 0 - HADOOP<br/><br/> 1 - RDBMS<br/><br/> 2 - SHARD_MAP_MANAGER<br/><br/> 3 - REMOTE_DATA_ARCHIVE<br/><br/> 4 - *internal use only*<br/><br/> 5 - BLOB_STORAGE<br/><br/> 6 - NONE
			/// </summary>
			[Column("type"),                      NotNull    ] public byte    TypeColumn              { get; set; } // tinyint
			/// <summary>
			/// For type HADOOP, the IP and port location of the Hadoop resource manager. The <c>resource_manager_location</c> is used for submitting a job on a Hadoop data source.<br/><br/> <c>NULL</c> for other types of external data sources.
			/// </summary>
			[Column("resource_manager_location"),    Nullable] public string? ResourceManagerLocation { get; set; } // nvarchar(4000)
			/// <summary>
			/// The object ID of the database scoped credential used to connect to the external data source.
			/// </summary>
			[Column("credential_id"),             NotNull    ] public int     CredentialID            { get; set; } // int
			/// <summary>
			/// For type RDBMS, the name of the remote database. For type, SHARD_MAP_MANAGER, the name of the shard map manager database. NULL for other types of external data sources.
			/// </summary>
			[Column("database_name"),                Nullable] public string? DatabaseName            { get; set; } // sysname
			/// <summary>
			/// For type SHARD_MAP_MANAGER, the name of the shard map. NULL for other types of external data sources.
			/// </summary>
			[Column("shard_map_name"),               Nullable] public string? ShardMapName            { get; set; } // sysname
		}

		/// <summary>
		/// <para><strong>sys.external_file_formats (Transact-SQL)</strong></para>
		/// <para><strong>Applies to:</strong> √ SQL Server 2016 (13.x) and later √ Azure SQL Managed Instance √ Azure Synapse Analytics √ Analytics Platform System (PDW)</para>
		/// <para>Contains a row for each external file format in the current database for SQL Server, SQL Database, and Azure Synapse Analytics.<br/>
		///  Contains a row for each external file format on the server for Analytics Platform System (PDW).</para><br/>
		/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-external-file-formats-transact-sql'>sys.external_file_formats</a>.</para>
		/// </summary>
		[Table(Schema="sys", Name="external_file_formats", IsView=true)]
		public partial class ExternalFileFormat
		{
			/// <summary>
			/// Object ID for the external file format.
			/// </summary>
			[Column("file_format_id"),   NotNull    ] public int     FileFormatID    { get; set; } // int
			/// <summary>
			/// Name of the file format. in SQL Server and Azure Synapse Analytics, this is unique for the database. In Analytics Platform System (PDW), this is unique for the server.
			/// </summary>
			[Column("name"),             NotNull    ] public string  Name            { get; set; } = null!; // sysname
			/// <summary>
			/// The file format type.<br/>
			/// Range: DELIMITEDTEXT, RCFILE, ORC, PARQUET
			/// </summary>
			[Column("format_type"),      NotNull    ] public byte    FormatType      { get; set; } // tinyint
			/// <summary>
			/// For format_type = DELIMITEDTEXT, this is the field terminator.
			/// </summary>
			[Column("field_terminator"),    Nullable] public string? FieldTerminator { get; set; } // nvarchar(10)
			/// <summary>
			/// For format_type = DELIMITEDTEXT, this is the string delimiter.
			/// </summary>
			[Column("string_delimiter"),    Nullable] public string? StringDelimiter { get; set; } // nvarchar(10)
			/// <summary>
			/// For format_type = DELIMITEDTEXT, this is the user-defined date and time format.
			/// </summary>
			[Column("date_format"),         Nullable] public string? DateFormat      { get; set; } // nvarchar(50)
			/// <summary>
			/// For format_type = DELIMITED TEXT, specifies how to handle missing values when PolyBase is importing data from HDFS text files into Azure Synapse Analytics.<br/>
			/// Range: 0 - store missing values as the string 'NULL'.<br/><br/> 1 - store missing values as the column default value.
			/// </summary>
			[Column("use_type_default"),    Nullable] public bool?   UseTypeDefault  { get; set; } // bit
			/// <summary>
			/// For format_type = RCFILE, this is the serialization/deserialization method.
			/// </summary>
			[Column("serde_method"),        Nullable] public string? SerdeMethod     { get; set; } // nvarchar(255)
			/// <summary>
			/// For format_type = DELIMITEDTEXT, this is the character string that terminates each row in the external Hadoop file.<br/>
			/// Range: Always '\n'.
			/// </summary>
			[Column("row_terminator"),      Nullable] public string? RowTerminator   { get; set; } // nvarchar(10)
			/// <summary>
			/// For format_type = DELIMITEDTEXT, this is the encoding method for the external Hadoop file.<br/>
			/// Range: Always 'UTF8'.
			/// </summary>
			[Column("encoding"),            Nullable] public string? Encoding        { get; set; } // nvarchar(10)
			/// <summary>
			/// The data compression method for the external data.<br/>
			/// Range: For format_type = DELIMITEDTEXT:<br/><br/> -   'org.apache.hadoop.io.compress.DefaultCodec'<br/>-   'org.apache.hadoop.io.compress.GzipCodec'<br/><br/> For format_type = RCFILE:<br/><br/> -   'org.apache.hadoop.io.compress.DefaultCodec'<br/><br/> For format_type = ORC:<br/><br/> -   'org.apache.hadoop.io.compress.DefaultCodec'<br/>-   'org.apache.hadoop.io.compress.SnappyCodec'<br/><br/> For format_type = PARQUET:<br/><br/> -   'org.apache.hadoop.io.compress.GzipCodec'<br/>-   'org.apache.hadoop.io.compress.SnappyCodec'
			/// </summary>
			[Column("data_compression"),    Nullable] public string? DataCompression { get; set; } // nvarchar(255)
		}

		/// <summary>
		/// <para><strong>sys.external_tables (Transact-SQL)</strong></para>
		/// <para><strong>Applies to:</strong> √ SQL Server 2016 (13.x) and later √ Azure SQL Database √ Azure SQL Managed Instance √ Azure Synapse Analytics √ Analytics Platform System (PDW)</para>
		/// <para>Contains a row for each external table in the current database.</para><br/>
		/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-external-tables-transact-sql'>sys.external_tables</a>.</para>
		/// </summary>
		[Table(Schema="sys", Name="external_tables", IsView=true)]
		public partial class ExternalTable
		{
			/// <summary>
			/// Object name.
			/// </summary>
			[Column("name"),                NotNull    ] public string   Name              { get; set; } = null!; // sysname
			/// <summary>
			/// Object identification number. Is unique within a database.
			/// </summary>
			[Column("object_id"),           NotNull    ] public int      ObjectID          { get; set; } // int
			/// <summary>
			/// ID of the individual owner, if different from the schema owner. By default, schema-contained objects are owned by the schema owner. However, an alternate owner can be specified by using the ALTER AUTHORIZATION statement to change ownership.<br/><br/> Is NULL if there is no alternate individual owner.<br/><br/> Is NULL if the object type is one of the following:<br/><br/> C = CHECK constraint<br/><br/> D = DEFAULT (constraint or stand-alone)<br/><br/> F = FOREIGN KEY constraint<br/><br/> PK = PRIMARY KEY constraint<br/><br/> R = Rule (old-style, stand-alone)<br/><br/> TA = Assembly (CLR-integration) trigger<br/><br/> TR = SQL trigger<br/><br/> UQ = UNIQUE constraint<br/><br/> EC = Edge constraint
			/// </summary>
			[Column("principal_id"),           Nullable] public int?     PrincipalID       { get; set; } // int
			/// <summary>
			/// ID of the schema that the object is contained in.<br/><br/> Schema-scoped system objects are always contained in the sys or INFORMATION_SCHEMA schemas.
			/// </summary>
			[Column("schema_id"),           NotNull    ] public int      SchemaID          { get; set; } // int
			/// <summary>
			/// ID of the object to which this object belongs.<br/><br/> 0 = Not a child object.
			/// </summary>
			[Column("parent_object_id"),    NotNull    ] public int      ParentObjectID    { get; set; } // int
			/// <summary>
			/// Object type:<br/><br/> AF = Aggregate function (CLR)<br/><br/> C = CHECK constraint<br/><br/> D = DEFAULT (constraint or stand-alone)<br/><br/> F = FOREIGN KEY constraint<br/><br/> FN = SQL scalar function<br/><br/> FS = Assembly (CLR) scalar-function<br/><br/> FT = Assembly (CLR) table-valued function<br/><br/> IF = SQL inline table-valued function<br/><br/> IT = Internal table<br/><br/> P = SQL Stored Procedure<br/><br/> PC = Assembly (CLR) stored-procedure<br/><br/> PG = Plan guide<br/><br/> PK = PRIMARY KEY constraint<br/><br/> R = Rule (old-style, stand-alone)<br/><br/> RF = Replication-filter-procedure<br/><br/> S = System base table<br/><br/> SN = Synonym<br/><br/> SO = Sequence object<br/><br/> U = Table (user-defined)<br/><br/> V = View<br/><br/> EC = Edge constraint <br/><br/> <br/><br/> <strong>Applies to</strong>: SQL Server 2012 (11.x) and later.<br/><br/> SQ = Service queue<br/><br/> TA = Assembly (CLR) DML trigger<br/><br/> TF = SQL table-valued-function<br/><br/> TR = SQL DML trigger<br/><br/> TT = Table type<br/><br/> UQ = UNIQUE constraint<br/><br/> X = Extended stored procedure<br/><br/> <br/><br/> <strong>Applies to</strong>: SQL Server 2014 (12.x) and later, Azure SQL Database, Azure Synapse Analytics, Analytics Platform System (PDW).<br/><br/> ST = STATS_TREE<br/><br/> <br/><br/> <strong>Applies to</strong>: SQL Server 2016 (13.x) and later, Azure SQL Database, Azure Synapse Analytics, Analytics Platform System (PDW).<br/><br/> ET = External Table
			/// </summary>
			[Column("type"),                   Nullable] public string?  TypeColumn        { get; set; } // char(2)
			/// <summary>
			/// Description of the object type:<br/><br/> AGGREGATE_FUNCTION<br/><br/> CHECK_CONSTRAINT<br/><br/> CLR_SCALAR_FUNCTION<br/><br/> CLR_STORED_PROCEDURE<br/><br/> CLR_TABLE_VALUED_FUNCTION<br/><br/> CLR_TRIGGER<br/><br/> DEFAULT_CONSTRAINT<br/><br/> EXTENDED_STORED_PROCEDURE<br/><br/> FOREIGN_KEY_CONSTRAINT<br/><br/> INTERNAL_TABLE<br/><br/> PLAN_GUIDE<br/><br/> PRIMARY_KEY_CONSTRAINT<br/><br/> REPLICATION_FILTER_PROCEDURE<br/><br/> RULE<br/><br/> SEQUENCE_OBJECT<br/><br/> <br/><br/> <strong>Applies to</strong>: SQL Server 2012 (11.x) and later.<br/><br/>  SERVICE_QUEUE<br/><br/> SQL_INLINE_TABLE_VALUED_FUNCTION<br/><br/> SQL_SCALAR_FUNCTION<br/><br/> SQL_STORED_PROCEDURE<br/><br/> SQL_TABLE_VALUED_FUNCTION<br/><br/> SQL_TRIGGER<br/><br/> SYNONYM<br/><br/> SYSTEM_TABLE<br/><br/> TABLE_TYPE<br/><br/> UNIQUE_CONSTRAINT<br/><br/> USER_TABLE<br/><br/> VIEW
			/// </summary>
			[Column("type_desc"),              Nullable] public string?  TypeDesc          { get; set; } // nvarchar(60)
			/// <summary>
			/// Date the object was created.
			/// </summary>
			[Column("create_date"),         NotNull    ] public DateTime CreateDate        { get; set; } // datetime
			/// <summary>
			/// Date the object was last modified by using an ALTER statement. If the object is a table or a view, modify_date also changes when an index on the table or view is created or altered.
			/// </summary>
			[Column("modify_date"),         NotNull    ] public DateTime ModifyDate        { get; set; } // datetime
			/// <summary>
			/// Object is created by an internal SQL Server component.
			/// </summary>
			[Column("is_ms_shipped"),       NotNull    ] public bool     IsMSShipped       { get; set; } // bit
			/// <summary>
			/// Object is published.
			/// </summary>
			[Column("is_published"),        NotNull    ] public bool     IsPublished       { get; set; } // bit
			/// <summary>
			/// Only the schema of the object is published.
			/// </summary>
			[Column("is_schema_published"), NotNull    ] public bool     IsSchemaPublished { get; set; } // bit
			/// <summary>
			/// Maximum column ID ever used for this table.
			/// </summary>
			[Column("max_column_id_used"),     Nullable] public int?     MaxColumnIDUsed   { get; set; } // int
			/// <summary>
			/// Table was created with the SET ANSI_NULLS database option ON.
			/// </summary>
			[Column("uses_ansi_nulls"),        Nullable] public bool?    UsesAnsiNulls     { get; set; } // bit
			/// <summary>
			/// Object ID for the external data source.
			/// </summary>
			[Column("data_source_id"),      NotNull    ] public int      DataSourceID      { get; set; } // int
			/// <summary>
			/// For external tables over a HADOOP external data source, this is the Object ID for the external file format.
			/// </summary>
			[Column("file_format_id"),         Nullable] public int?     FileFormatID      { get; set; } // int
			/// <summary>
			/// For external tables over a HADOOP external data source, this is the path of the external data in HDFS.
			/// </summary>
			[Column("location"),               Nullable] public string?  Location          { get; set; } // nvarchar(4000)
			/// <summary>
			/// For external tables over a HADOOP external data source, this is the way rejected rows are counted when querying external data.<br/>
			/// Range: VALUE - the number of rejected rows.<br/><br/> PERCENTAGE - the percentage of rejected rows.
			/// </summary>
			[Column("reject_type"),            Nullable] public byte?    RejectType        { get; set; } // tinyint
			/// <summary>
			/// For external tables over a HADOOP external data source:<br/><br/> For *reject_type =* value, this is the number of row rejections to allow before failing the query.<br/><br/> For *reject_type* = percentage, this is the percentage of row rejections to allow before failing the query.
			/// </summary>
			[Column("reject_value"),           Nullable] public double?  RejectValue       { get; set; } // float
			/// <summary>
			/// For *reject_type* = percentage, this is the number of rows to load, either successfully or unsuccessfully, before calculating the percentage of rejected rows.<br/>
			/// Range: NULL if reject_type = VALUE.
			/// </summary>
			[Column("reject_sample_value"),    Nullable] public int?     RejectSampleValue { get; set; } // int
			/// <summary>
			/// For external tables over a SHARD_MAP_MANAGER external data source, this is the data distribution of the rows across the underlying base tables.<br/>
			/// Range: 0 - Sharded<br/><br/> 1 - Replicated<br/><br/> 2 - Round robin
			/// </summary>
			[Column("distribution_type"),      Nullable] public int?     DistributionType  { get; set; } // int
			/// <summary>
			/// For external tables over a SHARD_MAP_MANAGER external data source, this is the distribution type displayed as a string.
			/// </summary>
			[Column("distribution_desc"),      Nullable] public string?  DistributionDesc  { get; set; } // nvarchar(120)
			/// <summary>
			/// For external tables over a SHARD_MAP_MANAGER external data source and a sharded distribution, this is the column ID of the column that contains the sharding key values.
			/// </summary>
			[Column("sharding_column_id"),  NotNull    ] public int      ShardingColumnID  { get; set; } // int
			/// <summary>
			/// For external tables over a SHARD_MAP_MANAGER external data source, this is the schema where the base table is located on the remote databases (if different from the schema where the external table is defined).
			/// </summary>
			[Column("remote_schema_name"),     Nullable] public string?  RemoteSchemaName  { get; set; } // sysname
			/// <summary>
			/// For external tables over a SHARD_MAP_MANAGER external data source, this is the name of the base table on the remote databases (if different from the name of the external table).
			/// </summary>
			[Column("remote_object_name"),     Nullable] public string?  RemoteObjectName  { get; set; } // sysname

			#region Associations

			/// <summary>
			/// objects (sys.objects)
			/// </summary>
			[Association(ThisKey="ObjectID", OtherKey="ObjectID", CanBeNull=false)]
			public ObjectSchema.Object Object { get; set; } = null!;

			#endregion
		}
	}

	public static partial class FilestreamAndFileTableSchema
	{
		public partial class DataContext
		{
			/// <summary>
			/// <para><strong>sys.database_filestream_options (Transact-SQL)</strong></para>
			/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)</para>
			/// <para>Displays information about the level of non-transactional access to FILESTREAM data in FileTables that is enabled. Contains one row for each database in the SQL Server instance.<br/>
			///  For more information about FileTables, see <a href='https://docs.microsoft.com/en-us/sql/relational-databases/blob/filetables-sql-server'>FileTables (SQL Server)</a>.</para><br/>
			/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-database-filestream-options-transact-sql'>sys.database_filestream_options</a>.</para>
			/// </summary>
			public ITable<DatabaseFilestreamOption>     DatabaseFilestreamOptions     { get { return _dataContext.GetTable<DatabaseFilestreamOption>(); } }
			/// <summary>
			/// <para><strong>sys.filetables (Transact-SQL)</strong></para>
			/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)</para>
			/// <para>Returns a row for each FileTable in SQL Server. For more information about FileTables, see <a href='https://docs.microsoft.com/en-us/sql/relational-databases/blob/filetables-sql-server'>FileTables (SQL Server)</a>.</para><br/>
			/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-filetables-transact-sql'>sys.filetables</a>.</para>
			/// </summary>
			public ITable<FileTable>                    FileTables                    { get { return _dataContext.GetTable<FileTable>(); } }
			/// <summary>
			/// <para><strong>sys.filetable_system_defined_objects (Transact-SQL)</strong></para>
			/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)</para>
			/// <para>Displays a list of the system-defined objects that are related to FileTables. Contains one row for each system-defined object.<br/>
			///  When you create a FileTable, related objects such as constraints and indexes are created at the same time. You cannot alter or drop these objects; they disappear only when the FileTable itself is dropped.<br/>
			///  For more information about FileTables, see <a href='https://docs.microsoft.com/en-us/sql/relational-databases/blob/filetables-sql-server'>FileTables (SQL Server)</a>.</para><br/>
			/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-filetable-system-defined-objects-transact-sql'>sys.filetable_system_defined_objects</a>.</para>
			/// </summary>
			public ITable<FileTableSystemDefinedObject> FileTableSystemDefinedObjects { get { return _dataContext.GetTable<FileTableSystemDefinedObject>(); } }

			private readonly IDataContext _dataContext;

			public DataContext(IDataContext dataContext)
			{
				_dataContext = dataContext;
			}
		}

		/// <summary>
		/// <para><strong>sys.database_filestream_options (Transact-SQL)</strong></para>
		/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)</para>
		/// <para>Displays information about the level of non-transactional access to FILESTREAM data in FileTables that is enabled. Contains one row for each database in the SQL Server instance.<br/>
		///  For more information about FileTables, see <a href='https://docs.microsoft.com/en-us/sql/relational-databases/blob/filetables-sql-server'>FileTables (SQL Server)</a>.</para><br/>
		/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-database-filestream-options-transact-sql'>sys.database_filestream_options</a>.</para>
		/// </summary>
		[Table(Schema="sys", Name="database_filestream_options", IsView=true)]
		public partial class DatabaseFilestreamOption
		{
			/// <summary>
			/// The ID of the database. This value is unique within the SQL Server instance.
			/// </summary>
			[Column("database_id"),                NotNull    ] public int     DatabaseID              { get; set; } // int
			/// <summary>
			/// The database-level directory for all FileTable namespaces.
			/// </summary>
			[Column("directory_name"),                Nullable] public string? DirectoryName           { get; set; } // nvarchar(255)
			/// <summary>
			/// The level of non-transactional access to FILESTREAM data that is enabled. The level of access is set by the NON_TRANSACTED_ACCESS option of the <strong>CREATE DATABASE</strong> or <strong>ALTER DATABASE</strong> statement.<br/><br/> This setting has one of the following values:<br/><br/> 0 - Not enabled. This is the default value. This level is set by providing the value <strong>OFF</strong> for the <strong>NON_TRANSACTED_ACCESS</strong> option.<br/><br/> 1 - Read-only access. This level is set by providing the value <strong>READ_ONLY</strong> for the <strong>NON_TRANSACTED_ACCESS</strong> option.<br/><br/> 3 - Full access. This level is set by providing the value <strong>FULL</strong> for the <strong>NON_TRANSACTED_ACCESS</strong> option.<br/><br/> 5 - In transition to READONLY<br/><br/> 6 - In transition to OFF
			/// </summary>
			[Column("non_transacted_access"),      NotNull    ] public byte    NonTransactedAccess     { get; set; } // tinyint
			/// <summary>
			/// The description of the level of non-transactional access identified in non_transacted_access.<br/><br/> This setting has one of the following values:<br/><br/> NONE - This is the default value.<br/><br/> READ_ONLY<br/><br/> FULL<br/><br/> IN_TRANSITION_TO_READ_ONLY<br/><br/> IN_TRANSITION_TO_OFF
			/// </summary>
			[Column("non_transacted_access_desc"), NotNull    ] public string  NonTransactedAccessDesc { get; set; } = null!; // nvarchar(60)
		}

		/// <summary>
		/// <para><strong>sys.filetables (Transact-SQL)</strong></para>
		/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)</para>
		/// <para>Returns a row for each FileTable in SQL Server. For more information about FileTables, see <a href='https://docs.microsoft.com/en-us/sql/relational-databases/blob/filetables-sql-server'>FileTables (SQL Server)</a>.</para><br/>
		/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-filetables-transact-sql'>sys.filetables</a>.</para>
		/// </summary>
		[Table(Schema="sys", Name="filetables", IsView=true)]
		public partial class FileTable
		{
			/// <summary>
			/// Object identification number. Is unique within a database.<br/><br/> For more information, <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-objects-transact-sql'>sys.objects (Transact-SQL)</a>.
			/// </summary>
			[Column("object_id"),               NotNull] public object ObjectID              { get; set; } = null!;
			/// <summary>
			/// 1 = FileTable is in 'enabled' state.
			/// </summary>
			[Column("is_enabled"),              NotNull] public bool   IsEnabled             { get; set; } // bit
			/// <summary>
			/// Name of the root directory for a FileTable.
			/// </summary>
			[Column("directory_name"),          NotNull] public string DirectoryName         { get; set; } = null!; // varchar(255)
			/// <summary>
			/// Is the collation identifier defined for the FileTable
			/// </summary>
			[Column("filename_collation_id"),   NotNull] public object FilenameCollationID   { get; set; } = null!;
			/// <summary>
			/// Is the collation name defined for the FileTable.
			/// </summary>
			[Column("filename_collation_name"), NotNull] public object FilenameCollationName { get; set; } = null!;

			#region Associations

			/// <summary>
			/// objects (sys.objects)
			/// </summary>
			[Association(ThisKey="ObjectID", OtherKey="ObjectID", CanBeNull=false)]
			public ObjectSchema.Object Object { get; set; } = null!;

			#endregion
		}

		/// <summary>
		/// <para><strong>sys.filetable_system_defined_objects (Transact-SQL)</strong></para>
		/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)</para>
		/// <para>Displays a list of the system-defined objects that are related to FileTables. Contains one row for each system-defined object.<br/>
		///  When you create a FileTable, related objects such as constraints and indexes are created at the same time. You cannot alter or drop these objects; they disappear only when the FileTable itself is dropped.<br/>
		///  For more information about FileTables, see <a href='https://docs.microsoft.com/en-us/sql/relational-databases/blob/filetables-sql-server'>FileTables (SQL Server)</a>.</para><br/>
		/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-filetable-system-defined-objects-transact-sql'>sys.filetable_system_defined_objects</a>.</para>
		/// </summary>
		[Table(Schema="sys", Name="filetable_system_defined_objects", IsView=true)]
		public partial class FileTableSystemDefinedObject
		{
			/// <summary>
			/// Object ID of the system-defined object related to a FileTable.<br/><br/> References the object in <strong>sys.objects</strong>.
			/// </summary>
			[Column("object_id"),        NotNull] public int ObjectID       { get; set; } // int
			/// <summary>
			/// Object ID of the parent FileTable.<br/><br/> References the object in <strong>sys.objects</strong>.
			/// </summary>
			[Column("parent_object_id"), NotNull] public int ParentObjectID { get; set; } // int

			#region Associations

			/// <summary>
			/// objects (sys.objects)
			/// </summary>
			[Association(ThisKey="ObjectID", OtherKey="ObjectID", CanBeNull=false)]
			public ObjectSchema.Object Object { get; set; } = null!;

			#endregion
		}
	}

	public static partial class FullTextSearchSchema
	{
		public partial class DataContext
		{
			/// <summary>
			/// <para><strong>sys.fulltext_catalogs (Transact-SQL)</strong></para>
			/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)</para>
			/// <para>Contains a row for each full-text catalog.<br/>
			/// <note type='note'><br/>
			/// The following columns will be removed in a future release of SQL Server: <strong>data_space_id</strong>, <strong>file_id</strong>, and <strong>path</strong>. Do not use these columns in new development work, and modify applications that currently use any of these columns as soon as possible.<br/>
			/// </note></para><br/>
			/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-fulltext-catalogs-transact-sql'>sys.fulltext_catalogs</a>.</para>
			/// </summary>
			public ITable<Catalog>                            Catalogs                            { get { return _dataContext.GetTable<Catalog>(); } }
			/// <summary>
			/// <para><strong>sys.fulltext_document_types (Transact-SQL)</strong></para>
			/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)  √ Azure SQL Database</para>
			/// <para>Returns a row for each document type that is available for full-text indexing operations. Each row represents the IFilter interface that is registered in the instance of SQL Server.</para><br/>
			/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-fulltext-document-types-transact-sql'>sys.fulltext_document_types</a>.</para>
			/// </summary>
			public ITable<DocumentType>                       DocumentTypes                       { get { return _dataContext.GetTable<DocumentType>(); } }
			/// <summary>
			/// <para><strong>sys.fulltext_indexes (Transact-SQL)</strong></para>
			/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)  √ Azure SQL Database</para>
			/// <para>Contains a row per full-text index of a tabular object.</para><br/>
			/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-fulltext-indexes-transact-sql'>sys.fulltext_indexes</a>.</para>
			/// </summary>
			public ITable<Index>                              Indexes                             { get { return _dataContext.GetTable<Index>(); } }
			/// <summary>
			/// <para><strong>sys.fulltext_index_catalog_usages (Transact-SQL)</strong></para>
			/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)  √ Azure SQL Database</para>
			/// <para>Returns a row for each full-text catalog to full-text index reference.</para><br/>
			/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-fulltext-index-catalog-usages-transact-sql'>sys.fulltext_index_catalog_usages</a>.</para>
			/// </summary>
			public ITable<IndexCatalogUsage>                  IndexCatalogUsages                  { get { return _dataContext.GetTable<IndexCatalogUsage>(); } }
			/// <summary>
			/// <para><strong>sys.fulltext_index_columns (Transact-SQL)</strong></para>
			/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)  √ Azure SQL Database</para>
			/// <para>Contains a row for each column that is part of a full-text index.</para><br/>
			/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-fulltext-index-columns-transact-sql'>sys.fulltext_index_columns</a>.</para>
			/// </summary>
			public ITable<IndexColumn>                        IndexColumns                        { get { return _dataContext.GetTable<IndexColumn>(); } }
			/// <summary>
			/// <para><strong>sys.fulltext_index_fragments (Transact-SQL)</strong></para>
			/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)  √ Azure SQL Database</para>
			/// <para>A fulltext index uses internal tables called *full-text index fragments* to store the inverted index data. This view can be used to query the metadata about these fragments. This view contains a row for each full-text index fragment in every table that contains a full-text index.</para><br/>
			/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-fulltext-index-fragments-transact-sql'>sys.fulltext_index_fragments</a>.</para>
			/// </summary>
			public ITable<IndexFragment>                      IndexFragments                      { get { return _dataContext.GetTable<IndexFragment>(); } }
			/// <summary>
			/// <para><strong>sys.fulltext_languages (Transact-SQL)</strong></para>
			/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)  √ Azure SQL Database</para>
			/// <para>This catalog view contains one row per language whose word breakers are registered with SQL Server. Each row displays the LCID and name of the language. When word breakers are registered for a language, its other linguistic resources-stemmers, noise words (stopwords), and thesaurus files-become available to full-text indexing/querying operations. The value of <strong>name</strong> or <strong>lcid</strong> can be specified in the full-text queries and full-text index Transact\-SQL statements.</para><br/>
			/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-fulltext-languages-transact-sql'>sys.fulltext_languages</a>.</para>
			/// </summary>
			public ITable<Language>                           Languages                           { get { return _dataContext.GetTable<Language>(); } }
			/// <summary>
			/// <para><strong>sys.registered_search_properties (Transact-SQL)</strong></para>
			/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)  √ Azure SQL Database</para>
			/// <para>Contains a row for each search property contained by any search property list on the current database.</para><br/>
			/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-registered-search-properties-transact-sql'>sys.registered_search_properties</a>.</para>
			/// </summary>
			public ITable<RegisteredSearchProperty>           RegisteredSearchProperties          { get { return _dataContext.GetTable<RegisteredSearchProperty>(); } }
			/// <summary>
			/// <para><strong>sys.registered_search_property_lists (Transact-SQL)</strong></para>
			/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)</para>
			/// <para>Contains a row for each search property list on the current database.</para><br/>
			/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-registered-search-property-lists-transact-sql'>sys.registered_search_property_lists</a>.</para>
			/// </summary>
			public ITable<RegisteredSearchPropertyList>       RegisteredSearchPropertyLists       { get { return _dataContext.GetTable<RegisteredSearchPropertyList>(); } }
			/// <summary>
			/// <para><strong>sys.fulltext_semantic_languages (Transact-SQL)</strong></para>
			/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)</para>
			/// <para>Returns a row for each language whose statistics model is registered with the instance of SQL Server. When a language model is registered, that language is enabled for semantic indexing.<br/>
			///  This catalog view is similar to <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-fulltext-languages-transact-sql'>sys.fulltext_languages (Transact-SQL)</a>.</para><br/>
			/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-fulltext-semantic-languages-transact-sql'>sys.fulltext_semantic_languages</a>.</para>
			/// </summary>
			public ITable<SemanticLanguage>                   SemanticLanguages                   { get { return _dataContext.GetTable<SemanticLanguage>(); } }
			/// <summary>
			/// <para><strong>sys.fulltext_semantic_language_statistics_database (Transact-SQL)</strong></para>
			/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)</para>
			/// <para>Returns a row about the semantic language statistics database installed on the current instance of SQL Server.<br/>
			///  You can query this view to find out about the semantic language statistics component required for semantic processing.</para><br/>
			/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-fulltext-semantic-language-statistics-database-transact-sql'>sys.fulltext_semantic_language_statistics_database</a>.</para>
			/// </summary>
			public ITable<SemanticLanguageStatisticsDatabase> SemanticLanguageStatisticsDatabases { get { return _dataContext.GetTable<SemanticLanguageStatisticsDatabase>(); } }
			/// <summary>
			/// <para><strong>sys.fulltext_stoplists (Transact-SQL)</strong></para>
			/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)  √ Azure SQL Database</para>
			/// <para>Contains a row per full-text stoplist in the database.</para><br/>
			/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-fulltext-stoplists-transact-sql'>sys.fulltext_stoplists</a>.</para>
			/// </summary>
			public ITable<Stoplist>                           Stoplists                           { get { return _dataContext.GetTable<Stoplist>(); } }
			/// <summary>
			/// <para><strong>sys.fulltext_stopwords (Transact-SQL)</strong></para>
			/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)  √ Azure SQL Database</para>
			/// <para>Contains a row per stopword for all stoplists in the database.</para><br/>
			/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-fulltext-stopwords-transact-sql'>sys.fulltext_stopwords</a>.</para>
			/// </summary>
			public ITable<StopWord>                           StopWords                           { get { return _dataContext.GetTable<StopWord>(); } }
			/// <summary>
			/// <para><strong>sys.fulltext_system_stopwords (Transact-SQL)</strong></para>
			/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)  √ Azure SQL Database</para>
			/// <para>Provides access to the system stoplist.</para><br/>
			/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-fulltext-system-stopwords-transact-sql'>sys.fulltext_system_stopwords</a>.</para>
			/// </summary>
			public ITable<SystemStopWord>                     SystemStopWords                     { get { return _dataContext.GetTable<SystemStopWord>(); } }

			private readonly IDataContext _dataContext;

			public DataContext(IDataContext dataContext)
			{
				_dataContext = dataContext;
			}
		}

		/// <summary>
		/// <para><strong>sys.fulltext_catalogs (Transact-SQL)</strong></para>
		/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)</para>
		/// <para>Contains a row for each full-text catalog.<br/>
		/// <note type='note'><br/>
		/// The following columns will be removed in a future release of SQL Server: <strong>data_space_id</strong>, <strong>file_id</strong>, and <strong>path</strong>. Do not use these columns in new development work, and modify applications that currently use any of these columns as soon as possible.<br/>
		/// </note></para><br/>
		/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-fulltext-catalogs-transact-sql'>sys.fulltext_catalogs</a>.</para>
		/// </summary>
		[Table(Schema="sys", Name="fulltext_catalogs", IsView=true)]
		public partial class Catalog
		{
			/// <summary>
			/// ID of the full-text catalog. Is unique across the full-text catalogs in the database.
			/// </summary>
			[Column("fulltext_catalog_id"),      NotNull    ] public int     FulltextCatalogID     { get; set; } // int
			/// <summary>
			/// Name of the catalog. Is unique within the database.
			/// </summary>
			[Column("name"),                     NotNull    ] public string  Name                  { get; set; } = null!; // sysname
			/// <summary>
			/// Name of the catalog directory in the file system.
			/// </summary>
			[Column("path"),                        Nullable] public string? Path                  { get; set; } // nvarchar(260)
			/// <summary>
			/// The default full-text catalog.<br/><br/> True = Is default.<br/><br/> False = Is not default.
			/// </summary>
			[Column("is_default"),               NotNull    ] public bool    IsDefault             { get; set; } // bit
			/// <summary>
			/// Accent-sensitivity setting of the catalog.<br/><br/> True = Is accent-sensitive.<br/><br/> False = Is not accent-sensitive.
			/// </summary>
			[Column("is_accent_sensitivity_on"), NotNull    ] public bool    IsAccentSensitivityOn { get; set; } // bit
			/// <summary>
			/// Filegroup where this catalog was created.
			/// </summary>
			[Column("data_space_id"),               Nullable] public int?    DataSpaceID           { get; set; } // int
			/// <summary>
			/// File ID of the full-text file associated with the catalog.
			/// </summary>
			[Column("file_id"),                     Nullable] public int?    FileID                { get; set; } // int
			/// <summary>
			/// ID of the database principal that owns the full-text catalog.
			/// </summary>
			[Column("principal_id"),                Nullable] public int?    PrincipalID           { get; set; } // int
			/// <summary>
			/// Indicates whether the full-text catalog is being imported:<br/><br/> 1 = The catalog is being imported.<br/><br/> 2 = The catalog is not being imported.
			/// </summary>
			[Column("is_importing"),             NotNull    ] public bool    IsImporting           { get; set; } // bit
		}

		/// <summary>
		/// <para><strong>sys.fulltext_document_types (Transact-SQL)</strong></para>
		/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)  √ Azure SQL Database</para>
		/// <para>Returns a row for each document type that is available for full-text indexing operations. Each row represents the IFilter interface that is registered in the instance of SQL Server.</para><br/>
		/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-fulltext-document-types-transact-sql'>sys.fulltext_document_types</a>.</para>
		/// </summary>
		[Table(Schema="sys", Name="fulltext_document_types", IsView=true)]
		public partial class DocumentType
		{
			/// <summary>
			/// The file extension of the supported document type.<br/><br/> This value can be used to identify the filter that will be used during full-text indexing of columns of type <strong>varbinary(max)</strong> or <strong>image</strong>.
			/// </summary>
			[Column("document_type"), NotNull    ] public string  DocumentTypeColumn { get; set; } = null!; // sysname
			/// <summary>
			/// GUID of the IFilter class that supports file extension.
			/// </summary>
			[Column("class_id"),      NotNull    ] public Guid    ClassID            { get; set; } // uniqueidentifier
			/// <summary>
			/// The path to the IFilter DLL. The path is only visible to members of the <strong>serveradmin</strong> fixed server role.
			/// </summary>
			[Column("path"),             Nullable] public string? Path               { get; set; } // nvarchar(260)
			/// <summary>
			/// Version of the IFilter DLL.
			/// </summary>
			[Column("version"),       NotNull    ] public string  Version            { get; set; } = null!; // sysname
			/// <summary>
			/// Name of the IFilter manufacturer.<br/><br/> Note: Only documents with the manufacturer as Microsoft are supported on SQL Database.
			/// </summary>
			[Column("manufacturer"),     Nullable] public string? Manufacturer       { get; set; } // sysname
		}

		/// <summary>
		/// <para><strong>sys.fulltext_indexes (Transact-SQL)</strong></para>
		/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)  √ Azure SQL Database</para>
		/// <para>Contains a row per full-text index of a tabular object.</para><br/>
		/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-fulltext-indexes-transact-sql'>sys.fulltext_indexes</a>.</para>
		/// </summary>
		[Table(Schema="sys", Name="fulltext_indexes", IsView=true)]
		public partial class Index
		{
			/// <summary>
			/// ID of the object to which this full-text index belongs.
			/// </summary>
			[Column("object_id"),                  NotNull    ] public int       ObjectID                { get; set; } // int
			/// <summary>
			/// ID of the corresponding unique, non-full-text index that is used to relate the full-text index to the rows.
			/// </summary>
			[Column("unique_index_id"),            NotNull    ] public int       UniqueIndexID           { get; set; } // int
			/// <summary>
			/// ID of the full-text catalog in which the full-text index resides.
			/// </summary>
			[Column("fulltext_catalog_id"),           Nullable] public int?      FulltextCatalogID       { get; set; } // int
			/// <summary>
			/// 1 = Full-text index is currently enabled.
			/// </summary>
			[Column("is_enabled"),                 NotNull    ] public bool      IsEnabled               { get; set; } // bit
			/// <summary>
			/// State of change-tracking.<br/><br/> M = Manual<br/><br/> A = Auto<br/><br/> O = Off
			/// </summary>
			[Column("change_tracking_state"),         Nullable] public string?   ChangeTrackingState     { get; set; } // char(1)
			/// <summary>
			/// Description of the state of change-tracking.<br/><br/> MANUAL<br/><br/> AUTO<br/><br/> OFF
			/// </summary>
			[Column("change_tracking_state_desc"),    Nullable] public string?   ChangeTrackingStateDesc { get; set; } // nvarchar(60)
			/// <summary>
			/// Last crawl (population) that the full-text index has completed.
			/// </summary>
			[Column("has_crawl_completed"),        NotNull    ] public bool      HasCrawlCompleted       { get; set; } // bit
			/// <summary>
			/// Type of the current or last crawl.<br/><br/> F = Full crawl<br/><br/> I = Incremental, timestamp-based crawl<br/><br/> U = Update crawl, based on notifications<br/><br/> P = Full crawl is paused.
			/// </summary>
			[Column("crawl_type"),                 NotNull    ] public string    CrawlType               { get; set; } = null!; // char(1)
			/// <summary>
			/// Description of the current or last crawl type.<br/><br/> FULL_CRAWL<br/><br/> INCREMENTAL_CRAWL<br/><br/> UPDATE_CRAWL<br/><br/> PAUSED_FULL_CRAWL
			/// </summary>
			[Column("crawl_type_desc"),               Nullable] public string?   CrawlTypeDesc           { get; set; } // nvarchar(60)
			/// <summary>
			/// Start of the current or last crawl.<br/><br/> NULL = None.
			/// </summary>
			[Column("crawl_start_date"),              Nullable] public DateTime? CrawlStartDate          { get; set; } // datetime
			/// <summary>
			/// End of the current or last crawl.<br/><br/> NULL = None.
			/// </summary>
			[Column("crawl_end_date"),                Nullable] public DateTime? CrawlEndDate            { get; set; } // datetime
			/// <summary>
			/// Timestamp value to use for the next incremental crawl.<br/><br/> NULL = None.
			/// </summary>
			[Column("incremental_timestamp"),         Nullable] public byte[]?   IncrementalTimestamp    { get; set; } // binary(8)
			/// <summary>
			/// ID of the <a href='https://docs.microsoft.com/en-us/sql/relational-databases/search/configure-and-manage-stopwords-and-stoplists-for-full-text-search'>stoplist</a> that is associated with this full-text index.
			/// </summary>
			[Column("stoplist_id"),                   Nullable] public int?      StoplistID              { get; set; } // int
			/// <summary>
			/// Filegroup where this full-text index resides.
			/// </summary>
			[Column("data_space_id"),              NotNull    ] public int       DataSpaceID             { get; set; } // int
			/// <summary>
			/// ID of the search property list that is associated with this full-text index. NULL indicates that no search property list is associated with the full-text index. To obtain more information about this search property list, use the <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-registered-search-property-lists-transact-sql'>sys.registered_search_property_lists (Transact-SQL)</a> catalog view.
			/// </summary>
			[Column("property_list_id"),              Nullable] public int?      PropertyListID          { get; set; } // int

			#region Associations

			/// <summary>
			/// objects (sys.objects)
			/// </summary>
			[Association(ThisKey="ObjectID", OtherKey="ObjectID", CanBeNull=false)]
			public ObjectSchema.Object Object { get; set; } = null!;

			#endregion
		}

		/// <summary>
		/// <para><strong>sys.fulltext_index_catalog_usages (Transact-SQL)</strong></para>
		/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)  √ Azure SQL Database</para>
		/// <para>Returns a row for each full-text catalog to full-text index reference.</para><br/>
		/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-fulltext-index-catalog-usages-transact-sql'>sys.fulltext_index_catalog_usages</a>.</para>
		/// </summary>
		[Table(Schema="sys", Name="fulltext_index_catalog_usages", IsView=true)]
		public partial class IndexCatalogUsage
		{
			/// <summary>
			/// ID of the full-text indexed table. Is unique within the database.
			/// </summary>
			[Column("object_id"),           NotNull    ] public int  ObjectID          { get; set; } // int
			/// <summary>
			/// ID of full-text index.
			/// </summary>
			[Column("index_id"),               Nullable] public int? IndexID           { get; set; } // int
			/// <summary>
			/// ID of full-text catalog.
			/// </summary>
			[Column("fulltext_catalog_id"), NotNull    ] public int  FulltextCatalogID { get; set; } // int

			#region Associations

			/// <summary>
			/// objects (sys.objects)
			/// </summary>
			[Association(ThisKey="ObjectID", OtherKey="ObjectID", CanBeNull=false)]
			public ObjectSchema.Object Object { get; set; } = null!;

			#endregion
		}

		/// <summary>
		/// <para><strong>sys.fulltext_index_columns (Transact-SQL)</strong></para>
		/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)  √ Azure SQL Database</para>
		/// <para>Contains a row for each column that is part of a full-text index.</para><br/>
		/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-fulltext-index-columns-transact-sql'>sys.fulltext_index_columns</a>.</para>
		/// </summary>
		[Table(Schema="sys", Name="fulltext_index_columns", IsView=true)]
		public partial class IndexColumn
		{
			/// <summary>
			/// ID of the object of which this is part.
			/// </summary>
			[Column("object_id"),             NotNull    ] public int  ObjectID             { get; set; } // int
			/// <summary>
			/// ID of the column that is part of the full-text index.
			/// </summary>
			[Column("column_id"),             NotNull    ] public int  ColumnID             { get; set; } // int
			/// <summary>
			/// ID of the type column that stores the user-supplied document file extension-'.doc', '.xls', and so forth-of the document in a given row. The type column is specified only for columns whose data requires filtering during full-text indexing. NULL if not applicable. For more information, see <a href='https://docs.microsoft.com/en-us/sql/relational-databases/search/configure-and-manage-filters-for-search'>Configure and Manage Filters for Search</a>.
			/// </summary>
			[Column("type_column_id"),           Nullable] public int? TypeColumnID         { get; set; } // int
			/// <summary>
			/// LCID of language whose word breaker is used to index this full-text column.<br/><br/> 0 = Neutral.<br/><br/> For more information, see <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-fulltext-languages-transact-sql'>sys.fulltext_languages (Transact-SQL)</a>.
			/// </summary>
			[Column("language_id"),           NotNull    ] public int  LanguageID           { get; set; } // int
			/// <summary>
			/// 1 = This column has statistical semantics enabled in addition to full-text indexing.
			/// </summary>
			[Column("statistical_semantics"), NotNull    ] public int  StatisticalSemantics { get; set; } // int

			#region Associations

			/// <summary>
			/// objects (sys.objects)
			/// </summary>
			[Association(ThisKey="ObjectID", OtherKey="ObjectID", CanBeNull=false)]
			public ObjectSchema.Object Object { get; set; } = null!;

			#endregion
		}

		/// <summary>
		/// <para><strong>sys.fulltext_index_fragments (Transact-SQL)</strong></para>
		/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)  √ Azure SQL Database</para>
		/// <para>A fulltext index uses internal tables called *full-text index fragments* to store the inverted index data. This view can be used to query the metadata about these fragments. This view contains a row for each full-text index fragment in every table that contains a full-text index.</para><br/>
		/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-fulltext-index-fragments-transact-sql'>sys.fulltext_index_fragments</a>.</para>
		/// </summary>
		[Table(Schema="sys", Name="fulltext_index_fragments", IsView=true)]
		public partial class IndexFragment
		{
			/// <summary>
			/// Object ID of the table that contains the full-text index fragment.
			/// </summary>
			[Column("table_id"),           NotNull] public int    TableID          { get; set; } // int
			/// <summary>
			/// Object ID of the internal table associated with the fragment.
			/// </summary>
			[Column("fragment_object_id"), NotNull] public int    FragmentObjectID { get; set; } // int
			/// <summary>
			/// Logical ID of the full-text index fragment. This is unique across all fragments for this table.
			/// </summary>
			[Column("fragment_id"),        NotNull] public int    FragmentID       { get; set; } // int
			/// <summary>
			/// Timestamp associated with the fragment creation. The timestamps of more recent fragments are larger than the timestamps of older fragments.
			/// </summary>
			[Column("timestamp"),          NotNull] public object Timestamp        { get; set; } = null!; // timestamp
			/// <summary>
			/// Logical size of the fragment in bytes.
			/// </summary>
			[Column("data_size"),          NotNull] public int    DataSize         { get; set; } // int
			/// <summary>
			/// Number of individual rows in the fragment.
			/// </summary>
			[Column("row_count"),          NotNull] public int    RowCount         { get; set; } // int
			/// <summary>
			/// Status of the fragment, one of:<br/><br/> 0 = Newly created and not yet used<br/><br/> 1 = Being used for insert during fulltext index population or merge<br/><br/> 4 = Closed. Ready for query<br/><br/> 6 = Being used for merge input and ready for query<br/><br/> 8 = Marked for deletion. Will not be used for query and merge source.<br/><br/> A status of 4 or 6 means that the fragment is part of the logical full-text index and can be queried; that is, it is a *queryable* fragment.
			/// </summary>
			[Column("status"),             NotNull] public int    Status           { get; set; } // int
		}

		/// <summary>
		/// <para><strong>sys.fulltext_languages (Transact-SQL)</strong></para>
		/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)  √ Azure SQL Database</para>
		/// <para>This catalog view contains one row per language whose word breakers are registered with SQL Server. Each row displays the LCID and name of the language. When word breakers are registered for a language, its other linguistic resources-stemmers, noise words (stopwords), and thesaurus files-become available to full-text indexing/querying operations. The value of <strong>name</strong> or <strong>lcid</strong> can be specified in the full-text queries and full-text index Transact\-SQL statements.</para><br/>
		/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-fulltext-languages-transact-sql'>sys.fulltext_languages</a>.</para>
		/// </summary>
		[Table(Schema="sys", Name="fulltext_languages", IsView=true)]
		public partial class Language
		{
			/// <summary>
			/// Microsoft Windows locale identifier (LCID) for the language.
			/// </summary>
			[Column("lcid"), NotNull] public int    Lcid { get; set; } // int
			/// <summary>
			/// Is either the value of the alias in <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-compatibility-views/sys-syslanguages-transact-sql'>sys.syslanguages</a> corresponding to the value of <strong>lcid</strong> or the string representation of the numeric LCID.
			/// </summary>
			[Column("name"), NotNull] public string Name { get; set; } = null!; // sysname
		}

		/// <summary>
		/// <para><strong>sys.registered_search_properties (Transact-SQL)</strong></para>
		/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)  √ Azure SQL Database</para>
		/// <para>Contains a row for each search property contained by any search property list on the current database.</para><br/>
		/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-registered-search-properties-transact-sql'>sys.registered_search_properties</a>.</para>
		/// </summary>
		[Table(Schema="sys", Name="registered_search_properties", IsView=true)]
		public partial class RegisteredSearchProperty
		{
			/// <summary>
			/// ID of the search property list to which this property belongs.
			/// </summary>
			[Column("property_list_id"),     NotNull    ] public int     PropertyListID      { get; set; } // int
			/// <summary>
			/// Globally unique identifier GUID that identifies the property set to which the search property belongs.
			/// </summary>
			[Column("property_set_guid"),    NotNull    ] public Guid    PropertySetGuid     { get; set; } // uniqueidentifier
			/// <summary>
			/// Integer that identifies this search property within the property set. <strong>property_int_id</strong> is unique within the property set.
			/// </summary>
			[Column("property_int_id"),      NotNull    ] public int     PropertyIntID       { get; set; } // int
			/// <summary>
			/// Name that uniquely identifies this search property in the search property list.<br/><br/> Note: To search on a property, specify this property name in the <a href='https://docs.microsoft.com/en-us/sql/t-sql/queries/contains-transact-sql'>CONTAINS</a> predicate.
			/// </summary>
			[Column("property_name"),        NotNull    ] public string  PropertyName        { get; set; } = null!; // nvarchar(64)
			/// <summary>
			/// Description of the property.
			/// </summary>
			[Column("property_description"),    Nullable] public string? PropertyDescription { get; set; } // nvarchar(512)
			/// <summary>
			/// Internal property ID of the search property within the search property list identified by the <strong>property_list_id</strong> value.<br/><br/> When a given property is added to a given search property list, the Full-Text Engine registers the property and assigns it an internal property ID that is specific to that property list. The internal property ID, which is an integer, is unique to a given search property list. If a given property is registered for multiple search property lists, a different internal property ID might be assigned for each search property list.<br/><br/> Note: The internal property ID is distinct from the property integer identifier that is specified when adding the property to the search property list. For more information, see <a href='https://docs.microsoft.com/en-us/sql/relational-databases/search/search-document-properties-with-search-property-lists'>Search Document Properties with Search Property Lists</a>.<br/><br/> To view all property-related content in the full-text index: <br/>                  <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-dynamic-management-views/sys-dm-fts-index-keywords-by-property-transact-sql'>sys.dm_fts_index_keywords_by_property (Transact-SQL)</a>
			/// </summary>
			[Column("property_id"),          NotNull    ] public int     PropertyID          { get; set; } // int
		}

		/// <summary>
		/// <para><strong>sys.registered_search_property_lists (Transact-SQL)</strong></para>
		/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)</para>
		/// <para>Contains a row for each search property list on the current database.</para><br/>
		/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-registered-search-property-lists-transact-sql'>sys.registered_search_property_lists</a>.</para>
		/// </summary>
		[Table(Schema="sys", Name="registered_search_property_lists", IsView=true)]
		public partial class RegisteredSearchPropertyList
		{
			/// <summary>
			/// ID of the property list.
			/// </summary>
			[Column("property_list_id"), NotNull    ] public int      PropertyListID { get; set; } // int
			/// <summary>
			/// Name of the property list.
			/// </summary>
			[Column("name"),             NotNull    ] public string   Name           { get; set; } = null!; // sysname
			/// <summary>
			/// Date the property list was created.
			/// </summary>
			[Column("create_date"),      NotNull    ] public DateTime CreateDate     { get; set; } // datetime
			/// <summary>
			/// Date the property list was last modified by any ALTER statement.
			/// </summary>
			[Column("modify_date"),      NotNull    ] public DateTime ModifyDate     { get; set; } // datetime
			/// <summary>
			/// Owner of the property list.
			/// </summary>
			[Column("principal_id"),        Nullable] public int?     PrincipalID    { get; set; } // int
		}

		/// <summary>
		/// <para><strong>sys.fulltext_semantic_languages (Transact-SQL)</strong></para>
		/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)</para>
		/// <para>Returns a row for each language whose statistics model is registered with the instance of SQL Server. When a language model is registered, that language is enabled for semantic indexing.<br/>
		///  This catalog view is similar to <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-fulltext-languages-transact-sql'>sys.fulltext_languages (Transact-SQL)</a>.</para><br/>
		/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-fulltext-semantic-languages-transact-sql'>sys.fulltext_semantic_languages</a>.</para>
		/// </summary>
		[Table(Schema="sys", Name="fulltext_semantic_languages", IsView=true)]
		public partial class SemanticLanguage
		{
			/// <summary>
			/// Microsoft Windows locale identifier (LCID) for the language.
			/// </summary>
			[Column("lcid"), NotNull] public int    Lcid { get; set; } // int
			/// <summary>
			/// Is either the value of the alias in <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-compatibility-views/sys-syslanguages-transact-sql'>sys.syslanguages (Transact-SQL)</a> corresponding to the value of <strong>lcid</strong>, or the string representation of the numeric LCID.
			/// </summary>
			[Column("name"), NotNull] public string Name { get; set; } = null!; // sysname
		}

		/// <summary>
		/// <para><strong>sys.fulltext_semantic_language_statistics_database (Transact-SQL)</strong></para>
		/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)</para>
		/// <para>Returns a row about the semantic language statistics database installed on the current instance of SQL Server.<br/>
		///  You can query this view to find out about the semantic language statistics component required for semantic processing.</para><br/>
		/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-fulltext-semantic-language-statistics-database-transact-sql'>sys.fulltext_semantic_language_statistics_database</a>.</para>
		/// </summary>
		[Table(Schema="sys", Name="fulltext_semantic_language_statistics_database", IsView=true)]
		public partial class SemanticLanguageStatisticsDatabase
		{
			/// <summary>
			/// ID of the database, unique within an instance of SQL Server.
			/// </summary>
			[Column("database_id"),   NotNull] public int      DatabaseID   { get; set; } // int
			/// <summary>
			/// Date the database was registered for semantic processing.
			/// </summary>
			[Column("register_date"), NotNull] public DateTime RegisterDate { get; set; } // datetime
			/// <summary>
			/// ID of the server principal that registered the database for semantic processing.
			/// </summary>
			[Column("registered_by"), NotNull] public int      RegisteredBy { get; set; } // int
			/// <summary>
			/// The latest version information specific to the semantic language statistics database.
			/// </summary>
			[Column("version"),       NotNull] public string   Version      { get; set; } = null!; // nvarchar(128)
		}

		/// <summary>
		/// <para><strong>sys.fulltext_stoplists (Transact-SQL)</strong></para>
		/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)  √ Azure SQL Database</para>
		/// <para>Contains a row per full-text stoplist in the database.</para><br/>
		/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-fulltext-stoplists-transact-sql'>sys.fulltext_stoplists</a>.</para>
		/// </summary>
		[Table(Schema="sys", Name="fulltext_stoplists", IsView=true)]
		public partial class Stoplist
		{
			/// <summary>
			/// ID of the stoplist, unique within the database.
			/// </summary>
			[Column("stoplist_id"),  NotNull    ] public int      StoplistID  { get; set; } // int
			/// <summary>
			/// Name of the stoplist.
			/// </summary>
			[Column("name"),         NotNull    ] public string   Name        { get; set; } = null!; // sysname
			/// <summary>
			/// Date that stoplist was created.
			/// </summary>
			[Column("create_date"),  NotNull    ] public DateTime CreateDate  { get; set; } // datetime
			/// <summary>
			/// Date that stoplist was last modified using any ALTER statement.
			/// </summary>
			[Column("modify_date"),  NotNull    ] public DateTime ModifyDate  { get; set; } // datetime
			/// <summary>
			/// ID of the database principal that owns the stoplist.
			/// </summary>
			[Column("principal_id"),    Nullable] public int?     PrincipalID { get; set; } // int
		}

		/// <summary>
		/// <para><strong>sys.fulltext_stopwords (Transact-SQL)</strong></para>
		/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)  √ Azure SQL Database</para>
		/// <para>Contains a row per stopword for all stoplists in the database.</para><br/>
		/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-fulltext-stopwords-transact-sql'>sys.fulltext_stopwords</a>.</para>
		/// </summary>
		[Table(Schema="sys", Name="fulltext_stopwords", IsView=true)]
		public partial class StopWord
		{
			/// <summary>
			/// ID of the stoplist to which <strong>stopword</strong> belongs. This ID is  unique within the database.
			/// </summary>
			[Column("stoplist_id"), NotNull] public int    StoplistID     { get; set; } // int
			/// <summary>
			/// The term to be considered for a stop-word match.
			/// </summary>
			[Column("stopword"),    NotNull] public string StopWordColumn { get; set; } = null!; // nvarchar(64)
			/// <summary>
			/// Is either the value of the alias in <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-fulltext-languages-transact-sql'>sys.fulltext_languages</a>corresponding to the value of the locale identifier (<strong>LCID</strong>), or is the string representation of the numeric LCID.
			/// </summary>
			[Column("language"),    NotNull] public string Language       { get; set; } = null!; // sysname
			/// <summary>
			/// LCID used for word breaking.
			/// </summary>
			[Column("language_id"), NotNull] public int    LanguageID     { get; set; } // int
		}

		/// <summary>
		/// <para><strong>sys.fulltext_system_stopwords (Transact-SQL)</strong></para>
		/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)  √ Azure SQL Database</para>
		/// <para>Provides access to the system stoplist.</para><br/>
		/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-fulltext-system-stopwords-transact-sql'>sys.fulltext_system_stopwords</a>.</para>
		/// </summary>
		[Table(Schema="sys", Name="fulltext_system_stopwords", IsView=true)]
		public partial class SystemStopWord
		{
			/// <summary>
			/// The term that is considered for a stop-word match.
			/// </summary>
			[Column("stopword"),       Nullable] public string? StopWord   { get; set; } // nvarchar(64)
			/// <summary>
			/// Locale identifier (LCID) of the language. This LCID is used for word breaking.
			/// </summary>
			[Column("language_id"), NotNull    ] public int     LanguageID { get; set; } // int
		}
	}

	public static partial class InformationSchema
	{
		public partial class DataContext
		{
			/// <summary>
			/// <para><strong>CHECK_CONSTRAINTS (Transact-SQL)</strong></para>
			/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions) √ Azure SQL Database √ Azure SQL Managed Instance √ Azure Synapse Analytics √ Analytics Platform System (PDW)</para>
			/// <para>Returns one row for each CHECK constraint in the current database. This information schema view returns information about the objects to which the current user has permissions.<br/>
			/// To retrieve information from these views, specify the fully qualified name of <strong>INFORMATION_SCHEMA.</strong>_view_name_.</para><br/>
			/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-information-schema-views/check-constraints-transact-sql'>INFORMATION_SCHEMA.CHECK_CONSTRAINTS</a>.</para>
			/// </summary>
			public ITable<CheckConstraint>       CheckConstraints       { get { return _dataContext.GetTable<CheckConstraint>(); } }
			/// <summary>
			/// <para><strong>COLUMNS (Transact-SQL)</strong></para>
			/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions) √ Azure SQL Database √ Azure SQL Managed Instance √ Azure Synapse Analytics √ Analytics Platform System (PDW)</para>
			/// <para>Returns one row for each column that can be accessed by the current user in the current database.<br/>
			/// To retrieve information from these views, specify the fully qualified name of <strong>INFORMATION_SCHEMA</strong>_.view_name_.</para><br/>
			/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-information-schema-views/columns-transact-sql'>INFORMATION_SCHEMA.COLUMNS</a>.</para>
			/// </summary>
			public ITable<Column>                Columns                { get { return _dataContext.GetTable<Column>(); } }
			/// <summary>
			/// <para><strong>COLUMN_DOMAIN_USAGE (Transact-SQL)</strong></para>
			/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)  √ Azure SQL Database</para>
			/// <para>Returns one row for each column in the current database that has an alias data type. This information schema view returns information about the objects to which the current user has permissions.<br/>
			///  To retrieve information from these views, specify the fully qualified name of <strong>INFORMATION_SCHEMA.</strong>_view_name_.</para><br/>
			/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-information-schema-views/column-domain-usage-transact-sql'>INFORMATION_SCHEMA.COLUMN_DOMAIN_USAGE</a>.</para>
			/// </summary>
			public ITable<ColumnDomainUsage>     ColumnDomainUsages     { get { return _dataContext.GetTable<ColumnDomainUsage>(); } }
			/// <summary>
			/// <para><strong>COLUMN_PRIVILEGES (Transact-SQL)</strong></para>
			/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)  √ Azure SQL Database</para>
			/// <para>Returns one row for each column that has a privilege that is either granted to or granted by the current user in the current database.<br/>
			///  To retrieve information from these views, specify the fully qualified name of <strong>INFORMATION_SCHEMA.</strong>_view_name_.</para><br/>
			/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-information-schema-views/column-privileges-transact-sql'>INFORMATION_SCHEMA.COLUMN_PRIVILEGES</a>.</para>
			/// </summary>
			public ITable<ColumnPrivilege>       ColumnPrivileges       { get { return _dataContext.GetTable<ColumnPrivilege>(); } }
			/// <summary>
			/// <para><strong>CONSTRAINT_COLUMN_USAGE (Transact-SQL)</strong></para>
			/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)  √ Azure SQL Database</para>
			/// <para>Returns one row for each column in the current database that has a constraint defined on the column. This information schema view returns information about the objects to which the current user has permissions.<br/>
			///  To retrieve information from these views, specify the fully qualified name of <strong>INFORMATION_SCHEMA.</strong>_view_name_.</para><br/>
			/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-information-schema-views/constraint-column-usage-transact-sql'>INFORMATION_SCHEMA.CONSTRAINT_COLUMN_USAGE</a>.</para>
			/// </summary>
			public ITable<ConstraintColumnUsage> ConstraintColumnUsages { get { return _dataContext.GetTable<ConstraintColumnUsage>(); } }
			/// <summary>
			/// <para><strong>CONSTRAINT_TABLE_USAGE (Transact-SQL)</strong></para>
			/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)  √ Azure SQL Database</para>
			/// <para>Returns one row for each table in the current database that has a constraint defined on the table. This information schema view returns information about the objects to which the current user has permissions.<br/>
			///  To retrieve information from these views, specify the fully qualified name of <strong>INFORMATION_SCHEMA.</strong>_view_name_.</para><br/>
			/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-information-schema-views/constraint-table-usage-transact-sql'>INFORMATION_SCHEMA.CONSTRAINT_TABLE_USAGE</a>.</para>
			/// </summary>
			public ITable<ConstraintTableUsage>  ConstraintTableUsages  { get { return _dataContext.GetTable<ConstraintTableUsage>(); } }
			/// <summary>
			/// <para><strong>DOMAINS (Transact-SQL)</strong></para>
			/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)  √ Azure SQL Database</para>
			/// <para>Returns one row for each alias data type that can be accessed by the current user in the current database.<br/>
			///  To retrieve information from these views, specify the fully qualified name of <strong>INFORMATION_SCHEMA.</strong>_view_name_.</para><br/>
			/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-information-schema-views/domains-transact-sql'>INFORMATION_SCHEMA.DOMAINS</a>.</para>
			/// </summary>
			public ITable<Domain>                Domains                { get { return _dataContext.GetTable<Domain>(); } }
			/// <summary>
			/// <para><strong>DOMAIN_CONSTRAINTS (Transact-SQL)</strong></para>
			/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)  √ Azure SQL Database</para>
			/// <para>Returns one row for each alias data type in the current database that has a rule bound to it and that can be accessed by current user.<br/>
			///  To retrieve information from these views, specify the fully qualified name of <strong>INFORMATION_SCHEMA.</strong>_view_name_.</para><br/>
			/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-information-schema-views/domain-constraints-transact-sql'>INFORMATION_SCHEMA.DOMAIN_CONSTRAINTS</a>.</para>
			/// </summary>
			public ITable<DomainConstraint>      DomainConstraints      { get { return _dataContext.GetTable<DomainConstraint>(); } }
			/// <summary>
			/// <para><strong>KEY_COLUMN_USAGE (Transact-SQL)</strong></para>
			/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)  √ Azure SQL Database</para>
			/// <para>Returns one row for each column that is constrained as a key in the current database. This information schema view returns information about the objects to which the current user has permissions.<br/>
			///  To retrieve information from these views, specify the fully qualified name of <strong>INFORMATION_SCHEMA.</strong>_view_name_.</para><br/>
			/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-information-schema-views/key-column-usage-transact-sql'>INFORMATION_SCHEMA.KEY_COLUMN_USAGE</a>.</para>
			/// </summary>
			public ITable<KeyColumnUsage>        KeyColumnUsages        { get { return _dataContext.GetTable<KeyColumnUsage>(); } }
			/// <summary>
			/// <para><strong>PARAMETERS (Transact-SQL)</strong></para>
			/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions) √ Azure SQL Database √ Azure SQL Managed Instance √ Azure Synapse Analytics √ Analytics Platform System (PDW)</para>
			/// <para>Returns one row for each parameter of a user-defined function or stored procedure that can be accessed by the current user in the current database. For functions, this view also returns one row with return value information.<br/>
			///  To retrieve information from these views, specify the fully qualified name of <strong>INFORMATION_SCHEMA.</strong>_view_name_.</para><br/>
			/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-information-schema-views/parameters-transact-sql'>INFORMATION_SCHEMA.PARAMETERS</a>.</para>
			/// </summary>
			public ITable<Parameter>             Parameters             { get { return _dataContext.GetTable<Parameter>(); } }
			/// <summary>
			/// <para><strong>REFERENTIAL_CONSTRAINTS (Transact-SQL)</strong></para>
			/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)  √ Azure SQL Database</para>
			/// <para>Returns one row for each FOREIGN KEY constraint in the current database. This information schema view returns information about the objects to which the current user has permissions.<br/>
			///  To retrieve information from these views, specify the fully qualified name of <strong>INFORMATION_SCHEMA.</strong>_view_name_.</para><br/>
			/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-information-schema-views/referential-constraints-transact-sql'>INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS</a>.</para>
			/// </summary>
			public ITable<ReferentialConstraint> ReferentialConstraints { get { return _dataContext.GetTable<ReferentialConstraint>(); } }
			/// <summary>
			/// <para><strong>ROUTINES (Transact-SQL)</strong></para>
			/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions) √ Azure SQL Database √ Azure SQL Managed Instance √ Azure Synapse Analytics √ Analytics Platform System (PDW)</para>
			/// <para>Returns one row for each stored procedure and function that can be accessed by the current user in the current database. The columns that describe the return value apply only to functions. For stored procedures, these columns will be NULL.<br/>
			///  To retrieve information from these views, specify the fully qualified name of INFORMATION_SCHEMA.*view_name*.<br/>
			/// <note type='note'><br/>
			/// The ROUTINE_DEFINITION column contains the source statements that created the function or stored procedure. These source statements are likely to contain embedded carriage returns. If you are returning this column to an application that displays the results in a text format, the embedded carriage returns in the ROUTINE_DEFINITION results may affect the formatting of the overall result set. If you select the ROUTINE_DEFINITION column, you must adjust for the embedded carriage returns; for example, by returning the result set into a grid or returning ROUTINE_DEFINITION into its own text box.<br/>
			/// </note></para><br/>
			/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-information-schema-views/routines-transact-sql'>INFORMATION_SCHEMA.ROUTINES</a>.</para>
			/// </summary>
			public ITable<Routine>               Routines               { get { return _dataContext.GetTable<Routine>(); } }
			/// <summary>
			/// <para><strong>ROUTINE_COLUMNS (Transact-SQL)</strong></para>
			/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)  √ Azure SQL Database</para>
			/// <para>Returns one row for each column returned by the table-valued functions that can be accessed by the current user in the current database.<br/>
			///  To retrieve information from this view, specify the fully qualified name of <strong>INFORMATION_SCHEMA.</strong>_view_name_.</para><br/>
			/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-information-schema-views/routine-columns-transact-sql'>INFORMATION_SCHEMA.ROUTINE_COLUMNS</a>.</para>
			/// </summary>
			public ITable<RoutineColumn>         RoutineColumns         { get { return _dataContext.GetTable<RoutineColumn>(); } }
			/// <summary>
			/// <para><strong>SCHEMATA (Transact-SQL)</strong></para>
			/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions) √ Azure SQL Database √ Azure SQL Managed Instance √ Azure Synapse Analytics √ Analytics Platform System (PDW)</para>
			/// <para>Returns one row for each schema in the current database. To retrieve information from these views, specify the fully qualified name of <strong>INFORMATION_SCHEMA.</strong>_view_name_. To retrieve information about all databases in an instance of SQL Server, query the <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-databases-transact-sql'>sys.databases (Transact-SQL)</a> catalog view.</para><br/>
			/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-information-schema-views/schemata-transact-sql'>INFORMATION_SCHEMA.SCHEMATA</a>.</para>
			/// </summary>
			public ITable<Schema>                Schemata               { get { return _dataContext.GetTable<Schema>(); } }
			/// <summary>
			/// <para><strong>TABLES (Transact-SQL)</strong></para>
			/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions) √ Azure SQL Database √ Azure SQL Managed Instance √ Azure Synapse Analytics √ Analytics Platform System (PDW)</para>
			/// <para>Returns one row for each table or view in the current database for which the current user has permissions.<br/>
			/// To retrieve information from these views, specify the fully qualified name of <strong>INFORMATION_SCHEMA.</strong>_view_name_.</para><br/>
			/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-information-schema-views/tables-transact-sql'>INFORMATION_SCHEMA.TABLES</a>.</para>
			/// </summary>
			public ITable<Table>                 Tables                 { get { return _dataContext.GetTable<Table>(); } }
			/// <summary>
			/// <para><strong>TABLE_CONSTRAINTS (Transact-SQL)</strong></para>
			/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)  √ Azure SQL Database</para>
			/// <para>Returns one row for each table constraint in the current database. This information schema view returns information about the objects to which the current user has permissions.<br/>
			///  To retrieve information from these views, specify the fully qualified name of <strong>INFORMATION_SCHEMA.</strong>_view_name_.</para><br/>
			/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-information-schema-views/table-constraints-transact-sql'>INFORMATION_SCHEMA.TABLE_CONSTRAINTS</a>.</para>
			/// </summary>
			public ITable<TableConstraint>       TableConstraints       { get { return _dataContext.GetTable<TableConstraint>(); } }
			/// <summary>
			/// <para><strong>TABLE_PRIVILEGES (Transact-SQL)</strong></para>
			/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)  √ Azure SQL Database</para>
			/// <para>Returns one row for each table privilege that is granted to or granted by the current user in the current database.<br/>
			///  To retrieve information from these views, specify the fully qualified name of <strong>INFORMATION_SCHEMA.</strong>_view_name_.</para><br/>
			/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-information-schema-views/table-privileges-transact-sql'>INFORMATION_SCHEMA.TABLE_PRIVILEGES</a>.</para>
			/// </summary>
			public ITable<TablePrivilege>        TablePrivileges        { get { return _dataContext.GetTable<TablePrivilege>(); } }
			/// <summary>
			/// <para><strong>VIEWS (Transact-SQL)</strong></para>
			/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions) √ Azure SQL Database √ Azure SQL Managed Instance √ Azure Synapse Analytics √ Analytics Platform System (PDW)</para>
			/// <para>Returns one row for views that can be accessed by the current user in the current database.<br/>
			/// To retrieve information from these views, specify the fully qualified name of <strong>INFORMATION_SCHEMA.</strong>_view_name_.</para><br/>
			/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-information-schema-views/views-transact-sql'>INFORMATION_SCHEMA.VIEWS</a>.</para>
			/// </summary>
			public ITable<View>                  Views                  { get { return _dataContext.GetTable<View>(); } }
			/// <summary>
			/// <para><strong>VIEW_COLUMN_USAGE (Transact-SQL)</strong></para>
			/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions) √ Azure SQL Database √ Azure SQL Managed Instance √ Azure Synapse Analytics √ Analytics Platform System (PDW)</para>
			/// <para>Returns one row for each column in the current database that is used in a view definition. This information schema view returns information about the objects to which the current user has permissions.<br/>
			///  To retrieve information from these views, specify the fully qualified name of <strong>INFORMATION_SCHEMA.</strong>_view_name_.</para><br/>
			/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-information-schema-views/view-column-usage-transact-sql'>INFORMATION_SCHEMA.VIEW_COLUMN_USAGE</a>.</para>
			/// </summary>
			public ITable<ViewColumnUsage>       ViewColumnUsages       { get { return _dataContext.GetTable<ViewColumnUsage>(); } }
			/// <summary>
			/// <para><strong>VIEW_TABLE_USAGE (Transact-SQL)</strong></para>
			/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions) √ Azure SQL Database √ Azure SQL Managed Instance √ Azure Synapse Analytics √ Analytics Platform System (PDW)</para>
			/// <para>Returns one row for each table in the current database that is used in a view. This information schema view returns information about the objects to which the current user has permissions.<br/>
			///  To retrieve information from these views, specify the fully qualified name of <strong>INFORMATION_SCHEMA.</strong>_view_name_.</para><br/>
			/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-information-schema-views/view-table-usage-transact-sql'>INFORMATION_SCHEMA.VIEW_TABLE_USAGE</a>.</para>
			/// </summary>
			public ITable<ViewTableUsage>        ViewTableUsages        { get { return _dataContext.GetTable<ViewTableUsage>(); } }

			private readonly IDataContext _dataContext;

			public DataContext(IDataContext dataContext)
			{
				_dataContext = dataContext;
			}
		}

		/// <summary>
		/// <para><strong>CHECK_CONSTRAINTS (Transact-SQL)</strong></para>
		/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions) √ Azure SQL Database √ Azure SQL Managed Instance √ Azure Synapse Analytics √ Analytics Platform System (PDW)</para>
		/// <para>Returns one row for each CHECK constraint in the current database. This information schema view returns information about the objects to which the current user has permissions.<br/>
		/// To retrieve information from these views, specify the fully qualified name of <strong>INFORMATION_SCHEMA.</strong>_view_name_.</para><br/>
		/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-information-schema-views/check-constraints-transact-sql'>INFORMATION_SCHEMA.CHECK_CONSTRAINTS</a>.</para>
		/// </summary>
		[Table(Schema="INFORMATION_SCHEMA", Name="CHECK_CONSTRAINTS", IsView=true)]
		public partial class CheckConstraint
		{
			/// <summary>
			/// Constraint qualifier.
			/// </summary>
			[Column("CONSTRAINT_CATALOG"),    Nullable] public string? ConstraintCatalog { get; set; } // nvarchar(
			/// <summary>
			/// Name of the schema to which the constraint belongs.<br/><br/> <strong> Important </strong> Do not use INFORMATION_SCHEMA views to determine the schema of an object. INFORMATION_SCHEMA views only represent a subset of the metadata of an object. The only reliable way to find the schema of a object is to query the sys.objects catalog view.
			/// </summary>
			[Column("CONSTRAINT_SCHEMA"),     Nullable] public string? ConstraintSchema  { get; set; } // nvarchar(
			/// <summary>
			/// Constraint name.
			/// </summary>
			[Column("CONSTRAINT_NAME"),    NotNull    ] public string  ConstraintName    { get; set; } = null!; // sysname
			/// <summary>
			/// Actual text of the Transact\-SQL definition statement.
			/// </summary>
			[Column("CHECK_CLAUSE"),          Nullable] public string? CheckClause       { get; set; } // nvarchar(
		}

		/// <summary>
		/// <para><strong>COLUMNS (Transact-SQL)</strong></para>
		/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions) √ Azure SQL Database √ Azure SQL Managed Instance √ Azure Synapse Analytics √ Analytics Platform System (PDW)</para>
		/// <para>Returns one row for each column that can be accessed by the current user in the current database.<br/>
		/// To retrieve information from these views, specify the fully qualified name of <strong>INFORMATION_SCHEMA</strong>_.view_name_.</para><br/>
		/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-information-schema-views/columns-transact-sql'>INFORMATION_SCHEMA.COLUMNS</a>.</para>
		/// </summary>
		[Table(Schema="INFORMATION_SCHEMA", Name="COLUMNS", IsView=true)]
		public partial class Column
		{
			/// <summary>
			/// Table qualifier.
			/// </summary>
			[Column("TABLE_CATALOG"),               Nullable] public string? TableCatalog           { get; set; } // nvarchar(
			/// <summary>
			/// Name of schema that contains the table.<br/><br/> <strong> Important </strong> Do not use INFORMATION_SCHEMA views to determine the schema of an object. INFORMATION_SCHEMA views only represent a subset of the metadata of an object. The only reliable way to find the schema of a object is to query the sys.objects catalog view.
			/// </summary>
			[Column("TABLE_SCHEMA"),                Nullable] public string? TableSchema            { get; set; } // nvarchar(
			/// <summary>
			/// Table name.
			/// </summary>
			[Column("TABLE_NAME"),               NotNull    ] public string  TableName              { get; set; } = null!; // nvarchar(
			/// <summary>
			/// Column name.
			/// </summary>
			[Column("COLUMN_NAME"),                 Nullable] public string? ColumnName             { get; set; } // nvarchar(
			/// <summary>
			/// Column identification number.
			/// </summary>
			[Column("ORDINAL_POSITION"),            Nullable] public int?    OrdinalPosition        { get; set; } // int
			/// <summary>
			/// Default value of the column.
			/// </summary>
			[Column("COLUMN_DEFAULT"),              Nullable] public string? ColumnDefault          { get; set; } // nvarchar(
			/// <summary>
			/// Nullability of the column. If this column allows for NULL, this column returns YES. Otherwise, NO is returned.
			/// </summary>
			[Column("IS_NULLABLE"),                 Nullable] public string? IsNullable             { get; set; } // varchar(
			/// <summary>
			/// System-supplied data type.
			/// </summary>
			[Column("DATA_TYPE"),                   Nullable] public string? DataType               { get; set; } // nvarchar(
			/// <summary>
			/// Maximum length, in characters, for binary data, character data, or text and image data.<br/><br/> -1 for <strong>xml</strong> and large-value type data. Otherwise, NULL is returned. For more information, see <a href='https://docs.microsoft.com/en-us/sql/t-sql/data-types/data-types-transact-sql'>Data Types (Transact-SQL)</a>.
			/// </summary>
			[Column("CHARACTER_MAXIMUM_LENGTH"),    Nullable] public int?    CharacterMaximumLength { get; set; } // int
			/// <summary>
			/// Maximum length, in bytes, for binary data, character data, or text and image data.<br/><br/> -1 for <strong>xml</strong> and large-value type data. Otherwise, NULL is returned.
			/// </summary>
			[Column("CHARACTER_OCTET_LENGTH"),      Nullable] public int?    CharacterOctetLength   { get; set; } // int
			/// <summary>
			/// Precision of approximate numeric data, exact numeric data, integer data, or monetary data. Otherwise, NULL is returned.
			/// </summary>
			[Column("NUMERIC_PRECISION"),           Nullable] public byte?   NumericPrecision       { get; set; } // tinyint
			/// <summary>
			/// Precision radix of approximate numeric data, exact numeric data, integer data, or monetary data. Otherwise, NULL is returned.
			/// </summary>
			[Column("NUMERIC_PRECISION_RADIX"),     Nullable] public short?  NumericPrecisionRadix  { get; set; } // smallint
			/// <summary>
			/// Scale of approximate numeric data, exact numeric data, integer data, or monetary data. Otherwise, NULL is returned.
			/// </summary>
			[Column("NUMERIC_SCALE"),               Nullable] public int?    NumericScale           { get; set; } // int
			/// <summary>
			/// Subtype code for <strong>datetime</strong> and ISO <strong>interval</strong> data types. For other data types, NULL is returned.
			/// </summary>
			[Column("DATETIME_PRECISION"),          Nullable] public short?  DatetimePrecision      { get; set; } // smallint
			/// <summary>
			/// Returns <strong>master</strong>. This indicates the database in which the character set is located, if the column is character data or <strong>text</strong> data type. Otherwise, NULL is returned.
			/// </summary>
			[Column("CHARACTER_SET_CATALOG"),       Nullable] public string? CharacterSetCatalog    { get; set; } // nvarchar(
			/// <summary>
			/// Always returns NULL.
			/// </summary>
			[Column("CHARACTER_SET_SCHEMA"),        Nullable] public string? CharacterSetSchema     { get; set; } // nvarchar(
			/// <summary>
			/// Returns the unique name for the character set if this column is character data or <strong>text</strong> data type. Otherwise, NULL is returned.
			/// </summary>
			[Column("CHARACTER_SET_NAME"),          Nullable] public string? CharacterSetName       { get; set; } // nvarchar(
			/// <summary>
			/// Always returns NULL.
			/// </summary>
			[Column("COLLATION_CATALOG"),           Nullable] public string? CollationCatalog       { get; set; } // nvarchar(
			/// <summary>
			/// Always returns NULL.
			/// </summary>
			[Column("COLLATION_SCHEMA"),            Nullable] public string? CollationSchema        { get; set; } // nvarchar(
			/// <summary>
			/// Returns the unique name for the collation if the column is character data or <strong>text</strong> data type. Otherwise, NULL is returned.
			/// </summary>
			[Column("COLLATION_NAME"),              Nullable] public string? CollationName          { get; set; } // nvarchar(
			/// <summary>
			/// If the column is an alias data type, this column is the database name in which the user-defined data type was created. Otherwise, NULL is returned.
			/// </summary>
			[Column("DOMAIN_CATALOG"),              Nullable] public string? DomainCatalog          { get; set; } // nvarchar(
			/// <summary>
			/// If the column is a user-defined data type, this column returns the name of the schema of the user-defined data type. Otherwise, NULL is returned.<br/><br/> <strong> Important </strong> Do not use INFORMATION_SCHEMA views to determine the schema of a data type. The only reliable way to find the schema of a type is to use the TYPEPROPERTY function.
			/// </summary>
			[Column("DOMAIN_SCHEMA"),               Nullable] public string? DomainSchema           { get; set; } // nvarchar(
			/// <summary>
			/// If the column is a user-defined data type, this column is the name of the user-defined data type. Otherwise, NULL is returned.
			/// </summary>
			[Column("DOMAIN_NAME"),                 Nullable] public string? DomainName             { get; set; } // nvarchar(
		}

		/// <summary>
		/// <para><strong>COLUMN_DOMAIN_USAGE (Transact-SQL)</strong></para>
		/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)  √ Azure SQL Database</para>
		/// <para>Returns one row for each column in the current database that has an alias data type. This information schema view returns information about the objects to which the current user has permissions.<br/>
		///  To retrieve information from these views, specify the fully qualified name of <strong>INFORMATION_SCHEMA.</strong>_view_name_.</para><br/>
		/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-information-schema-views/column-domain-usage-transact-sql'>INFORMATION_SCHEMA.COLUMN_DOMAIN_USAGE</a>.</para>
		/// </summary>
		[Table(Schema="INFORMATION_SCHEMA", Name="COLUMN_DOMAIN_USAGE", IsView=true)]
		public partial class ColumnDomainUsage
		{
			/// <summary>
			/// Database in which the alias data type exists.
			/// </summary>
			[Column("DOMAIN_CATALOG"),    Nullable] public string? DomainCatalog { get; set; } // nvarchar(
			/// <summary>
			/// Name of schema that contains the alias data type.<br/><br/> <strong> Important </strong> Do not use INFORMATION_SCHEMA views to determine the schema of a data type. The only reliable way to find the schema of a type is to use the TYPEPROPERTY function.
			/// </summary>
			[Column("DOMAIN_SCHEMA"),     Nullable] public string? DomainSchema  { get; set; } // nvarchar(
			/// <summary>
			/// Alias data type.
			/// </summary>
			[Column("DOMAIN_NAME"),    NotNull    ] public string  DomainName    { get; set; } = null!; // sysname
			/// <summary>
			/// Table qualifier.
			/// </summary>
			[Column("TABLE_CATALOG"),     Nullable] public string? TableCatalog  { get; set; } // nvarchar(
			/// <summary>
			/// Table owner.<br/><br/> <strong> Important </strong> Do not use INFORMATION_SCHEMA views to determine the schema of an object. INFORMATION_SCHEMA views only represent a subset of the metadata of an object. The only reliable way to find the schema of a object is to query the sys.objects catalog view.
			/// </summary>
			[Column("TABLE_SCHEMA"),      Nullable] public string? TableSchema   { get; set; } // nvarchar(
			/// <summary>
			/// Table in which the alias  data type is used.
			/// </summary>
			[Column("TABLE_NAME"),     NotNull    ] public string  TableName     { get; set; } = null!; // sysname
			/// <summary>
			/// Column using the alias data type.
			/// </summary>
			[Column("COLUMN_NAME"),       Nullable] public string? ColumnName    { get; set; } // sysname
		}

		/// <summary>
		/// <para><strong>COLUMN_PRIVILEGES (Transact-SQL)</strong></para>
		/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)  √ Azure SQL Database</para>
		/// <para>Returns one row for each column that has a privilege that is either granted to or granted by the current user in the current database.<br/>
		///  To retrieve information from these views, specify the fully qualified name of <strong>INFORMATION_SCHEMA.</strong>_view_name_.</para><br/>
		/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-information-schema-views/column-privileges-transact-sql'>INFORMATION_SCHEMA.COLUMN_PRIVILEGES</a>.</para>
		/// </summary>
		[Table(Schema="INFORMATION_SCHEMA", Name="COLUMN_PRIVILEGES", IsView=true)]
		public partial class ColumnPrivilege
		{
			/// <summary>
			/// Privilege grantor.
			/// </summary>
			[Column("GRANTOR"),           Nullable] public string? Grantor       { get; set; } // nvarchar(
			/// <summary>
			/// Privilege grantee.
			/// </summary>
			[Column("GRANTEE"),           Nullable] public string? Grantee       { get; set; } // nvarchar(
			/// <summary>
			/// Table qualifier.
			/// </summary>
			[Column("TABLE_CATALOG"),     Nullable] public string? TableCatalog  { get; set; } // nvarchar(
			/// <summary>
			/// Name of schema that contains the table.<br/><br/> <strong> Important </strong> Do not use INFORMATION_SCHEMA views to determine the schema of an object. INFORMATION_SCHEMA views only represent a subset of the metadata of an object. The only reliable way to find the schema of a object is to query the sys.objects catalog view.
			/// </summary>
			[Column("TABLE_SCHEMA"),      Nullable] public string? TableSchema   { get; set; } // nvarchar(
			/// <summary>
			/// Table name.
			/// </summary>
			[Column("TABLE_NAME"),     NotNull    ] public string  TableName     { get; set; } = null!; // sysname
			/// <summary>
			/// Column name.
			/// </summary>
			[Column("COLUMN_NAME"),       Nullable] public string? ColumnName    { get; set; } // sysname
			/// <summary>
			/// Type of privilege.
			/// </summary>
			[Column("PRIVILEGE_TYPE"),    Nullable] public string? PrivilegeType { get; set; } // varchar(
			/// <summary>
			/// Specifies whether the grantee can grant permissions to others.
			/// </summary>
			[Column("IS_GRANTABLE"),      Nullable] public string? IsGrantable   { get; set; } // varchar(
		}

		/// <summary>
		/// <para><strong>CONSTRAINT_COLUMN_USAGE (Transact-SQL)</strong></para>
		/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)  √ Azure SQL Database</para>
		/// <para>Returns one row for each column in the current database that has a constraint defined on the column. This information schema view returns information about the objects to which the current user has permissions.<br/>
		///  To retrieve information from these views, specify the fully qualified name of <strong>INFORMATION_SCHEMA.</strong>_view_name_.</para><br/>
		/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-information-schema-views/constraint-column-usage-transact-sql'>INFORMATION_SCHEMA.CONSTRAINT_COLUMN_USAGE</a>.</para>
		/// </summary>
		[Table(Schema="INFORMATION_SCHEMA", Name="CONSTRAINT_COLUMN_USAGE", IsView=true)]
		public partial class ConstraintColumnUsage
		{
			/// <summary>
			/// Table qualifier.
			/// </summary>
			[Column("TABLE_CATALOG"),         Nullable] public string? TableCatalog      { get; set; } // nvarchar(
			/// <summary>
			/// Name of schema that contains the table owner.<br/><br/> <strong> Important </strong> Do not use INFORMATION_SCHEMA views to determine the schema of an object. INFORMATION_SCHEMA views only represent a subset of the metadata of an object. The only reliable way to find the schema of a object is to query the sys.objects catalog view.
			/// </summary>
			[Column("TABLE_SCHEMA"),          Nullable] public string? TableSchema       { get; set; } // nvarchar(
			/// <summary>
			/// Table name.
			/// </summary>
			[Column("TABLE_NAME"),         NotNull    ] public string  TableName         { get; set; } = null!; // nvarchar(
			/// <summary>
			/// Column name.
			/// </summary>
			[Column("COLUMN_NAME"),           Nullable] public string? ColumnName        { get; set; } // nvarchar(
			/// <summary>
			/// Constraint qualifier.
			/// </summary>
			[Column("CONSTRAINT_CATALOG"),    Nullable] public string? ConstraintCatalog { get; set; } // nvarchar(
			/// <summary>
			/// Name of schema that contains the constraint.<br/><br/> <strong> Important </strong> Do not use INFORMATION_SCHEMA views to determine the schema of an object. INFORMATION_SCHEMA views only represent a subset of the metadata of an object. The only reliable way to find the schema of a object is to query the sys.objects catalog view.
			/// </summary>
			[Column("CONSTRAINT_SCHEMA"),     Nullable] public string? ConstraintSchema  { get; set; } // nvarchar(
			/// <summary>
			/// Constraint name.
			/// </summary>
			[Column("CONSTRAINT_NAME"),    NotNull    ] public string  ConstraintName    { get; set; } = null!; // nvarchar(
		}

		/// <summary>
		/// <para><strong>CONSTRAINT_TABLE_USAGE (Transact-SQL)</strong></para>
		/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)  √ Azure SQL Database</para>
		/// <para>Returns one row for each table in the current database that has a constraint defined on the table. This information schema view returns information about the objects to which the current user has permissions.<br/>
		///  To retrieve information from these views, specify the fully qualified name of <strong>INFORMATION_SCHEMA.</strong>_view_name_.</para><br/>
		/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-information-schema-views/constraint-table-usage-transact-sql'>INFORMATION_SCHEMA.CONSTRAINT_TABLE_USAGE</a>.</para>
		/// </summary>
		[Table(Schema="INFORMATION_SCHEMA", Name="CONSTRAINT_TABLE_USAGE", IsView=true)]
		public partial class ConstraintTableUsage
		{
			/// <summary>
			/// Table qualifier.
			/// </summary>
			[Column("TABLE_CATALOG"),         Nullable] public string? TableCatalog      { get; set; } // nvarchar(
			/// <summary>
			/// Name of schema that contains the table.<br/><br/> <strong> Important </strong> Do not use INFORMATION_SCHEMA views to determine the schema of an object. INFORMATION_SCHEMA views only represent a subset of the metadata of an object. The only reliable way to find the schema of a object is to query the sys.objects catalog view.
			/// </summary>
			[Column("TABLE_SCHEMA"),          Nullable] public string? TableSchema       { get; set; } // nvarchar(
			/// <summary>
			/// Table name.
			/// </summary>
			[Column("TABLE_NAME"),         NotNull    ] public string  TableName         { get; set; } = null!; // sysname
			/// <summary>
			/// Constraint qualifier.
			/// </summary>
			[Column("CONSTRAINT_CATALOG"),    Nullable] public string? ConstraintCatalog { get; set; } // nvarchar(
			/// <summary>
			/// Name of schema that contains the constraint.<br/><br/> <strong> Important </strong> Do not use INFORMATION_SCHEMA views to determine the schema of an object. INFORMATION_SCHEMA views only represent a subset of the metadata of an object. The only reliable way to find the schema of a object is to query the sys.objects catalog view.
			/// </summary>
			[Column("CONSTRAINT_SCHEMA"),     Nullable] public string? ConstraintSchema  { get; set; } // nvarchar(
			/// <summary>
			/// Constraint name.
			/// </summary>
			[Column("CONSTRAINT_NAME"),    NotNull    ] public string  ConstraintName    { get; set; } = null!; // sysname
		}

		/// <summary>
		/// <para><strong>DOMAINS (Transact-SQL)</strong></para>
		/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)  √ Azure SQL Database</para>
		/// <para>Returns one row for each alias data type that can be accessed by the current user in the current database.<br/>
		///  To retrieve information from these views, specify the fully qualified name of <strong>INFORMATION_SCHEMA.</strong>_view_name_.</para><br/>
		/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-information-schema-views/domains-transact-sql'>INFORMATION_SCHEMA.DOMAINS</a>.</para>
		/// </summary>
		[Table(Schema="INFORMATION_SCHEMA", Name="DOMAINS", IsView=true)]
		public partial class Domain
		{
			/// <summary>
			/// Database in which the alias data type exists.
			/// </summary>
			[Column("DOMAIN_CATALOG"),              Nullable] public string? DomainCatalog          { get; set; } // nvarchar(
			/// <summary>
			/// Name of the schema that contains the alias data type.<br/><br/> <strong> Important </strong> Do not use INFORMATION_SCHEMA views to determine the schema of a data type. The only reliable way to find the schema of a type is to use the TYPEPROPERTY function.
			/// </summary>
			[Column("DOMAIN_SCHEMA"),               Nullable] public string? DomainSchema           { get; set; } // nvarchar(
			/// <summary>
			/// Alias data type.
			/// </summary>
			[Column("DOMAIN_NAME"),              NotNull    ] public string  DomainName             { get; set; } = null!; // sysname
			/// <summary>
			/// System-supplied data type.
			/// </summary>
			[Column("DATA_TYPE"),                   Nullable] public string? DataType               { get; set; } // sysname
			/// <summary>
			/// Maximum length, in characters, for binary data, character data, or text and image data.<br/><br/> -1 for <strong>xml</strong> and large-value type data. Otherwise, NULL is returned. For more information, see <a href='https://docs.microsoft.com/en-us/sql/t-sql/data-types/data-types-transact-sql'>Data Types (Transact-SQL)</a>.
			/// </summary>
			[Column("CHARACTER_MAXIMUM_LENGTH"),    Nullable] public int?    CharacterMaximumLength { get; set; } // int
			/// <summary>
			/// Maximum length, in bytes, for binary data, character data, or text and image data.<br/><br/> -1 for <strong>xml</strong> and large-value type data. Otherwise, NULL is returned.
			/// </summary>
			[Column("CHARACTER_OCTET_LENGTH"),      Nullable] public int?    CharacterOctetLength   { get; set; } // int
			/// <summary>
			/// Always returns NULL.
			/// </summary>
			[Column("COLLATION_CATALOG"),           Nullable] public string? CollationCatalog       { get; set; } // varchar(
			/// <summary>
			/// Always returns NULL.
			/// </summary>
			[Column("COLLATION_SCHEMA"),            Nullable] public string? CollationSchema        { get; set; } // varchar(
			/// <summary>
			/// Returns the unique name for the sort order if the column is character data or <strong>text</strong> data type. Otherwise, NULL is returned.
			/// </summary>
			[Column("COLLATION_NAME"),              Nullable] public string? CollationName          { get; set; } // nvarchar(
			/// <summary>
			/// Returns <strong>master</strong>. This indicates the database in which the character set is located, if the column is character data or <strong>text</strong> data type. Otherwise, NULL is returned.
			/// </summary>
			[Column("CHARACTER_SET_CATALOG"),       Nullable] public string? CharacterSetCatalog    { get; set; } // varchar(
			/// <summary>
			/// Always returns NULL.
			/// </summary>
			[Column("CHARACTER_SET_SCHEMA"),        Nullable] public string? CharacterSetSchema     { get; set; } // varchar(
			/// <summary>
			/// Returns the unique name for the character set if this column is character data or <strong>text</strong> data type. Otherwise, NULL is returned.
			/// </summary>
			[Column("CHARACTER_SET_NAME"),          Nullable] public string? CharacterSetName       { get; set; } // nvarchar(
			/// <summary>
			/// Precision of approximate numeric data, exact numeric data, integer data, or monetary data. Otherwise, NULL is returned.
			/// </summary>
			[Column("NUMERIC_PRECISION"),           Nullable] public byte?   NumericPrecision       { get; set; } // tinyint
			/// <summary>
			/// Precision radix of approximate numeric data, exact numeric data, integer data, or monetary data. Otherwise, NULL is returned.
			/// </summary>
			[Column("NUMERIC_PRECISION_RADIX"),     Nullable] public short?  NumericPrecisionRadix  { get; set; } // smallint
			/// <summary>
			/// Scale of approximate numeric data, exact numeric data, integer data, or monetary data. Otherwise, NULL is returned.
			/// </summary>
			[Column("NUMERIC_SCALE"),               Nullable] public byte?   NumericScale           { get; set; } // tinyint
			/// <summary>
			/// Subtype code for <strong>datetime</strong> and ISO <strong>interval</strong> data type. For other data types, this column returns a NULL.
			/// </summary>
			[Column("DATETIME_PRECISION"),          Nullable] public short?  DatetimePrecision      { get; set; } // smallint
			/// <summary>
			/// Actual text of the definition Transact\-SQL statement.
			/// </summary>
			[Column("DOMAIN_DEFAULT"),              Nullable] public string? DomainDefault          { get; set; } // nvarchar(
		}

		/// <summary>
		/// <para><strong>DOMAIN_CONSTRAINTS (Transact-SQL)</strong></para>
		/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)  √ Azure SQL Database</para>
		/// <para>Returns one row for each alias data type in the current database that has a rule bound to it and that can be accessed by current user.<br/>
		///  To retrieve information from these views, specify the fully qualified name of <strong>INFORMATION_SCHEMA.</strong>_view_name_.</para><br/>
		/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-information-schema-views/domain-constraints-transact-sql'>INFORMATION_SCHEMA.DOMAIN_CONSTRAINTS</a>.</para>
		/// </summary>
		[Table(Schema="INFORMATION_SCHEMA", Name="DOMAIN_CONSTRAINTS", IsView=true)]
		public partial class DomainConstraint
		{
			/// <summary>
			/// Database in which the rule exists.
			/// </summary>
			[Column("CONSTRAINT_CATALOG"),    Nullable] public string? ConstraintCatalog { get; set; } // nvarchar(
			/// <summary>
			/// Name of schema that contains the constraint.<br/><br/> <strong> Important </strong> Do not use INFORMATION_SCHEMA views to determine the schema of an object. INFORMATION_SCHEMA views only represent a subset of the metadata of an object. The only reliable way to find the schema of a object is to query the sys.objects catalog view.
			/// </summary>
			[Column("CONSTRAINT_SCHEMA"),     Nullable] public string? ConstraintSchema  { get; set; } // nvarchar(
			/// <summary>
			/// Rule name.
			/// </summary>
			[Column("CONSTRAINT_NAME"),    NotNull    ] public string  ConstraintName    { get; set; } = null!; // sysname
			/// <summary>
			/// Database in which the alias data type exists.
			/// </summary>
			[Column("DOMAIN_CATALOG"),        Nullable] public string? DomainCatalog     { get; set; } // nvarchar(
			/// <summary>
			/// Name of schema that contains the alias data type.<br/><br/> <strong> Important </strong> Do not use INFORMATION_SCHEMA views to determine the schema of a data type. The only reliable way to find the schema of a type is to use the TYPEPROPERTY function.
			/// </summary>
			[Column("DOMAIN_SCHEMA"),         Nullable] public string? DomainSchema      { get; set; } // nvarchar(
			/// <summary>
			/// Alias data type.
			/// </summary>
			[Column("DOMAIN_NAME"),        NotNull    ] public string  DomainName        { get; set; } = null!; // sysname
			/// <summary>
			/// Specifies whether constraint checking is deferrable. Always returns NO.
			/// </summary>
			[Column("IS_DEFERRABLE"),      NotNull    ] public string  IsDeferrable      { get; set; } = null!; // varchar(
			/// <summary>
			/// Specifies whether constraint checking is at first deferred. Always returns NO.
			/// </summary>
			[Column("INITIALLY_DEFERRED"), NotNull    ] public string  InitiallyDeferred { get; set; } = null!; // varchar(
		}

		/// <summary>
		/// <para><strong>KEY_COLUMN_USAGE (Transact-SQL)</strong></para>
		/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)  √ Azure SQL Database</para>
		/// <para>Returns one row for each column that is constrained as a key in the current database. This information schema view returns information about the objects to which the current user has permissions.<br/>
		///  To retrieve information from these views, specify the fully qualified name of <strong>INFORMATION_SCHEMA.</strong>_view_name_.</para><br/>
		/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-information-schema-views/key-column-usage-transact-sql'>INFORMATION_SCHEMA.KEY_COLUMN_USAGE</a>.</para>
		/// </summary>
		[Table(Schema="INFORMATION_SCHEMA", Name="KEY_COLUMN_USAGE", IsView=true)]
		public partial class KeyColumnUsage
		{
			/// <summary>
			/// Constraint qualifier.
			/// </summary>
			[Column("CONSTRAINT_CATALOG"),    Nullable] public string? ConstraintCatalog { get; set; } // nvarchar(
			/// <summary>
			/// Name of schema that contains the constraint.<br/><br/> <strong> Important </strong> Do not use INFORMATION_SCHEMA views to determine the schema of an object. INFORMATION_SCHEMA views only represent a subset of the metadata of an object. The only reliable way to find the schema of a object is to query the sys.objects catalog view.
			/// </summary>
			[Column("CONSTRAINT_SCHEMA"),     Nullable] public string? ConstraintSchema  { get; set; } // nvarchar(
			/// <summary>
			/// Constraint name.
			/// </summary>
			[Column("CONSTRAINT_NAME"),    NotNull    ] public string  ConstraintName    { get; set; } = null!; // nvarchar(
			/// <summary>
			/// Table qualifier.
			/// </summary>
			[Column("TABLE_CATALOG"),         Nullable] public string? TableCatalog      { get; set; } // nvarchar(
			/// <summary>
			/// Name of schema that contains the table.<br/><br/> <strong> Important </strong> Do not use INFORMATION_SCHEMA views to determine the schema of an object. INFORMATION_SCHEMA views only represent a subset of the metadata of an object. The only reliable way to find the schema of a object is to query the sys.objects catalog view.
			/// </summary>
			[Column("TABLE_SCHEMA"),          Nullable] public string? TableSchema       { get; set; } // nvarchar(
			/// <summary>
			/// Table name.
			/// </summary>
			[Column("TABLE_NAME"),         NotNull    ] public string  TableName         { get; set; } = null!; // nvarchar(
			/// <summary>
			/// Column name.
			/// </summary>
			[Column("COLUMN_NAME"),           Nullable] public string? ColumnName        { get; set; } // nvarchar(
			/// <summary>
			/// Column ordinal position.
			/// </summary>
			[Column("ORDINAL_POSITION"),   NotNull    ] public int     OrdinalPosition   { get; set; } // int
		}

		/// <summary>
		/// <para><strong>PARAMETERS (Transact-SQL)</strong></para>
		/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions) √ Azure SQL Database √ Azure SQL Managed Instance √ Azure Synapse Analytics √ Analytics Platform System (PDW)</para>
		/// <para>Returns one row for each parameter of a user-defined function or stored procedure that can be accessed by the current user in the current database. For functions, this view also returns one row with return value information.<br/>
		///  To retrieve information from these views, specify the fully qualified name of <strong>INFORMATION_SCHEMA.</strong>_view_name_.</para><br/>
		/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-information-schema-views/parameters-transact-sql'>INFORMATION_SCHEMA.PARAMETERS</a>.</para>
		/// </summary>
		[Table(Schema="INFORMATION_SCHEMA", Name="PARAMETERS", IsView=true)]
		public partial class Parameter
		{
			/// <summary>
			/// Catalog name of the routine for which this is a parameter.
			/// </summary>
			[Column("SPECIFIC_CATALOG"),             Nullable] public string? SpecificCatalog        { get; set; } // nvarchar(
			/// <summary>
			/// Name of the schema of the routine for which this is a parameter.<br/><br/> <strong> Important </strong> Do not use INFORMATION_SCHEMA views to determine the schema of an object. INFORMATION_SCHEMA views only represent a subset of the metadata of an object. The only reliable way to find the schema of a object is to query the sys.objects catalog view.
			/// </summary>
			[Column("SPECIFIC_SCHEMA"),              Nullable] public string? SpecificSchema         { get; set; } // nvarchar(
			/// <summary>
			/// Name of the routine for which this is a parameter.
			/// </summary>
			[Column("SPECIFIC_NAME"),             NotNull    ] public string  SpecificName           { get; set; } = null!; // nvarchar(
			/// <summary>
			/// Ordinal position of the parameter starting at 1. For the return value of a function, this is a 0.
			/// </summary>
			[Column("ORDINAL_POSITION"),          NotNull    ] public int     OrdinalPosition        { get; set; } // int
			/// <summary>
			/// Returns IN if an input parameter, OUT if an output parameter, and INOUT if an input/output parameter.
			/// </summary>
			[Column("PARAMETER_MODE"),               Nullable] public string? ParameterMode          { get; set; } // nvarchar(
			/// <summary>
			/// Returns YES if indicates result of the routine that is a function. Otherwise, returns NO.
			/// </summary>
			[Column("IS_RESULT"),                    Nullable] public string? IsResult               { get; set; } // nvarchar(
			/// <summary>
			/// Returns YES if declared as locator. Otherwise, returns NO.
			/// </summary>
			[Column("AS_LOCATOR"),                   Nullable] public string? AsLocator              { get; set; } // nvarchar(
			/// <summary>
			/// Name of the parameter. NULL if this corresponds to the return value of a function.
			/// </summary>
			[Column("PARAMETER_NAME"),               Nullable] public string? ParameterName          { get; set; } // nvarchar(
			/// <summary>
			/// System-supplied data type.
			/// </summary>
			[Column("DATA_TYPE"),                 NotNull    ] public string  DataType               { get; set; } = null!; // nvarchar(
			/// <summary>
			/// Maximum length in characters for binary or character data types.<br/><br/> -1 for <strong>xml</strong> and large-value type data. Otherwise, returns NULL.
			/// </summary>
			[Column("CHARACTER_MAXIMUM_LENGTH"),     Nullable] public int?    CharacterMaximumLength { get; set; } // int
			/// <summary>
			/// Maximum length, in bytes, for binary or character data types.<br/><br/> -1 for <strong>xml</strong> and large-value type data. Otherwise, returns NULL.
			/// </summary>
			[Column("CHARACTER_OCTET_LENGTH"),       Nullable] public int?    CharacterOctetLength   { get; set; } // int
			/// <summary>
			/// Always returns NULL.
			/// </summary>
			[Column("COLLATION_CATALOG"),            Nullable] public string? CollationCatalog       { get; set; } // nvarchar(
			/// <summary>
			/// Always returns NULL.
			/// </summary>
			[Column("COLLATION_SCHEMA"),             Nullable] public string? CollationSchema        { get; set; } // nvarchar(
			/// <summary>
			/// Name of the collation of the parameter. If not one of the character types, returns NULL.
			/// </summary>
			[Column("COLLATION_NAME"),               Nullable] public string? CollationName          { get; set; } // nvarchar(
			/// <summary>
			/// Catalog name of the character set of the parameter. If not one of the character types, returns NULL.
			/// </summary>
			[Column("CHARACTER_SET_CATALOG"),        Nullable] public string? CharacterSetCatalog    { get; set; } // nvarchar(
			/// <summary>
			/// Always returns NULL.
			/// </summary>
			[Column("CHARACTER_SET_SCHEMA"),         Nullable] public string? CharacterSetSchema     { get; set; } // nvarchar(
			/// <summary>
			/// Name of the character set of the parameter. If not one of the character types, returns NULL.
			/// </summary>
			[Column("CHARACTER_SET_NAME"),           Nullable] public string? CharacterSetName       { get; set; } // nvarchar(
			/// <summary>
			/// Precision of approximate numeric data, exact numeric data, integer data, or monetary data. Otherwise, returns NULL.
			/// </summary>
			[Column("NUMERIC_PRECISION"),            Nullable] public byte?   NumericPrecision       { get; set; } // tinyint
			/// <summary>
			/// Precision radix of approximate numeric data, exact numeric data, integer data, or monetary data. Otherwise, returns NULL.
			/// </summary>
			[Column("NUMERIC_PRECISION_RADIX"),      Nullable] public short?  NumericPrecisionRadix  { get; set; } // smallint
			/// <summary>
			/// Scale of approximate numeric data, exact numeric data, integer data, or monetary data. Otherwise, returns NULL.
			/// </summary>
			[Column("NUMERIC_SCALE"),                Nullable] public byte?   NumericScale           { get; set; } // tinyint
			/// <summary>
			/// Precision in fractional seconds if the parameter type is <strong>datetime</strong> or <strong>smalldatetime</strong>. Otherwise, returns NULL.
			/// </summary>
			[Column("DATETIME_PRECISION"),           Nullable] public short?  DatetimePrecision      { get; set; } // smallint
			/// <summary>
			/// NULL. Reserved for future use.
			/// </summary>
			[Column("INTERVAL_TYPE"),                Nullable] public string? IntervalType           { get; set; } // nvarchar(
			/// <summary>
			/// NULL. Reserved for future use.
			/// </summary>
			[Column("INTERVAL_PRECISION"),           Nullable] public short?  IntervalPrecision      { get; set; } // smallint
			/// <summary>
			/// NULL. Reserved for future use.
			/// </summary>
			[Column("USER_DEFINED_TYPE_CATALOG"),    Nullable] public string? UserDefinedTypeCatalog { get; set; } // nvarchar(
			/// <summary>
			/// NULL. Reserved for future use.
			/// </summary>
			[Column("USER_DEFINED_TYPE_SCHEMA"),     Nullable] public string? UserDefinedTypeSchema  { get; set; } // nvarchar(
			/// <summary>
			/// NULL. Reserved for future use.
			/// </summary>
			[Column("USER_DEFINED_TYPE_NAME"),       Nullable] public string? UserDefinedTypeName    { get; set; } // nvarchar(
			/// <summary>
			/// NULL. Reserved for future use.
			/// </summary>
			[Column("SCOPE_CATALOG"),                Nullable] public string? ScopeCatalog           { get; set; } // nvarchar(
			/// <summary>
			/// NULL. Reserved for future use.
			/// </summary>
			[Column("SCOPE_SCHEMA"),                 Nullable] public string? ScopeSchema            { get; set; } // nvarchar(
			/// <summary>
			/// NULL. Reserved for future use.
			/// </summary>
			[Column("SCOPE_NAME"),                   Nullable] public string? ScopeName              { get; set; } // nvarchar(
		}

		/// <summary>
		/// <para><strong>REFERENTIAL_CONSTRAINTS (Transact-SQL)</strong></para>
		/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)  √ Azure SQL Database</para>
		/// <para>Returns one row for each FOREIGN KEY constraint in the current database. This information schema view returns information about the objects to which the current user has permissions.<br/>
		///  To retrieve information from these views, specify the fully qualified name of <strong>INFORMATION_SCHEMA.</strong>_view_name_.</para><br/>
		/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-information-schema-views/referential-constraints-transact-sql'>INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS</a>.</para>
		/// </summary>
		[Table(Schema="INFORMATION_SCHEMA", Name="REFERENTIAL_CONSTRAINTS", IsView=true)]
		public partial class ReferentialConstraint
		{
			/// <summary>
			/// Constraint qualifier.
			/// </summary>
			[Column("CONSTRAINT_CATALOG"),           Nullable] public string? ConstraintCatalog       { get; set; } // nvarchar(
			/// <summary>
			/// Name of schema that contains the constraint.<br/><br/> <strong> Important </strong> Do not use INFORMATION_SCHEMA views to determine the schema of an object. INFORMATION_SCHEMA views only represent a subset of the metadata of an object. The only reliable way to find the schema of a object is to query the sys.objects catalog view.
			/// </summary>
			[Column("CONSTRAINT_SCHEMA"),            Nullable] public string? ConstraintSchema        { get; set; } // nvarchar(
			/// <summary>
			/// Constraint name.
			/// </summary>
			[Column("CONSTRAINT_NAME"),           NotNull    ] public string  ConstraintName          { get; set; } = null!; // sysname
			/// <summary>
			/// UNIQUE constraint qualifier.
			/// </summary>
			[Column("UNIQUE_CONSTRAINT_CATALOG"),    Nullable] public string? UniqueConstraintCatalog { get; set; } // nvarchar(
			/// <summary>
			/// Name of schema that contains the UNIQUE constraint.<br/><br/> <strong> Important </strong> Do not use INFORMATION_SCHEMA views to determine the schema of an object. INFORMATION_SCHEMA views only represent a subset of the metadata of an object. The only reliable way to find the schema of a object is to query the sys.objects catalog view.
			/// </summary>
			[Column("UNIQUE_CONSTRAINT_SCHEMA"),     Nullable] public string? UniqueConstraintSchema  { get; set; } // nvarchar(
			/// <summary>
			/// UNIQUE constraint.
			/// </summary>
			[Column("UNIQUE_CONSTRAINT_NAME"),       Nullable] public string? UniqueConstraintName    { get; set; } // sysname
			/// <summary>
			/// Referential constraint-matching conditions. Always returns SIMPLE. This means that no match is defined. The condition is considered a match when one of the following is true:<br/><br/> At least one value in the foreign key column is NULL.<br/><br/> All values in the foreign key column are not NULL, and there is a row in the primary key table that has the same key.
			/// </summary>
			[Column("MATCH_OPTION"),                 Nullable] public string? MatchOption             { get; set; } // varchar(
			/// <summary>
			/// Action taken when a Transact\-SQL statement violates the referential integrity that is defined by this constraint. Returns one of the following: <br/>NO ACTION<br/>CASCADE<br/>SET NULL<br/>SET DEFAULT<br/><br/> If NO ACTION is specified on ON UPDATE for this constraint, the update of the primary key that is referenced in the constraint will not be propagated to the foreign key. If such an update of a primary key will cause a referential integrity violation because at least one foreign key contains the same value, SQL Server will not make any change to the parent and referring tables. SQL Server also will raise an error.<br/><br/> If CASCADE is specified on ON UPDATE for this constraint, any change to the primary key value is automatically propagated to the foreign key value.
			/// </summary>
			[Column("UPDATE_RULE"),                  Nullable] public string? UpdateRule              { get; set; } // varchar(
			/// <summary>
			/// Action taken when a Transact\-SQL statement violates referential integrity defined by this constraint. Returns one of the following: <br/>NO ACTION<br/>CASCADE<br/>SET NULL<br/>SET DEFAULT<br/><br/> If NO ACTION is specified on ON DELETE for this constraint, the delete on the primary key that is referenced in the constraint will not be propagated to the foreign key. If such a delete of a primary key will cause a referential integrity violation because at least one foreign key contains the same value, SQL Server will not make any change to the parent and referring tables. SQL Server also will raise an error.<br/><br/> If CASCADE is specified on ON DELETE on this constraint, any change to the primary key value is automatically propagated to the foreign key value.
			/// </summary>
			[Column("DELETE_RULE"),                  Nullable] public string? DeleteRule              { get; set; } // varchar(
		}

		/// <summary>
		/// <para><strong>ROUTINES (Transact-SQL)</strong></para>
		/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions) √ Azure SQL Database √ Azure SQL Managed Instance √ Azure Synapse Analytics √ Analytics Platform System (PDW)</para>
		/// <para>Returns one row for each stored procedure and function that can be accessed by the current user in the current database. The columns that describe the return value apply only to functions. For stored procedures, these columns will be NULL.<br/>
		///  To retrieve information from these views, specify the fully qualified name of INFORMATION_SCHEMA.*view_name*.<br/>
		/// <note type='note'><br/>
		/// The ROUTINE_DEFINITION column contains the source statements that created the function or stored procedure. These source statements are likely to contain embedded carriage returns. If you are returning this column to an application that displays the results in a text format, the embedded carriage returns in the ROUTINE_DEFINITION results may affect the formatting of the overall result set. If you select the ROUTINE_DEFINITION column, you must adjust for the embedded carriage returns; for example, by returning the result set into a grid or returning ROUTINE_DEFINITION into its own text box.<br/>
		/// </note></para><br/>
		/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-information-schema-views/routines-transact-sql'>INFORMATION_SCHEMA.ROUTINES</a>.</para>
		/// </summary>
		[Table(Schema="INFORMATION_SCHEMA", Name="ROUTINES", IsView=true)]
		public partial class Routine
		{
			/// <summary>
			/// Specific name of the catalog. This name is the same as ROUTINE_CATALOG.
			/// </summary>
			[Column("SPECIFIC_CATALOG"),            Nullable] public string?  SpecificCatalog        { get; set; } // nvarchar(
			/// <summary>
			/// Specific name of the schema.<br/><br/> <strong> Important \*\</strong>* Do not use INFORMATION_SCHEMA views to determine the schema of an object. INFORMATION_SCHEMA views only represent a subset of the metadata of an object. The only reliable way to find the schema of a object is to query the sys.objects catalog view.
			/// </summary>
			[Column("SPECIFIC_SCHEMA"),             Nullable] public string?  SpecificSchema         { get; set; } // nvarchar(
			/// <summary>
			/// Specific name of the catalog. This name is the same as ROUTINE_NAME.
			/// </summary>
			[Column("SPECIFIC_NAME"),            NotNull    ] public string   SpecificName           { get; set; } = null!; // nvarchar(
			/// <summary>
			/// Catalog name of the function.
			/// </summary>
			[Column("ROUTINE_CATALOG"),             Nullable] public string?  RoutineCatalog         { get; set; } // nvarchar(
			/// <summary>
			/// Name of the schema that contains this function.<br/><br/> <strong> Important \*\</strong>* Do not use INFORMATION_SCHEMA views to determine the schema of an object. INFORMATION_SCHEMA views only represent a subset of the metadata of an object. The only reliable way to find the schema of a object is to query the sys.objects catalog view.
			/// </summary>
			[Column("ROUTINE_SCHEMA"),              Nullable] public string?  RoutineSchema          { get; set; } // nvarchar(
			/// <summary>
			/// Name of the function.
			/// </summary>
			[Column("ROUTINE_NAME"),             NotNull    ] public string   RoutineName            { get; set; } = null!; // nvarchar(
			/// <summary>
			/// Returns PROCEDURE for stored procedures, and FUNCTION for functions.
			/// </summary>
			[Column("ROUTINE_TYPE"),                Nullable] public string?  RoutineType            { get; set; } // nvarchar(
			/// <summary>
			/// NULL. Reserved for future use.
			/// </summary>
			[Column("MODULE_CATALOG"),              Nullable] public string?  ModuleCatalog          { get; set; } // nvarchar(
			/// <summary>
			/// NULL. Reserved for future use.
			/// </summary>
			[Column("MODULE_SCHEMA"),               Nullable] public string?  ModuleSchema           { get; set; } // nvarchar(
			/// <summary>
			/// NULL. Reserved for future use.
			/// </summary>
			[Column("MODULE_NAME"),                 Nullable] public string?  ModuleName             { get; set; } // nvarchar(
			/// <summary>
			/// NULL. Reserved for future use.
			/// </summary>
			[Column("UDT_CATALOG"),                 Nullable] public string?  UdtCatalog             { get; set; } // nvarchar(
			/// <summary>
			/// NULL. Reserved for future use.
			/// </summary>
			[Column("UDT_SCHEMA"),                  Nullable] public string?  UdtSchema              { get; set; } // nvarchar(
			/// <summary>
			/// NULL. Reserved for future use.
			/// </summary>
			[Column("UDT_NAME"),                    Nullable] public string?  UdtName                { get; set; } // nvarchar(
			/// <summary>
			/// Data type of the return value of the function. Returns <strong>table</strong> if a table-valued function.
			/// </summary>
			[Column("DATA_TYPE"),                   Nullable] public string?  DataType               { get; set; } // nvarchar(
			/// <summary>
			/// Maximum length in characters, if the return type is a character type.<br/><br/> -1 for <strong>xml</strong> and large-value type data.
			/// </summary>
			[Column("CHARACTER_MAXIMUM_LENGTH"),    Nullable] public int?     CharacterMaximumLength { get; set; } // int
			/// <summary>
			/// Maximum length in bytes, if the return type is a character type.<br/><br/> -1 for <strong>xml</strong> and large-value type data.
			/// </summary>
			[Column("CHARACTER_OCTET_LENGTH"),      Nullable] public int?     CharacterOctetLength   { get; set; } // int
			/// <summary>
			/// Always returns NULL.
			/// </summary>
			[Column("COLLATION_CATALOG"),           Nullable] public string?  CollationCatalog       { get; set; } // nvarchar(
			/// <summary>
			/// Always returns NULL.
			/// </summary>
			[Column("COLLATION_SCHEMA"),            Nullable] public string?  CollationSchema        { get; set; } // nvarchar(
			/// <summary>
			/// Collation name of the return value. For noncharacter types, returns NULL.
			/// </summary>
			[Column("COLLATION_NAME"),              Nullable] public string?  CollationName          { get; set; } // nvarchar(
			/// <summary>
			/// Always returns NULL.
			/// </summary>
			[Column("CHARACTER_SET_CATALOG"),       Nullable] public string?  CharacterSetCatalog    { get; set; } // nvarchar(
			/// <summary>
			/// Always returns NULL.
			/// </summary>
			[Column("CHARACTER_SET_SCHEMA"),        Nullable] public string?  CharacterSetSchema     { get; set; } // nvarchar(
			/// <summary>
			/// Name of the character set of the return value. For noncharacter types, returns NULL.
			/// </summary>
			[Column("CHARACTER_SET_NAME"),          Nullable] public string?  CharacterSetName       { get; set; } // nvarchar(
			/// <summary>
			/// Numeric precision of the return value. For the nonnumeric types, returns NULL.
			/// </summary>
			[Column("NUMERIC_PRECISION"),           Nullable] public short?   NumericPrecision       { get; set; } // smallint
			/// <summary>
			/// Numeric precision radix of the return value. For nonnumeric types, returns NULL.
			/// </summary>
			[Column("NUMERIC_PRECISION_RADIX"),     Nullable] public short?   NumericPrecisionRadix  { get; set; } // smallint
			/// <summary>
			/// Scale of the return value. For nonnumeric types, returns NULL.
			/// </summary>
			[Column("NUMERIC_SCALE"),               Nullable] public short?   NumericScale           { get; set; } // smallint
			/// <summary>
			/// Fractional precision of a second if the return value is of type <strong>datetime</strong>. Otherwise, returns NULL.
			/// </summary>
			[Column("DATETIME_PRECISION"),          Nullable] public short?   DatetimePrecision      { get; set; } // smallint
			/// <summary>
			/// NULL. Reserved for future use.
			/// </summary>
			[Column("INTERVAL_TYPE"),               Nullable] public string?  IntervalType           { get; set; } // nvarchar(
			/// <summary>
			/// NULL. Reserved for future use.
			/// </summary>
			[Column("INTERVAL_PRECISION"),          Nullable] public short?   IntervalPrecision      { get; set; } // smallint
			/// <summary>
			/// NULL. Reserved for future use.
			/// </summary>
			[Column("TYPE_UDT_CATALOG"),            Nullable] public string?  TypeUdtCatalog         { get; set; } // nvarchar(
			/// <summary>
			/// NULL. Reserved for future use.
			/// </summary>
			[Column("TYPE_UDT_SCHEMA"),             Nullable] public string?  TypeUdtSchema          { get; set; } // nvarchar(
			/// <summary>
			/// NULL. Reserved for future use.
			/// </summary>
			[Column("TYPE_UDT_NAME"),               Nullable] public string?  TypeUdtName            { get; set; } // nvarchar(
			/// <summary>
			/// NULL. Reserved for future use.
			/// </summary>
			[Column("SCOPE_CATALOG"),               Nullable] public string?  ScopeCatalog           { get; set; } // nvarchar(
			/// <summary>
			/// NULL. Reserved for future use.
			/// </summary>
			[Column("SCOPE_SCHEMA"),                Nullable] public string?  ScopeSchema            { get; set; } // nvarchar(
			/// <summary>
			/// NULL. Reserved for future use.
			/// </summary>
			[Column("SCOPE_NAME"),                  Nullable] public string?  ScopeName              { get; set; } // nvarchar(
			/// <summary>
			/// NULL. Reserved for future use.
			/// </summary>
			[Column("MAXIMUM_CARDINALITY"),         Nullable] public long?    MaximumCardinality     { get; set; } // bigint
			/// <summary>
			/// NULL. Reserved for future use.
			/// </summary>
			[Column("DTD_IDENTIFIER"),              Nullable] public string?  DtdIdentifier          { get; set; } // nvarchar(
			/// <summary>
			/// Returns SQL for a Transact\-SQL function and EXTERNAL for an externally written function.<br/><br/> Functions will always be SQL.
			/// </summary>
			[Column("ROUTINE_BODY"),                Nullable] public string?  RoutineBody            { get; set; } // nvarchar(
			/// <summary>
			/// Returns the first 4000 characters of the definition text of the function or stored procedure if the function or stored procedure is not encrypted. Otherwise, returns NULL.<br/><br/> To ensure that you obtain the complete definition, query the <a href='https://docs.microsoft.com/en-us/sql/t-sql/functions/object-definition-transact-sql'>OBJECT_DEFINITION</a> function or the definition column in the <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-sql-modules-transact-sql'>sys.sql_modules</a> catalog view.
			/// </summary>
			[Column("ROUTINE_DEFINITION"),          Nullable] public string?  RoutineDefinition      { get; set; } // nvarchar(
			/// <summary>
			/// NULL. Reserved for future use.
			/// </summary>
			[Column("EXTERNAL_NAME"),               Nullable] public string?  ExternalName           { get; set; } // nvarchar(
			/// <summary>
			/// NULL. Reserved for future use.
			/// </summary>
			[Column("EXTERNAL_LANGUAGE"),           Nullable] public string?  ExternalLanguage       { get; set; } // nvarchar(
			/// <summary>
			/// NULL. Reserved for future use.
			/// </summary>
			[Column("PARAMETER_STYLE"),             Nullable] public string?  ParameterStyle         { get; set; } // nvarchar(
			/// <summary>
			/// Returns YES if the routine is deterministic.<br/><br/> Returns NO if the routine is nondeterministic.<br/><br/> Always returns NO for stored procedures.
			/// </summary>
			[Column("IS_DETERMINISTIC"),            Nullable] public string?  IsDeterministic        { get; set; } // nvarchar(
			/// <summary>
			/// Returns one of the following values:<br/><br/> NONE = Function does not contain SQL.<br/><br/> CONTAINS = Function possibly contains SQL.<br/><br/> READS = Function possibly reads SQL data.<br/><br/> MODIFIES = Function possibly modifies SQL data.<br/><br/> Returns READS for all functions, and MODIFIES for all stored procedures.
			/// </summary>
			[Column("SQL_DATA_ACCESS"),             Nullable] public string?  SqlDataAccess          { get; set; } // nvarchar(
			/// <summary>
			/// Indicates whether the routine will be called if any one of its arguments is NULL.
			/// </summary>
			[Column("IS_NULL_CALL"),                Nullable] public string?  IsNullCall             { get; set; } // nvarchar(
			/// <summary>
			/// NULL. Reserved for future use.
			/// </summary>
			[Column("SQL_PATH"),                    Nullable] public string?  SqlPath                { get; set; } // nvarchar(
			/// <summary>
			/// Returns YES if schema-level function, or NO if not a schema-level function.<br/><br/> Always returns YES.
			/// </summary>
			[Column("SCHEMA_LEVEL_ROUTINE"),        Nullable] public string?  SchemaLevelRoutine     { get; set; } // nvarchar(
			/// <summary>
			/// Maximum number of dynamic result sets returned by routine.<br/><br/> Returns 0 if functions.
			/// </summary>
			[Column("MAX_DYNAMIC_RESULT_SETS"),     Nullable] public short?   MaxDynamicResultSets   { get; set; } // smallint
			/// <summary>
			/// Returns YES if user-defined cast function, and NO if not a user-defined cast function.<br/><br/> Always returns NO.
			/// </summary>
			[Column("IS_USER_DEFINED_CAST"),        Nullable] public string?  IsUserDefinedCast      { get; set; } // nvarchar(
			/// <summary>
			/// Returns YES if the routine can be implicitly invoked, and NO if function cannot be implicitly invoked.<br/><br/> Always returns NO.
			/// </summary>
			[Column("IS_IMPLICITLY_INVOCABLE"),     Nullable] public string?  IsImplicitlyInvocable  { get; set; } // nvarchar(
			/// <summary>
			/// Time when the routine was created.
			/// </summary>
			[Column("CREATED"),                  NotNull    ] public DateTime Created                { get; set; } // datetime
			/// <summary>
			/// The last time the function was modified.
			/// </summary>
			[Column("LAST_ALTERED"),             NotNull    ] public DateTime LastAltered            { get; set; } // datetime
		}

		/// <summary>
		/// <para><strong>ROUTINE_COLUMNS (Transact-SQL)</strong></para>
		/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)  √ Azure SQL Database</para>
		/// <para>Returns one row for each column returned by the table-valued functions that can be accessed by the current user in the current database.<br/>
		///  To retrieve information from this view, specify the fully qualified name of <strong>INFORMATION_SCHEMA.</strong>_view_name_.</para><br/>
		/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-information-schema-views/routine-columns-transact-sql'>INFORMATION_SCHEMA.ROUTINE_COLUMNS</a>.</para>
		/// </summary>
		[Table(Schema="INFORMATION_SCHEMA", Name="ROUTINE_COLUMNS", IsView=true)]
		public partial class RoutineColumn
		{
			/// <summary>
			/// Catalog or database name of the table-valued function.
			/// </summary>
			[Column("TABLE_CATALOG"),               Nullable] public string? TableCatalog           { get; set; } // nvarchar(
			/// <summary>
			/// Name of the schema that contains the table-valued function.<br/><br/> <strong> Important </strong> Do not use INFORMATION_SCHEMA views to determine the schema of an object. INFORMATION_SCHEMA views only represent a subset of the metadata of an object. The only reliable way to find the schema of a object is to query the sys.objects catalog view.
			/// </summary>
			[Column("TABLE_SCHEMA"),                Nullable] public string? TableSchema            { get; set; } // nvarchar(
			/// <summary>
			/// Name of the table-valued function.
			/// </summary>
			[Column("TABLE_NAME"),               NotNull    ] public string  TableName              { get; set; } = null!; // nvarchar(
			/// <summary>
			/// Column name.
			/// </summary>
			[Column("COLUMN_NAME"),                 Nullable] public string? ColumnName             { get; set; } // nvarchar(
			/// <summary>
			/// Column identification number.
			/// </summary>
			[Column("ORDINAL_POSITION"),         NotNull    ] public int     OrdinalPosition        { get; set; } // int
			/// <summary>
			/// Default value of the column.
			/// </summary>
			[Column("COLUMN_DEFAULT"),              Nullable] public string? ColumnDefault          { get; set; } // nvarchar(
			/// <summary>
			/// If this column allows for NULL, returns YES. Otherwise, returns NO.
			/// </summary>
			[Column("IS_NULLABLE"),                 Nullable] public string? IsNullable             { get; set; } // varchar(
			/// <summary>
			/// System-supplied data type.
			/// </summary>
			[Column("DATA_TYPE"),                   Nullable] public string? DataType               { get; set; } // nvarchar(
			/// <summary>
			/// Maximum length, in characters, for binary data, character data, or text and image data.<br/><br/> -1 for <strong>xml</strong> and large-value type data. Otherwise, returns NULL. For more information, see <a href='https://docs.microsoft.com/en-us/sql/t-sql/data-types/data-types-transact-sql'>Data Types (Transact-SQL)</a>.
			/// </summary>
			[Column("CHARACTER_MAXIMUM_LENGTH"),    Nullable] public int?    CharacterMaximumLength { get; set; } // int
			/// <summary>
			/// Maximum length, in bytes, for binary data, character data, or text and image data.<br/><br/> -1 for <strong>xml</strong> and large-value type data. Otherwise, returns NULL.
			/// </summary>
			[Column("CHARACTER_OCTET_LENGTH"),      Nullable] public int?    CharacterOctetLength   { get; set; } // int
			/// <summary>
			/// Precision of approximate numeric data, exact numeric data, integer data, or monetary data. Otherwise, returns NULL.
			/// </summary>
			[Column("NUMERIC_PRECISION"),           Nullable] public byte?   NumericPrecision       { get; set; } // tinyint
			/// <summary>
			/// Precision radix of approximate numeric data, exact numeric data, integer data, or monetary data. Otherwise, returns NULL.
			/// </summary>
			[Column("NUMERIC_PRECISION_RADIX"),     Nullable] public short?  NumericPrecisionRadix  { get; set; } // smallint
			/// <summary>
			/// Scale of approximate numeric data, exact numeric data, integer data, or monetary data. Otherwise, returns NULL.
			/// </summary>
			[Column("NUMERIC_SCALE"),               Nullable] public byte?   NumericScale           { get; set; } // tinyint
			/// <summary>
			/// Subtype code for <strong>datetime</strong> and ISO<strong>integer</strong> data types. For other data types, returns NULL.
			/// </summary>
			[Column("DATETIME_PRECISION"),          Nullable] public short?  DatetimePrecision      { get; set; } // smallint
			/// <summary>
			/// Returns <strong>master</strong>. This indicates the database in which the character set is located if the column is character data or <strong>text</strong> data type. Otherwise, returns NULL.
			/// </summary>
			[Column("CHARACTER_SET_CATALOG"),       Nullable] public string? CharacterSetCatalog    { get; set; } // varchar(
			/// <summary>
			/// Always returns NULL.
			/// </summary>
			[Column("CHARACTER_SET_SCHEMA"),        Nullable] public string? CharacterSetSchema     { get; set; } // varchar(
			/// <summary>
			/// Returns the unique name for the character set if this column is character data or <strong>text</strong> data type. Otherwise, returns NULL.
			/// </summary>
			[Column("CHARACTER_SET_NAME"),          Nullable] public string? CharacterSetName       { get; set; } // nvarchar(
			/// <summary>
			/// Always returns NULL.
			/// </summary>
			[Column("COLLATION_CATALOG"),           Nullable] public string? CollationCatalog       { get; set; } // varchar(
			/// <summary>
			/// Always returns NULL.
			/// </summary>
			[Column("COLLATION_SCHEMA"),            Nullable] public string? CollationSchema        { get; set; } // varchar(
			/// <summary>
			/// Returns the unique name for the sort order if the column is character data or <strong>text</strong> data type. Otherwise, returns NULL.
			/// </summary>
			[Column("COLLATION_NAME"),              Nullable] public string? CollationName          { get; set; } // nvarchar(
			/// <summary>
			/// If the column is an alias data type, this column is the database name in which the user-defined data type was created. Otherwise, returns NULL.
			/// </summary>
			[Column("DOMAIN_CATALOG"),              Nullable] public string? DomainCatalog          { get; set; } // nvarchar(
			/// <summary>
			/// If the column is a user-defined data type, this column is the name of the schema that contains the user-defined data type. Otherwise, returns NULL.<br/><br/> <strong> Important </strong> Do not use INFORMATION_SCHEMA views to determine the schema of an object. INFORMATION_SCHEMA views only represent a subset of the metadata of an object. The only reliable way to find the schema of a object is to query the sys.objects catalog view.
			/// </summary>
			[Column("DOMAIN_SCHEMA"),               Nullable] public string? DomainSchema           { get; set; } // nvarchar(
			/// <summary>
			/// If the column is a user-defined data type, this column is the name of the user-defined data type. Otherwise, returns NULL.
			/// </summary>
			[Column("DOMAIN_NAME"),                 Nullable] public string? DomainName             { get; set; } // nvarchar(
		}

		/// <summary>
		/// <para><strong>SCHEMATA (Transact-SQL)</strong></para>
		/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions) √ Azure SQL Database √ Azure SQL Managed Instance √ Azure Synapse Analytics √ Analytics Platform System (PDW)</para>
		/// <para>Returns one row for each schema in the current database. To retrieve information from these views, specify the fully qualified name of <strong>INFORMATION_SCHEMA.</strong>_view_name_. To retrieve information about all databases in an instance of SQL Server, query the <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-databases-transact-sql'>sys.databases (Transact-SQL)</a> catalog view.</para><br/>
		/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-information-schema-views/schemata-transact-sql'>INFORMATION_SCHEMA.SCHEMATA</a>.</para>
		/// </summary>
		[Table(Schema="INFORMATION_SCHEMA", Name="SCHEMATA", IsView=true)]
		public partial class Schema
		{
			/// <summary>
			/// Name of current database
			/// </summary>
			[Column("CATALOG_NAME"),                     Nullable] public string? CatalogName                { get; set; } // sysname
			/// <summary>
			/// Returns the name of the schema.
			/// </summary>
			[Column("SCHEMA_NAME"),                   NotNull    ] public string  SchemaName                 { get; set; } = null!; // nvarchar(
			/// <summary>
			/// Schema owner name.<br/><br/> <strong> Important </strong> Do not use INFORMATION_SCHEMA views to determine the schema of an object. INFORMATION_SCHEMA views only represent a subset of the metadata of an object. The only reliable way to find the schema of an object is to query the sys.objects catalog view.
			/// </summary>
			[Column("SCHEMA_OWNER"),                     Nullable] public string? SchemaOwner                { get; set; } // nvarchar(
			/// <summary>
			/// Always returns NULL.
			/// </summary>
			[Column("DEFAULT_CHARACTER_SET_CATALOG"),    Nullable] public string? DefaultCharacterSetCatalog { get; set; } // varchar(
			/// <summary>
			/// Always returns NULL.
			/// </summary>
			[Column("DEFAULT_CHARACTER_SET_SCHEMA"),     Nullable] public string? DefaultCharacterSetSchema  { get; set; } // varchar(
			/// <summary>
			/// Returns the name of the default character set.
			/// </summary>
			[Column("DEFAULT_CHARACTER_SET_NAME"),       Nullable] public string? DefaultCharacterSetName    { get; set; } // sysname
		}

		/// <summary>
		/// <para><strong>TABLES (Transact-SQL)</strong></para>
		/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions) √ Azure SQL Database √ Azure SQL Managed Instance √ Azure Synapse Analytics √ Analytics Platform System (PDW)</para>
		/// <para>Returns one row for each table or view in the current database for which the current user has permissions.<br/>
		/// To retrieve information from these views, specify the fully qualified name of <strong>INFORMATION_SCHEMA.</strong>_view_name_.</para><br/>
		/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-information-schema-views/tables-transact-sql'>INFORMATION_SCHEMA.TABLES</a>.</para>
		/// </summary>
		[Table(Schema="INFORMATION_SCHEMA", Name="TABLES", IsView=true)]
		public partial class Table
		{
			/// <summary>
			/// Table qualifier.
			/// </summary>
			[Column("TABLE_CATALOG"),    Nullable] public string? TableCatalog { get; set; } // nvarchar(
			/// <summary>
			/// Name of schema that contains the table.<br/><br/> <strong> Important </strong>  only reliable way to find the schema of an object is to query the sys.objects catalog view. INFORMATION_SCHEMA views could be incomplete since they are not updated for all new features.
			/// </summary>
			[Column("TABLE_SCHEMA"),     Nullable] public string? TableSchema  { get; set; } // nvarchar(
			/// <summary>
			/// Table or view name.
			/// </summary>
			[Column("TABLE_NAME"),    NotNull    ] public string  TableName    { get; set; } = null!; // sysname
			/// <summary>
			/// Type of table. Can be VIEW or BASE TABLE.
			/// </summary>
			[Column("TABLE_TYPE"),       Nullable] public string? TableType    { get; set; } // varchar(
		}

		/// <summary>
		/// <para><strong>TABLE_CONSTRAINTS (Transact-SQL)</strong></para>
		/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)  √ Azure SQL Database</para>
		/// <para>Returns one row for each table constraint in the current database. This information schema view returns information about the objects to which the current user has permissions.<br/>
		///  To retrieve information from these views, specify the fully qualified name of <strong>INFORMATION_SCHEMA.</strong>_view_name_.</para><br/>
		/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-information-schema-views/table-constraints-transact-sql'>INFORMATION_SCHEMA.TABLE_CONSTRAINTS</a>.</para>
		/// </summary>
		[Table(Schema="INFORMATION_SCHEMA", Name="TABLE_CONSTRAINTS", IsView=true)]
		public partial class TableConstraint
		{
			/// <summary>
			/// Constraint qualifier.
			/// </summary>
			[Column("CONSTRAINT_CATALOG"),    Nullable] public string? ConstraintCatalog { get; set; } // nvarchar(
			/// <summary>
			/// Name of schema that contains the constraint.<br/><br/> <strong> Important </strong>  only reliable way to find the schema of a object is to query the sys.objects catalog view.
			/// </summary>
			[Column("CONSTRAINT_SCHEMA"),     Nullable] public string? ConstraintSchema  { get; set; } // nvarchar(
			/// <summary>
			/// Constraint name.
			/// </summary>
			[Column("CONSTRAINT_NAME"),    NotNull    ] public string  ConstraintName    { get; set; } = null!; // sysname
			/// <summary>
			/// Table qualifier.
			/// </summary>
			[Column("TABLE_CATALOG"),         Nullable] public string? TableCatalog      { get; set; } // nvarchar(
			/// <summary>
			/// Name of schema that contains the table.<br/><br/> <strong> Important </strong>  only reliable way to find the schema of a object is to query the sys.objects catalog view.
			/// </summary>
			[Column("TABLE_SCHEMA"),          Nullable] public string? TableSchema       { get; set; } // nvarchar(
			/// <summary>
			/// Table name.
			/// </summary>
			[Column("TABLE_NAME"),            Nullable] public string? TableName         { get; set; } // sysname
			/// <summary>
			/// Type of constraint:<br/><br/> CHECK<br/><br/> UNIQUE<br/><br/> PRIMARY KEY<br/><br/> FOREIGN KEY
			/// </summary>
			[Column("CONSTRAINT_TYPE"),       Nullable] public string? ConstraintType    { get; set; } // varchar(
			/// <summary>
			/// Specifies whether constraint checking is deferrable. Always returns NO.
			/// </summary>
			[Column("IS_DEFERRABLE"),      NotNull    ] public string  IsDeferrable      { get; set; } = null!; // varchar(
			/// <summary>
			/// Specifies whether constraint checking is at first deferred. Always returns NO.
			/// </summary>
			[Column("INITIALLY_DEFERRED"), NotNull    ] public string  InitiallyDeferred { get; set; } = null!; // varchar(
		}

		/// <summary>
		/// <para><strong>TABLE_PRIVILEGES (Transact-SQL)</strong></para>
		/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)  √ Azure SQL Database</para>
		/// <para>Returns one row for each table privilege that is granted to or granted by the current user in the current database.<br/>
		///  To retrieve information from these views, specify the fully qualified name of <strong>INFORMATION_SCHEMA.</strong>_view_name_.</para><br/>
		/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-information-schema-views/table-privileges-transact-sql'>INFORMATION_SCHEMA.TABLE_PRIVILEGES</a>.</para>
		/// </summary>
		[Table(Schema="INFORMATION_SCHEMA", Name="TABLE_PRIVILEGES", IsView=true)]
		public partial class TablePrivilege
		{
			/// <summary>
			/// Privilege grantor.
			/// </summary>
			[Column("GRANTOR"),           Nullable] public string? Grantor       { get; set; } // nvarchar(
			/// <summary>
			/// Privilege grantee.
			/// </summary>
			[Column("GRANTEE"),           Nullable] public string? Grantee       { get; set; } // nvarchar(
			/// <summary>
			/// Table qualifier.
			/// </summary>
			[Column("TABLE_CATALOG"),     Nullable] public string? TableCatalog  { get; set; } // nvarchar(
			/// <summary>
			/// Name of schema that contains the table.<br/><br/> <strong> Important </strong>  only reliable way to find the schema of a object is to query the sys.objects catalog view.
			/// </summary>
			[Column("TABLE_SCHEMA"),      Nullable] public string? TableSchema   { get; set; } // nvarchar(
			/// <summary>
			/// Table name.
			/// </summary>
			[Column("TABLE_NAME"),     NotNull    ] public string  TableName     { get; set; } = null!; // sysname
			/// <summary>
			/// Type of privilege.
			/// </summary>
			[Column("PRIVILEGE_TYPE"),    Nullable] public string? PrivilegeType { get; set; } // varchar(
			/// <summary>
			/// Specifies whether the grantee can grant permissions to others.
			/// </summary>
			[Column("IS_GRANTABLE"),      Nullable] public string? IsGrantable   { get; set; } // varchar(
		}

		/// <summary>
		/// <para><strong>VIEWS (Transact-SQL)</strong></para>
		/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions) √ Azure SQL Database √ Azure SQL Managed Instance √ Azure Synapse Analytics √ Analytics Platform System (PDW)</para>
		/// <para>Returns one row for views that can be accessed by the current user in the current database.<br/>
		/// To retrieve information from these views, specify the fully qualified name of <strong>INFORMATION_SCHEMA.</strong>_view_name_.</para><br/>
		/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-information-schema-views/views-transact-sql'>INFORMATION_SCHEMA.VIEWS</a>.</para>
		/// </summary>
		[Table(Schema="INFORMATION_SCHEMA", Name="VIEWS", IsView=true)]
		public partial class View
		{
			/// <summary>
			/// View qualifier.
			/// </summary>
			[Column("TABLE_CATALOG"),      Nullable] public string? TableCatalog   { get; set; } // nvarchar(
			/// <summary>
			/// Name of schema that contains the view.<br/><br/> <strong> Important </strong>  only reliable way to find the schema of a object is to query the sys.objects catalog view.
			/// </summary>
			[Column("TABLE_SCHEMA"),       Nullable] public string? TableSchema    { get; set; } // nvarchar(
			/// <summary>
			/// View name.
			/// </summary>
			[Column("TABLE_NAME"),      NotNull    ] public string  TableName      { get; set; } = null!; // nvarchar(
			/// <summary>
			/// If the length of definition is larger than <strong>nvarchar(</strong>4000<strong>)</strong>, this column is NULL. Otherwise, this column is the view definition text.
			/// </summary>
			[Column("VIEW_DEFINITION"),    Nullable] public string? ViewDefinition { get; set; } // nvarchar(
			/// <summary>
			/// Type of WITH CHECK OPTION. Is CASCADE if the original view was created by using the WITH CHECK OPTION. Otherwise, NONE is returned.
			/// </summary>
			[Column("CHECK_OPTION"),       Nullable] public string? CheckOption    { get; set; } // varchar(
			/// <summary>
			/// Specifies whether the view is updatable. Always returns NO.
			/// </summary>
			[Column("IS_UPDATABLE"),    NotNull    ] public string  IsUpdatable    { get; set; } = null!; // varchar(
		}

		/// <summary>
		/// <para><strong>VIEW_COLUMN_USAGE (Transact-SQL)</strong></para>
		/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions) √ Azure SQL Database √ Azure SQL Managed Instance √ Azure Synapse Analytics √ Analytics Platform System (PDW)</para>
		/// <para>Returns one row for each column in the current database that is used in a view definition. This information schema view returns information about the objects to which the current user has permissions.<br/>
		///  To retrieve information from these views, specify the fully qualified name of <strong>INFORMATION_SCHEMA.</strong>_view_name_.</para><br/>
		/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-information-schema-views/view-column-usage-transact-sql'>INFORMATION_SCHEMA.VIEW_COLUMN_USAGE</a>.</para>
		/// </summary>
		[Table(Schema="INFORMATION_SCHEMA", Name="VIEW_COLUMN_USAGE", IsView=true)]
		public partial class ViewColumnUsage
		{
			/// <summary>
			/// View qualifier.
			/// </summary>
			[Column("VIEW_CATALOG"),     Nullable] public string? ViewCatalog  { get; set; } // nvarchar(
			/// <summary>
			/// Name of schema that contains the view.<br/><br/> <strong> Important </strong>  only reliable way to find the schema of a object is to query the sys.objects catalog view.
			/// </summary>
			[Column("VIEW_SCHEMA"),      Nullable] public string? ViewSchema   { get; set; } // nvarchar(
			/// <summary>
			/// View name.
			/// </summary>
			[Column("VIEW_NAME"),     NotNull    ] public string  ViewName     { get; set; } = null!; // sysname
			/// <summary>
			/// Table qualifier.
			/// </summary>
			[Column("TABLE_CATALOG"),    Nullable] public string? TableCatalog { get; set; } // nvarchar(
			/// <summary>
			/// Name of schema that contains the table.<br/><br/> <strong> Important </strong>  only reliable way to find the schema of a object is to query the sys.objects catalog view.
			/// </summary>
			[Column("TABLE_SCHEMA"),     Nullable] public string? TableSchema  { get; set; } // nvarchar(
			/// <summary>
			/// Base table.
			/// </summary>
			[Column("TABLE_NAME"),    NotNull    ] public string  TableName    { get; set; } = null!; // sysname
			/// <summary>
			/// Column name.
			/// </summary>
			[Column("COLUMN_NAME"),      Nullable] public string? ColumnName   { get; set; } // sysname
		}

		/// <summary>
		/// <para><strong>VIEW_TABLE_USAGE (Transact-SQL)</strong></para>
		/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions) √ Azure SQL Database √ Azure SQL Managed Instance √ Azure Synapse Analytics √ Analytics Platform System (PDW)</para>
		/// <para>Returns one row for each table in the current database that is used in a view. This information schema view returns information about the objects to which the current user has permissions.<br/>
		///  To retrieve information from these views, specify the fully qualified name of <strong>INFORMATION_SCHEMA.</strong>_view_name_.</para><br/>
		/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-information-schema-views/view-table-usage-transact-sql'>INFORMATION_SCHEMA.VIEW_TABLE_USAGE</a>.</para>
		/// </summary>
		[Table(Schema="INFORMATION_SCHEMA", Name="VIEW_TABLE_USAGE", IsView=true)]
		public partial class ViewTableUsage
		{
			/// <summary>
			/// View qualifier.
			/// </summary>
			[Column("VIEW_CATALOG"),     Nullable] public string? ViewCatalog  { get; set; } // nvarchar(
			/// <summary>
			/// Name of schema that contains the view.<br/><br/> <strong> Important </strong>  only reliable way to find the schema of a object is to query the sys.objects catalog view.
			/// </summary>
			[Column("VIEW_SCHEMA"),      Nullable] public string? ViewSchema   { get; set; } // nvarchar(
			/// <summary>
			/// View name.
			/// </summary>
			[Column("VIEW_NAME"),     NotNull    ] public string  ViewName     { get; set; } = null!; // sysname
			/// <summary>
			/// Table qualifier.
			/// </summary>
			[Column("TABLE_CATALOG"),    Nullable] public string? TableCatalog { get; set; } // nvarchar(
			/// <summary>
			/// Name of schema that contains the base table.<br/><br/> <strong> Important </strong>  only reliable way to find the schema of a object is to query the sys.objects catalog view.
			/// </summary>
			[Column("TABLE_SCHEMA"),     Nullable] public string? TableSchema  { get; set; } // nvarchar(
			/// <summary>
			/// Base table that the view is based on.
			/// </summary>
			[Column("TABLE_NAME"),    NotNull    ] public string  TableName    { get; set; } = null!; // sysname
		}
	}

	public static partial class LinkedServersSchema
	{
		public partial class DataContext
		{
			/// <summary>
			/// <para><strong>sys.linked_logins (Transact-SQL)</strong></para>
			/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)</para>
			/// <para>Returns a row per linked-server-login mapping, for use by RPC and distributed queries from local server to the corresponding linked server.</para><br/>
			/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-linked-logins-transact-sql'>sys.linked_logins</a>.</para>
			/// </summary>
			public ITable<LinkedLogin> LinkedLogins { get { return _dataContext.GetTable<LinkedLogin>(); } }
			/// <summary>
			/// <para><strong>sys.remote_logins (Transact-SQL)</strong></para>
			/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)</para>
			/// <para>Returns a row per remote-login mapping. This catalog view is used to map incoming local logins that claim to be coming from a corresponding server to an actual local login.</para><br/>
			/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-remote-logins-transact-sql'>sys.remote_logins</a>.</para>
			/// </summary>
			public ITable<RemoteLogin> RemoteLogins { get { return _dataContext.GetTable<RemoteLogin>(); } }
			/// <summary>
			/// <para><strong>sys.servers (Transact-SQL)</strong></para>
			/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions) √ Azure SQL Managed Instance</para>
			/// <para>Contains a row per linked or remote server registered, and a row for the local server that has <strong>server_id</strong> = 0.</para><br/>
			/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-servers-transact-sql'>sys.servers</a>.</para>
			/// </summary>
			public ITable<Server>      Servers      { get { return _dataContext.GetTable<Server>(); } }

			private readonly IDataContext _dataContext;

			public DataContext(IDataContext dataContext)
			{
				_dataContext = dataContext;
			}
		}

		/// <summary>
		/// <para><strong>sys.linked_logins (Transact-SQL)</strong></para>
		/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)</para>
		/// <para>Returns a row per linked-server-login mapping, for use by RPC and distributed queries from local server to the corresponding linked server.</para><br/>
		/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-linked-logins-transact-sql'>sys.linked_logins</a>.</para>
		/// </summary>
		[Table(Schema="sys", Name="linked_logins", IsView=true)]
		public partial class LinkedLogin
		{
			/// <summary>
			/// ID of the server in <strong>sys.servers</strong>.
			/// </summary>
			[Column("server_id"),            NotNull    ] public int      ServerID           { get; set; } // int
			/// <summary>
			/// Server-principal to whom mapping applies.<br/><br/> 0 = wildcard or public.
			/// </summary>
			[Column("local_principal_id"),      Nullable] public int?     LocalPrincipalID   { get; set; } // int
			/// <summary>
			/// If 1, mapping indicates session should use its own credentials; otherwise, 0 indicates that session uses the name and password that are supplied.
			/// </summary>
			[Column("uses_self_credential"), NotNull    ] public bool     UsesSelfCredential { get; set; } // bit
			/// <summary>
			/// Remote user name to use when connecting. Password is also stored, but not exposed in catalog view interfaces.
			/// </summary>
			[Column("remote_name"),             Nullable] public string?  RemoteName         { get; set; } // sysname
			/// <summary>
			/// Date the linked login was last changed.
			/// </summary>
			[Column("modify_date"),          NotNull    ] public DateTime ModifyDate         { get; set; } // datetime
		}

		/// <summary>
		/// <para><strong>sys.remote_logins (Transact-SQL)</strong></para>
		/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)</para>
		/// <para>Returns a row per remote-login mapping. This catalog view is used to map incoming local logins that claim to be coming from a corresponding server to an actual local login.</para><br/>
		/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-remote-logins-transact-sql'>sys.remote_logins</a>.</para>
		/// </summary>
		[Table(Schema="sys", Name="remote_logins", IsView=true)]
		public partial class RemoteLogin
		{
			/// <summary>
			/// ID of the server in <strong>sys.servers</strong>. This name is supplied by the connection from the 'remote' server.
			/// </summary>
			[Column("server_id"),          NotNull    ] public int      ServerID         { get; set; } // int
			/// <summary>
			/// Login name that the connection will supply to be mapped. If NULL, the login name that is specified in the connection is used.
			/// </summary>
			[Column("remote_name"),           Nullable] public string?  RemoteName       { get; set; } // sysname
			/// <summary>
			/// ID of the server principal to whom the login is mapped. If 0, the remote login is mapped to the login with the same name.
			/// </summary>
			[Column("local_principal_id"),    Nullable] public int?     LocalPrincipalID { get; set; } // int
			/// <summary>
			/// Date the linked login was last changed.
			/// </summary>
			[Column("modify_date"),        NotNull    ] public DateTime ModifyDate       { get; set; } // datetime
		}

		/// <summary>
		/// <para><strong>sys.servers (Transact-SQL)</strong></para>
		/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions) √ Azure SQL Managed Instance</para>
		/// <para>Contains a row per linked or remote server registered, and a row for the local server that has <strong>server_id</strong> = 0.</para><br/>
		/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-servers-transact-sql'>sys.servers</a>.</para>
		/// </summary>
		[Table(Schema="sys", Name="servers", IsView=true)]
		public partial class Server
		{
			/// <summary>
			/// Local ID of linked server.
			/// </summary>
			[Column("server_id"),                                    NotNull    ] public int      ServerID                                { get; set; } // int
			/// <summary>
			/// When <strong>server_id</strong> = 0, the returned value is the server name.<br/><br/> When <strong>server_id</strong> > 0, the returned value is the local name of linked server.
			/// </summary>
			[Column("name"),                                         NotNull    ] public string   Name                                    { get; set; } = null!; // sysname
			/// <summary>
			/// Product name of the linked server. A value of 'SQL Server' indicates another instance of SQL Server.
			/// </summary>
			[Column("product"),                                      NotNull    ] public string   Product                                 { get; set; } = null!; // sysname
			/// <summary>
			/// OLE DB provider name for connecting to linked server.<br/><br/>Starting with SQL Server 2019 (15.x), the value 'SQLNCLI' maps to the <a href='https://docs.microsoft.com/en-us/sql/relational-databases/https://docs.microsoft.com/en-us/sql/relational-databases/connect/oledb/oledb-driver-for-sql-server'>Microsoft OLE DB Driver for SQL Server (MSOLEDBSQL)</a> by default. In earlier versions, the value 'SQLNCLI' maps to the <a href='https://docs.microsoft.com/en-us/sql/relational-databases/native-client/sql-server-native-client'>SQL Server Native Client OLE DB provider (SQLNCLI11)</a>.
			/// </summary>
			[Column("provider"),                                     NotNull    ] public string   Provider                                { get; set; } = null!; // sysname
			/// <summary>
			/// OLE DB data source connection property.
			/// </summary>
			[Column("data_source"),                                     Nullable] public string?  DataSource                              { get; set; } // nvarchar(4000)
			/// <summary>
			/// OLE DB location connection property. NULL if none.
			/// </summary>
			[Column("location"),                                        Nullable] public string?  Location                                { get; set; } // nvarchar(4000)
			/// <summary>
			/// OLE DB provider-string connection property.<br/><br/> Is NULL unless the caller has the <c>ALTER ANY LINKED SERVER</c> permission.
			/// </summary>
			[Column("provider_string"),                                 Nullable] public string?  ProviderString                          { get; set; } // nvarchar(4000)
			/// <summary>
			/// OLE DB catalog connection property. NULL if none.
			/// </summary>
			[Column("catalog"),                                         Nullable] public string?  Catalog                                 { get; set; } // sysname
			/// <summary>
			/// Connect time-out in seconds, 0 if none.
			/// </summary>
			[Column("connect_timeout"),                                 Nullable] public int?     ConnectTimeout                          { get; set; } // int
			/// <summary>
			/// Query time-out in seconds, 0 if none.
			/// </summary>
			[Column("query_timeout"),                                   Nullable] public int?     QueryTimeout                            { get; set; } // int
			/// <summary>
			/// 0 = Is an old-style server added by using <strong>sp_addserver</strong>, with different RPC and distributed-transaction behavior.<br/><br/> 1 = Standard linked server.
			/// </summary>
			[Column("is_linked"),                                    NotNull    ] public bool     IsLinked                                { get; set; } // bit
			/// <summary>
			/// RPC option is set enabling incoming remote logins for this server.
			/// </summary>
			[Column("is_remote_login_enabled"),                      NotNull    ] public bool     IsRemoteLoginEnabled                    { get; set; } // bit
			/// <summary>
			/// Outgoing (from this server) RPC is enabled.
			/// </summary>
			[Column("is_rpc_out_enabled"),                           NotNull    ] public bool     IsRpcOutEnabled                         { get; set; } // bit
			/// <summary>
			/// Server is enabled for distributed queries.
			/// </summary>
			[Column("is_data_access_enabled"),                       NotNull    ] public bool     IsDataAccessEnabled                     { get; set; } // bit
			/// <summary>
			/// Collation of remote data is assumed to be compatible with local data if no collation information is available.
			/// </summary>
			[Column("is_collation_compatible"),                      NotNull    ] public bool     IsCollationCompatible                   { get; set; } // bit
			/// <summary>
			/// If 1, use the collation reported by the remote server; otherwise, use the collation specified by the next column.
			/// </summary>
			[Column("uses_remote_collation"),                        NotNull    ] public bool     UsesRemoteCollation                     { get; set; } // bit
			/// <summary>
			/// Name of collation to use, or NULL if just use local.
			/// </summary>
			[Column("collation_name"),                                  Nullable] public string?  CollationName                           { get; set; } // sysname
			/// <summary>
			/// If 1, schema validation is not checked at query startup.
			/// </summary>
			[Column("lazy_schema_validation"),                       NotNull    ] public bool     LazySchemaValidation                    { get; set; } // bit
			/// <summary>
			/// This server can be accessed only by the internal system.
			/// </summary>
			[Column("is_system"),                                    NotNull    ] public bool     IsSystem                                { get; set; } // bit
			/// <summary>
			/// Server is a replication Publisher.
			/// </summary>
			[Column("is_publisher"),                                 NotNull    ] public bool     IsPublisher                             { get; set; } // bit
			/// <summary>
			/// Server is a replication Subscriber.
			/// </summary>
			[Column("is_subscriber"),                                   Nullable] public bool?    IsSubscriber                            { get; set; } // bit
			/// <summary>
			/// Server is a replication Distributor.
			/// </summary>
			[Column("is_distributor"),                                  Nullable] public bool?    IsDistributor                           { get; set; } // bit
			/// <summary>
			/// Server is a non-SQL Server replication Subscriber.
			/// </summary>
			[Column("is_nonsql_subscriber"),                            Nullable] public bool?    IsNonsqlSubscriber                      { get; set; } // bit
			/// <summary>
			/// If 1, calling a remote stored procedure starts a distributed transaction and enlists the transaction with MS DTC. For more information, see <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-stored-procedures/sp-serveroption-transact-sql'>sp_serveroption (Transact-SQL)</a>.
			/// </summary>
			[Column("is_remote_proc_transaction_promotion_enabled"),    Nullable] public bool?    IsRemoteProcTransactionPromotionEnabled { get; set; } // bit
			/// <summary>
			/// Date that server information was last changed.
			/// </summary>
			[Column("modify_date"),                                  NotNull    ] public DateTime ModifyDate                              { get; set; } // datetime
			/// <summary>
			/// <strong>Applies to:</strong> Starting with SQL Server 2016 (13.x).<br/><br/>Server is remote data archive enable (stretch-enabled). For more information, see <a href='https://docs.microsoft.com/en-us/sql/sql-server/stretch-database/enable-stretch-database-for-a-database#EnableTSQLServer'>Enable Stretch Database on the server</a>.
			/// </summary>
			[Column("is_rda_server"),                                   Nullable] public bool?    IsRdaServer                             { get; set; } // bit
		}
	}

	public static partial class ObjectSchema
	{
		public partial class DataContext
		{
			/// <summary>
			/// <para><strong>sys.all_columns (Transact-SQL)</strong></para>
			/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions) √ Azure SQL Database √ Azure SQL Managed Instance √ Azure Synapse Analytics √ Analytics Platform System (PDW)</para>
			/// <para>Shows the union of all columns belonging to user-defined objects and system objects.</para><br/>
			/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-all-columns-transact-sql'>sys.all_columns</a>.</para>
			/// </summary>
			public ITable<AllColumn>                              AllColumns                              { get { return _dataContext.GetTable<AllColumn>(); } }
			/// <summary>
			/// <para><strong>sys.all_objects (Transact-SQL)</strong></para>
			/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions) √ Azure SQL Database √ Azure SQL Managed Instance √ Azure Synapse Analytics √ Analytics Platform System (PDW)</para>
			/// <para>Shows the UNION of all schema-scoped user-defined objects and system objects.</para><br/>
			/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-all-objects-transact-sql'>sys.all_objects</a>.</para>
			/// </summary>
			public ITable<AllObject>                              AllObjects                              { get { return _dataContext.GetTable<AllObject>(); } }
			/// <summary>
			/// <para><strong>sys.allocation_units (Transact-SQL)</strong></para>
			/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)  √ Azure SQL Database</para>
			/// <para>Contains a row for each allocation unit in the database.</para><br/>
			/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-allocation-units-transact-sql'>sys.allocation_units</a>.</para>
			/// </summary>
			public ITable<AllocationUnit>                         AllocationUnits                         { get { return _dataContext.GetTable<AllocationUnit>(); } }
			/// <summary>
			/// <para><strong>sys.all_parameters (Transact-SQL)</strong></para>
			/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions) √ Azure SQL Database √ Azure SQL Managed Instance √ Azure Synapse Analytics √ Analytics Platform System (PDW)</para>
			/// <para>Shows the union of all parameters that belong to user-defined or system objects.</para><br/>
			/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-all-parameters-transact-sql'>sys.all_parameters</a>.</para>
			/// </summary>
			public ITable<AllParameter>                           AllParameters                           { get { return _dataContext.GetTable<AllParameter>(); } }
			/// <summary>
			/// <para><strong>sys.all_sql_modules (Transact-SQL)</strong></para>
			/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions) √ Azure SQL Database √ Azure SQL Managed Instance √ Azure Synapse Analytics √ Analytics Platform System (PDW)</para>
			/// <para>Returns the union of <strong>sys.sql_modules</strong> and <strong>sys.system_sql_modules</strong>.<br/>
			///  The view returns a row for each natively compiled, scalar user-defined function. For more information, see <a href='https://docs.microsoft.com/en-us/sql/relational-databases/in-memory-oltp/scalar-user-defined-functions-for-in-memory-oltp'>Scalar User-Defined Functions for In-Memory OLTP</a>.</para><br/>
			/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-all-sql-modules-transact-sql'>sys.all_sql_modules</a>.</para>
			/// </summary>
			public ITable<AllSqlModule>                           AllSqlModules                           { get { return _dataContext.GetTable<AllSqlModule>(); } }
			/// <summary>
			/// <para><strong>sys.all_views (Transact-SQL)</strong></para>
			/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions) √ Azure SQL Database √ Azure SQL Managed Instance √ Azure Synapse Analytics √ Analytics Platform System (PDW)</para>
			/// <para>Shows the UNION of all user-defined and system views.</para><br/>
			/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-all-views-transact-sql'>sys.all_views</a>.</para>
			/// </summary>
			public ITable<AllView>                                AllViews                                { get { return _dataContext.GetTable<AllView>(); } }
			/// <summary>
			/// <para><strong>sys.assembly_modules (Transact-SQL)</strong></para>
			/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions) √ Azure SQL Managed Instance √ Azure Synapse Analytics √ Analytics Platform System (PDW)</para>
			/// <para>Returns one row for each function, procedure or trigger that is defined by a common language runtime (CLR) assembly. This catalog view maps CLR stored procedures, CLR triggers, or CLR functions to their underlying implementation. Objects of type TA, AF, PC, FS, and FT have an associated assembly module. To find the association between the object and the assembly, you can join this catalog view to other catalog views. For example, when you create a CLR stored procedure, it is represented by one row in <strong>sys.objects</strong>, one row in <strong>sys.procedures</strong> (which inherits from <strong>sys.objects</strong>), and one row in <strong>sys.assembly_modules</strong>. The stored procedure itself is represented by the metadata in <strong>sys.objects</strong> and <strong>sys.procedures</strong>. References to the procedure's underlying CLR implementation are found in <strong>sys.assembly_modules</strong>.</para><br/>
			/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-assembly-modules-transact-sql'>sys.assembly_modules</a>.</para>
			/// </summary>
			public ITable<AssemblyModule>                         AssemblyModules                         { get { return _dataContext.GetTable<AssemblyModule>(); } }
			/// <summary>
			/// <para><strong>sys.check_constraints (Transact-SQL)</strong></para>
			/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)  √ Azure SQL Database</para>
			/// <para>Contains a row for each object that is a CHECK constraint, with <strong>sys.objects.type</strong> = 'C'.</para><br/>
			/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-check-constraints-transact-sql'>sys.check_constraints</a>.</para>
			/// </summary>
			public ITable<CheckConstraint>                        CheckConstraints                        { get { return _dataContext.GetTable<CheckConstraint>(); } }
			/// <summary>
			/// <para><strong>sys.columns (Transact-SQL)</strong></para>
			/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions) √ Azure SQL Database √ Azure SQL Managed Instance √ Azure Synapse Analytics √ Analytics Platform System (PDW)</para>
			/// <para>Returns a row for each column of an object that has columns, such as views or tables. The following is a list of object types that have columns:<br/>
			/// - Table-valued assembly functions (FT)<br/>
			/// - Inline table-valued SQL functions (IF)<br/>
			/// - Internal tables (IT)<br/>
			/// - System tables (S)<br/>
			/// - Table-valued SQL functions (TF)<br/>
			/// - User tables (U)<br/>
			/// - Views (V)</para><br/>
			/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-columns-transact-sql'>sys.columns</a>.</para>
			/// </summary>
			public ITable<Column>                                 Columns                                 { get { return _dataContext.GetTable<Column>(); } }
			/// <summary>
			/// <para><strong>sys.column_store_dictionaries (Transact-SQL)</strong></para>
			/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)</para>
			/// <para>Contains a row for each dictionary used in xVelocity memory optimized columnstore indexes. Dictionaries are used to encode some, but not all data types, therefore not all columns in a columnstore index have dictionaries. A dictionary can exist as a primary dictionary (for all segments) and possibly for other secondary dictionaries used for a subset of the column's segments.</para><br/>
			/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-column-store-dictionaries-transact-sql'>sys.column_store_dictionaries</a>.</para>
			/// </summary>
			public ITable<ColumnStoreDictionary>                  ColumnStoreDictionaries                 { get { return _dataContext.GetTable<ColumnStoreDictionary>(); } }
			/// <summary>
			/// <para><strong>sys.column_store_row_groups (Transact-SQL)</strong></para>
			/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)</para>
			/// <para>Provides clustered columnstore index information on a per-segment basis to help the administrator make system management decisions. <strong>sys.column_store_row_groups</strong> has a column for the total number of rows physically stored (including those marked as deleted) and a column for the number of rows marked as deleted. Use <strong>sys.column_store_row_groups</strong> to determine which row groups have a high percentage of deleted rows and should be rebuilt.</para><br/>
			/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-column-store-row-groups-transact-sql'>sys.column_store_row_groups</a>.</para>
			/// </summary>
			public ITable<ColumnStoreRowGroup>                    ColumnStoreRowGroups                    { get { return _dataContext.GetTable<ColumnStoreRowGroup>(); } }
			/// <summary>
			/// <para><strong>sys.column_store_segments (Transact-SQL)</strong></para>
			/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)</para>
			/// <para>Returns one row for each column segment in a columnstore index. There is one column segment per column per rowgroup. For example, a table with 10 rowgroups and 34 columns returns 340 rows.</para><br/>
			/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-column-store-segments-transact-sql'>sys.column_store_segments</a>.</para>
			/// </summary>
			public ITable<ColumnStoreSegment>                     ColumnStoreSegments                     { get { return _dataContext.GetTable<ColumnStoreSegment>(); } }
			/// <summary>
			/// <para><strong>sys.computed_columns (Transact-SQL)</strong></para>
			/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions) √ Azure SQL Database √ Azure SQL Managed Instance √ Azure Synapse Analytics √ Analytics Platform System (PDW)</para>
			/// <para>Contains a row for each column found in <strong>sys.columns</strong> that is a computed-column.</para><br/>
			/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-computed-columns-transact-sql'>sys.computed_columns</a>.</para>
			/// </summary>
			public ITable<ComputedColumn>                         ComputedColumns                         { get { return _dataContext.GetTable<ComputedColumn>(); } }
			/// <summary>
			/// <para><strong>sys.default_constraints (Transact-SQL)</strong></para>
			/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions) √ Azure SQL Database √ Azure SQL Managed Instance √ Azure Synapse Analytics √ Analytics Platform System (PDW)</para>
			/// <para>Contains a row for each object that is a default definition (created as part of a CREATE TABLE or ALTER TABLE statement instead of a CREATE DEFAULT statement), with <strong>sys.objects.type</strong> = D.</para><br/>
			/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-default-constraints-transact-sql'>sys.default_constraints</a>.</para>
			/// </summary>
			public ITable<DefaultConstraint>                      DefaultConstraints                      { get { return _dataContext.GetTable<DefaultConstraint>(); } }
			/// <summary>
			/// <para><strong>sys.events (Transact-SQL)</strong></para>
			/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)  √ Azure SQL Database</para>
			/// <para>Contains a row for each event for which a trigger or event notification fires. These events represent the event types that are specified when the trigger or event notification is created by using <a href='https://docs.microsoft.com/en-us/sql/t-sql/statements/create-trigger-transact-sql'>CREATE TRIGGER</a> or <a href='https://docs.microsoft.com/en-us/sql/t-sql/statements/create-event-notification-transact-sql'>CREATE EVENT NOTIFICATION</a>.</para><br/>
			/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-events-transact-sql'>sys.events</a>.</para>
			/// </summary>
			public ITable<Event>                                  Events                                  { get { return _dataContext.GetTable<Event>(); } }
			/// <summary>
			/// <para><strong>sys.event_notifications (Transact-SQL)</strong></para>
			/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)  √ Azure SQL Database</para>
			/// <para>Returns a row for each object that is an event notification, with <strong>sys.objects.type</strong> = EN.</para><br/>
			/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-event-notifications-transact-sql'>sys.event_notifications</a>.</para>
			/// </summary>
			public ITable<EventNotification>                      EventNotifications                      { get { return _dataContext.GetTable<EventNotification>(); } }
			/// <summary>
			/// <para><strong>sys.event_notification_event_types (Transact-SQL)</strong></para>
			/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)  √ Azure SQL Database</para>
			/// <para>Returns a row for each event or event group on which an event notification can fire.</para><br/>
			/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-event-notification-event-types-transact-sql'>sys.event_notification_event_types</a>.</para>
			/// </summary>
			public ITable<EventNotificationEventType>             EventNotificationEventTypes             { get { return _dataContext.GetTable<EventNotificationEventType>(); } }
			/// <summary>
			/// <para><strong>sys.extended_procedures (Transact-SQL)</strong></para>
			/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)</para>
			/// <para>Contains a row for each object that is an extended stored procedure, with <strong>sys.objects.type</strong> = X. Because extended stored procedures are installed into the <strong>master</strong> database, they are only visible from that database context. Selecting from the <strong>sys.extended_procedures</strong> view in any other database context will return an empty result set.</para><br/>
			/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-extended-procedures-transact-sql'>sys.extended_procedures</a>.</para>
			/// </summary>
			public ITable<ExtendedProcedure>                      ExtendedProcedures                      { get { return _dataContext.GetTable<ExtendedProcedure>(); } }
			/// <summary>
			/// <para><strong>sys.external_languages (Transact-SQL)</strong></para>
			/// <para><strong>Applies to:</strong> √ SQL Server 2019 (15.x)</para>
			/// <para>This catalog view provides a list of the external languages in the database. <strong>R</strong> and <strong>Python</strong> are reserved names and no external language can be created with those specific names.<br/>
			/// ## sys.external_languages<br/>
			/// The catalog view sys.external_languages lists a row for each external language in the database.</para><br/>
			/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-external-languages-transact-sql'>sys.external_languages</a>.</para>
			/// </summary>
			public ITable<ExternalLanguage>                       ExternalLanguages                       { get { return _dataContext.GetTable<ExternalLanguage>(); } }
			/// <summary>
			/// <para><strong>sys.external_language_files (Transact-SQL)</strong></para>
			/// <para><strong>Applies to:</strong> √ SQL Server 2019 (15.x)</para>
			/// <para>This catalog view provides a list of the external language extension files in the database. <strong>R</strong> and <strong>Python</strong> are reserved names and no external language can be created with those specific names.<br/>
			/// When an external language is created from a file_spec, the extension itself and its properties are listed in this view. This view will contain one entry per language, per OS.<br/>
			/// ## sys.external_language_files<br/>
			/// The catalog view sys.external_language_files lists a row for each external language extension in the database. Parameters</para><br/>
			/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-external-language-files-transact-sql'>sys.external_language_files</a>.</para>
			/// </summary>
			public ITable<ExternalLanguageFile>                   ExternalLanguageFiles                   { get { return _dataContext.GetTable<ExternalLanguageFile>(); } }
			/// <summary>
			/// <para><strong>sys.external_libraries (Transact-SQL)</strong></para>
			/// <para><strong>Applies to:</strong> √ SQL Server 2017 (14.x) and later √ Azure SQL Managed Instance</para>
			/// <para>Supports the management of package libraries related to external runtimes such as R, Python, and Java.<br/>
			/// <note type='note'><br/>
			/// In SQL Server 2017, R language and Windows platform are supported. R, Python, and Java on the Windows and Linux platforms are supported in SQL Server 2019 and later. On Azure SQL Managed Instance, R and Python are supported.<br/>
			/// </note><br/>
			/// ## sys.external_libraries<br/>
			/// The catalog view sys.external_libraries lists a row for each external library that has been uploaded into the database.</para><br/>
			/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-external-libraries-transact-sql'>sys.external_libraries</a>.</para>
			/// </summary>
			public ITable<ExternalLibrary>                        ExternalLibraries                       { get { return _dataContext.GetTable<ExternalLibrary>(); } }
			/// <summary>
			/// <para><strong>sys.external_library_files (Transact-SQL)</strong></para>
			/// <para><strong>Applies to:</strong> √ SQL Server 2017 (14.x) and later √ Azure SQL Managed Instance</para>
			/// <para>Lists a row for each file that makes up an external library.</para><br/>
			/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-external-library-files-transact-sql'>sys.external_library_files</a>.</para>
			/// </summary>
			public ITable<ExternalLibraryFile>                    ExternalLibraryFiles                    { get { return _dataContext.GetTable<ExternalLibraryFile>(); } }
			/// <summary>
			/// <para><strong>sys.foreign_keys (Transact-SQL)</strong></para>
			/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions) √ Azure SQL Database √ Azure SQL Managed Instance √ Azure Synapse Analytics √ Analytics Platform System (PDW)</para>
			/// <para>Contains a row per object that is a FOREIGN KEY constraint, with <strong>sys.object.type</strong> = F.</para><br/>
			/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-foreign-keys-transact-sql'>sys.foreign_keys</a>.</para>
			/// </summary>
			public ITable<ForeignKey>                             ForeignKeys                             { get { return _dataContext.GetTable<ForeignKey>(); } }
			/// <summary>
			/// <para><strong>sys.foreign_key_columns (Transact-SQL)</strong></para>
			/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions) √ Azure SQL Database √ Azure SQL Managed Instance √ Azure Synapse Analytics √ Analytics Platform System (PDW)</para>
			/// <para>Contains a row for each column, or set of columns, that comprise a foreign key.</para><br/>
			/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-foreign-key-columns-transact-sql'>sys.foreign_key_columns</a>.</para>
			/// </summary>
			public ITable<ForeignKeyColumn>                       ForeignKeyColumns                       { get { return _dataContext.GetTable<ForeignKeyColumn>(); } }
			/// <summary>
			/// <para><strong>sys.function_order_columns (Transact-SQL)</strong></para>
			/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)</para>
			/// <para>Returns one row per column that is a part of an <strong>ORDER</strong> expression of a common language runtime (CLR) table-valued function.</para><br/>
			/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-function-order-columns-transact-sql'>sys.function_order_columns</a>.</para>
			/// </summary>
			public ITable<FunctionOrderColumn>                    FunctionOrderColumns                    { get { return _dataContext.GetTable<FunctionOrderColumn>(); } }
			/// <summary>
			/// <para><strong>sys.hash_indexes (Transact-SQL)</strong></para>
			/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)</para>
			/// <para>Shows the current hash indexes and the hash index properties. Hash indexes are supported only on <a href='https://docs.microsoft.com/en-us/sql/relational-databases/in-memory-oltp/overview-and-usage-scenarios'>In-Memory OLTP (In-Memory Optimization)</a>.<br/>
			///  The sys.hash_indexes view contains the same columns as the sys.indexes view and an additional column named <strong>bucket_count</strong>. For more information about the other columns in the sys.hash_indexes view, see <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-indexes-transact-sql'>sys.indexes (Transact-SQL)</a>.</para><br/>
			/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-hash-indexes-transact-sql'>sys.hash_indexes</a>.</para>
			/// </summary>
			public ITable<HashIndex>                              HashIndexes                             { get { return _dataContext.GetTable<HashIndex>(); } }
			/// <summary>
			/// <para><strong>sys.identity_columns (Transact-SQL)</strong></para>
			/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions) √ Azure SQL Database √ Azure SQL Managed Instance √ Azure Synapse Analytics √ Analytics Platform System (PDW)</para>
			/// <para>Contains a row for each column that is an identity column.<br/>
			///  The <strong>sys.identity_columns</strong> view inherits rows from the <strong>sys.columns</strong> view. The <strong>sys.identity_columns</strong> view returns the columns in the <strong>sys.columns</strong> view, plus the <strong>seed_value</strong>, <strong>increment_value</strong>, <strong>last_value</strong>, and <strong>is_not_for_replication</strong> columns. For more information, see <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/catalog-views-transact-sql'>Catalog Views (Transact-SQL)</a>.</para><br/>
			/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-identity-columns-transact-sql'>sys.identity_columns</a>.</para>
			/// </summary>
			public ITable<IdentityColumn>                         IdentityColumns                         { get { return _dataContext.GetTable<IdentityColumn>(); } }
			/// <summary>
			/// <para><strong>sys.indexes (Transact-SQL)</strong></para>
			/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions) √ Azure SQL Database √ Azure SQL Managed Instance √ Azure Synapse Analytics √ Analytics Platform System (PDW)</para>
			/// <para>Contains a row per index or heap of a tabular object, such as a table, view, or table-valued function.</para><br/>
			/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-indexes-transact-sql'>sys.indexes</a>.</para>
			/// </summary>
			public ITable<Index>                                  Indexes                                 { get { return _dataContext.GetTable<Index>(); } }
			/// <summary>
			/// <para><strong>sys.index_columns (Transact-SQL)</strong></para>
			/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions) √ Azure SQL Database √ Azure SQL Managed Instance √ Azure Synapse Analytics √ Analytics Platform System (PDW)</para>
			/// <para>Contains one row per column that is part of a <strong>sys.indexes</strong> index or unordered table (heap).</para><br/>
			/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-index-columns-transact-sql'>sys.index_columns</a>.</para>
			/// </summary>
			public ITable<IndexColumn>                            IndexColumns                            { get { return _dataContext.GetTable<IndexColumn>(); } }
			/// <summary>
			/// <para><strong>sys.index_resumable_operations (Transact-SQL)</strong></para>
			/// <para><strong>Applies to:</strong> √ SQL Server 2017 (14.x) and later  √ Azure SQL Database</para>
			/// <para><strong>sys.index_resumable_operations</strong> is a system view that monitors and checks the current execution status for resumable Index rebuild or creation.<br/>
			/// <strong>Applies to</strong>: SQL Server (2017 and newer), and Azure SQL Database</para><br/>
			/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-index-resumable-operations'>sys.index_resumable_operations</a>.</para>
			/// </summary>
			public ITable<IndexResumableOperation>                IndexResumableOperations                { get { return _dataContext.GetTable<IndexResumableOperation>(); } }
			/// <summary>
			/// <para><strong>sys.internal_partitions (Transact-SQL)</strong></para>
			/// <para><strong>Applies to:</strong> √ SQL Server 2016 (13.x) and later √ Azure SQL Database √ Azure SQL Managed Instance</para>
			/// <para>Returns one row for each rowset that tracks internal data for columnstore indexes on disk-based tables. These rowsets are internal to columnstore indexes and track deleted rows, rowgroup mappings, and delta store rowgroups. They track data for each for each table partition; every table has at least one partition. SQL Server re-creates the rowsets each time it rebuilds the columnstore index.</para><br/>
			/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-internal-partitions-transact-sql'>sys.internal_partitions</a>.</para>
			/// </summary>
			public ITable<InternalPartition>                      InternalPartitions                      { get { return _dataContext.GetTable<InternalPartition>(); } }
			/// <summary>
			/// <para><strong>sys.internal_tables (Transact-SQL)</strong></para>
			/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)</para>
			/// <para>Returns one row for each object that is an internal table. Internal tables are automatically generated by SQL Server to support various features. For example, when you create a primary XML index, SQL Server automatically creates an internal table to persist the shredded XML document data. Internal tables appear in the <strong>sys</strong> schema of every database and have unique, system-generated names that indicate their function, for example, <strong>xml_index_nodes_2021582240_32001</strong> or <strong>queue_messages_1977058079</strong><br/>
			///  Internal tables do not contain user-accessible data, and their schema are fixed and unalterable. You cannot reference internal table names in Transact\-SQL statements. For example, you cannot execute a statement such as SELECT \* FROM *\&lt;sys.internal_table_name&gt;*. However, you can query catalog views to see the metadata of internal tables.</para><br/>
			/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-internal-tables-transact-sql'>sys.internal_tables</a>.</para>
			/// </summary>
			public ITable<InternalTable>                          InternalTables                          { get { return _dataContext.GetTable<InternalTable>(); } }
			/// <summary>
			/// <para><strong>sys.key_constraints (Transact-SQL)</strong></para>
			/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions) √ Azure SQL Database √ Azure SQL Managed Instance √ Azure Synapse Analytics √ Analytics Platform System (PDW)</para>
			/// <para>Contains a row for each object that is a primary key or unique constraint. Includes <strong>sys.objects.type</strong> PK and UQ.</para><br/>
			/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-key-constraints-transact-sql'>sys.key_constraints</a>.</para>
			/// </summary>
			public ITable<KeyConstraint>                          KeyConstraints                          { get { return _dataContext.GetTable<KeyConstraint>(); } }
			/// <summary>
			/// <para><strong>sys.masked_columns (Transact-SQL)</strong></para>
			/// <para><strong>Applies to:</strong> √ SQL Server 2016 (13.x) and later √ Azure SQL Database √ Azure SQL Managed Instance</para>
			/// <para>Use the <strong>sys.masked_columns</strong> view to query for table-columns that have a dynamic data masking function applied to them. This view inherits from the <strong>sys.columns</strong> view. It returns all columns in the <strong>sys.columns</strong> view, plus the <strong>is_masked</strong> and <strong>masking_function</strong> columns, indicating if the column is masked, and if so, what masking function is defined. This view only shows the columns on which there is a masking function applied.</para><br/>
			/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-masked-columns-transact-sql'>sys.masked_columns</a>.</para>
			/// </summary>
			public ITable<MaskedColumn>                           MaskedColumns                           { get { return _dataContext.GetTable<MaskedColumn>(); } }
			/// <summary>
			/// <para><strong>sys.memory_optimized_tables_internal_attributes (Transact-SQL)</strong></para>
			/// <para><strong>Applies to:</strong> √ SQL Server 2016 (13.x) and later √ Azure SQL Database √ Azure SQL Managed Instance</para>
			/// <para>Contains a row for each internal memory-optimized table used for storing user memory-optimized tables. Each user table corresponds to one or more internal tables. A single table is used for the core data storage. Additional internal tables are used to support features such as temporal, columnstore index and off-row (LOB) storage for memory-optimized tables.</para><br/>
			/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-memory-optimized-tables-internal-attributes-transact-sql'>sys.memory_optimized_tables_internal_attributes</a>.</para>
			/// </summary>
			public ITable<MemoryOptimizedTablesInternalAttribute> MemoryOptimizedTablesInternalAttributes { get { return _dataContext.GetTable<MemoryOptimizedTablesInternalAttribute>(); } }
			/// <summary>
			/// <para><strong>sys.module_assembly_usages (Transact-SQL)</strong></para>
			/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)</para>
			/// <para>Returns a row for each module-to-assembly reference.</para><br/>
			/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-module-assembly-usages-transact-sql'>sys.module_assembly_usages</a>.</para>
			/// </summary>
			public ITable<ModuleAssemblyUsage>                    ModuleAssemblyUsages                    { get { return _dataContext.GetTable<ModuleAssemblyUsage>(); } }
			/// <summary>
			/// <para><strong>sys.numbered_procedures (Transact-SQL)</strong></para>
			/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions) √ Azure SQL Managed Instance √ Azure Synapse Analytics √ Analytics Platform System (PDW)</para>
			/// <para>Contains a row for each SQL Server stored procedure that was created as a numbered procedure. This does not show a row for the base (number = 1) stored procedure. Entries for the base stored procedures can be found in views such as <strong>sys.objects</strong> and <strong>sys.procedures</strong>.<br/>
			/// <note type='important'><br/>
			/// Numbered procedures are deprecated. Use of numbered procedures is discouraged. A DEPRECATION_ANNOUNCEMENT event is fired when a query that uses this catalog view is compiled.<br/>
			/// </note></para><br/>
			/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-numbered-procedures-transact-sql'>sys.numbered_procedures</a>.</para>
			/// </summary>
			public ITable<NumberedProcedure>                      NumberedProcedures                      { get { return _dataContext.GetTable<NumberedProcedure>(); } }
			/// <summary>
			/// <para><strong>sys.numbered_procedure_parameters (Transact-SQL)</strong></para>
			/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)</para>
			/// <para>Contains one row for each parameter of a numbered procedure. When you create a numbered stored procedure, the base procedure is number 1. All subsequent procedures have numbers 2, 3, and so forth. <strong>sys.numbered_procedure_parameters</strong> contains the parameter definitions for all subsequent procedures, numbered 2 and greater. This view does not show parameters for the base stored procedure (number = 1). The base stored procedure is similar to a nonnumbered stored procedure. Therefore, its parameters are represented in <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-parameters-transact-sql'>sys.parameters (Transact-SQL)</a>.<br/>
			/// <note type='important'><br/>
			/// Numbered procedures are deprecated. Use of numbered procedures is discouraged. A DEPRECATION_ANNOUNCEMENT event is fired when a query that uses this catalog view is compiled.<br/>
			/// </note><br/>
			/// <note type='note'><br/>
			/// XML and CLR parameters are not supported for numbered procedures.<br/>
			/// </note></para><br/>
			/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-numbered-procedure-parameters-transact-sql'>sys.numbered_procedure_parameters</a>.</para>
			/// </summary>
			public ITable<NumberedProcedureParameter>             NumberedProcedureParameters             { get { return _dataContext.GetTable<NumberedProcedureParameter>(); } }
			/// <summary>
			/// <para><strong>sys.objects (Transact-SQL)</strong></para>
			/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions) √ Azure SQL Database √ Azure SQL Managed Instance √ Azure Synapse Analytics √ Analytics Platform System (PDW)</para>
			/// <para>Contains a row for each user-defined, schema-scoped object that is created within a database, including natively compiled scalar user-defined function.<br/>
			///  For more information, see <a href='https://docs.microsoft.com/en-us/sql/relational-databases/in-memory-oltp/scalar-user-defined-functions-for-in-memory-oltp'>Scalar User-Defined Functions for In-Memory OLTP</a>.<br/>
			/// <note type='note'><br/>
			/// sys.objects does not show DDL triggers, because they are not schema-scoped. All triggers, both DML and DDL, are found in <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-triggers-transact-sql'>sys.triggers</a>. sys.triggers supports a mixture of name-scoping rules for the various kinds of triggers.<br/>
			/// </note></para><br/>
			/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-objects-transact-sql'>sys.objects</a>.</para>
			/// </summary>
			public ITable<Object>                                 Objects                                 { get { return _dataContext.GetTable<Object>(); } }
			/// <summary>
			/// <para><strong>sys.parameters (Transact-SQL)</strong></para>
			/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions) √ Azure SQL Database √ Azure SQL Managed Instance √ Azure Synapse Analytics √ Analytics Platform System (PDW)</para>
			/// <para>Contains a row for each parameter of an object that accepts parameters. If the object is a scalar function, there is also a single row describing the return value. That row will have a <strong>parameter_id</strong> value of 0.</para><br/>
			/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-parameters-transact-sql'>sys.parameters</a>.</para>
			/// </summary>
			public ITable<Parameter>                              Parameters                              { get { return _dataContext.GetTable<Parameter>(); } }
			/// <summary>
			/// <para><strong>sys.partitions (Transact-SQL)</strong></para>
			/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions) √ Azure SQL Database √ Azure SQL Managed Instance √ Azure Synapse Analytics √ Analytics Platform System (PDW)</para>
			/// <para>Contains a row for each partition of all the tables and most types of indexes in the database. Special index types such as Full-Text, Spatial, and XML are not included in this view. All tables and indexes in SQL Server contain at least one partition, whether or not they are explicitly partitioned.</para><br/>
			/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-partitions-transact-sql'>sys.partitions</a>.</para>
			/// </summary>
			public ITable<Partition>                              Partitions                              { get { return _dataContext.GetTable<Partition>(); } }
			/// <summary>
			/// <para><strong>sys.periods (Transact-SQL)</strong></para>
			/// <para><strong>Applies to:</strong> √ SQL Server 2016 (13.x) and later</para>
			/// <para>Returns a row for each table for which periods have been defined.</para><br/>
			/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-periods-transact-sql'>sys.periods</a>.</para>
			/// </summary>
			public ITable<Period>                                 Periods                                 { get { return _dataContext.GetTable<Period>(); } }
			/// <summary>
			/// <para><strong>sys.plan_guides (Transact-SQL)</strong></para>
			/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)  √ Azure SQL Database</para>
			/// <para>Contains a row for each plan guide in the database.</para><br/>
			/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-plan-guides-transact-sql'>sys.plan_guides</a>.</para>
			/// </summary>
			public ITable<PlanGuide>                              PlanGuides                              { get { return _dataContext.GetTable<PlanGuide>(); } }
			/// <summary>
			/// <para><strong>sys.procedures (Transact-SQL)</strong></para>
			/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions) √ Azure SQL Database √ Azure SQL Managed Instance √ Azure Synapse Analytics √ Analytics Platform System (PDW)</para>
			/// <para>Contains a row for each object that is a procedure of some kind, with <strong>sys.objects.type</strong> = P, X, RF, and PC.</para><br/>
			/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-procedures-transact-sql'>sys.procedures</a>.</para>
			/// </summary>
			public ITable<Procedure>                              Procedures                              { get { return _dataContext.GetTable<Procedure>(); } }
			/// <summary>
			/// <para><strong>sys.sequences (Transact-SQL)</strong></para>
			/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)  √ Azure SQL Database</para>
			/// <para>Contains a row for each sequence object in a database.</para><br/>
			/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-sequences-transact-sql'>sys.sequences</a>.</para>
			/// </summary>
			public ITable<Sequence>                               Sequences                               { get { return _dataContext.GetTable<Sequence>(); } }
			/// <summary>
			/// <para><strong>sys.server_assembly_modules (Transact-SQL)</strong></para>
			/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)</para>
			/// <para>Contains one row for each assembly module for the server-level triggers of type TA. This view maps assembly triggers to the underlying CLR implementation. You can join this relation to <strong>sys.server_triggers</strong>. The assembly must be loaded into the <strong>master</strong> database. The tuple (object_id) is the key for the relation.</para><br/>
			/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-server-assembly-modules-transact-sql'>sys.server_assembly_modules</a>.</para>
			/// </summary>
			public ITable<ServerAssemblyModule>                   ServerAssemblyModules                   { get { return _dataContext.GetTable<ServerAssemblyModule>(); } }
			/// <summary>
			/// <para><strong>sys.server_events (Transact-SQL)</strong></para>
			/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)</para>
			/// <para>Contains one row for each event for which a server-level event-notification or server-level DDL trigger fires. The columns <strong>object_id</strong> and <strong>type</strong> uniquely identify the server event.</para><br/>
			/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-server-events-transact-sql'>sys.server_events</a>.</para>
			/// </summary>
			public ITable<ServerEvent>                            ServerEvents                            { get { return _dataContext.GetTable<ServerEvent>(); } }
			/// <summary>
			/// <para><strong>sys.server_event_notifications (Transact-SQL)</strong></para>
			/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)</para>
			/// <para>Returns a row for each server-level event notification object.</para><br/>
			/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-server-event-notifications-transact-sql'>sys.server_event_notifications</a>.</para>
			/// </summary>
			public ITable<ServerEventNotification>                ServerEventNotifications                { get { return _dataContext.GetTable<ServerEventNotification>(); } }
			/// <summary>
			/// <para><strong>sys.server_sql_modules (Transact-SQL)</strong></para>
			/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)</para>
			/// <para>Contains the set of SQL modules for server-level triggers of type TR. You can join this relation to sys.server_triggers. The tuple (object_id) is the key of the relation.</para><br/>
			/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-server-sql-modules-transact-sql'>sys.server_sql_modules</a>.</para>
			/// </summary>
			public ITable<ServerSqlModule>                        ServerSqlModules                        { get { return _dataContext.GetTable<ServerSqlModule>(); } }
			/// <summary>
			/// <para><strong>sys.server_triggers (Transact-SQL)</strong></para>
			/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)</para>
			/// <para>Contains the set of all server-level DDL triggers with object_type of TR or TA. In the case of CLR triggers, the assembly must be loaded into the <strong>master</strong> database. All server-level DDL trigger names exist in a single, global scope.</para><br/>
			/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-server-triggers-transact-sql'>sys.server_triggers</a>.</para>
			/// </summary>
			public ITable<ServerTrigger>                          ServerTriggers                          { get { return _dataContext.GetTable<ServerTrigger>(); } }
			/// <summary>
			/// <para><strong>sys.server_trigger_events (Transact-SQL)</strong></para>
			/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)</para>
			/// <para>Contains one row for each event for which a server-level (synchronous) trigger fires.</para><br/>
			/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-server-trigger-events-transact-sql'>sys.server_trigger_events</a>.</para>
			/// </summary>
			public ITable<ServerTriggerEvent>                     ServerTriggerEvents                     { get { return _dataContext.GetTable<ServerTriggerEvent>(); } }
			/// <summary>
			/// <para><strong>sys.sql_dependencies (Transact-SQL)</strong></para>
			/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)</para>
			/// <para>Contains a row for each dependency on a referenced entity as referenced in the Transact\-SQL expression or statements that define some other referencing object.<br/>
			/// <note type='important'><br/>
			/// This feature will be removed in a future version of Microsoft SQL Server. Avoid using this feature in new development work, and plan to modify applications that currently use this feature. Use <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-sql-expression-dependencies-transact-sql'>sys.sql_expression_dependencies</a> instead.<br/>
			/// </note></para><br/>
			/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-sql-dependencies-transact-sql'>sys.sql_dependencies</a>.</para>
			/// </summary>
			public ITable<SqlDependency>                          SqlDependencies                         { get { return _dataContext.GetTable<SqlDependency>(); } }
			/// <summary>
			/// <para><strong>sys.sql_expression_dependencies (Transact-SQL)</strong></para>
			/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions) √ Azure SQL Managed Instance √ Azure Synapse Analytics √ Analytics Platform System (PDW)</para>
			/// <para>Contains one row for each by-name dependency on a user-defined entity in the current database. This includes dependences between natively compiled, scalar user-defined functions and other SQL Server modules. A dependency between two entities is created when one entity, called the *referenced entity*, appears by name in a persisted SQL expression of another entity, called the *referencing entity*. For example, when a table is referenced in the definition of a view, the view, as the referencing entity, depends on the table, the referenced entity. If the table is dropped, the view is unusable.<br/>
			///  For more information, see <a href='https://docs.microsoft.com/en-us/sql/relational-databases/in-memory-oltp/scalar-user-defined-functions-for-in-memory-oltp'>Scalar User-Defined Functions for In-Memory OLTP</a>.<br/>
			///  You can use this catalog view to report dependency information for the following entities:<br/>
			/// -   Schema-bound entities.<br/>
			/// -   Non-schema-bound entities.<br/>
			/// -   Cross-database and cross-server entities. Entity names are reported; however, entity IDs are not resolved.<br/>
			/// -   Column-level dependencies on schema-bound entities. Column-level dependencies for non-schema-bound objects can be returned by using <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-dynamic-management-views/sys-dm-sql-referenced-entities-transact-sql'>sys.dm_sql_referenced_entities</a>.<br/>
			/// -   Server-level DDL triggers when in the context of the master database.</para><br/>
			/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-sql-expression-dependencies-transact-sql'>sys.sql_expression_dependencies</a>.</para>
			/// </summary>
			public ITable<SqlExpressionDependency>                SqlExpressionDependencies               { get { return _dataContext.GetTable<SqlExpressionDependency>(); } }
			/// <summary>
			/// <para><strong>sys.sql_modules (Transact-SQL)</strong></para>
			/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions) √ Azure SQL Database √ Azure SQL Managed Instance √ Azure Synapse Analytics √ Analytics Platform System (PDW)</para>
			/// <para>Returns a row for each object that is an SQL language-defined module in SQL Server, including natively compiled scalar user-defined function. Objects of type P, RF, V, TR, FN, IF, TF, and R have an associated SQL module. Stand-alone defaults, objects of type D, also have an SQL module definition in this view. For a description of these types, see the <c>type</c> column in the <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-objects-transact-sql'>sys.objects</a> catalog view.<br/>
			///  For more information, see <a href='https://docs.microsoft.com/en-us/sql/relational-databases/in-memory-oltp/scalar-user-defined-functions-for-in-memory-oltp'>Scalar User-Defined Functions for In-Memory OLTP</a>.</para><br/>
			/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-sql-modules-transact-sql'>sys.sql_modules</a>.</para>
			/// </summary>
			public ITable<SqlModule>                              SqlModules                              { get { return _dataContext.GetTable<SqlModule>(); } }
			/// <summary>
			/// <para><strong>sys.stats (Transact-SQL)</strong></para>
			/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions) √ Azure SQL Database √ Azure SQL Managed Instance √ Azure Synapse Analytics √ Analytics Platform System (PDW)</para>
			/// <para>Contains a row for each statistics object that exists for the tables, indexes, and indexed views in the database in SQL Server. Every index will have a corresponding statistics row with the same name and ID (<strong>index_id</strong> = <strong>stats_id</strong>), but not every statistics row has a corresponding index.<br/>
			///  The catalog view <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-stats-columns-transact-sql'>sys.stats_columns</a> provides statistics information for each column in the database. For more information about statistics, see <a href='https://docs.microsoft.com/en-us/sql/relational-databases/statistics/statistics'>Statistics</a>.</para><br/>
			/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-stats-transact-sql'>sys.stats</a>.</para>
			/// </summary>
			public ITable<Stat>                                   Stats                                   { get { return _dataContext.GetTable<Stat>(); } }
			/// <summary>
			/// <para><strong>sys.stats_columns (Transact-SQL)</strong></para>
			/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions) √ Azure SQL Database √ Azure SQL Managed Instance √ Azure Synapse Analytics √ Analytics Platform System (PDW)</para>
			/// <para>Contains a row for each column that is part of <strong>sys.stats</strong> statistics.</para><br/>
			/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-stats-columns-transact-sql'>sys.stats_columns</a>.</para>
			/// </summary>
			public ITable<StatsColumn>                            StatsColumns                            { get { return _dataContext.GetTable<StatsColumn>(); } }
			/// <summary>
			/// <para><strong>sys.synonyms (Transact-SQL)</strong></para>
			/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions) √ Azure SQL Database √ Azure SQL Managed Instance √ Azure Synapse Analytics √ Analytics Platform System (PDW)</para>
			/// <para>Contains a row for each synonym object that is <strong>sys.objects.type</strong> = SN.</para><br/>
			/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-synonyms-transact-sql'>sys.synonyms</a>.</para>
			/// </summary>
			public ITable<Synonym>                                Synonyms                                { get { return _dataContext.GetTable<Synonym>(); } }
			/// <summary>
			/// <para><strong>sys.system_columns (Transact-SQL)</strong></para>
			/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions) √ Azure SQL Database √ Azure SQL Managed Instance √ Azure Synapse Analytics √ Analytics Platform System (PDW)</para>
			/// <para>Contains a row for each column of system objects that have columns.</para><br/>
			/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-system-columns-transact-sql'>sys.system_columns</a>.</para>
			/// </summary>
			public ITable<SystemColumn>                           SystemColumns                           { get { return _dataContext.GetTable<SystemColumn>(); } }
			/// <summary>
			/// <para><strong>sys.system_objects (Transact-SQL)</strong></para>
			/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions) √ Azure SQL Database √ Azure SQL Managed Instance √ Azure Synapse Analytics √ Analytics Platform System (PDW)</para>
			/// <para>Contains one row for all schema-scoped system objects that are included with Microsoft SQL Server. All system objects are contained in the schemas named sys or INFORMATION_SCHEMA.</para><br/>
			/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-system-objects-transact-sql'>sys.system_objects</a>.</para>
			/// </summary>
			public ITable<SystemObject>                           SystemObjects                           { get { return _dataContext.GetTable<SystemObject>(); } }
			/// <summary>
			/// <para><strong>sys.system_parameters (Transact-SQL)</strong></para>
			/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions) √ Azure SQL Database √ Azure SQL Managed Instance √ Azure Synapse Analytics √ Analytics Platform System (PDW)</para>
			/// <para>Contains one row for each system object that has parameters.</para><br/>
			/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-system-parameters-transact-sql'>sys.system_parameters</a>.</para>
			/// </summary>
			public ITable<SystemParameter>                        SystemParameters                        { get { return _dataContext.GetTable<SystemParameter>(); } }
			/// <summary>
			/// <para><strong>sys.system_sql_modules (Transact-SQL)</strong></para>
			/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions) √ Azure SQL Database √ Azure SQL Managed Instance √ Azure Synapse Analytics √ Analytics Platform System (PDW)</para>
			/// <para>Returns one row per system object that contains an SQL language-defined module. System objects of type FN, IF, P, PC, TF, V have an associated SQL module. To identify the containing object, you can join this view to <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-system-objects-transact-sql'>sys.system_objects</a>.</para><br/>
			/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-system-sql-modules-transact-sql'>sys.system_sql_modules</a>.</para>
			/// </summary>
			public ITable<SystemSqlModule>                        SystemSqlModules                        { get { return _dataContext.GetTable<SystemSqlModule>(); } }
			/// <summary>
			/// <para><strong>sys.system_views (Transact-SQL)</strong></para>
			/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)</para>
			/// <para>Contains one row for each system view that is shipped with SQL Server. All system views are contained in the schemas named <strong>sys</strong> or <strong>INFORMATION_SCHEMA</strong>.</para><br/>
			/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-system-views-transact-sql'>sys.system_views</a>.</para>
			/// </summary>
			public ITable<SystemView>                             SystemViews                             { get { return _dataContext.GetTable<SystemView>(); } }
			/// <summary>
			/// <para><strong>sys.tables (Transact-SQL)</strong></para>
			/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions) √ Azure SQL Database √ Azure SQL Managed Instance √ Azure Synapse Analytics √ Analytics Platform System (PDW)</para>
			/// <para>Returns a row for each user table in SQL Server.</para><br/>
			/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-tables-transact-sql'>sys.tables</a>.</para>
			/// </summary>
			public ITable<Table>                                  Tables                                  { get { return _dataContext.GetTable<Table>(); } }
			/// <summary>
			/// <para><strong>sys.table_types (Transact-SQL)</strong></para>
			/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)  √ Azure SQL Database</para>
			/// <para>Displays properties of user-defined table types in SQL Server. A table type is a type from which table variables or table-valued parameters could be declared. Each table type has a <strong>type_table_object_id</strong> that is a foreign key into the <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-objects-transact-sql'>sys.objects</a> catalog view. You can use this ID column to query various catalog views, in a way that is similar to an <strong>object_id</strong> column of a regular table, to discover the structure of the table type such as its columns and constraints.</para><br/>
			/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-table-types-transact-sql'>sys.table_types</a>.</para>
			/// </summary>
			public ITable<TableType>                              TableTypes                              { get { return _dataContext.GetTable<TableType>(); } }
			/// <summary>
			/// <para><strong>sys.triggers (Transact-SQL)</strong></para>
			/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)  √ Azure SQL Database</para>
			/// <para>Contains a row for each object that is a trigger, with a type of TR or TA. DML trigger names are schema-scoped and, therefore, are visible in <strong>sys.objects</strong>. DDL trigger names are scoped by the parent entity and are only visible in this view.<br/>
			///  The <strong>parent_class</strong> and <strong>name</strong> columns uniquely identify the trigger in the database.</para><br/>
			/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-triggers-transact-sql'>sys.triggers</a>.</para>
			/// </summary>
			public ITable<Trigger>                                Triggers                                { get { return _dataContext.GetTable<Trigger>(); } }
			/// <summary>
			/// <para><strong>sys.trigger_events (Transact-SQL)</strong></para>
			/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)  √ Azure SQL Database</para>
			/// <para>Contains a row per event for which a trigger fires.<br/>
			/// <note type='note'><br/>
			/// <strong>sys.trigger_events</strong> does not apply to event notifications.<br/>
			/// </note></para><br/>
			/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-trigger-events-transact-sql'>sys.trigger_events</a>.</para>
			/// </summary>
			public ITable<TriggerEvent>                           TriggerEvents                           { get { return _dataContext.GetTable<TriggerEvent>(); } }
			/// <summary>
			/// <para><strong>sys.trigger_event_types (Transact-SQL)</strong></para>
			/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)</para>
			/// <para>Returns a row for each event or event group on which a trigger can fire.</para><br/>
			/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-trigger-event-types-transact-sql'>sys.trigger_event_types</a>.</para>
			/// </summary>
			public ITable<TriggerEventType>                       TriggerEventTypes                       { get { return _dataContext.GetTable<TriggerEventType>(); } }
			/// <summary>
			/// <para><strong>sys.views (Transact-SQL)</strong></para>
			/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions) √ Azure SQL Database √ Azure SQL Managed Instance √ Azure Synapse Analytics √ Analytics Platform System (PDW)</para>
			/// <para>Contains a row for each view object, with <strong>sys.objects.type</strong> = V.</para><br/>
			/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-views-transact-sql'>sys.views</a>.</para>
			/// </summary>
			public ITable<View>                                   Views                                   { get { return _dataContext.GetTable<View>(); } }

			private readonly IDataContext _dataContext;

			public DataContext(IDataContext dataContext)
			{
				_dataContext = dataContext;
			}
		}

		/// <summary>
		/// <para><strong>sys.all_columns (Transact-SQL)</strong></para>
		/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions) √ Azure SQL Database √ Azure SQL Managed Instance √ Azure Synapse Analytics √ Analytics Platform System (PDW)</para>
		/// <para>Shows the union of all columns belonging to user-defined objects and system objects.</para><br/>
		/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-all-columns-transact-sql'>sys.all_columns</a>.</para>
		/// </summary>
		[Table(Schema="sys", Name="all_columns", IsView=true)]
		public partial class AllColumn
		{
			/// <summary>
			/// ID of the object to which this column belongs.
			/// </summary>
			[Column("object_id"),                    NotNull    ] public int     ObjectID                 { get; set; } // int
			/// <summary>
			/// Name of the column. Is unique within the object.
			/// </summary>
			[Column("name"),                            Nullable] public string? Name                     { get; set; } // sysname
			/// <summary>
			/// ID of the column. Is unique within the object.<br/><br/> Column IDs might not be sequential.
			/// </summary>
			[Column("column_id"),                    NotNull    ] public int     ColumnID                 { get; set; } // int
			/// <summary>
			/// ID of the system-type of the column.
			/// </summary>
			[Column("system_type_id"),               NotNull    ] public byte    SystemTypeID             { get; set; } // tinyint
			/// <summary>
			/// ID of the type of the column as defined by the user.<br/><br/> To return the name of the type, join to the <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-types-transact-sql'>sys.types</a> catalog view on this column.
			/// </summary>
			[Column("user_type_id"),                 NotNull    ] public int     UserTypeID               { get; set; } // int
			/// <summary>
			/// Maximum length (in bytes) of the column.<br/><br/> -1 = Column data type is <strong>varchar(max)</strong>, <strong>nvarchar(max)</strong>, <strong>varbinary(max)</strong>, or <strong>xml</strong>.<br/><br/> For <strong>text</strong> columns, the max_length value will be 16 or the value set by sp_tableoption 'text in row'.
			/// </summary>
			[Column("max_length"),                   NotNull    ] public short   MaxLength                { get; set; } // smallint
			/// <summary>
			/// Precision of the column if numeric-based; otherwise, 0.
			/// </summary>
			[Column("precision"),                    NotNull    ] public byte    Precision                { get; set; } // tinyint
			/// <summary>
			/// Scale of the column if numeric-based; otherwise, 0.
			/// </summary>
			[Column("scale"),                        NotNull    ] public byte    Scale                    { get; set; } // tinyint
			/// <summary>
			/// Name of the collation of the column if character-based; otherwise, NULL.
			/// </summary>
			[Column("collation_name"),                  Nullable] public string? CollationName            { get; set; } // sysname
			/// <summary>
			/// 1 = Column is nullable.
			/// </summary>
			[Column("is_nullable"),                     Nullable] public bool?   IsNullable               { get; set; } // bit
			/// <summary>
			/// 1 = Column uses ANSI_PADDING ON behavior if character, binary, or variant.<br/><br/> 0 = Column is not character, binary, or variant.
			/// </summary>
			[Column("is_ansi_padded"),               NotNull    ] public bool    IsAnsiPadded             { get; set; } // bit
			/// <summary>
			/// 1 = Column is a declared ROWGUIDCOL.
			/// </summary>
			[Column("is_rowguidcol"),                NotNull    ] public bool    IsRowGuidCol             { get; set; } // bit
			/// <summary>
			/// 1 = Column has identity values
			/// </summary>
			[Column("is_identity"),                  NotNull    ] public bool    IsIdentity               { get; set; } // bit
			/// <summary>
			/// 1 = Column is a computed column.
			/// </summary>
			[Column("is_computed"),                  NotNull    ] public bool    IsComputed               { get; set; } // bit
			/// <summary>
			/// 1 = Column is declared to use filestream storage.
			/// </summary>
			[Column("is_filestream"),                NotNull    ] public bool    IsFilestream             { get; set; } // bit
			/// <summary>
			/// 1 = Column is replicated.
			/// </summary>
			[Column("is_replicated"),                   Nullable] public bool?   IsReplicated             { get; set; } // bit
			/// <summary>
			/// 1 = Column has a non-SQL Server subscriber.
			/// </summary>
			[Column("is_non_sql_subscribed"),           Nullable] public bool?   IsNonSqlSubscribed       { get; set; } // bit
			/// <summary>
			/// 1 = Column is merge-published.
			/// </summary>
			[Column("is_merge_published"),              Nullable] public bool?   IsMergePublished         { get; set; } // bit
			/// <summary>
			/// 1 = Column is replicated by using SSIS.
			/// </summary>
			[Column("is_dts_replicated"),               Nullable] public bool?   IsDtsReplicated          { get; set; } // bit
			/// <summary>
			/// 1 = Content is a complete XML document.<br/><br/> 0 = Content is a document fragment, or the column data type is not XML.
			/// </summary>
			[Column("is_xml_document"),              NotNull    ] public bool    IsXmlDocument            { get; set; } // bit
			/// <summary>
			/// Non-zero if the column's data type is <strong>xml</strong> and the XML is typed. The value will be the ID of the collection containing the column's validating XML schema namespace<br/><br/> 0 = no XML schema collection.
			/// </summary>
			[Column("xml_collection_id"),            NotNull    ] public int     XmlCollectionID          { get; set; } // int
			/// <summary>
			/// ID of the default object, regardless of whether it is a stand-alone <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-stored-procedures/sp-bindefault-transact-sql'>sys.sp_bindefault</a>, or an in-line, column-level DEFAULT constraint. The parent_object_id column of an inline column-level default object is a reference back to the table itself.<br/><br/> 0 = No default.
			/// </summary>
			[Column("default_object_id"),            NotNull    ] public int     DefaultObjectID          { get; set; } // int
			/// <summary>
			/// ID of the stand-alone rule bound to the column by using sys.sp_bindrule.<br/><br/> 0 = No stand-alone rule.<br/><br/> For column-level CHECK constraints, see <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-check-constraints-transact-sql'>sys.check_constraints (Transact-SQL)</a>.
			/// </summary>
			[Column("rule_object_id"),               NotNull    ] public int     RuleObjectID             { get; set; } // int
			/// <summary>
			/// 1 = Column is a sparse column. For more information, see <a href='https://docs.microsoft.com/en-us/sql/relational-databases/tables/use-sparse-columns'>Use Sparse Columns</a>.
			/// </summary>
			[Column("is_sparse"),                       Nullable] public bool?   IsSparse                 { get; set; } // bit
			/// <summary>
			/// 1 = Column is a column set. For more information, see <a href='https://docs.microsoft.com/en-us/sql/relational-databases/tables/use-column-sets'>Use Column Sets</a>.
			/// </summary>
			[Column("is_column_set"),                   Nullable] public bool?   IsColumnSet              { get; set; } // bit
			/// <summary>
			/// <strong>Applies to</strong>: SQL Server 2016 (13.x) and later, SQL Database. 7, 8, 9, 10 only applies to SQL Database.<br/><br/> Identifies when the column value is generated (will always be 0 for columns in system tables):<br/><br/> 0 = NOT_APPLICABLE<br/> 1 = AS_ROW_START<br/> 2 = AS_ROW_END<br/>7 = AS_TRANSACTION_ID_START<br/>8 = AS_TRANSACTION_ID_END<br/>9 = AS_SEQUENCE_NUMBER_START<br/>10 = AS_SEQUENCE_NUMBER_END<br/><br/> For more information, see <a href='https://docs.microsoft.com/en-us/sql/relational-databases/tables/temporal-tables'>Temporal Tables (Relational databases)</a>.
			/// </summary>
			[Column("generated_always_type"),           Nullable] public byte?   GeneratedAlwaysType      { get; set; } // tinyint
			/// <summary>
			/// <strong>Applies to</strong>: SQL Server 2016 (13.x) and later, SQL Database.<br/><br/> Textual description of <c>generated_always_type</c>'s value (always NOT_APPLICABLE for columns in system tables) <br/><br/> NOT_APPLICABLE<br/> AS_ROW_START<br/> AS_ROW_END<br/><br/><strong>Applies to</strong>: SQL Database<br/><br/>AS_TRANSACTION_ID_START<br/>AS_TRANSACTION_ID_END<br/>AS_SEQUENCE_NUMBER_START<br/>AS_SEQUENCE_NUMBER_END
			/// </summary>
			[Column("generated_always_type_desc"),      Nullable] public string? GeneratedAlwaysTypeDesc  { get; set; } // nvarchar(60)
			/// <summary>
			/// <strong>Applies to</strong>: SQL Database.<br/><br/> If not NULL, indicates the type of a column in a ledger view:<br/><br/> 1 = TRANSACTION_ID<br/> 2 = SEQUENCE_NUMBER<br/> 3 = OPERATION_TYPE<br/> 4 = OPERATION_TYPE_DESC<br/><br/>For more information on database ledger, see <a href='https://docs.microsoft.com/en-us/azure/azure-sql/database/ledger-overview'>Azure SQL Database ledger</a>.
			/// </summary>
			[Column("ledger_view_column_type"),      NotNull    ] public byte    LedgerViewColumnType     { get; set; } // tinyint
			/// <summary>
			/// <strong>Applies to</strong>: SQL Database.<br/><br/> If not NULL, contains a textual description of the the type of a column in a ledger view:<br/><br/> TRANSACTION_ID<br/> SEQUENCE_NUMBER<br/> OPERATION_TYPE<br/> OPERATION_TYPE_DESC
			/// </summary>
			[Column("ledger_view_column_type_desc"), NotNull    ] public string  LedgerViewColumnTypeDesc { get; set; } = null!; // nvarchar(60)

			#region Associations

			/// <summary>
			/// all_objects (sys.all_objects)
			/// </summary>
			[Association(ThisKey="ObjectID", OtherKey="ObjectID", CanBeNull=false)]
			public ObjectSchema.AllObject AllObject { get; set; } = null!;

			#endregion
		}

		/// <summary>
		/// <para><strong>sys.all_objects (Transact-SQL)</strong></para>
		/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions) √ Azure SQL Database √ Azure SQL Managed Instance √ Azure Synapse Analytics √ Analytics Platform System (PDW)</para>
		/// <para>Shows the UNION of all schema-scoped user-defined objects and system objects.</para><br/>
		/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-all-objects-transact-sql'>sys.all_objects</a>.</para>
		/// </summary>
		[Table(Schema="sys", Name="all_objects", IsView=true)]
		public partial class AllObject
		{
			/// <summary>
			/// Object name.
			/// </summary>
			[Column("name"),                NotNull    ] public string   Name              { get; set; } = null!; // sysname
			/// <summary>
			/// Object identification number. Is unique within a database.
			/// </summary>
			[Column("object_id"),           NotNull    ] public int      ObjectID          { get; set; } // int
			/// <summary>
			/// ID of the individual owner if different from the schema owner. By default, schema-contained objects are owned by the schema owner. However, another owner can be specified by using the ALTER AUTHORIZATION statement to change ownership.<br/><br/> Is NULL if there is no alternative individual owner.<br/><br/> Is NULL if the object type is one of the following:<br/><br/> C = CHECK constraint<br/><br/> D = DEFAULT (constraint or stand-alone)<br/><br/> F = FOREIGN KEY constraint<br/><br/> PK = PRIMARY KEY constraint<br/><br/> R = Rule (old-style, stand-alone)<br/><br/> TA = Assembly (CLR) trigger<br/><br/> TR = SQL trigger<br/><br/> UQ = UNIQUE constraint
			/// </summary>
			[Column("principal_id"),           Nullable] public int?     PrincipalID       { get; set; } // int
			/// <summary>
			/// ID of the schema that contains the object.<br/><br/> For all schema scoped system objects that are included with SQL Server, this value is always in (schema_id('sys'), schema_id('INFORMATION_SCHEMA')).
			/// </summary>
			[Column("schema_id"),           NotNull    ] public int      SchemaID          { get; set; } // int
			/// <summary>
			/// ID of the object to which this object belongs.<br/><br/> 0 = Not a child object.
			/// </summary>
			[Column("parent_object_id"),    NotNull    ] public int      ParentObjectID    { get; set; } // int
			/// <summary>
			/// Object type:<br/><br/> AF = Aggregate function (CLR)<br/><br/> C = CHECK constraint<br/><br/> D = DEFAULT (constraint or stand-alone)<br/><br/> F = FOREIGN KEY constraint<br/><br/> FN = SQL scalar function<br/><br/> FS = Assembly (CLR) scalar-function<br/><br/> FT = Assembly (CLR) table-valued function<br/><br/> IF = SQL inline table-valued function<br/><br/> IT = Internal table<br/><br/> P = SQL Stored Procedure<br/><br/> PC = Assembly (CLR) stored-procedure<br/><br/> PG = Plan guide<br/><br/> PK = PRIMARY KEY constraint<br/><br/> R = Rule (old-style, stand-alone)<br/><br/> RF = Replication-filter-procedure<br/><br/> S = System base table<br/><br/> SN = Synonym<br/><br/> SO = Sequence object<br/><br/> SQ = Service queue<br/><br/> TA = Assembly (CLR) DML trigger<br/><br/> TF = SQL table-valued-function<br/><br/> TR = SQL DML trigger<br/><br/> TT = Table type<br/><br/> U = Table (user-defined)<br/><br/> UQ = UNIQUE constraint<br/><br/> V = View<br/><br/> X = Extended stored procedure
			/// </summary>
			[Column("type"),                   Nullable] public string?  TypeColumn        { get; set; } // char(2)
			/// <summary>
			/// Description of the object type. AGGREGATE_FUNCTION<br/><br/> CHECK_CONSTRAINT<br/><br/> DEFAULT_CONSTRAINT<br/><br/> FOREIGN_KEY_CONSTRAINT<br/><br/> SQL_SCALAR_FUNCTION<br/><br/> CLR_SCALAR_FUNCTION<br/><br/> CLR_TABLE_VALUED_FUNCTION<br/><br/> SQL_INLINE_TABLE_VALUED_FUNCTION<br/><br/> INTERNAL_TABLE<br/><br/> SQL_STORED_PROCEDURE<br/><br/> CLR_STORED_PROCEDURE<br/><br/> PLAN_GUIDE<br/><br/> PRIMARY_KEY_CONSTRAINT<br/><br/> RULE<br/><br/> REPLICATION_FILTER_PROCEDURE<br/><br/> SYSTEM_TABLE<br/><br/> SYNONYM<br/><br/> SERVICE_QUEUE<br/><br/> CLR_TRIGGER<br/><br/> SQL_TABLE_VALUED_FUNCTION<br/><br/> SQL_TRIGGER<br/><br/> TABLE_TYPE<br/><br/> USER_TABLE<br/><br/> UNIQUE_CONSTRAINT<br/><br/> VIEW<br/><br/> EXTENDED_STORED_PROCEDURE
			/// </summary>
			[Column("type_desc"),              Nullable] public string?  TypeDesc          { get; set; } // nvarchar(60)
			/// <summary>
			/// Date the object was created.
			/// </summary>
			[Column("create_date"),         NotNull    ] public DateTime CreateDate        { get; set; } // datetime
			/// <summary>
			/// Date the object was last modified by using an ALTER statement. If the object is a table or a view, modify_date also changes when an index on the table or view is created or modified.
			/// </summary>
			[Column("modify_date"),         NotNull    ] public DateTime ModifyDate        { get; set; } // datetime
			/// <summary>
			/// Object created by an internal SQL Server component.
			/// </summary>
			[Column("is_ms_shipped"),          Nullable] public bool?    IsMSShipped       { get; set; } // bit
			/// <summary>
			/// Object is published.
			/// </summary>
			[Column("is_published"),           Nullable] public bool?    IsPublished       { get; set; } // bit
			/// <summary>
			/// Only the schema of the object is published.
			/// </summary>
			[Column("is_schema_published"),    Nullable] public bool?    IsSchemaPublished { get; set; } // bit

			#region Associations

			/// <summary>
			/// all_columns (sys.all_columns)
			/// </summary>
			[Association(ThisKey="ObjectID", OtherKey="ObjectID", CanBeNull=true)]
			public IList<ObjectSchema.AllColumn> AllColumns { get; set; } = null!;

			/// <summary>
			/// all_parameters (sys.all_parameters)
			/// </summary>
			[Association(ThisKey="ObjectID", OtherKey="ObjectID", CanBeNull=true)]
			public IList<ObjectSchema.AllParameter> AllParameters { get; set; } = null!;

			/// <summary>
			/// all_sql_modules (sys.all_sql_modules)
			/// </summary>
			[Association(ThisKey="ObjectID", OtherKey="ObjectID", CanBeNull=true)]
			public IList<ObjectSchema.AllSqlModule> AllSqlModules { get; set; } = null!;

			/// <summary>
			/// all_views (sys.all_views)
			/// </summary>
			[Association(ThisKey="ObjectID", OtherKey="ObjectID", CanBeNull=true)]
			public ObjectSchema.AllView? AllView { get; set; }

			#endregion
		}

		/// <summary>
		/// <para><strong>sys.allocation_units (Transact-SQL)</strong></para>
		/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)  √ Azure SQL Database</para>
		/// <para>Contains a row for each allocation unit in the database.</para><br/>
		/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-allocation-units-transact-sql'>sys.allocation_units</a>.</para>
		/// </summary>
		[Table(Schema="sys", Name="allocation_units", IsView=true)]
		public partial class AllocationUnit
		{
			/// <summary>
			/// ID of the allocation unit. Is unique within a database.
			/// </summary>
			[Column("allocation_unit_id"), NotNull    ] public long    AllocationUnitID { get; set; } // bigint
			/// <summary>
			/// Type of allocation unit:<br/><br/> 0 = Dropped<br/><br/> 1 = In-row data (all data types, except LOB data types)<br/><br/> 2 = Large object (LOB) data (<strong>text</strong>, <strong>ntext</strong>, <strong>image</strong>, <strong>xml</strong>, large value types, and CLR user-defined types)<br/><br/> 3 = Row-overflow data
			/// </summary>
			[Column("type"),               NotNull    ] public byte    TypeColumn       { get; set; } // tinyint
			/// <summary>
			/// Description of the allocation unit type:<br/><br/> <strong>DROPPED</strong><br/><br/> <strong>IN_ROW_DATA</strong><br/><br/> <strong>LOB_DATA</strong><br/><br/> <strong>ROW_OVERFLOW_DATA</strong>
			/// </summary>
			[Column("type_desc"),             Nullable] public string? TypeDesc         { get; set; } // nvarchar(60)
			/// <summary>
			/// ID of the storage container associated with the allocation unit.<br/><br/> If type = 1 or 3 in a rowstore index container_id = sys.partitions.hobt_id.<br/><br/> If type = 1 or 3 in a columnstore index, container_id = sys.column_store_row_groups.delta_store_hobt_id.<br/><br/> If type is 2, then container_id = sys.partitions.partition_id.<br/><br/> 0 = Allocation unit marked for deferred drop
			/// </summary>
			[Column("container_id"),       NotNull    ] public long    ContainerID      { get; set; } // bigint
			/// <summary>
			/// ID of the filegroup in which this allocation unit resides.
			/// </summary>
			[Column("data_space_id"),         Nullable] public int?    DataSpaceID      { get; set; } // int
			/// <summary>
			/// Total number of pages allocated or reserved by this allocation unit.
			/// </summary>
			[Column("total_pages"),        NotNull    ] public long    TotalPages       { get; set; } // bigint
			/// <summary>
			/// Number of total pages actually in use.
			/// </summary>
			[Column("used_pages"),         NotNull    ] public long    UseDPages        { get; set; } // bigint
			/// <summary>
			/// Number of used pages that have:<br/><br/> In-row data<br/><br/> LOB data<br/><br/> Row-overflow data<br/><br/> <br/><br/> Note that the value returned excludes internal index pages and allocation-management pages.
			/// </summary>
			[Column("data_pages"),         NotNull    ] public long    DataPages        { get; set; } // bigint
		}

		/// <summary>
		/// <para><strong>sys.all_parameters (Transact-SQL)</strong></para>
		/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions) √ Azure SQL Database √ Azure SQL Managed Instance √ Azure Synapse Analytics √ Analytics Platform System (PDW)</para>
		/// <para>Shows the union of all parameters that belong to user-defined or system objects.</para><br/>
		/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-all-parameters-transact-sql'>sys.all_parameters</a>.</para>
		/// </summary>
		[Table(Schema="sys", Name="all_parameters", IsView=true)]
		public partial class AllParameter
		{
			/// <summary>
			/// ID of the object to which this parameter belongs.
			/// </summary>
			[Column("object_id"),                           NotNull    ] public int     ObjectID                        { get; set; } // int
			/// <summary>
			/// Name of parameter. Is unique within the object. If the object is a scalar function, the parameter name is an empty string in the row representing the return value.
			/// </summary>
			[Column("name"),                                   Nullable] public string? Name                            { get; set; } // sysname
			/// <summary>
			/// ID of parameter. Is unique within the object. If the object is a scalar function, <strong>parameter_id</strong> = 0 represents the return value.
			/// </summary>
			[Column("parameter_id"),                        NotNull    ] public int     ParameterID                     { get; set; } // int
			/// <summary>
			/// ID of the system type of the parameter.
			/// </summary>
			[Column("system_type_id"),                      NotNull    ] public byte    SystemTypeID                    { get; set; } // tinyint
			/// <summary>
			/// ID of the type of the parameter as defined by the user.<br/><br/> To return the name of the type, join to the <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-types-transact-sql'>sys.types</a> catalog view on this column.
			/// </summary>
			[Column("user_type_id"),                        NotNull    ] public int     UserTypeID                      { get; set; } // int
			/// <summary>
			/// Maximum length of the parameter, in bytes.<br/><br/> -1 = Column data type is <strong>varchar(max)</strong>, <strong>nvarchar(max)</strong>, <strong>varbinary(max)</strong>, or <strong>xml</strong>.
			/// </summary>
			[Column("max_length"),                          NotNull    ] public short   MaxLength                       { get; set; } // smallint
			/// <summary>
			/// Precision of the parameter if it is numeric-based; otherwise, 0.
			/// </summary>
			[Column("precision"),                           NotNull    ] public byte    Precision                       { get; set; } // tinyint
			/// <summary>
			/// Scale of the parameter if it is numeric-based; otherwise, 0.
			/// </summary>
			[Column("scale"),                               NotNull    ] public byte    Scale                           { get; set; } // tinyint
			/// <summary>
			/// 1 = Parameter is output (or return); otherwise, 0.
			/// </summary>
			[Column("is_output"),                           NotNull    ] public bool    IsOutput                        { get; set; } // bit
			/// <summary>
			/// 1 = Parameter is a cursor reference parameter.
			/// </summary>
			[Column("is_cursor_ref"),                       NotNull    ] public bool    IsCursorRef                     { get; set; } // bit
			/// <summary>
			/// 1 = Parameter has a default value.<br/><br/> SQL Server only maintains default values for CLR objects in this catalog view; therefore, this column will always have a value of 0 for Transact\-SQL objects. To view the default value of a parameter in a Transact\-SQL object, query the <strong>definition</strong> column of the <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-sql-modules-transact-sql'>sys.sql_modules</a> catalog view, or use the <a href='https://docs.microsoft.com/en-us/sql/t-sql/functions/object-definition-transact-sql'>OBJECT_DEFINITION</a> system function.
			/// </summary>
			[Column("has_default_value"),                   NotNull    ] public bool    HasDefaultValue                 { get; set; } // bit
			/// <summary>
			/// 1 = Content is a complete XML document.<br/><br/> 0 = Content is a document fragment or the data type of the column is not <strong>xml</strong>.
			/// </summary>
			[Column("is_xml_document"),                     NotNull    ] public bool    IsXmlDocument                   { get; set; } // bit
			/// <summary>
			/// If <strong>has_default_value</strong> is 1, the value of this column is the value of the default for the parameter; otherwise <c>NULL</c>.
			/// </summary>
			[Column("default_value"),                          Nullable] public object? DefaultValue                    { get; set; } // sql_variant
			/// <summary>
			/// Is the ID of the XML schema collection used to validate the parameter.<br/><br/> Nonzero if the data type of the parameter is <strong>xml</strong> and the XML is typed.<br/><br/> 0 = There is no XML schema collection, or the parameter is not XML.
			/// </summary>
			[Column("xml_collection_id"),                   NotNull    ] public int     XmlCollectionID                 { get; set; } // int
			/// <summary>
			/// 1 =  Parameter is READONLY; otherwise, 0.
			/// </summary>
			[Column("is_readonly"),                         NotNull    ] public bool    IsReadonly                      { get; set; } // bit
			/// <summary>
			/// 1 = Parameter is nullable. (the default).<br/><br/> 0 = Parameter is not nullable, for more efficient execution of natively-compiled stored procedures.
			/// </summary>
			[Column("is_nullable"),                            Nullable] public bool?   IsNullable                      { get; set; } // bit
			/// <summary>
			/// <strong>Applies to</strong>: SQL Server 2016 (13.x) and later, SQL Database.<br/><br/> Encryption type:<br/><br/> 1 = Deterministic encryption<br/><br/> 2 = Randomized encryption
			/// </summary>
			[Column("encryption_type"),                        Nullable] public int?    EncryptionType                  { get; set; } // int
			/// <summary>
			/// <strong>Applies to</strong>: SQL Server 2016 (13.x) and later, SQL Database.<br/><br/> Encryption type description:<br/><br/> RANDOMIZED<br/><br/> DETERMINISTIC
			/// </summary>
			[Column("encryption_type_desc"),                   Nullable] public string? EncryptionTypeDesc              { get; set; } // nvarchar(64)
			/// <summary>
			/// <strong>Applies to</strong>: SQL Server 2016 (13.x) and later, SQL Database.<br/><br/> Name of encryption algorithm.<br/><br/> Only AEAD_AES_256_CBC_HMAC_SHA_512 is supported.
			/// </summary>
			[Column("encryption_algorithm_name"),              Nullable] public string? EncryptionAlgorithmName         { get; set; } // sysname
			/// <summary>
			/// <strong>Applies to</strong>: SQL Server 2016 (13.x) and later, SQL Database.<br/><br/> ID of the CEK.
			/// </summary>
			[Column("column_encryption_key_id"),               Nullable] public int?    ColumnEncryptionKeyID           { get; set; } // int
			/// <summary>
			/// <strong>Applies to</strong>: SQL Server 2016 (13.x) and later, SQL Database.<br/><br/> The name of the database where the column encryption key exists if different than the database of the column. Is <c>NULL</c> if the key exists in the same database as the column.
			/// </summary>
			[Column("column_encryption_key_database_name"),    Nullable] public string? ColumnEncryptionKeyDatabaseName { get; set; } // sysname

			#region Associations

			/// <summary>
			/// all_objects (sys.all_objects)
			/// </summary>
			[Association(ThisKey="ObjectID", OtherKey="ObjectID", CanBeNull=false)]
			public ObjectSchema.AllObject AllObject { get; set; } = null!;

			#endregion
		}

		/// <summary>
		/// <para><strong>sys.all_sql_modules (Transact-SQL)</strong></para>
		/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions) √ Azure SQL Database √ Azure SQL Managed Instance √ Azure Synapse Analytics √ Analytics Platform System (PDW)</para>
		/// <para>Returns the union of <strong>sys.sql_modules</strong> and <strong>sys.system_sql_modules</strong>.<br/>
		///  The view returns a row for each natively compiled, scalar user-defined function. For more information, see <a href='https://docs.microsoft.com/en-us/sql/relational-databases/in-memory-oltp/scalar-user-defined-functions-for-in-memory-oltp'>Scalar User-Defined Functions for In-Memory OLTP</a>.</para><br/>
		/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-all-sql-modules-transact-sql'>sys.all_sql_modules</a>.</para>
		/// </summary>
		[Table(Schema="sys", Name="all_sql_modules", IsView=true)]
		public partial class AllSqlModule
		{
			/// <summary>
			/// ID of the object of the containing object. Is unique within a database.
			/// </summary>
			[Column("object_id"),               NotNull    ] public int     ObjectID              { get; set; } // int
			/// <summary>
			/// SQL text that defines this module.<br/><br/> NULL = Encrypted
			/// </summary>
			[Column("definition"),                 Nullable] public string? Definition            { get; set; } // nvarchar(max)
			/// <summary>
			/// Module was created with SET ANSI_NULLS ON.
			/// </summary>
			[Column("uses_ansi_nulls"),            Nullable] public bool?   UsesAnsiNulls         { get; set; } // bit
			/// <summary>
			/// Module was created with SET QUOTED_IDENTIFIER ON.
			/// </summary>
			[Column("uses_quoted_identifier"),     Nullable] public bool?   UsesQuotedIdentifier  { get; set; } // bit
			/// <summary>
			/// Module was created with the SCHEMABINDING option.
			/// </summary>
			[Column("is_schema_bound"),            Nullable] public bool?   IsSchemaBound         { get; set; } // bit
			/// <summary>
			/// 1 = Schema-bound module definition depends on the default-collation of the database for correct evaluation; otherwise, 0. Such a dependency prevents changing the default collation of the database.
			/// </summary>
			[Column("uses_database_collation"),    Nullable] public bool?   UsesDatabaseCollation { get; set; } // bit
			/// <summary>
			/// Procedure was created using the WITH RECOMPILE option.
			/// </summary>
			[Column("is_recompiled"),              Nullable] public bool?   IsRecompiled          { get; set; } // bit
			/// <summary>
			/// Module was declared to produce a NULL output on any NULL input.
			/// </summary>
			[Column("null_on_null_input"),         Nullable] public bool?   NullOnNullInput       { get; set; } // bit
			/// <summary>
			/// ID of the EXECUTE AS database principal.<br/><br/> NULL by default or if EXECUTE AS CALLER.<br/><br/> ID of the specified principal if EXECUTE AS SELF or EXECUTE AS &lt;principal&gt;.<br/><br/> -2 = EXECUTE AS OWNER.
			/// </summary>
			[Column("execute_as_principal_id"),    Nullable] public int?    ExecuteAsPrincipalID  { get; set; } // int
			/// <summary>
			/// <strong>Applies to</strong>: SQL Server 2014 (12.x) and later.<br/><br/> 0 = not natively compiled<br/><br/> 1 = is natively compiled<br/><br/> The default value is 0.
			/// </summary>
			[Column("uses_native_compilation"),    Nullable] public bool?   UsesNativeCompilation { get; set; } // bit

			#region Associations

			/// <summary>
			/// all_objects (sys.all_objects)
			/// </summary>
			[Association(ThisKey="ObjectID", OtherKey="ObjectID", CanBeNull=false)]
			public ObjectSchema.AllObject AllObject { get; set; } = null!;

			#endregion
		}

		/// <summary>
		/// <para><strong>sys.all_views (Transact-SQL)</strong></para>
		/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions) √ Azure SQL Database √ Azure SQL Managed Instance √ Azure Synapse Analytics √ Analytics Platform System (PDW)</para>
		/// <para>Shows the UNION of all user-defined and system views.</para><br/>
		/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-all-views-transact-sql'>sys.all_views</a>.</para>
		/// </summary>
		[Table(Schema="sys", Name="all_views", IsView=true)]
		public partial class AllView
		{
			/// <summary>
			/// Object name.
			/// </summary>
			[Column("name"),                        NotNull    ] public string   Name                     { get; set; } = null!; // sysname
			/// <summary>
			/// Object identification number. Is unique within a database.
			/// </summary>
			[Column("object_id"),                   NotNull    ] public int      ObjectID                 { get; set; } // int
			/// <summary>
			/// ID of the individual owner, if different from the schema owner. By default, schema-contained objects are owned by the schema owner. However, an alternate owner can be specified by using the ALTER AUTHORIZATION statement to change ownership.<br/><br/> Is NULL if there is no alternate individual owner.<br/><br/> Is NULL if the object type is one of the following:<br/><br/> C = CHECK constraint<br/><br/> D = DEFAULT (constraint or stand-alone)<br/><br/> F = FOREIGN KEY constraint<br/><br/> PK = PRIMARY KEY constraint<br/><br/> R = Rule (old-style, stand-alone)<br/><br/> TA = Assembly (CLR-integration) trigger<br/><br/> TR = SQL trigger<br/><br/> UQ = UNIQUE constraint<br/><br/> EC = Edge constraint
			/// </summary>
			[Column("principal_id"),                   Nullable] public int?     PrincipalID              { get; set; } // int
			/// <summary>
			/// ID of the schema that the object is contained in.<br/><br/> Schema-scoped system objects are always contained in the sys or INFORMATION_SCHEMA schemas.
			/// </summary>
			[Column("schema_id"),                   NotNull    ] public int      SchemaID                 { get; set; } // int
			/// <summary>
			/// ID of the object to which this object belongs.<br/><br/> 0 = Not a child object.
			/// </summary>
			[Column("parent_object_id"),            NotNull    ] public int      ParentObjectID           { get; set; } // int
			/// <summary>
			/// Object type:<br/><br/> AF = Aggregate function (CLR)<br/><br/> C = CHECK constraint<br/><br/> D = DEFAULT (constraint or stand-alone)<br/><br/> F = FOREIGN KEY constraint<br/><br/> FN = SQL scalar function<br/><br/> FS = Assembly (CLR) scalar-function<br/><br/> FT = Assembly (CLR) table-valued function<br/><br/> IF = SQL inline table-valued function<br/><br/> IT = Internal table<br/><br/> P = SQL Stored Procedure<br/><br/> PC = Assembly (CLR) stored-procedure<br/><br/> PG = Plan guide<br/><br/> PK = PRIMARY KEY constraint<br/><br/> R = Rule (old-style, stand-alone)<br/><br/> RF = Replication-filter-procedure<br/><br/> S = System base table<br/><br/> SN = Synonym<br/><br/> SO = Sequence object<br/><br/> U = Table (user-defined)<br/><br/> V = View<br/><br/> EC = Edge constraint <br/><br/> <br/><br/> <strong>Applies to</strong>: SQL Server 2012 (11.x) and later.<br/><br/> SQ = Service queue<br/><br/> TA = Assembly (CLR) DML trigger<br/><br/> TF = SQL table-valued-function<br/><br/> TR = SQL DML trigger<br/><br/> TT = Table type<br/><br/> UQ = UNIQUE constraint<br/><br/> X = Extended stored procedure<br/><br/> <br/><br/> <strong>Applies to</strong>: SQL Server 2014 (12.x) and later, Azure SQL Database, Azure Synapse Analytics, Analytics Platform System (PDW).<br/><br/> ST = STATS_TREE<br/><br/> <br/><br/> <strong>Applies to</strong>: SQL Server 2016 (13.x) and later, Azure SQL Database, Azure Synapse Analytics, Analytics Platform System (PDW).<br/><br/> ET = External Table
			/// </summary>
			[Column("type"),                        NotNull    ] public string   TypeColumn               { get; set; } = null!; // char(2)
			/// <summary>
			/// Description of the object type:<br/><br/> AGGREGATE_FUNCTION<br/><br/> CHECK_CONSTRAINT<br/><br/> CLR_SCALAR_FUNCTION<br/><br/> CLR_STORED_PROCEDURE<br/><br/> CLR_TABLE_VALUED_FUNCTION<br/><br/> CLR_TRIGGER<br/><br/> DEFAULT_CONSTRAINT<br/><br/> EXTENDED_STORED_PROCEDURE<br/><br/> FOREIGN_KEY_CONSTRAINT<br/><br/> INTERNAL_TABLE<br/><br/> PLAN_GUIDE<br/><br/> PRIMARY_KEY_CONSTRAINT<br/><br/> REPLICATION_FILTER_PROCEDURE<br/><br/> RULE<br/><br/> SEQUENCE_OBJECT<br/><br/> <br/><br/> <strong>Applies to</strong>: SQL Server 2012 (11.x) and later.<br/><br/>  SERVICE_QUEUE<br/><br/> SQL_INLINE_TABLE_VALUED_FUNCTION<br/><br/> SQL_SCALAR_FUNCTION<br/><br/> SQL_STORED_PROCEDURE<br/><br/> SQL_TABLE_VALUED_FUNCTION<br/><br/> SQL_TRIGGER<br/><br/> SYNONYM<br/><br/> SYSTEM_TABLE<br/><br/> TABLE_TYPE<br/><br/> UNIQUE_CONSTRAINT<br/><br/> USER_TABLE<br/><br/> VIEW
			/// </summary>
			[Column("type_desc"),                      Nullable] public string?  TypeDesc                 { get; set; } // nvarchar(60)
			/// <summary>
			/// Date the object was created.
			/// </summary>
			[Column("create_date"),                 NotNull    ] public DateTime CreateDate               { get; set; } // datetime
			/// <summary>
			/// Date the object was last modified by using an ALTER statement. If the object is a table or a view, modify_date also changes when an index on the table or view is created or altered.
			/// </summary>
			[Column("modify_date"),                 NotNull    ] public DateTime ModifyDate               { get; set; } // datetime
			/// <summary>
			/// Object is created by an internal SQL Server component.
			/// </summary>
			[Column("is_ms_shipped"),                  Nullable] public bool?    IsMSShipped              { get; set; } // bit
			/// <summary>
			/// Object is published.
			/// </summary>
			[Column("is_published"),                   Nullable] public bool?    IsPublished              { get; set; } // bit
			/// <summary>
			/// Only the schema of the object is published.
			/// </summary>
			[Column("is_schema_published"),            Nullable] public bool?    IsSchemaPublished        { get; set; } // bit
			/// <summary>
			/// 1 = View is replicated.
			/// </summary>
			[Column("is_replicated"),                  Nullable] public bool?    IsReplicated             { get; set; } // bit
			/// <summary>
			/// 1 = View has a replication filter.
			/// </summary>
			[Column("has_replication_filter"),         Nullable] public bool?    HasReplicationFilter     { get; set; } // bit
			/// <summary>
			/// 1 = VIEW_METADATA option specified for view. For more information, see <a href='https://docs.microsoft.com/en-us/sql/t-sql/statements/create-view-transact-sql'>CREATE VIEW (Transact-SQL)</a>.
			/// </summary>
			[Column("has_opaque_metadata"),            Nullable] public bool?    HasOpaqueMetadata        { get; set; } // bit
			/// <summary>
			/// 1 = Table contains persisted data that depends on an assembly whose definition changed during the last ALTER ASSEMBLY. Resets to 0 after the next successful DBCC CHECKDB or DBCC CHECKTABLE.
			/// </summary>
			[Column("has_unchecked_assembly_data"),    Nullable] public bool?    HasUncheckedAssemblyData { get; set; } // bit
			/// <summary>
			/// 1 = WITH CHECK OPTION was specified in the view definition.
			/// </summary>
			[Column("with_check_option"),              Nullable] public bool?    WithCheckOption          { get; set; } // bit
			/// <summary>
			/// 1 = View was created automatically by the system to store correlation information between datetime columns. Creation of this view was enabled by setting DATE_CORRELATION_OPTIMIZATION to <strong>ON</strong>.
			/// </summary>
			[Column("is_date_correlation_view"),       Nullable] public bool?    IsDateCorrelationView    { get; set; } // bit

			#region Associations

			/// <summary>
			/// all_objects (sys.all_objects)
			/// </summary>
			[Association(ThisKey="ObjectID", OtherKey="ObjectID", CanBeNull=false)]
			public ObjectSchema.AllObject AllObject { get; set; } = null!;

			#endregion
		}

		/// <summary>
		/// <para><strong>sys.assembly_modules (Transact-SQL)</strong></para>
		/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions) √ Azure SQL Managed Instance √ Azure Synapse Analytics √ Analytics Platform System (PDW)</para>
		/// <para>Returns one row for each function, procedure or trigger that is defined by a common language runtime (CLR) assembly. This catalog view maps CLR stored procedures, CLR triggers, or CLR functions to their underlying implementation. Objects of type TA, AF, PC, FS, and FT have an associated assembly module. To find the association between the object and the assembly, you can join this catalog view to other catalog views. For example, when you create a CLR stored procedure, it is represented by one row in <strong>sys.objects</strong>, one row in <strong>sys.procedures</strong> (which inherits from <strong>sys.objects</strong>), and one row in <strong>sys.assembly_modules</strong>. The stored procedure itself is represented by the metadata in <strong>sys.objects</strong> and <strong>sys.procedures</strong>. References to the procedure's underlying CLR implementation are found in <strong>sys.assembly_modules</strong>.</para><br/>
		/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-assembly-modules-transact-sql'>sys.assembly_modules</a>.</para>
		/// </summary>
		[Table(Schema="sys", Name="assembly_modules", IsView=true)]
		public partial class AssemblyModule
		{
			/// <summary>
			/// Object identification number of the SQL object. Is unique within a database.
			/// </summary>
			[Column("object_id"),               NotNull    ] public int     ObjectID             { get; set; } // int
			/// <summary>
			/// ID of the assembly from which this module was created.
			/// </summary>
			[Column("assembly_id"),             NotNull    ] public int     AssemblyID           { get; set; } // int
			/// <summary>
			/// Name of the class within the assembly that defines this module.
			/// </summary>
			[Column("assembly_class"),             Nullable] public string? AssemblyClass        { get; set; } // sysname
			/// <summary>
			/// Name of the method within the <strong>assembly_class</strong> that defines this module.<br/><br/> NULL for aggregate functions (AF).
			/// </summary>
			[Column("assembly_method"),            Nullable] public string? AssemblyMethod       { get; set; } // sysname
			/// <summary>
			/// Module was declared to produce a NULL output for any NULL input.
			/// </summary>
			[Column("null_on_null_input"),         Nullable] public bool?   NullOnNullInput      { get; set; } // bit
			/// <summary>
			/// ID of the database principal under which the context execution occurs, as specified by the EXECUTE AS clause of the CLR function, stored procedure, or trigger.<br/><br/> NULL = EXECUTE AS CALLER. This is the default.<br/><br/> ID of the specified database principal = EXECUTE AS SELF, EXECUTE AS *user_name*, or EXECUTE AS *login_name*.<br/><br/> -2 = EXECUTE AS OWNER.
			/// </summary>
			[Column("execute_as_principal_id"),    Nullable] public int?    ExecuteAsPrincipalID { get; set; } // int

			#region Associations

			/// <summary>
			/// objects (sys.objects)
			/// </summary>
			[Association(ThisKey="ObjectID", OtherKey="ObjectID", CanBeNull=false)]
			public ObjectSchema.Object Object { get; set; } = null!;

			#endregion
		}

		/// <summary>
		/// <para><strong>sys.check_constraints (Transact-SQL)</strong></para>
		/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)  √ Azure SQL Database</para>
		/// <para>Contains a row for each object that is a CHECK constraint, with <strong>sys.objects.type</strong> = 'C'.</para><br/>
		/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-check-constraints-transact-sql'>sys.check_constraints</a>.</para>
		/// </summary>
		[Table(Schema="sys", Name="check_constraints", IsView=true)]
		public partial class CheckConstraint
		{
			/// <summary>
			/// Object name.
			/// </summary>
			[Column("name"),                    NotNull    ] public string   Name                  { get; set; } = null!; // sysname
			/// <summary>
			/// Object identification number. Is unique within a database.
			/// </summary>
			[Column("object_id"),               NotNull    ] public int      ObjectID              { get; set; } // int
			/// <summary>
			/// ID of the individual owner, if different from the schema owner. By default, schema-contained objects are owned by the schema owner. However, an alternate owner can be specified by using the ALTER AUTHORIZATION statement to change ownership.<br/><br/> Is NULL if there is no alternate individual owner.<br/><br/> Is NULL if the object type is one of the following:<br/><br/> C = CHECK constraint<br/><br/> D = DEFAULT (constraint or stand-alone)<br/><br/> F = FOREIGN KEY constraint<br/><br/> PK = PRIMARY KEY constraint<br/><br/> R = Rule (old-style, stand-alone)<br/><br/> TA = Assembly (CLR-integration) trigger<br/><br/> TR = SQL trigger<br/><br/> UQ = UNIQUE constraint<br/><br/> EC = Edge constraint
			/// </summary>
			[Column("principal_id"),               Nullable] public int?     PrincipalID           { get; set; } // int
			/// <summary>
			/// ID of the schema that the object is contained in.<br/><br/> Schema-scoped system objects are always contained in the sys or INFORMATION_SCHEMA schemas.
			/// </summary>
			[Column("schema_id"),               NotNull    ] public int      SchemaID              { get; set; } // int
			/// <summary>
			/// ID of the object to which this object belongs.<br/><br/> 0 = Not a child object.
			/// </summary>
			[Column("parent_object_id"),        NotNull    ] public int      ParentObjectID        { get; set; } // int
			/// <summary>
			/// Object type:<br/><br/> AF = Aggregate function (CLR)<br/><br/> C = CHECK constraint<br/><br/> D = DEFAULT (constraint or stand-alone)<br/><br/> F = FOREIGN KEY constraint<br/><br/> FN = SQL scalar function<br/><br/> FS = Assembly (CLR) scalar-function<br/><br/> FT = Assembly (CLR) table-valued function<br/><br/> IF = SQL inline table-valued function<br/><br/> IT = Internal table<br/><br/> P = SQL Stored Procedure<br/><br/> PC = Assembly (CLR) stored-procedure<br/><br/> PG = Plan guide<br/><br/> PK = PRIMARY KEY constraint<br/><br/> R = Rule (old-style, stand-alone)<br/><br/> RF = Replication-filter-procedure<br/><br/> S = System base table<br/><br/> SN = Synonym<br/><br/> SO = Sequence object<br/><br/> U = Table (user-defined)<br/><br/> V = View<br/><br/> EC = Edge constraint <br/><br/> <br/><br/> <strong>Applies to</strong>: SQL Server 2012 (11.x) and later.<br/><br/> SQ = Service queue<br/><br/> TA = Assembly (CLR) DML trigger<br/><br/> TF = SQL table-valued-function<br/><br/> TR = SQL DML trigger<br/><br/> TT = Table type<br/><br/> UQ = UNIQUE constraint<br/><br/> X = Extended stored procedure<br/><br/> <br/><br/> <strong>Applies to</strong>: SQL Server 2014 (12.x) and later, Azure SQL Database, Azure Synapse Analytics, Analytics Platform System (PDW).<br/><br/> ST = STATS_TREE<br/><br/> <br/><br/> <strong>Applies to</strong>: SQL Server 2016 (13.x) and later, Azure SQL Database, Azure Synapse Analytics, Analytics Platform System (PDW).<br/><br/> ET = External Table
			/// </summary>
			[Column("type"),                       Nullable] public string?  TypeColumn            { get; set; } // char(2)
			/// <summary>
			/// Description of the object type:<br/><br/> AGGREGATE_FUNCTION<br/><br/> CHECK_CONSTRAINT<br/><br/> CLR_SCALAR_FUNCTION<br/><br/> CLR_STORED_PROCEDURE<br/><br/> CLR_TABLE_VALUED_FUNCTION<br/><br/> CLR_TRIGGER<br/><br/> DEFAULT_CONSTRAINT<br/><br/> EXTENDED_STORED_PROCEDURE<br/><br/> FOREIGN_KEY_CONSTRAINT<br/><br/> INTERNAL_TABLE<br/><br/> PLAN_GUIDE<br/><br/> PRIMARY_KEY_CONSTRAINT<br/><br/> REPLICATION_FILTER_PROCEDURE<br/><br/> RULE<br/><br/> SEQUENCE_OBJECT<br/><br/> <br/><br/> <strong>Applies to</strong>: SQL Server 2012 (11.x) and later.<br/><br/>  SERVICE_QUEUE<br/><br/> SQL_INLINE_TABLE_VALUED_FUNCTION<br/><br/> SQL_SCALAR_FUNCTION<br/><br/> SQL_STORED_PROCEDURE<br/><br/> SQL_TABLE_VALUED_FUNCTION<br/><br/> SQL_TRIGGER<br/><br/> SYNONYM<br/><br/> SYSTEM_TABLE<br/><br/> TABLE_TYPE<br/><br/> UNIQUE_CONSTRAINT<br/><br/> USER_TABLE<br/><br/> VIEW
			/// </summary>
			[Column("type_desc"),                  Nullable] public string?  TypeDesc              { get; set; } // nvarchar(60)
			/// <summary>
			/// Date the object was created.
			/// </summary>
			[Column("create_date"),             NotNull    ] public DateTime CreateDate            { get; set; } // datetime
			/// <summary>
			/// Date the object was last modified by using an ALTER statement. If the object is a table or a view, modify_date also changes when an index on the table or view is created or altered.
			/// </summary>
			[Column("modify_date"),             NotNull    ] public DateTime ModifyDate            { get; set; } // datetime
			/// <summary>
			/// Object is created by an internal SQL Server component.
			/// </summary>
			[Column("is_ms_shipped"),           NotNull    ] public bool     IsMSShipped           { get; set; } // bit
			/// <summary>
			/// Object is published.
			/// </summary>
			[Column("is_published"),            NotNull    ] public bool     IsPublished           { get; set; } // bit
			/// <summary>
			/// Only the schema of the object is published.
			/// </summary>
			[Column("is_schema_published"),     NotNull    ] public bool     IsSchemaPublished     { get; set; } // bit
			/// <summary>
			/// CHECK constraint is disabled.
			/// </summary>
			[Column("is_disabled"),             NotNull    ] public bool     IsDisabled            { get; set; } // bit
			/// <summary>
			/// CHECK constraint was created with the NOT FOR REPLICATION option.
			/// </summary>
			[Column("is_not_for_replication"),  NotNull    ] public bool     IsNotForReplication   { get; set; } // bit
			/// <summary>
			/// CHECK constraint has not been verified by the system for all rows.
			/// </summary>
			[Column("is_not_trusted"),          NotNull    ] public bool     IsNotTrusted          { get; set; } // bit
			/// <summary>
			/// 0 indicates a table-level CHECK constraint.<br/><br/> Non-zero value indicates that this is a column-level CHECK constraint defined on the column with the specified ID value.
			/// </summary>
			[Column("parent_column_id"),        NotNull    ] public int      ParentColumnID        { get; set; } // int
			/// <summary>
			/// SQL expression that defines this CHECK constraint.
			/// </summary>
			[Column("definition"),                 Nullable] public string?  Definition            { get; set; } // nvarchar(max)
			/// <summary>
			/// 1 = The constraint definition depends on the default collation of the database for correct evaluation; otherwise, 0. Such a dependency prevents changing the database default collation.
			/// </summary>
			[Column("uses_database_collation"),    Nullable] public bool?    UsesDatabaseCollation { get; set; } // bit
			/// <summary>
			/// 1 = Name was generated by system.<br/><br/> 0 = Name was supplied by the user.
			/// </summary>
			[Column("is_system_named"),         NotNull    ] public bool     IsSystemNamed         { get; set; } // bit

			#region Associations

			/// <summary>
			/// objects (sys.objects)
			/// </summary>
			[Association(ThisKey="ObjectID", OtherKey="ObjectID", CanBeNull=false)]
			public ObjectSchema.Object Object { get; set; } = null!;

			#endregion
		}

		/// <summary>
		/// <para><strong>sys.columns (Transact-SQL)</strong></para>
		/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions) √ Azure SQL Database √ Azure SQL Managed Instance √ Azure Synapse Analytics √ Analytics Platform System (PDW)</para>
		/// <para>Returns a row for each column of an object that has columns, such as views or tables. The following is a list of object types that have columns:<br/>
		/// - Table-valued assembly functions (FT)<br/>
		/// - Inline table-valued SQL functions (IF)<br/>
		/// - Internal tables (IT)<br/>
		/// - System tables (S)<br/>
		/// - Table-valued SQL functions (TF)<br/>
		/// - User tables (U)<br/>
		/// - Views (V)</para><br/>
		/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-columns-transact-sql'>sys.columns</a>.</para>
		/// </summary>
		[Table(Schema="sys", Name="columns", IsView=true)]
		public partial class Column
		{
			/// <summary>
			/// ID of the object to which this column belongs.
			/// </summary>
			[Column("object_id"),                           NotNull    ] public int     ObjectID                        { get; set; } // int
			/// <summary>
			/// Name of the column. Is unique within the object.
			/// </summary>
			[Column("name"),                                   Nullable] public string? Name                            { get; set; } // sysname
			/// <summary>
			/// ID of the column. Is unique within the object.<br/><br/> Column IDs might not be sequential.
			/// </summary>
			[Column("column_id"),                           NotNull    ] public int     ColumnID                        { get; set; } // int
			/// <summary>
			/// ID of the system type of the column.
			/// </summary>
			[Column("system_type_id"),                      NotNull    ] public byte    SystemTypeID                    { get; set; } // tinyint
			/// <summary>
			/// ID of the type of the column as defined by the user.<br/><br/> To return the name of the type, join to the <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-types-transact-sql'>sys.types</a> catalog view on this column.
			/// </summary>
			[Column("user_type_id"),                        NotNull    ] public int     UserTypeID                      { get; set; } // int
			/// <summary>
			/// Maximum length (in bytes) of the column.<br/><br/> -1 = Column data type is <strong>varchar(max)</strong>, <strong>nvarchar(max)</strong>, <strong>varbinary(max)</strong>, or <strong>xml</strong>.<br/><br/> For <strong>text</strong>, <strong>ntext</strong>, and <strong>image</strong> columns, the max_length value will be 16 (representing the 16-byte pointer only) or the value set by sp_tableoption 'text in row'.
			/// </summary>
			[Column("max_length"),                          NotNull    ] public short   MaxLength                       { get; set; } // smallint
			/// <summary>
			/// Precision of the column if numeric-based; otherwise, 0.
			/// </summary>
			[Column("precision"),                           NotNull    ] public byte    Precision                       { get; set; } // tinyint
			/// <summary>
			/// Scale of column if numeric-based; otherwise, 0.
			/// </summary>
			[Column("scale"),                               NotNull    ] public byte    Scale                           { get; set; } // tinyint
			/// <summary>
			/// Name of the collation of the column if character-based; otherwise <c>NULL</c>.
			/// </summary>
			[Column("collation_name"),                         Nullable] public string? CollationName                   { get; set; } // sysname
			/// <summary>
			/// 1 = Column is nullable.
			/// </summary>
			[Column("is_nullable"),                            Nullable] public bool?   IsNullable                      { get; set; } // bit
			/// <summary>
			/// 1 = Column uses ANSI_PADDING ON behavior if character, binary, or variant.<br/><br/> 0 = Column is not character, binary, or variant.
			/// </summary>
			[Column("is_ansi_padded"),                      NotNull    ] public bool    IsAnsiPadded                    { get; set; } // bit
			/// <summary>
			/// 1 = Column is a declared ROWGUIDCOL.
			/// </summary>
			[Column("is_rowguidcol"),                       NotNull    ] public bool    IsRowGuidCol                    { get; set; } // bit
			/// <summary>
			/// 1 = Column has identity values
			/// </summary>
			[Column("is_identity"),                         NotNull    ] public bool    IsIdentity                      { get; set; } // bit
			/// <summary>
			/// 1 = Column is a computed column.
			/// </summary>
			[Column("is_computed"),                         NotNull    ] public bool    IsComputed                      { get; set; } // bit
			/// <summary>
			/// 1 = Column is a FILESTREAM column.
			/// </summary>
			[Column("is_filestream"),                       NotNull    ] public bool    IsFilestream                    { get; set; } // bit
			/// <summary>
			/// 1 = Column is replicated.
			/// </summary>
			[Column("is_replicated"),                          Nullable] public bool?   IsReplicated                    { get; set; } // bit
			/// <summary>
			/// 1 = Column has a non-SQL Server subscriber.
			/// </summary>
			[Column("is_non_sql_subscribed"),                  Nullable] public bool?   IsNonSqlSubscribed              { get; set; } // bit
			/// <summary>
			/// 1 = Column is merge-published.
			/// </summary>
			[Column("is_merge_published"),                     Nullable] public bool?   IsMergePublished                { get; set; } // bit
			/// <summary>
			/// 1 = Column is replicated by using SSIS.
			/// </summary>
			[Column("is_dts_replicated"),                      Nullable] public bool?   IsDtsReplicated                 { get; set; } // bit
			/// <summary>
			/// 1 = Content is a complete XML document.<br/><br/> 0 = Content is a document fragment or the column data type is not <strong>xml</strong>.
			/// </summary>
			[Column("is_xml_document"),                     NotNull    ] public bool    IsXmlDocument                   { get; set; } // bit
			/// <summary>
			/// Nonzero if the data type of the column is <strong>xml</strong> and the XML is typed. The value will be the ID of the collection containing the validating XML schema namespace of the column.<br/><br/> 0 = No XML schema collection.
			/// </summary>
			[Column("xml_collection_id"),                   NotNull    ] public int     XmlCollectionID                 { get; set; } // int
			/// <summary>
			/// ID of the default object, regardless of whether it is a stand-alone object <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-stored-procedures/sp-bindefault-transact-sql'>sys.sp_bindefault</a>, or an inline, column-level DEFAULT constraint. The parent_object_id column of an inline column-level default object is a reference back to the table itself.<br/><br/> 0 = No default.
			/// </summary>
			[Column("default_object_id"),                   NotNull    ] public int     DefaultObjectID                 { get; set; } // int
			/// <summary>
			/// ID of the stand-alone rule bound to the column by using sys.sp_bindrule.<br/><br/> 0 = No stand-alone rule. For column-level CHECK constraints, see <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-check-constraints-transact-sql'>sys.check_constraints (Transact-SQL)</a>.
			/// </summary>
			[Column("rule_object_id"),                      NotNull    ] public int     RuleObjectID                    { get; set; } // int
			/// <summary>
			/// 1 = Column is a sparse column. For more information, see <a href='https://docs.microsoft.com/en-us/sql/relational-databases/tables/use-sparse-columns'>Use Sparse Columns</a>.
			/// </summary>
			[Column("is_sparse"),                              Nullable] public bool?   IsSparse                        { get; set; } // bit
			/// <summary>
			/// 1 = Column is a column set. For more information, see <a href='https://docs.microsoft.com/en-us/sql/relational-databases/tables/use-sparse-columns'>Use Sparse Columns</a>.
			/// </summary>
			[Column("is_column_set"),                          Nullable] public bool?   IsColumnSet                     { get; set; } // bit
			/// <summary>
			/// <strong>Applies to</strong>: SQL Server 2016 (13.x) and later, SQL Database. 7, 8, 9, 10 only applies to SQL Database.<br/><br/> Identifies when the column value is generated (will always be 0 for columns in system tables):<br/><br/> 0 = NOT_APPLICABLE<br/> 1 = AS_ROW_START<br/> 2 = AS_ROW_END<br/>7 = AS_TRANSACTION_ID_START<br/>8 = AS_TRANSACTION_ID_END<br/>9 = AS_SEQUENCE_NUMBER_START<br/>10 = AS_SEQUENCE_NUMBER_END<br/><br/> For more information, see <a href='https://docs.microsoft.com/en-us/sql/relational-databases/tables/temporal-tables'>Temporal Tables (Relational databases)</a>.
			/// </summary>
			[Column("generated_always_type"),                  Nullable] public byte?   GeneratedAlwaysType             { get; set; } // tinyint
			/// <summary>
			/// <strong>Applies to</strong>: SQL Server 2016 (13.x) and later, SQL Database.<br/><br/> Textual description of <c>generated_always_type</c>'s value (always NOT_APPLICABLE for columns in system tables) <br/><br/> NOT_APPLICABLE<br/> AS_ROW_START<br/> AS_ROW_END<br/><br/><strong>Applies to</strong>: SQL Database<br/><br/>AS_TRANSACTION_ID_START<br/>AS_TRANSACTION_ID_END<br/>AS_SEQUENCE_NUMBER_START<br/>AS_SEQUENCE_NUMBER_END
			/// </summary>
			[Column("generated_always_type_desc"),             Nullable] public string? GeneratedAlwaysTypeDesc         { get; set; } // nvarchar(60)
			/// <summary>
			/// <strong>Applies to</strong>: SQL Server 2016 (13.x) and later, SQL Database.<br/><br/> Encryption type:<br/><br/> 1 = Deterministic encryption<br/><br/> 2 = Randomized encryption
			/// </summary>
			[Column("encryption_type"),                        Nullable] public int?    EncryptionType                  { get; set; } // int
			/// <summary>
			/// <strong>Applies to</strong>: SQL Server 2016 (13.x) and later, SQL Database.<br/><br/> Encryption type description:<br/><br/> RANDOMIZED<br/><br/> DETERMINISTIC
			/// </summary>
			[Column("encryption_type_desc"),                   Nullable] public string? EncryptionTypeDesc              { get; set; } // nvarchar(64)
			/// <summary>
			/// <strong>Applies to</strong>: SQL Server 2016 (13.x) and later, SQL Database.<br/><br/> Name of encryption algorithm.<br/><br/> Only AEAD_AES_256_CBC_HMAC_SHA_512 is supported.
			/// </summary>
			[Column("encryption_algorithm_name"),              Nullable] public string? EncryptionAlgorithmName         { get; set; } // sysname
			/// <summary>
			/// <strong>Applies to</strong>: SQL Server 2016 (13.x) and later, SQL Database.<br/><br/> ID of the CEK.
			/// </summary>
			[Column("column_encryption_key_id"),               Nullable] public int?    ColumnEncryptionKeyID           { get; set; } // int
			/// <summary>
			/// <strong>Applies to</strong>: SQL Server 2016 (13.x) and later, SQL Database.<br/><br/> The name of the database where the column encryption key exists if different than the database of the column. <c>NULL</c> if the key exists in the same database as the column.
			/// </summary>
			[Column("column_encryption_key_database_name"),    Nullable] public string? ColumnEncryptionKeyDatabaseName { get; set; } // sysname
			/// <summary>
			/// <strong>Applies to</strong>: SQL Server 2019 (15.x) and later, SQL Database.<br/><br/> Indicates if the column is hidden:<br/><br/> 0 = regular, not-hidden, visible column<br/><br/> 1 = hidden column
			/// </summary>
			[Column("is_hidden"),                              Nullable] public bool?   IsHidden                        { get; set; } // bit
			/// <summary>
			/// <strong>Applies to</strong>: SQL Server 2019 (15.x) and later, SQL Database.<br/><br/> Indicates if the column is masked by a dynamic data masking:<br/><br/> 0 = regular, not-masked column<br/><br/> 1 = column is masked
			/// </summary>
			[Column("is_masked"),                           NotNull    ] public bool    IsMasked                        { get; set; } // bit
			/// <summary>
			/// Internal column with a set of values. The values are between 1-8 for graph columns and <c>NULL</c> for others.
			/// </summary>
			[Column("graph_type"),                             Nullable] public int?    GraphType                       { get; set; } // int
			/// <summary>
			/// internal column with a set of values
			/// </summary>
			[Column("graph_type_desc"),                        Nullable] public string? GraphTypeDesc                   { get; set; } // nvarchar(60)
			/// <summary>
			/// <strong>Applies to</strong>: Azure SQL Database Edge. Indicates if the column is the data retention filter column for the table.
			/// </summary>
			[Column("is_data_deletion_filter_column"),      NotNull    ] public bool    IsDataDeletionFilterColumn      { get; set; } // bit
			/// <summary>
			/// <strong>Applies to</strong>: SQL Database.<br/><br/> If not NULL, indicates the type of a column in a ledger view:<br/><br/> 1 = TRANSACTION_ID<br/> 2 = SEQUENCE_NUMBER<br/> 3 = OPERATION_TYPE<br/> 4 = OPERATION_TYPE_DESC<br/><br/>For more information on database ledger, see <a href='https://docs.microsoft.com/en-us/azure/azure-sql/database/ledger-overview'>Azure SQL Database ledger</a>.
			/// </summary>
			[Column("ledger_view_column_type"),             NotNull    ] public byte    LedgerViewColumnType            { get; set; } // tinyint
			/// <summary>
			/// <strong>Applies to</strong>: SQL Database.<br/><br/> If not NULL, contains a textual description of the the type of a column in a ledger view:<br/><br/> TRANSACTION_ID<br/> SEQUENCE_NUMBER<br/> OPERATION_TYPE<br/> OPERATION_TYPE_DESC
			/// </summary>
			[Column("ledger_view_column_type_desc"),        NotNull    ] public string  LedgerViewColumnTypeDesc        { get; set; } = null!; // nvarchar(60)

			#region Associations

			/// <summary>
			/// objects (sys.objects)
			/// </summary>
			[Association(ThisKey="ObjectID", OtherKey="ObjectID", CanBeNull=false)]
			public ObjectSchema.Object Object { get; set; } = null!;

			#endregion
		}

		/// <summary>
		/// <para><strong>sys.column_store_dictionaries (Transact-SQL)</strong></para>
		/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)</para>
		/// <para>Contains a row for each dictionary used in xVelocity memory optimized columnstore indexes. Dictionaries are used to encode some, but not all data types, therefore not all columns in a columnstore index have dictionaries. A dictionary can exist as a primary dictionary (for all segments) and possibly for other secondary dictionaries used for a subset of the column's segments.</para><br/>
		/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-column-store-dictionaries-transact-sql'>sys.column_store_dictionaries</a>.</para>
		/// </summary>
		[Table(Schema="sys", Name="column_store_dictionaries", IsView=true)]
		public partial class ColumnStoreDictionary
		{
			/// <summary>
			/// ID of the heap or B-tree index (HoBT) for the table that has this columnstore index.
			/// </summary>
			[Column("hobt_id"),       Nullable] public long? HoBTID       { get; set; } // bigint
			/// <summary>
			/// ID of the columnstore column starting with 1. The first column has ID = 1, the second column has ID = 2, etc.
			/// </summary>
			[Column("column_id"),     Nullable] public int?  ColumnID     { get; set; } // int
			/// <summary>
			/// There can be two kinds of dictionaries, global and local, associated with a column segment. A dictionary_id of 0 represents the global dictionary that is shared across all column segments (one for each row group) for that column.
			/// </summary>
			[Column("dictionary_id"), Nullable] public int?  DictionaryID { get; set; } // int
			/// <summary>
			/// Version of the dictionary format.
			/// </summary>
			[Column("version"),       Nullable] public int?  Version      { get; set; } // int
			/// <summary>
			/// Dictionary type:<br/><br/> 1 - Hash dictionary containing <strong>int</strong> values<br/><br/> 2 - Not used<br/><br/> 3 - Hash dictionary containing string values<br/><br/> 4 - Hash dictionary containing <strong>float</strong> values<br/><br/> For more information about dictionaries, see <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/~/relational-databases/indexes/columnstore-indexes-overview'>Columnstore Indexes Guide</a>.
			/// </summary>
			[Column("type"),          Nullable] public int?  TypeColumn   { get; set; } // int
			/// <summary>
			/// The last data ID in the dictionary.
			/// </summary>
			[Column("last_id"),       Nullable] public int?  LastID       { get; set; } // int
			/// <summary>
			/// Number of entries in the dictionary.
			/// </summary>
			[Column("entry_count"),   Nullable] public long? EntryCount   { get; set; } // bigint
			/// <summary>
			/// Size of dictionary in bytes.
			/// </summary>
			[Column("on_disk_size"),  Nullable] public long? OnDiskSize   { get; set; } // bigint
			/// <summary>
			/// Indicates the partition ID. Is unique within a database.
			/// </summary>
			[Column("partition_id"),  Nullable] public long? PartitionID  { get; set; } // bigint
		}

		/// <summary>
		/// <para><strong>sys.column_store_row_groups (Transact-SQL)</strong></para>
		/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)</para>
		/// <para>Provides clustered columnstore index information on a per-segment basis to help the administrator make system management decisions. <strong>sys.column_store_row_groups</strong> has a column for the total number of rows physically stored (including those marked as deleted) and a column for the number of rows marked as deleted. Use <strong>sys.column_store_row_groups</strong> to determine which row groups have a high percentage of deleted rows and should be rebuilt.</para><br/>
		/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-column-store-row-groups-transact-sql'>sys.column_store_row_groups</a>.</para>
		/// </summary>
		[Table(Schema="sys", Name="column_store_row_groups", IsView=true)]
		public partial class ColumnStoreRowGroup
		{
			/// <summary>
			/// The id of the table on which this index is defined.
			/// </summary>
			[Column("object_id"),              Nullable] public int?   ObjectID         { get; set; } // int
			/// <summary>
			/// ID of the index for the table that has this columnstore index.
			/// </summary>
			[Column("index_id"),               Nullable] public int?   IndexID          { get; set; } // int
			/// <summary>
			/// ID of the table partition that holds row group row_group_id. You can use partition_number to join this DMV to sys.partitions.
			/// </summary>
			[Column("partition_number"),       Nullable] public int?   PartitionNumber  { get; set; } // int
			/// <summary>
			/// The row group number associated with this row group. This is unique within the partition.<br/><br/> -1 = tail of an in-memory table.
			/// </summary>
			[Column("row_group_id"),           Nullable] public int?   RowGroupID       { get; set; } // int
			/// <summary>
			/// The hobt_id for OPEN row group in the delta store.<br/><br/> NULL if the row group is not in the delta store.<br/><br/> NULL for the tail of an in-memory table.
			/// </summary>
			[Column("delta_store_hobt_id"),    Nullable] public long?  DeltaStoreHoBTID { get; set; } // bigint
			/// <summary>
			/// ID number associated with the state_description.<br/><br/> 0 = INVISIBLE<br/><br/> 1 = OPEN<br/><br/> 2 = CLOSED<br/><br/> 3 = COMPRESSED <br/><br/> 4 = TOMBSTONE
			/// </summary>
			[Column("state"),                  Nullable] public byte?  State            { get; set; } // tinyint
			/// <summary>
			/// Description of the persistent state of the row group:<br/><br/> INVISIBLE -A hidden compressed segment in the process of being built from data in a delta store. Read actions will use the delta store until the invisible compressed segment is completed. Then the new segment is made visible, and the source delta store is removed.<br/><br/> OPEN - A read/write row group that is accepting new records. An open row group is still in rowstore format and has not been compressed to columnstore format.<br/><br/> CLOSED - A row group that has been filled, but not yet compressed by the tuple mover process.<br/><br/> COMPRESSED - A row group that has filled and compressed.
			/// </summary>
			[Column("state_description"),   NotNull    ] public string StateDescription { get; set; } = null!; // nvarchar(60)
			/// <summary>
			/// Total rows physically stored in the row group. Some may have been deleted but they are still stored. The maximum number of rows in a row group is 1,048,576 (hexadecimal FFFFF).
			/// </summary>
			[Column("total_rows"),             Nullable] public long?  TotalRows        { get; set; } // bigint
			/// <summary>
			/// Total rows in the row group marked deleted. This is always 0 for DELTA row groups.
			/// </summary>
			[Column("deleted_rows"),           Nullable] public long?  DeletedRows      { get; set; } // bigint
			/// <summary>
			/// Size in bytes of all the data in this row group (not including metadata or shared dictionaries), for both DELTA and COLUMNSTORE rowgroups.
			/// </summary>
			[Column("size_in_bytes"),          Nullable] public long?  SizeInBytes      { get; set; } // bigint

			#region Associations

			/// <summary>
			/// objects (sys.objects)
			/// </summary>
			[Association(ThisKey="ObjectID", OtherKey="ObjectID", CanBeNull=false)]
			public ObjectSchema.Object Object { get; set; } = null!;

			#endregion
		}

		/// <summary>
		/// <para><strong>sys.column_store_segments (Transact-SQL)</strong></para>
		/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)</para>
		/// <para>Returns one row for each column segment in a columnstore index. There is one column segment per column per rowgroup. For example, a table with 10 rowgroups and 34 columns returns 340 rows.</para><br/>
		/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-column-store-segments-transact-sql'>sys.column_store_segments</a>.</para>
		/// </summary>
		[Table(Schema="sys", Name="column_store_segments", IsView=true)]
		public partial class ColumnStoreSegment
		{
			/// <summary>
			/// Indicates the partition ID. Is unique within a database.
			/// </summary>
			[Column("partition_id"),            Nullable] public long?   PartitionID           { get; set; } // bigint
			/// <summary>
			/// ID of the heap or B-tree index (HoBT) for the table that has this columnstore index.
			/// </summary>
			[Column("hobt_id"),                 Nullable] public long?   HoBTID                { get; set; } // bigint
			/// <summary>
			/// ID of the columnstore column.
			/// </summary>
			[Column("column_id"),               Nullable] public int?    ColumnID              { get; set; } // int
			/// <summary>
			/// ID of the rowgroup. For backward compatibility, the column name continues to be called segment_id even though this is the rowgroup ID. You can uniquely identify a segment using &lt;hobt_id, partition_id, column_id&gt;, &lt;segment_id&gt;.
			/// </summary>
			[Column("segment_id"),              Nullable] public int?    SegmentID             { get; set; } // int
			/// <summary>
			/// Version of the column segment format.
			/// </summary>
			[Column("version"),                 Nullable] public int?    Version               { get; set; } // int
			/// <summary>
			/// Type of encoding used for that segment:<br/><br/> 1 = VALUE_BASED - non-string/binary with no dictionary (similar to 4 with some internal variations)<br/><br/> 2 = VALUE_HASH_BASED - non-string/binary column with common values in dictionary<br/><br/> 3 = STRING_HASH_BASED - string/binary column with common values in dictionary<br/><br/> 4 = STORE_BY_VALUE_BASED - non-string/binary with no dictionary<br/><br/> 5 = STRING_STORE_BY_VALUE_BASED - string/binary with no dictionary<br/><br/> For more information, see the [Remarks](https://learn.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-column-store-segments-transact-sql#remarks) section.
			/// </summary>
			[Column("encoding_type"),           Nullable] public int?    EncodingType          { get; set; } // int
			/// <summary>
			/// Number of rows in the row group.
			/// </summary>
			[Column("row_count"),               Nullable] public int?    RowCount              { get; set; } // int
			/// <summary>
			/// 1 if the column segment has null values.
			/// </summary>
			[Column("has_nulls"),               Nullable] public int?    HasNulls              { get; set; } // int
			/// <summary>
			/// Base value ID if encoding type 1 is being used. If encoding type 1 is not being used, base_id is set to -1.
			/// </summary>
			[Column("base_id"),                 Nullable] public long?   BaseID                { get; set; } // bigint
			/// <summary>
			/// Magnitude if encoding type 1 is being used. If encoding type 1 is not being used, magnitude is set to -1.
			/// </summary>
			[Column("magnitude"),               Nullable] public double? Magnitude             { get; set; } // float
			/// <summary>
			/// A value of 0 represents the global dictionary. A value of -1 indicates that there is no global dictionary created for this column.
			/// </summary>
			[Column("primary_dictionary_id"),   Nullable] public int?    PrimaryDictionaryID   { get; set; } // int
			/// <summary>
			/// A non-zero value points to the local dictionary for this column in the current segment (i.e. the rowgroup). A value of -1 indicates that there is no local dictionary for this segment.
			/// </summary>
			[Column("secondary_dictionary_id"), Nullable] public int?    SecondaryDictionaryID { get; set; } // int
			/// <summary>
			/// Minimum data ID in the column segment.
			/// </summary>
			[Column("min_data_id"),             Nullable] public long?   MinDataID             { get; set; } // bigint
			/// <summary>
			/// Maximum data ID in the column segment.
			/// </summary>
			[Column("max_data_id"),             Nullable] public long?   MaxDataID             { get; set; } // bigint
			/// <summary>
			/// Value used to represent nulls.
			/// </summary>
			[Column("null_value"),              Nullable] public long?   NullValue             { get; set; } // bigint
			/// <summary>
			/// Size of segment in bytes.
			/// </summary>
			[Column("on_disk_size"),            Nullable] public long?   OnDiskSize            { get; set; } // bigint
		}

		/// <summary>
		/// <para><strong>sys.computed_columns (Transact-SQL)</strong></para>
		/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions) √ Azure SQL Database √ Azure SQL Managed Instance √ Azure Synapse Analytics √ Analytics Platform System (PDW)</para>
		/// <para>Contains a row for each column found in <strong>sys.columns</strong> that is a computed-column.</para><br/>
		/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-computed-columns-transact-sql'>sys.computed_columns</a>.</para>
		/// </summary>
		[Table(Schema="sys", Name="computed_columns", IsView=true)]
		public partial class ComputedColumn
		{
			/// <summary>
			/// ID of the object to which this column belongs.
			/// </summary>
			[Column("object_id"),                           NotNull    ] public int     ObjectID                        { get; set; } // int
			/// <summary>
			/// Name of the column. Is unique within the object.
			/// </summary>
			[Column("name"),                                   Nullable] public string? Name                            { get; set; } // sysname
			/// <summary>
			/// ID of the column. Is unique within the object.<br/><br/> Column IDs might not be sequential.
			/// </summary>
			[Column("column_id"),                           NotNull    ] public int     ColumnID                        { get; set; } // int
			/// <summary>
			/// ID of the system type of the column.
			/// </summary>
			[Column("system_type_id"),                      NotNull    ] public byte    SystemTypeID                    { get; set; } // tinyint
			/// <summary>
			/// ID of the type of the column as defined by the user.<br/><br/> To return the name of the type, join to the <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-types-transact-sql'>sys.types</a> catalog view on this column.
			/// </summary>
			[Column("user_type_id"),                        NotNull    ] public int     UserTypeID                      { get; set; } // int
			/// <summary>
			/// Maximum length (in bytes) of the column.<br/><br/> -1 = Column data type is <strong>varchar(max)</strong>, <strong>nvarchar(max)</strong>, <strong>varbinary(max)</strong>, or <strong>xml</strong>.<br/><br/> For <strong>text</strong>, <strong>ntext</strong>, and <strong>image</strong> columns, the max_length value will be 16 (representing the 16-byte pointer only) or the value set by sp_tableoption 'text in row'.
			/// </summary>
			[Column("max_length"),                          NotNull    ] public short   MaxLength                       { get; set; } // smallint
			/// <summary>
			/// Precision of the column if numeric-based; otherwise, 0.
			/// </summary>
			[Column("precision"),                           NotNull    ] public byte    Precision                       { get; set; } // tinyint
			/// <summary>
			/// Scale of column if numeric-based; otherwise, 0.
			/// </summary>
			[Column("scale"),                               NotNull    ] public byte    Scale                           { get; set; } // tinyint
			/// <summary>
			/// Name of the collation of the column if character-based; otherwise <c>NULL</c>.
			/// </summary>
			[Column("collation_name"),                         Nullable] public string? CollationName                   { get; set; } // sysname
			/// <summary>
			/// 1 = Column is nullable.
			/// </summary>
			[Column("is_nullable"),                            Nullable] public bool?   IsNullable                      { get; set; } // bit
			/// <summary>
			/// 1 = Column uses ANSI_PADDING ON behavior if character, binary, or variant.<br/><br/> 0 = Column is not character, binary, or variant.
			/// </summary>
			[Column("is_ansi_padded"),                      NotNull    ] public bool    IsAnsiPadded                    { get; set; } // bit
			/// <summary>
			/// 1 = Column is a declared ROWGUIDCOL.
			/// </summary>
			[Column("is_rowguidcol"),                       NotNull    ] public bool    IsRowGuidCol                    { get; set; } // bit
			/// <summary>
			/// 1 = Column has identity values
			/// </summary>
			[Column("is_identity"),                         NotNull    ] public bool    IsIdentity                      { get; set; } // bit
			/// <summary>
			/// 1 = Column is a computed column.
			/// </summary>
			[Column("is_computed"),                         NotNull    ] public bool    IsComputed                      { get; set; } // bit
			/// <summary>
			/// 1 = Column is a FILESTREAM column.
			/// </summary>
			[Column("is_filestream"),                       NotNull    ] public bool    IsFilestream                    { get; set; } // bit
			/// <summary>
			/// 1 = Column is replicated.
			/// </summary>
			[Column("is_replicated"),                          Nullable] public bool?   IsReplicated                    { get; set; } // bit
			/// <summary>
			/// 1 = Column has a non-SQL Server subscriber.
			/// </summary>
			[Column("is_non_sql_subscribed"),                  Nullable] public bool?   IsNonSqlSubscribed              { get; set; } // bit
			/// <summary>
			/// 1 = Column is merge-published.
			/// </summary>
			[Column("is_merge_published"),                     Nullable] public bool?   IsMergePublished                { get; set; } // bit
			/// <summary>
			/// 1 = Column is replicated by using SSIS.
			/// </summary>
			[Column("is_dts_replicated"),                      Nullable] public bool?   IsDtsReplicated                 { get; set; } // bit
			/// <summary>
			/// 1 = Content is a complete XML document.<br/><br/> 0 = Content is a document fragment or the column data type is not <strong>xml</strong>.
			/// </summary>
			[Column("is_xml_document"),                     NotNull    ] public bool    IsXmlDocument                   { get; set; } // bit
			/// <summary>
			/// Nonzero if the data type of the column is <strong>xml</strong> and the XML is typed. The value will be the ID of the collection containing the validating XML schema namespace of the column.<br/><br/> 0 = No XML schema collection.
			/// </summary>
			[Column("xml_collection_id"),                   NotNull    ] public int     XmlCollectionID                 { get; set; } // int
			/// <summary>
			/// ID of the default object, regardless of whether it is a stand-alone object <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-stored-procedures/sp-bindefault-transact-sql'>sys.sp_bindefault</a>, or an inline, column-level DEFAULT constraint. The parent_object_id column of an inline column-level default object is a reference back to the table itself.<br/><br/> 0 = No default.
			/// </summary>
			[Column("default_object_id"),                   NotNull    ] public int     DefaultObjectID                 { get; set; } // int
			/// <summary>
			/// ID of the stand-alone rule bound to the column by using sys.sp_bindrule.<br/><br/> 0 = No stand-alone rule. For column-level CHECK constraints, see <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-check-constraints-transact-sql'>sys.check_constraints (Transact-SQL)</a>.
			/// </summary>
			[Column("rule_object_id"),                      NotNull    ] public int     RuleObjectID                    { get; set; } // int
			/// <summary>
			/// 1 = Column is a sparse column. For more information, see <a href='https://docs.microsoft.com/en-us/sql/relational-databases/tables/use-sparse-columns'>Use Sparse Columns</a>.
			/// </summary>
			[Column("is_sparse"),                           NotNull    ] public bool    IsSparse                        { get; set; } // bit
			/// <summary>
			/// 1 = Column is a column set. For more information, see <a href='https://docs.microsoft.com/en-us/sql/relational-databases/tables/use-sparse-columns'>Use Sparse Columns</a>.
			/// </summary>
			[Column("is_column_set"),                       NotNull    ] public bool    IsColumnSet                     { get; set; } // bit
			/// <summary>
			/// <strong>Applies to</strong>: SQL Server 2016 (13.x) and later, SQL Database. 7, 8, 9, 10 only applies to SQL Database.<br/><br/> Identifies when the column value is generated (will always be 0 for columns in system tables):<br/><br/> 0 = NOT_APPLICABLE<br/> 1 = AS_ROW_START<br/> 2 = AS_ROW_END<br/>7 = AS_TRANSACTION_ID_START<br/>8 = AS_TRANSACTION_ID_END<br/>9 = AS_SEQUENCE_NUMBER_START<br/>10 = AS_SEQUENCE_NUMBER_END<br/><br/> For more information, see <a href='https://docs.microsoft.com/en-us/sql/relational-databases/tables/temporal-tables'>Temporal Tables (Relational databases)</a>.
			/// </summary>
			[Column("generated_always_type"),                  Nullable] public byte?   GeneratedAlwaysType             { get; set; } // tinyint
			/// <summary>
			/// <strong>Applies to</strong>: SQL Server 2016 (13.x) and later, SQL Database.<br/><br/> Textual description of <c>generated_always_type</c>'s value (always NOT_APPLICABLE for columns in system tables) <br/><br/> NOT_APPLICABLE<br/> AS_ROW_START<br/> AS_ROW_END<br/><br/><strong>Applies to</strong>: SQL Database<br/><br/>AS_TRANSACTION_ID_START<br/>AS_TRANSACTION_ID_END<br/>AS_SEQUENCE_NUMBER_START<br/>AS_SEQUENCE_NUMBER_END
			/// </summary>
			[Column("generated_always_type_desc"),             Nullable] public string? GeneratedAlwaysTypeDesc         { get; set; } // nvarchar(60)
			/// <summary>
			/// <strong>Applies to</strong>: SQL Server 2016 (13.x) and later, SQL Database.<br/><br/> Encryption type:<br/><br/> 1 = Deterministic encryption<br/><br/> 2 = Randomized encryption
			/// </summary>
			[Column("encryption_type"),                        Nullable] public int?    EncryptionType                  { get; set; } // int
			/// <summary>
			/// <strong>Applies to</strong>: SQL Server 2016 (13.x) and later, SQL Database.<br/><br/> Encryption type description:<br/><br/> RANDOMIZED<br/><br/> DETERMINISTIC
			/// </summary>
			[Column("encryption_type_desc"),                   Nullable] public string? EncryptionTypeDesc              { get; set; } // nvarchar(64)
			/// <summary>
			/// <strong>Applies to</strong>: SQL Server 2016 (13.x) and later, SQL Database.<br/><br/> Name of encryption algorithm.<br/><br/> Only AEAD_AES_256_CBC_HMAC_SHA_512 is supported.
			/// </summary>
			[Column("encryption_algorithm_name"),              Nullable] public string? EncryptionAlgorithmName         { get; set; } // sysname
			/// <summary>
			/// <strong>Applies to</strong>: SQL Server 2016 (13.x) and later, SQL Database.<br/><br/> ID of the CEK.
			/// </summary>
			[Column("column_encryption_key_id"),               Nullable] public int?    ColumnEncryptionKeyID           { get; set; } // int
			/// <summary>
			/// <strong>Applies to</strong>: SQL Server 2016 (13.x) and later, SQL Database.<br/><br/> The name of the database where the column encryption key exists if different than the database of the column. <c>NULL</c> if the key exists in the same database as the column.
			/// </summary>
			[Column("column_encryption_key_database_name"),    Nullable] public string? ColumnEncryptionKeyDatabaseName { get; set; } // sysname
			/// <summary>
			/// <strong>Applies to</strong>: SQL Server 2019 (15.x) and later, SQL Database.<br/><br/> Indicates if the column is hidden:<br/><br/> 0 = regular, not-hidden, visible column<br/><br/> 1 = hidden column
			/// </summary>
			[Column("is_hidden"),                           NotNull    ] public bool    IsHidden                        { get; set; } // bit
			/// <summary>
			/// <strong>Applies to</strong>: SQL Server 2019 (15.x) and later, SQL Database.<br/><br/> Indicates if the column is masked by a dynamic data masking:<br/><br/> 0 = regular, not-masked column<br/><br/> 1 = column is masked
			/// </summary>
			[Column("is_masked"),                           NotNull    ] public bool    IsMasked                        { get; set; } // bit
			/// <summary>
			/// Internal column with a set of values. The values are between 1-8 for graph columns and <c>NULL</c> for others.
			/// </summary>
			[Column("graph_type"),                             Nullable] public int?    GraphType                       { get; set; } // int
			/// <summary>
			/// internal column with a set of values
			/// </summary>
			[Column("graph_type_desc"),                        Nullable] public string? GraphTypeDesc                   { get; set; } // nvarchar(60)
			/// <summary>
			/// <strong>Applies to</strong>: Azure SQL Database Edge. Indicates if the column is the data retention filter column for the table.
			/// </summary>
			[Column("is_data_deletion_filter_column"),      NotNull    ] public bool    IsDataDeletionFilterColumn      { get; set; } // bit
			/// <summary>
			/// <strong>Applies to</strong>: SQL Database.<br/><br/> If not NULL, indicates the type of a column in a ledger view:<br/><br/> 1 = TRANSACTION_ID<br/> 2 = SEQUENCE_NUMBER<br/> 3 = OPERATION_TYPE<br/> 4 = OPERATION_TYPE_DESC<br/><br/>For more information on database ledger, see <a href='https://docs.microsoft.com/en-us/azure/azure-sql/database/ledger-overview'>Azure SQL Database ledger</a>.
			/// </summary>
			[Column("ledger_view_column_type"),             NotNull    ] public byte    LedgerViewColumnType            { get; set; } // tinyint
			/// <summary>
			/// <strong>Applies to</strong>: SQL Database.<br/><br/> If not NULL, contains a textual description of the the type of a column in a ledger view:<br/><br/> TRANSACTION_ID<br/> SEQUENCE_NUMBER<br/> OPERATION_TYPE<br/> OPERATION_TYPE_DESC
			/// </summary>
			[Column("ledger_view_column_type_desc"),        NotNull    ] public string  LedgerViewColumnTypeDesc        { get; set; } = null!; // nvarchar(60)
			/// <summary>
			/// SQL text that defines this computed-column.
			/// </summary>
			[Column("definition"),                             Nullable] public string? Definition                      { get; set; } // nvarchar(max)
			/// <summary>
			/// 1 = The column definition depends on the default collation of the database for correct evaluation; otherwise, 0. Such a dependency prevents changing the database default collation.
			/// </summary>
			[Column("uses_database_collation"),             NotNull    ] public bool    UsesDatabaseCollation           { get; set; } // bit
			/// <summary>
			/// Computed column is persisted.
			/// </summary>
			[Column("is_persisted"),                        NotNull    ] public bool    IsPersisted                     { get; set; } // bit

			#region Associations

			/// <summary>
			/// objects (sys.objects)
			/// </summary>
			[Association(ThisKey="ObjectID", OtherKey="ObjectID", CanBeNull=false)]
			public ObjectSchema.Object Object { get; set; } = null!;

			#endregion
		}

		/// <summary>
		/// <para><strong>sys.default_constraints (Transact-SQL)</strong></para>
		/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions) √ Azure SQL Database √ Azure SQL Managed Instance √ Azure Synapse Analytics √ Analytics Platform System (PDW)</para>
		/// <para>Contains a row for each object that is a default definition (created as part of a CREATE TABLE or ALTER TABLE statement instead of a CREATE DEFAULT statement), with <strong>sys.objects.type</strong> = D.</para><br/>
		/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-default-constraints-transact-sql'>sys.default_constraints</a>.</para>
		/// </summary>
		[Table(Schema="sys", Name="default_constraints", IsView=true)]
		public partial class DefaultConstraint
		{
			/// <summary>
			/// Object name.
			/// </summary>
			[Column("name"),                NotNull    ] public string   Name              { get; set; } = null!; // sysname
			/// <summary>
			/// Object identification number. Is unique within a database.
			/// </summary>
			[Column("object_id"),           NotNull    ] public int      ObjectID          { get; set; } // int
			/// <summary>
			/// ID of the individual owner, if different from the schema owner. By default, schema-contained objects are owned by the schema owner. However, an alternate owner can be specified by using the ALTER AUTHORIZATION statement to change ownership.<br/><br/> Is NULL if there is no alternate individual owner.<br/><br/> Is NULL if the object type is one of the following:<br/><br/> C = CHECK constraint<br/><br/> D = DEFAULT (constraint or stand-alone)<br/><br/> F = FOREIGN KEY constraint<br/><br/> PK = PRIMARY KEY constraint<br/><br/> R = Rule (old-style, stand-alone)<br/><br/> TA = Assembly (CLR-integration) trigger<br/><br/> TR = SQL trigger<br/><br/> UQ = UNIQUE constraint<br/><br/> EC = Edge constraint
			/// </summary>
			[Column("principal_id"),           Nullable] public int?     PrincipalID       { get; set; } // int
			/// <summary>
			/// ID of the schema that the object is contained in.<br/><br/> Schema-scoped system objects are always contained in the sys or INFORMATION_SCHEMA schemas.
			/// </summary>
			[Column("schema_id"),           NotNull    ] public int      SchemaID          { get; set; } // int
			/// <summary>
			/// ID of the object to which this object belongs.<br/><br/> 0 = Not a child object.
			/// </summary>
			[Column("parent_object_id"),    NotNull    ] public int      ParentObjectID    { get; set; } // int
			/// <summary>
			/// Object type:<br/><br/> AF = Aggregate function (CLR)<br/><br/> C = CHECK constraint<br/><br/> D = DEFAULT (constraint or stand-alone)<br/><br/> F = FOREIGN KEY constraint<br/><br/> FN = SQL scalar function<br/><br/> FS = Assembly (CLR) scalar-function<br/><br/> FT = Assembly (CLR) table-valued function<br/><br/> IF = SQL inline table-valued function<br/><br/> IT = Internal table<br/><br/> P = SQL Stored Procedure<br/><br/> PC = Assembly (CLR) stored-procedure<br/><br/> PG = Plan guide<br/><br/> PK = PRIMARY KEY constraint<br/><br/> R = Rule (old-style, stand-alone)<br/><br/> RF = Replication-filter-procedure<br/><br/> S = System base table<br/><br/> SN = Synonym<br/><br/> SO = Sequence object<br/><br/> U = Table (user-defined)<br/><br/> V = View<br/><br/> EC = Edge constraint <br/><br/> <br/><br/> <strong>Applies to</strong>: SQL Server 2012 (11.x) and later.<br/><br/> SQ = Service queue<br/><br/> TA = Assembly (CLR) DML trigger<br/><br/> TF = SQL table-valued-function<br/><br/> TR = SQL DML trigger<br/><br/> TT = Table type<br/><br/> UQ = UNIQUE constraint<br/><br/> X = Extended stored procedure<br/><br/> <br/><br/> <strong>Applies to</strong>: SQL Server 2014 (12.x) and later, Azure SQL Database, Azure Synapse Analytics, Analytics Platform System (PDW).<br/><br/> ST = STATS_TREE<br/><br/> <br/><br/> <strong>Applies to</strong>: SQL Server 2016 (13.x) and later, Azure SQL Database, Azure Synapse Analytics, Analytics Platform System (PDW).<br/><br/> ET = External Table
			/// </summary>
			[Column("type"),                   Nullable] public string?  TypeColumn        { get; set; } // char(2)
			/// <summary>
			/// Description of the object type:<br/><br/> AGGREGATE_FUNCTION<br/><br/> CHECK_CONSTRAINT<br/><br/> CLR_SCALAR_FUNCTION<br/><br/> CLR_STORED_PROCEDURE<br/><br/> CLR_TABLE_VALUED_FUNCTION<br/><br/> CLR_TRIGGER<br/><br/> DEFAULT_CONSTRAINT<br/><br/> EXTENDED_STORED_PROCEDURE<br/><br/> FOREIGN_KEY_CONSTRAINT<br/><br/> INTERNAL_TABLE<br/><br/> PLAN_GUIDE<br/><br/> PRIMARY_KEY_CONSTRAINT<br/><br/> REPLICATION_FILTER_PROCEDURE<br/><br/> RULE<br/><br/> SEQUENCE_OBJECT<br/><br/> <br/><br/> <strong>Applies to</strong>: SQL Server 2012 (11.x) and later.<br/><br/>  SERVICE_QUEUE<br/><br/> SQL_INLINE_TABLE_VALUED_FUNCTION<br/><br/> SQL_SCALAR_FUNCTION<br/><br/> SQL_STORED_PROCEDURE<br/><br/> SQL_TABLE_VALUED_FUNCTION<br/><br/> SQL_TRIGGER<br/><br/> SYNONYM<br/><br/> SYSTEM_TABLE<br/><br/> TABLE_TYPE<br/><br/> UNIQUE_CONSTRAINT<br/><br/> USER_TABLE<br/><br/> VIEW
			/// </summary>
			[Column("type_desc"),              Nullable] public string?  TypeDesc          { get; set; } // nvarchar(60)
			/// <summary>
			/// Date the object was created.
			/// </summary>
			[Column("create_date"),         NotNull    ] public DateTime CreateDate        { get; set; } // datetime
			/// <summary>
			/// Date the object was last modified by using an ALTER statement. If the object is a table or a view, modify_date also changes when an index on the table or view is created or altered.
			/// </summary>
			[Column("modify_date"),         NotNull    ] public DateTime ModifyDate        { get; set; } // datetime
			/// <summary>
			/// Object is created by an internal SQL Server component.
			/// </summary>
			[Column("is_ms_shipped"),       NotNull    ] public bool     IsMSShipped       { get; set; } // bit
			/// <summary>
			/// Object is published.
			/// </summary>
			[Column("is_published"),        NotNull    ] public bool     IsPublished       { get; set; } // bit
			/// <summary>
			/// Only the schema of the object is published.
			/// </summary>
			[Column("is_schema_published"), NotNull    ] public bool     IsSchemaPublished { get; set; } // bit
			/// <summary>
			/// ID of the column in <strong>parent_object_id</strong> to which this default belongs.
			/// </summary>
			[Column("parent_column_id"),    NotNull    ] public int      ParentColumnID    { get; set; } // int
			/// <summary>
			/// SQL expression that defines this default.
			/// </summary>
			[Column("definition"),             Nullable] public string?  Definition        { get; set; } // nvarchar(max)
			/// <summary>
			/// 1 = Name was generated by system.<br/><br/> 0 = Name was supplied by the user.
			/// </summary>
			[Column("is_system_named"),     NotNull    ] public bool     IsSystemNamed     { get; set; } // bit

			#region Associations

			/// <summary>
			/// objects (sys.objects)
			/// </summary>
			[Association(ThisKey="ObjectID", OtherKey="ObjectID", CanBeNull=false)]
			public ObjectSchema.Object Object { get; set; } = null!;

			#endregion
		}

		/// <summary>
		/// <para><strong>sys.events (Transact-SQL)</strong></para>
		/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)  √ Azure SQL Database</para>
		/// <para>Contains a row for each event for which a trigger or event notification fires. These events represent the event types that are specified when the trigger or event notification is created by using <a href='https://docs.microsoft.com/en-us/sql/t-sql/statements/create-trigger-transact-sql'>CREATE TRIGGER</a> or <a href='https://docs.microsoft.com/en-us/sql/t-sql/statements/create-event-notification-transact-sql'>CREATE EVENT NOTIFICATION</a>.</para><br/>
		/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-events-transact-sql'>sys.events</a>.</para>
		/// </summary>
		[Table(Schema="sys", Name="events", IsView=true)]
		public partial class Event
		{
			/// <summary>
			/// ID of the trigger or event notification. This value, together with <strong>type</strong>, uniquely identifies the row.
			/// </summary>
			[Column("object_id"),             NotNull    ] public int     ObjectID           { get; set; } // int
			/// <summary>
			/// Event that causes the trigger to fire.
			/// </summary>
			[Column("type"),                  NotNull    ] public int     TypeColumn         { get; set; } // int
			/// <summary>
			/// Description of the event that causes the trigger to fire.
			/// </summary>
			[Column("type_desc"),             NotNull    ] public string  TypeDesc           { get; set; } = null!; // nvarchar(60)
			/// <summary>
			/// 1 = Trigger event.<br/><br/> 0 = Notification event.
			/// </summary>
			[Column("is_trigger_event"),         Nullable] public bool?   IsTriggerEvent     { get; set; } // bit
			/// <summary>
			/// Event group on which the trigger or event notification is created, or null if not created on an event group.
			/// </summary>
			[Column("event_group_type"),         Nullable] public int?    EventGroupType     { get; set; } // int
			/// <summary>
			/// Description of the event group on which the trigger or event notification is created, or null if not created on an event group.
			/// </summary>
			[Column("event_group_type_desc"),    Nullable] public string? EventGroupTypeDesc { get; set; } // nvarchar(60)

			#region Associations

			/// <summary>
			/// objects (sys.objects)
			/// </summary>
			[Association(ThisKey="ObjectID", OtherKey="ObjectID", CanBeNull=false)]
			public ObjectSchema.Object Object { get; set; } = null!;

			#endregion
		}

		/// <summary>
		/// <para><strong>sys.event_notifications (Transact-SQL)</strong></para>
		/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)  √ Azure SQL Database</para>
		/// <para>Returns a row for each object that is an event notification, with <strong>sys.objects.type</strong> = EN.</para><br/>
		/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-event-notifications-transact-sql'>sys.event_notifications</a>.</para>
		/// </summary>
		[Table(Schema="sys", Name="event_notifications", IsView=true)]
		public partial class EventNotification
		{
			/// <summary>
			/// Event notification name.
			/// </summary>
			[Column("name"),              NotNull    ] public string   Name            { get; set; } = null!; // sysname
			/// <summary>
			/// Object identification number. Is unique within a database.
			/// </summary>
			[Column("object_id"),         NotNull    ] public int      ObjectID        { get; set; } // int
			/// <summary>
			/// Class of parent.<br/><br/> 0 = Database<br/><br/> 1 = Object or Column
			/// </summary>
			[Column("parent_class"),      NotNull    ] public byte     ParentClass     { get; set; } // tinyint
			/// <summary>
			/// DATABASE<br/><br/> OBJECT_OR_COLUMN
			/// </summary>
			[Column("parent_class_desc"),    Nullable] public string?  ParentClassDesc { get; set; } // nvarchar(60)
			/// <summary>
			/// Non-zero ID of the parent object.<br/><br/> 0 = The parent class is the database.
			/// </summary>
			[Column("parent_id"),         NotNull    ] public int      ParentID        { get; set; } // int
			/// <summary>
			/// Date created.
			/// </summary>
			[Column("create_date"),       NotNull    ] public DateTime CreateDate      { get; set; } // datetime
			/// <summary>
			/// Always equals <strong>create_date</strong>.
			/// </summary>
			[Column("modify_date"),       NotNull    ] public DateTime ModifyDate      { get; set; } // datetime
			/// <summary>
			/// Name of the target service to which the notification is sent.
			/// </summary>
			[Column("service_name"),         Nullable] public string?  ServiceName     { get; set; } // nvarchar(256)
			/// <summary>
			/// Broker instance to which the notification is sent.
			/// </summary>
			[Column("broker_instance"),      Nullable] public string?  BrokerInstance  { get; set; } // nvarchar(128)
			/// <summary>
			/// ID of the database principal that owns this event notification.
			/// </summary>
			[Column("principal_id"),         Nullable] public int?     PrincipalID     { get; set; } // int
			/// <summary>
			/// SID of the login who created the event notification.<br/><br/> Is NULL if the FAN_IN option is not specified.
			/// </summary>
			[Column("creator_sid"),          Nullable] public byte[]?  CreatorSID      { get; set; } // varbinary(85)

			#region Associations

			/// <summary>
			/// objects (sys.objects)
			/// </summary>
			[Association(ThisKey="ObjectID", OtherKey="ObjectID", CanBeNull=false)]
			public ObjectSchema.Object Object { get; set; } = null!;

			#endregion
		}

		/// <summary>
		/// <para><strong>sys.event_notification_event_types (Transact-SQL)</strong></para>
		/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)  √ Azure SQL Database</para>
		/// <para>Returns a row for each event or event group on which an event notification can fire.</para><br/>
		/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-event-notification-event-types-transact-sql'>sys.event_notification_event_types</a>.</para>
		/// </summary>
		[Table(Schema="sys", Name="event_notification_event_types", IsView=true)]
		public partial class EventNotificationEventType
		{
			/// <summary>
			/// Type of event or event group that causes an event notification to fire.
			/// </summary>
			[Column("type"),        NotNull    ] public int     TypeColumn { get; set; } // int
			/// <summary>
			/// Name of an event or event group. This can be specified in the FOR clause of a <a href='https://docs.microsoft.com/en-us/sql/t-sql/statements/create-event-notification-transact-sql'>CREATE EVENT NOTIFICATION</a> statement.
			/// </summary>
			[Column("type_name"),      Nullable] public string? TypeName   { get; set; } // nvarchar(128)
			/// <summary>
			/// Type of event group that is the parent of the event or event group.
			/// </summary>
			[Column("parent_type"),    Nullable] public int?    ParentType { get; set; } // int
		}

		/// <summary>
		/// <para><strong>sys.extended_procedures (Transact-SQL)</strong></para>
		/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)</para>
		/// <para>Contains a row for each object that is an extended stored procedure, with <strong>sys.objects.type</strong> = X. Because extended stored procedures are installed into the <strong>master</strong> database, they are only visible from that database context. Selecting from the <strong>sys.extended_procedures</strong> view in any other database context will return an empty result set.</para><br/>
		/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-extended-procedures-transact-sql'>sys.extended_procedures</a>.</para>
		/// </summary>
		[Table(Schema="sys", Name="extended_procedures", IsView=true)]
		public partial class ExtendedProcedure
		{
			/// <summary>
			/// Object name.
			/// </summary>
			[Column("name"),                NotNull    ] public string   Name              { get; set; } = null!; // sysname
			/// <summary>
			/// Object identification number. Is unique within a database.
			/// </summary>
			[Column("object_id"),           NotNull    ] public int      ObjectID          { get; set; } // int
			/// <summary>
			/// ID of the individual owner, if different from the schema owner. By default, schema-contained objects are owned by the schema owner. However, an alternate owner can be specified by using the ALTER AUTHORIZATION statement to change ownership.<br/><br/> Is NULL if there is no alternate individual owner.<br/><br/> Is NULL if the object type is one of the following:<br/><br/> C = CHECK constraint<br/><br/> D = DEFAULT (constraint or stand-alone)<br/><br/> F = FOREIGN KEY constraint<br/><br/> PK = PRIMARY KEY constraint<br/><br/> R = Rule (old-style, stand-alone)<br/><br/> TA = Assembly (CLR-integration) trigger<br/><br/> TR = SQL trigger<br/><br/> UQ = UNIQUE constraint<br/><br/> EC = Edge constraint
			/// </summary>
			[Column("principal_id"),           Nullable] public int?     PrincipalID       { get; set; } // int
			/// <summary>
			/// ID of the schema that the object is contained in.<br/><br/> Schema-scoped system objects are always contained in the sys or INFORMATION_SCHEMA schemas.
			/// </summary>
			[Column("schema_id"),           NotNull    ] public int      SchemaID          { get; set; } // int
			/// <summary>
			/// ID of the object to which this object belongs.<br/><br/> 0 = Not a child object.
			/// </summary>
			[Column("parent_object_id"),    NotNull    ] public int      ParentObjectID    { get; set; } // int
			/// <summary>
			/// Object type:<br/><br/> AF = Aggregate function (CLR)<br/><br/> C = CHECK constraint<br/><br/> D = DEFAULT (constraint or stand-alone)<br/><br/> F = FOREIGN KEY constraint<br/><br/> FN = SQL scalar function<br/><br/> FS = Assembly (CLR) scalar-function<br/><br/> FT = Assembly (CLR) table-valued function<br/><br/> IF = SQL inline table-valued function<br/><br/> IT = Internal table<br/><br/> P = SQL Stored Procedure<br/><br/> PC = Assembly (CLR) stored-procedure<br/><br/> PG = Plan guide<br/><br/> PK = PRIMARY KEY constraint<br/><br/> R = Rule (old-style, stand-alone)<br/><br/> RF = Replication-filter-procedure<br/><br/> S = System base table<br/><br/> SN = Synonym<br/><br/> SO = Sequence object<br/><br/> U = Table (user-defined)<br/><br/> V = View<br/><br/> EC = Edge constraint <br/><br/> <br/><br/> <strong>Applies to</strong>: SQL Server 2012 (11.x) and later.<br/><br/> SQ = Service queue<br/><br/> TA = Assembly (CLR) DML trigger<br/><br/> TF = SQL table-valued-function<br/><br/> TR = SQL DML trigger<br/><br/> TT = Table type<br/><br/> UQ = UNIQUE constraint<br/><br/> X = Extended stored procedure<br/><br/> <br/><br/> <strong>Applies to</strong>: SQL Server 2014 (12.x) and later, Azure SQL Database, Azure Synapse Analytics, Analytics Platform System (PDW).<br/><br/> ST = STATS_TREE<br/><br/> <br/><br/> <strong>Applies to</strong>: SQL Server 2016 (13.x) and later, Azure SQL Database, Azure Synapse Analytics, Analytics Platform System (PDW).<br/><br/> ET = External Table
			/// </summary>
			[Column("type"),                   Nullable] public string?  TypeColumn        { get; set; } // char(2)
			/// <summary>
			/// Description of the object type:<br/><br/> AGGREGATE_FUNCTION<br/><br/> CHECK_CONSTRAINT<br/><br/> CLR_SCALAR_FUNCTION<br/><br/> CLR_STORED_PROCEDURE<br/><br/> CLR_TABLE_VALUED_FUNCTION<br/><br/> CLR_TRIGGER<br/><br/> DEFAULT_CONSTRAINT<br/><br/> EXTENDED_STORED_PROCEDURE<br/><br/> FOREIGN_KEY_CONSTRAINT<br/><br/> INTERNAL_TABLE<br/><br/> PLAN_GUIDE<br/><br/> PRIMARY_KEY_CONSTRAINT<br/><br/> REPLICATION_FILTER_PROCEDURE<br/><br/> RULE<br/><br/> SEQUENCE_OBJECT<br/><br/> <br/><br/> <strong>Applies to</strong>: SQL Server 2012 (11.x) and later.<br/><br/>  SERVICE_QUEUE<br/><br/> SQL_INLINE_TABLE_VALUED_FUNCTION<br/><br/> SQL_SCALAR_FUNCTION<br/><br/> SQL_STORED_PROCEDURE<br/><br/> SQL_TABLE_VALUED_FUNCTION<br/><br/> SQL_TRIGGER<br/><br/> SYNONYM<br/><br/> SYSTEM_TABLE<br/><br/> TABLE_TYPE<br/><br/> UNIQUE_CONSTRAINT<br/><br/> USER_TABLE<br/><br/> VIEW
			/// </summary>
			[Column("type_desc"),              Nullable] public string?  TypeDesc          { get; set; } // nvarchar(60)
			/// <summary>
			/// Date the object was created.
			/// </summary>
			[Column("create_date"),         NotNull    ] public DateTime CreateDate        { get; set; } // datetime
			/// <summary>
			/// Date the object was last modified by using an ALTER statement. If the object is a table or a view, modify_date also changes when an index on the table or view is created or altered.
			/// </summary>
			[Column("modify_date"),         NotNull    ] public DateTime ModifyDate        { get; set; } // datetime
			/// <summary>
			/// Object is created by an internal SQL Server component.
			/// </summary>
			[Column("is_ms_shipped"),       NotNull    ] public bool     IsMSShipped       { get; set; } // bit
			/// <summary>
			/// Object is published.
			/// </summary>
			[Column("is_published"),        NotNull    ] public bool     IsPublished       { get; set; } // bit
			/// <summary>
			/// Only the schema of the object is published.
			/// </summary>
			[Column("is_schema_published"), NotNull    ] public bool     IsSchemaPublished { get; set; } // bit
			/// <summary>
			/// Name, including path, of the DLL for this extended stored procedure.
			/// </summary>
			[Column("dll_name"),               Nullable] public string?  DllName           { get; set; } // nvarchar(260)

			#region Associations

			/// <summary>
			/// objects (sys.objects)
			/// </summary>
			[Association(ThisKey="ObjectID", OtherKey="ObjectID", CanBeNull=false)]
			public ObjectSchema.Object Object { get; set; } = null!;

			#endregion
		}

		/// <summary>
		/// <para><strong>sys.external_languages (Transact-SQL)</strong></para>
		/// <para><strong>Applies to:</strong> √ SQL Server 2019 (15.x)</para>
		/// <para>This catalog view provides a list of the external languages in the database. <strong>R</strong> and <strong>Python</strong> are reserved names and no external language can be created with those specific names.<br/>
		/// ## sys.external_languages<br/>
		/// The catalog view sys.external_languages lists a row for each external language in the database.</para><br/>
		/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-external-languages-transact-sql'>sys.external_languages</a>.</para>
		/// </summary>
		[Table(Schema="sys", Name="external_languages", IsView=true)]
		public partial class ExternalLanguage
		{
			/// <summary>
			/// ID of the external language
			/// </summary>
			[Column("external_language_id"), NotNull    ] public object  ExternalLanguageID { get; set; } = null!; // int 
			/// <summary>
			/// Name of the external language. Is unique within the database. R and Python are reserved names per instance
			/// </summary>
			[Column("language"),                Nullable] public object? Language           { get; set; } // sysname 
			/// <summary>
			/// Date and time of creation
			/// </summary>
			[Column("create_date"),          NotNull    ] public object  CreateDate         { get; set; } = null!; // datetime2 
			/// <summary>
			/// ID of the principal that owns this external library
			/// </summary>
			[Column("principal_id"),            Nullable] public object? PrincipalID        { get; set; } // int
		}

		/// <summary>
		/// <para><strong>sys.external_language_files (Transact-SQL)</strong></para>
		/// <para><strong>Applies to:</strong> √ SQL Server 2019 (15.x)</para>
		/// <para>This catalog view provides a list of the external language extension files in the database. <strong>R</strong> and <strong>Python</strong> are reserved names and no external language can be created with those specific names.<br/>
		/// When an external language is created from a file_spec, the extension itself and its properties are listed in this view. This view will contain one entry per language, per OS.<br/>
		/// ## sys.external_language_files<br/>
		/// The catalog view sys.external_language_files lists a row for each external language extension in the database. Parameters</para><br/>
		/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-external-language-files-transact-sql'>sys.external_language_files</a>.</para>
		/// </summary>
		[Table(Schema="sys", Name="external_language_files", IsView=true)]
		public partial class ExternalLanguageFile
		{
			/// <summary>
			/// ID of the external language
			/// </summary>
			[Column("external_language_id"),  NotNull    ] public object  ExternalLanguageID   { get; set; } = null!; // int 
			/// <summary>
			/// Content of the external language extension file
			/// </summary>
			[Column("content"),                  Nullable] public byte[]? Content              { get; set; } // varbinary(max) 
			/// <summary>
			/// Name of the language extension file
			/// </summary>
			[Column("file_name"),                Nullable] public string? FileName             { get; set; } // sysname
			/// <summary>
			/// ID of the host platform on which SQL Server is installed
			/// </summary>
			[Column("platform"),                 Nullable] public byte?   Platform             { get; set; } // tinyint
			/// <summary>
			/// Name of the host platform. Valid values are <c>WINDOWS</c>, <c>LINUX</c>.
			/// </summary>
			[Column("platform_desc"),            Nullable] public string? PlatformDesc         { get; set; } // nvarchar(60)
			/// <summary>
			/// External language parameters
			/// </summary>
			[Column("parameters"),               Nullable] public string? Parameters           { get; set; } // sysname
			/// <summary>
			/// External language environment variables
			/// </summary>
			[Column("environment_variables"),    Nullable] public string? EnvironmentVariables { get; set; } // sysname
		}

		/// <summary>
		/// <para><strong>sys.external_libraries (Transact-SQL)</strong></para>
		/// <para><strong>Applies to:</strong> √ SQL Server 2017 (14.x) and later √ Azure SQL Managed Instance</para>
		/// <para>Supports the management of package libraries related to external runtimes such as R, Python, and Java.<br/>
		/// <note type='note'><br/>
		/// In SQL Server 2017, R language and Windows platform are supported. R, Python, and Java on the Windows and Linux platforms are supported in SQL Server 2019 and later. On Azure SQL Managed Instance, R and Python are supported.<br/>
		/// </note><br/>
		/// ## sys.external_libraries<br/>
		/// The catalog view sys.external_libraries lists a row for each external library that has been uploaded into the database.</para><br/>
		/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-external-libraries-transact-sql'>sys.external_libraries</a>.</para>
		/// </summary>
		[Table(Schema="sys", Name="external_libraries", IsView=true)]
		public partial class ExternalLibrary
		{
			/// <summary>
			/// ID of the external library object.
			/// </summary>
			[Column("external_library_id"), NotNull    ] public object  ExternalLibraryID { get; set; } = null!; // int 
			/// <summary>
			/// Name of the external library. Is unique within the database per owner.
			/// </summary>
			[Column("name"),                   Nullable] public object? Name              { get; set; } // sysname 
			/// <summary>
			/// ID of the principal that owns this external library.
			/// </summary>
			[Column("principal_id"),           Nullable] public object? PrincipalID       { get; set; } // int 
			/// <summary>
			/// Name of the language or runtime that supports the external library. Valid values are 'R', 'Python', and 'Java'. Additional runtimes might be added in future.
			/// </summary>
			[Column("language"),               Nullable] public object? Language          { get; set; } // sysname 
			/// <summary>
			/// 0 for public scope; 1 for private scope
			/// </summary>
			[Column("scope"),               NotNull    ] public object  Scope             { get; set; } = null!; // int 
			/// <summary>
			/// Indicates whether the package is public or private
			/// </summary>
			[Column("scope_desc"),          NotNull    ] public string  ScopeDesc         { get; set; } = null!; // varchar(7)
		}

		/// <summary>
		/// <para><strong>sys.external_library_files (Transact-SQL)</strong></para>
		/// <para><strong>Applies to:</strong> √ SQL Server 2017 (14.x) and later √ Azure SQL Managed Instance</para>
		/// <para>Lists a row for each file that makes up an external library.</para><br/>
		/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-external-library-files-transact-sql'>sys.external_library_files</a>.</para>
		/// </summary>
		[Table(Schema="sys", Name="external_library_files", IsView=true)]
		public partial class ExternalLibraryFile
		{
			/// <summary>
			/// ID of the external library object.
			/// </summary>
			[Column("external_library_id"), NotNull    ] public object  ExternalLibraryID { get; set; } = null!; // int 
			/// <summary>
			/// Content of the external library file artifact.
			/// </summary>
			[Column("content"),                Nullable] public byte[]? Content           { get; set; } // varbinary(max) 
			/// <summary>
			/// ID of the host platform on which SQL Server is installed.
			/// </summary>
			[Column("platform"),               Nullable] public object? Platform          { get; set; } // tinyint 
			/// <summary>
			/// Name of the host platform. Valid values are <c>WINDOWS</c>, <c>LINUX</c>.
			/// </summary>
			[Column("platform_desc"),          Nullable] public string? PlatformDesc      { get; set; } // nvarchar(60)
		}

		/// <summary>
		/// <para><strong>sys.foreign_keys (Transact-SQL)</strong></para>
		/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions) √ Azure SQL Database √ Azure SQL Managed Instance √ Azure Synapse Analytics √ Analytics Platform System (PDW)</para>
		/// <para>Contains a row per object that is a FOREIGN KEY constraint, with <strong>sys.object.type</strong> = F.</para><br/>
		/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-foreign-keys-transact-sql'>sys.foreign_keys</a>.</para>
		/// </summary>
		[Table(Schema="sys", Name="foreign_keys", IsView=true)]
		public partial class ForeignKey
		{
			/// <summary>
			/// Object name.
			/// </summary>
			[Column("name"),                           NotNull    ] public string   Name                        { get; set; } = null!; // sysname
			/// <summary>
			/// Object identification number. Is unique within a database.
			/// </summary>
			[Column("object_id"),                      NotNull    ] public int      ObjectID                    { get; set; } // int
			/// <summary>
			/// ID of the individual owner, if different from the schema owner. By default, schema-contained objects are owned by the schema owner. However, an alternate owner can be specified by using the ALTER AUTHORIZATION statement to change ownership.<br/><br/> Is NULL if there is no alternate individual owner.<br/><br/> Is NULL if the object type is one of the following:<br/><br/> C = CHECK constraint<br/><br/> D = DEFAULT (constraint or stand-alone)<br/><br/> F = FOREIGN KEY constraint<br/><br/> PK = PRIMARY KEY constraint<br/><br/> R = Rule (old-style, stand-alone)<br/><br/> TA = Assembly (CLR-integration) trigger<br/><br/> TR = SQL trigger<br/><br/> UQ = UNIQUE constraint<br/><br/> EC = Edge constraint
			/// </summary>
			[Column("principal_id"),                      Nullable] public int?     PrincipalID                 { get; set; } // int
			/// <summary>
			/// ID of the schema that the object is contained in.<br/><br/> Schema-scoped system objects are always contained in the sys or INFORMATION_SCHEMA schemas.
			/// </summary>
			[Column("schema_id"),                      NotNull    ] public int      SchemaID                    { get; set; } // int
			/// <summary>
			/// ID of the object to which this object belongs.<br/><br/> 0 = Not a child object.
			/// </summary>
			[Column("parent_object_id"),               NotNull    ] public int      ParentObjectID              { get; set; } // int
			/// <summary>
			/// Object type:<br/><br/> AF = Aggregate function (CLR)<br/><br/> C = CHECK constraint<br/><br/> D = DEFAULT (constraint or stand-alone)<br/><br/> F = FOREIGN KEY constraint<br/><br/> FN = SQL scalar function<br/><br/> FS = Assembly (CLR) scalar-function<br/><br/> FT = Assembly (CLR) table-valued function<br/><br/> IF = SQL inline table-valued function<br/><br/> IT = Internal table<br/><br/> P = SQL Stored Procedure<br/><br/> PC = Assembly (CLR) stored-procedure<br/><br/> PG = Plan guide<br/><br/> PK = PRIMARY KEY constraint<br/><br/> R = Rule (old-style, stand-alone)<br/><br/> RF = Replication-filter-procedure<br/><br/> S = System base table<br/><br/> SN = Synonym<br/><br/> SO = Sequence object<br/><br/> U = Table (user-defined)<br/><br/> V = View<br/><br/> EC = Edge constraint <br/><br/> <br/><br/> <strong>Applies to</strong>: SQL Server 2012 (11.x) and later.<br/><br/> SQ = Service queue<br/><br/> TA = Assembly (CLR) DML trigger<br/><br/> TF = SQL table-valued-function<br/><br/> TR = SQL DML trigger<br/><br/> TT = Table type<br/><br/> UQ = UNIQUE constraint<br/><br/> X = Extended stored procedure<br/><br/> <br/><br/> <strong>Applies to</strong>: SQL Server 2014 (12.x) and later, Azure SQL Database, Azure Synapse Analytics, Analytics Platform System (PDW).<br/><br/> ST = STATS_TREE<br/><br/> <br/><br/> <strong>Applies to</strong>: SQL Server 2016 (13.x) and later, Azure SQL Database, Azure Synapse Analytics, Analytics Platform System (PDW).<br/><br/> ET = External Table
			/// </summary>
			[Column("type"),                              Nullable] public string?  TypeColumn                  { get; set; } // char(2)
			/// <summary>
			/// Description of the object type:<br/><br/> AGGREGATE_FUNCTION<br/><br/> CHECK_CONSTRAINT<br/><br/> CLR_SCALAR_FUNCTION<br/><br/> CLR_STORED_PROCEDURE<br/><br/> CLR_TABLE_VALUED_FUNCTION<br/><br/> CLR_TRIGGER<br/><br/> DEFAULT_CONSTRAINT<br/><br/> EXTENDED_STORED_PROCEDURE<br/><br/> FOREIGN_KEY_CONSTRAINT<br/><br/> INTERNAL_TABLE<br/><br/> PLAN_GUIDE<br/><br/> PRIMARY_KEY_CONSTRAINT<br/><br/> REPLICATION_FILTER_PROCEDURE<br/><br/> RULE<br/><br/> SEQUENCE_OBJECT<br/><br/> <br/><br/> <strong>Applies to</strong>: SQL Server 2012 (11.x) and later.<br/><br/>  SERVICE_QUEUE<br/><br/> SQL_INLINE_TABLE_VALUED_FUNCTION<br/><br/> SQL_SCALAR_FUNCTION<br/><br/> SQL_STORED_PROCEDURE<br/><br/> SQL_TABLE_VALUED_FUNCTION<br/><br/> SQL_TRIGGER<br/><br/> SYNONYM<br/><br/> SYSTEM_TABLE<br/><br/> TABLE_TYPE<br/><br/> UNIQUE_CONSTRAINT<br/><br/> USER_TABLE<br/><br/> VIEW
			/// </summary>
			[Column("type_desc"),                         Nullable] public string?  TypeDesc                    { get; set; } // nvarchar(60)
			/// <summary>
			/// Date the object was created.
			/// </summary>
			[Column("create_date"),                    NotNull    ] public DateTime CreateDate                  { get; set; } // datetime
			/// <summary>
			/// Date the object was last modified by using an ALTER statement. If the object is a table or a view, modify_date also changes when an index on the table or view is created or altered.
			/// </summary>
			[Column("modify_date"),                    NotNull    ] public DateTime ModifyDate                  { get; set; } // datetime
			/// <summary>
			/// Object is created by an internal SQL Server component.
			/// </summary>
			[Column("is_ms_shipped"),                  NotNull    ] public bool     IsMSShipped                 { get; set; } // bit
			/// <summary>
			/// Object is published.
			/// </summary>
			[Column("is_published"),                   NotNull    ] public bool     IsPublished                 { get; set; } // bit
			/// <summary>
			/// Only the schema of the object is published.
			/// </summary>
			[Column("is_schema_published"),            NotNull    ] public bool     IsSchemaPublished           { get; set; } // bit
			/// <summary>
			/// ID of the referenced object.
			/// </summary>
			[Column("referenced_object_id"),              Nullable] public int?     ReferencedObjectID          { get; set; } // int
			/// <summary>
			/// ID of the key index within the referenced object.
			/// </summary>
			[Column("key_index_id"),                      Nullable] public int?     KeyIndexID                  { get; set; } // int
			/// <summary>
			/// FOREIGN KEY constraint is disabled.
			/// </summary>
			[Column("is_disabled"),                    NotNull    ] public bool     IsDisabled                  { get; set; } // bit
			/// <summary>
			/// FOREIGN KEY constraint was created by using the NOT FOR REPLICATION option.
			/// </summary>
			[Column("is_not_for_replication"),         NotNull    ] public bool     IsNotForReplication         { get; set; } // bit
			/// <summary>
			/// FOREIGN KEY constraint has not been verified by the system.
			/// </summary>
			[Column("is_not_trusted"),                 NotNull    ] public bool     IsNotTrusted                { get; set; } // bit
			/// <summary>
			/// The referential action that was declared for this FOREIGN KEY when a delete happens.<br/><br/> 0 = No action<br/><br/> 1 = Cascade<br/><br/> 2 = Set null<br/><br/> 3 = Set default
			/// </summary>
			[Column("delete_referential_action"),         Nullable] public byte?    DeleteReferentialAction     { get; set; } // tinyint
			/// <summary>
			/// Description of the referential action that was declared for this FOREIGN KEY when a delete occurs:<br/><br/> NO_ACTION<br/><br/> CASCADE<br/><br/> SET_NULL<br/><br/> SET_DEFAULT
			/// </summary>
			[Column("delete_referential_action_desc"),    Nullable] public string?  DeleteReferentialActionDesc { get; set; } // nvarchar(60)
			/// <summary>
			/// The referential action that was declared for this FOREIGN KEY when an update happens.<br/><br/> 0 = No action<br/><br/> 1 = Cascade<br/><br/> 2 = Set null<br/><br/> 3 = Set default
			/// </summary>
			[Column("update_referential_action"),         Nullable] public byte?    UpdateReferentialAction     { get; set; } // tinyint
			/// <summary>
			/// Description of the referential action that was declared for this FOREIGN KEY when an update happens:<br/><br/> NO_ACTION<br/><br/> CASCADE<br/><br/> SET_NULL<br/><br/> SET_DEFAULT
			/// </summary>
			[Column("update_referential_action_desc"),    Nullable] public string?  UpdateReferentialActionDesc { get; set; } // nvarchar(60)
			/// <summary>
			/// 1 = Name was generated by the system.<br/><br/> 0 = Name was supplied by the user.
			/// </summary>
			[Column("is_system_named"),                NotNull    ] public bool     IsSystemNamed               { get; set; } // bit

			#region Associations

			/// <summary>
			/// objects (sys.objects)
			/// </summary>
			[Association(ThisKey="ObjectID", OtherKey="ObjectID", CanBeNull=false)]
			public ObjectSchema.Object Object { get; set; } = null!;

			#endregion
		}

		/// <summary>
		/// <para><strong>sys.foreign_key_columns (Transact-SQL)</strong></para>
		/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions) √ Azure SQL Database √ Azure SQL Managed Instance √ Azure Synapse Analytics √ Analytics Platform System (PDW)</para>
		/// <para>Contains a row for each column, or set of columns, that comprise a foreign key.</para><br/>
		/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-foreign-key-columns-transact-sql'>sys.foreign_key_columns</a>.</para>
		/// </summary>
		[Table(Schema="sys", Name="foreign_key_columns", IsView=true)]
		public partial class ForeignKeyColumn
		{
			/// <summary>
			/// ID of the FOREIGN KEY constraint.
			/// </summary>
			[Column("constraint_object_id"), NotNull] public int ConstraintObjectID { get; set; } // int
			/// <summary>
			/// ID of the column, or set of columns, that comprise the FOREIGN KEY (*1..n* where n=number of columns).
			/// </summary>
			[Column("constraint_column_id"), NotNull] public int ConstraintColumnID { get; set; } // int
			/// <summary>
			/// ID of the parent of the constraint, which is the referencing object.
			/// </summary>
			[Column("parent_object_id"),     NotNull] public int ParentObjectID     { get; set; } // int
			/// <summary>
			/// ID of the parent column, which is the referencing column.
			/// </summary>
			[Column("parent_column_id"),     NotNull] public int ParentColumnID     { get; set; } // int
			/// <summary>
			/// ID of the referenced object, which has the candidate key.
			/// </summary>
			[Column("referenced_object_id"), NotNull] public int ReferencedObjectID { get; set; } // int
			/// <summary>
			/// ID of the referenced column (candidate key column).
			/// </summary>
			[Column("referenced_column_id"), NotNull] public int ReferencedColumnID { get; set; } // int
		}

		/// <summary>
		/// <para><strong>sys.function_order_columns (Transact-SQL)</strong></para>
		/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)</para>
		/// <para>Returns one row per column that is a part of an <strong>ORDER</strong> expression of a common language runtime (CLR) table-valued function.</para><br/>
		/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-function-order-columns-transact-sql'>sys.function_order_columns</a>.</para>
		/// </summary>
		[Table(Schema="sys", Name="function_order_columns", IsView=true)]
		public partial class FunctionOrderColumn
		{
			/// <summary>
			/// ID of the object (CLR table-valued function) the order is defined on.
			/// </summary>
			[Column("object_id"),       NotNull    ] public int   ObjectID      { get; set; } // int
			/// <summary>
			/// ID of the order column. <strong>order_column_id</strong> is unique only within <strong>object_id</strong>.<br/><br/> <strong>order_column_id</strong> represents the position of this column in the ordering.
			/// </summary>
			[Column("order_column_id"), NotNull    ] public int   OrderColumnID { get; set; } // int
			/// <summary>
			/// ID of the column in <strong>object_id</strong>.<br/><br/> <strong>column_id</strong> is unique only within <strong>object_id</strong>.
			/// </summary>
			[Column("column_id"),       NotNull    ] public int   ColumnID      { get; set; } // int
			/// <summary>
			/// 1 = order column has a descending sort direction.<br/><br/> 0 = order column has an ascending sort direction.
			/// </summary>
			[Column("is_descending"),      Nullable] public bool? IsDescending  { get; set; } // bit

			#region Associations

			/// <summary>
			/// objects (sys.objects)
			/// </summary>
			[Association(ThisKey="ObjectID", OtherKey="ObjectID", CanBeNull=false)]
			public ObjectSchema.Object Object { get; set; } = null!;

			#endregion
		}

		/// <summary>
		/// <para><strong>sys.hash_indexes (Transact-SQL)</strong></para>
		/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)</para>
		/// <para>Shows the current hash indexes and the hash index properties. Hash indexes are supported only on <a href='https://docs.microsoft.com/en-us/sql/relational-databases/in-memory-oltp/overview-and-usage-scenarios'>In-Memory OLTP (In-Memory Optimization)</a>.<br/>
		///  The sys.hash_indexes view contains the same columns as the sys.indexes view and an additional column named <strong>bucket_count</strong>. For more information about the other columns in the sys.hash_indexes view, see <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-indexes-transact-sql'>sys.indexes (Transact-SQL)</a>.</para><br/>
		/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-hash-indexes-transact-sql'>sys.hash_indexes</a>.</para>
		/// </summary>
		[Table(Schema="sys", Name="hash_indexes", IsView=true)]
		public partial class HashIndex
		{
			/// <summary>
			/// ID of the object to which this index belongs.
			/// </summary>
			[Column("object_id"),                   NotNull    ] public int     ObjectID                 { get; set; } // int
			/// <summary>
			/// Name of the index. <strong>name</strong> is unique only within the object.<br/><br/> NULL = Heap
			/// </summary>
			[Column("name"),                           Nullable] public string? Name                     { get; set; } // sysname
			/// <summary>
			/// ID of the index. <strong>index_id</strong> is unique only within the object.<br/><br/> 0 = Heap<br/><br/> 1 = Clustered index<br/><br/> > 1 = Nonclustered index
			/// </summary>
			[Column("index_id"),                    NotNull    ] public int     IndexID                  { get; set; } // int
			/// <summary>
			/// Type of index:<br/><br/> 0 = Heap<br/><br/> 1 = Clustered rowstore (b-tree)<br/><br/> 2 = Nonclustered rowstore (b-tree)<br/><br/> 3 = XML<br/><br/> 4 = Spatial<br/><br/> 5 = Clustered columnstore index. <strong>Applies to</strong>: SQL Server 2014 (12.x) and later.<br/><br/> 6 = Nonclustered columnstore index. <strong>Applies to</strong>: SQL Server 2012 (11.x) and later.<br/><br/> 7 = Nonclustered hash index. <strong>Applies to</strong>: SQL Server 2014 (12.x) and later.
			/// </summary>
			[Column("type"),                        NotNull    ] public byte    TypeColumn               { get; set; } // tinyint
			/// <summary>
			/// Description of index type:<br/><br/> HEAP<br/><br/> CLUSTERED<br/><br/> NONCLUSTERED<br/><br/> XML<br/><br/> SPATIAL<br/><br/> CLUSTERED COLUMNSTORE - <strong>Applies to</strong>: SQL Server 2014 (12.x) and later.<br/><br/> NONCLUSTERED COLUMNSTORE - <strong>Applies to</strong>: SQL Server 2012 (11.x) and later.<br/><br/> NONCLUSTERED HASH : NONCLUSTERED HASH indexes are supported only on memory-optimized tables. The sys.hash_indexes view shows the current hash indexes and the hash properties. For more information, see <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-hash-indexes-transact-sql'>sys.hash_indexes (Transact-SQL)</a>. <strong>Applies to</strong>: SQL Server 2014 (12.x) and later.
			/// </summary>
			[Column("type_desc"),                      Nullable] public string? TypeDesc                 { get; set; } // nvarchar(60)
			/// <summary>
			/// 1 = Index is unique.<br/><br/> 0 = Index is not unique.<br/><br/> Always 0 for clustered columnstore indexes.
			/// </summary>
			[Column("is_unique"),                      Nullable] public bool?   IsUnique                 { get; set; } // bit
			/// <summary>
			/// ID of the data space for this index. Data space is either a filegroup or partition scheme.<br/><br/> 0 = <strong>object_id</strong> is a table-valued function or in-memory index.
			/// </summary>
			[Column("data_space_id"),               NotNull    ] public int     DataSpaceID              { get; set; } // int
			/// <summary>
			/// 1 = IGNORE_DUP_KEY is ON.<br/><br/> 0 = IGNORE_DUP_KEY is OFF.
			/// </summary>
			[Column("ignore_dup_key"),                 Nullable] public bool?   IgnoreDupKey             { get; set; } // bit
			/// <summary>
			/// 1 = Index is part of a PRIMARY KEY constraint.<br/><br/> Always 0 for clustered columnstore indexes.
			/// </summary>
			[Column("is_primary_key"),                 Nullable] public bool?   IsPrimaryKey             { get; set; } // bit
			/// <summary>
			/// 1 = Index is part of a UNIQUE constraint.<br/><br/> Always 0 for clustered columnstore indexes.
			/// </summary>
			[Column("is_unique_constraint"),           Nullable] public bool?   IsUniqueConstraint       { get; set; } // bit
			/// <summary>
			/// > 0 = FILLFACTOR percentage used when the index was created or rebuilt.<br/><br/> 0 = Default value<br/><br/> Always 0 for clustered columnstore indexes.
			/// </summary>
			[Column("fill_factor"),                 NotNull    ] public byte    FillFactor               { get; set; } // tinyint
			/// <summary>
			/// 1 = PADINDEX is ON.<br/><br/> 0 = PADINDEX is OFF.<br/><br/> Always 0 for clustered columnstore indexes.
			/// </summary>
			[Column("is_padded"),                      Nullable] public bool?   IsPadded                 { get; set; } // bit
			/// <summary>
			/// 1 = Index is disabled.<br/><br/> 0 = Index is not disabled.
			/// </summary>
			[Column("is_disabled"),                    Nullable] public bool?   IsDisabled               { get; set; } // bit
			/// <summary>
			/// 1 = Index is hypothetical and cannot be used directly as a data access path. Hypothetical indexes hold column-level statistics.<br/><br/> 0 = Index is not hypothetical.
			/// </summary>
			[Column("is_hypothetical"),                Nullable] public bool?   IsHypothetical           { get; set; } // bit
			/// <summary>
			/// 1 = Index allows row locks.<br/><br/> 0 = Index does not allow row locks.<br/><br/> Always 0 for clustered columnstore indexes.
			/// </summary>
			[Column("allow_row_locks"),                Nullable] public bool?   AllowRowLocks            { get; set; } // bit
			/// <summary>
			/// 1 = Index allows page locks.<br/><br/> 0 = Index does not allow page locks.<br/><br/> Always 0 for clustered columnstore indexes.
			/// </summary>
			[Column("allow_page_locks"),               Nullable] public bool?   AllowPageLocks           { get; set; } // bit
			/// <summary>
			/// 1 = Index has a filter and only contains rows that satisfy the filter definition.<br/><br/> 0 = Index does not have a filter.
			/// </summary>
			[Column("has_filter"),                     Nullable] public bool?   HasFilter                { get; set; } // bit
			/// <summary>
			/// Expression for the subset of rows included in the filtered index.<br/><br/> NULL for heap, non-filtered index, or insufficient permissions on the table.
			/// </summary>
			[Column("filter_definition"),              Nullable] public string? FilterDefinition         { get; set; } // nvarchar(max)
			/// <summary>
			/// > 0 = Columnstore index compression delay specified in minutes.<br/><br/> NULL = Columnstore index rowgroup compression delay is managed automatically.
			/// </summary>
			[Column("compression_delay"),           NotNull    ] public int     CompressionDelay         { get; set; } // int
			/// <summary>
			/// 1 = Index is configured to suppress duplicate key messages during an index rebuild operation.<br/><br/> <strong>0</strong> = Index is not configured to suppress duplicate key messages during an index rebuild operation.<br/><br/><strong>Applies to:</strong> SQL Server (Starting with SQL Server 2017 (14.x)), Azure SQL Database, and Azure SQL Managed Instance
			/// </summary>
			[Column("suppress_dup_key_messages"),   NotNull    ] public bool    SuppressDupKeyMessages   { get; set; } // bit
			/// <summary>
			/// 1 = Index was created by the automatic tuning.<br/><br/>0 = Index was created by the user.<br/><br/><strong>Applies to:</strong> Azure SQL Database
			/// </summary>
			[Column("auto_created"),                   Nullable] public bool?   AutoCreated              { get; set; } // bit
			/// <summary>
			/// 1 = Index has last-page insert optimization enabled.<br/><br/>0 = Default value. Index has last-page insert optimization disabled.<br/><br/><strong>Applies to:</strong> SQL Server (Starting with SQL Server 2019 (15.x)), Azure SQL Database, and Azure SQL Managed Instance
			/// </summary>
			[Column("optimize_for_sequential_key"), NotNull    ] public bool    OptimizeForSequentialKey { get; set; } // bit
			/// <summary>
			/// Count of hash buckets for hash indexes.<br/><br/> For more information about the bucket_count value, including guidelines for setting the value, see <a href='https://docs.microsoft.com/en-us/sql/t-sql/statements/create-table-transact-sql'>CREATE TABLE (Transact-SQL)</a>.
			/// </summary>
			[Column("bucket_count"),                NotNull    ] public int     BucketCount              { get; set; } // int

			#region Associations

			/// <summary>
			/// objects (sys.objects)
			/// </summary>
			[Association(ThisKey="ObjectID", OtherKey="ObjectID", CanBeNull=false)]
			public ObjectSchema.Object Object { get; set; } = null!;

			#endregion
		}

		/// <summary>
		/// <para><strong>sys.identity_columns (Transact-SQL)</strong></para>
		/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions) √ Azure SQL Database √ Azure SQL Managed Instance √ Azure Synapse Analytics √ Analytics Platform System (PDW)</para>
		/// <para>Contains a row for each column that is an identity column.<br/>
		///  The <strong>sys.identity_columns</strong> view inherits rows from the <strong>sys.columns</strong> view. The <strong>sys.identity_columns</strong> view returns the columns in the <strong>sys.columns</strong> view, plus the <strong>seed_value</strong>, <strong>increment_value</strong>, <strong>last_value</strong>, and <strong>is_not_for_replication</strong> columns. For more information, see <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/catalog-views-transact-sql'>Catalog Views (Transact-SQL)</a>.</para><br/>
		/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-identity-columns-transact-sql'>sys.identity_columns</a>.</para>
		/// </summary>
		[Table(Schema="sys", Name="identity_columns", IsView=true)]
		public partial class IdentityColumn
		{
			/// <summary>
			/// ID of the object to which this column belongs.
			/// </summary>
			[Column("object_id"),                           NotNull    ] public int     ObjectID                        { get; set; } // int
			/// <summary>
			/// Name of the column. Is unique within the object.
			/// </summary>
			[Column("name"),                                   Nullable] public string? Name                            { get; set; } // sysname
			/// <summary>
			/// ID of the column. Is unique within the object.<br/><br/> Column IDs might not be sequential.
			/// </summary>
			[Column("column_id"),                           NotNull    ] public int     ColumnID                        { get; set; } // int
			/// <summary>
			/// ID of the system type of the column.
			/// </summary>
			[Column("system_type_id"),                      NotNull    ] public byte    SystemTypeID                    { get; set; } // tinyint
			/// <summary>
			/// ID of the type of the column as defined by the user.<br/><br/> To return the name of the type, join to the <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-types-transact-sql'>sys.types</a> catalog view on this column.
			/// </summary>
			[Column("user_type_id"),                        NotNull    ] public int     UserTypeID                      { get; set; } // int
			/// <summary>
			/// Maximum length (in bytes) of the column.<br/><br/> -1 = Column data type is <strong>varchar(max)</strong>, <strong>nvarchar(max)</strong>, <strong>varbinary(max)</strong>, or <strong>xml</strong>.<br/><br/> For <strong>text</strong>, <strong>ntext</strong>, and <strong>image</strong> columns, the max_length value will be 16 (representing the 16-byte pointer only) or the value set by sp_tableoption 'text in row'.
			/// </summary>
			[Column("max_length"),                          NotNull    ] public short   MaxLength                       { get; set; } // smallint
			/// <summary>
			/// Precision of the column if numeric-based; otherwise, 0.
			/// </summary>
			[Column("precision"),                           NotNull    ] public byte    Precision                       { get; set; } // tinyint
			/// <summary>
			/// Scale of column if numeric-based; otherwise, 0.
			/// </summary>
			[Column("scale"),                               NotNull    ] public byte    Scale                           { get; set; } // tinyint
			/// <summary>
			/// Name of the collation of the column if character-based; otherwise <c>NULL</c>.
			/// </summary>
			[Column("collation_name"),                         Nullable] public string? CollationName                   { get; set; } // sysname
			/// <summary>
			/// 1 = Column is nullable.
			/// </summary>
			[Column("is_nullable"),                            Nullable] public bool?   IsNullable                      { get; set; } // bit
			/// <summary>
			/// 1 = Column uses ANSI_PADDING ON behavior if character, binary, or variant.<br/><br/> 0 = Column is not character, binary, or variant.
			/// </summary>
			[Column("is_ansi_padded"),                      NotNull    ] public bool    IsAnsiPadded                    { get; set; } // bit
			/// <summary>
			/// 1 = Column is a declared ROWGUIDCOL.
			/// </summary>
			[Column("is_rowguidcol"),                       NotNull    ] public bool    IsRowGuidCol                    { get; set; } // bit
			/// <summary>
			/// 1 = Column has identity values
			/// </summary>
			[Column("is_identity"),                         NotNull    ] public bool    IsIdentity                      { get; set; } // bit
			/// <summary>
			/// 1 = Column is a computed column.
			/// </summary>
			[Column("is_computed"),                         NotNull    ] public bool    IsComputed                      { get; set; } // bit
			/// <summary>
			/// 1 = Column is a FILESTREAM column.
			/// </summary>
			[Column("is_filestream"),                       NotNull    ] public bool    IsFilestream                    { get; set; } // bit
			/// <summary>
			/// 1 = Column is replicated.
			/// </summary>
			[Column("is_replicated"),                          Nullable] public bool?   IsReplicated                    { get; set; } // bit
			/// <summary>
			/// 1 = Column has a non-SQL Server subscriber.
			/// </summary>
			[Column("is_non_sql_subscribed"),                  Nullable] public bool?   IsNonSqlSubscribed              { get; set; } // bit
			/// <summary>
			/// 1 = Column is merge-published.
			/// </summary>
			[Column("is_merge_published"),                     Nullable] public bool?   IsMergePublished                { get; set; } // bit
			/// <summary>
			/// 1 = Column is replicated by using SSIS.
			/// </summary>
			[Column("is_dts_replicated"),                      Nullable] public bool?   IsDtsReplicated                 { get; set; } // bit
			/// <summary>
			/// 1 = Content is a complete XML document.<br/><br/> 0 = Content is a document fragment or the column data type is not <strong>xml</strong>.
			/// </summary>
			[Column("is_xml_document"),                     NotNull    ] public bool    IsXmlDocument                   { get; set; } // bit
			/// <summary>
			/// Nonzero if the data type of the column is <strong>xml</strong> and the XML is typed. The value will be the ID of the collection containing the validating XML schema namespace of the column.<br/><br/> 0 = No XML schema collection.
			/// </summary>
			[Column("xml_collection_id"),                   NotNull    ] public int     XmlCollectionID                 { get; set; } // int
			/// <summary>
			/// ID of the default object, regardless of whether it is a stand-alone object <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-stored-procedures/sp-bindefault-transact-sql'>sys.sp_bindefault</a>, or an inline, column-level DEFAULT constraint. The parent_object_id column of an inline column-level default object is a reference back to the table itself.<br/><br/> 0 = No default.
			/// </summary>
			[Column("default_object_id"),                   NotNull    ] public int     DefaultObjectID                 { get; set; } // int
			/// <summary>
			/// ID of the stand-alone rule bound to the column by using sys.sp_bindrule.<br/><br/> 0 = No stand-alone rule. For column-level CHECK constraints, see <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-check-constraints-transact-sql'>sys.check_constraints (Transact-SQL)</a>.
			/// </summary>
			[Column("rule_object_id"),                      NotNull    ] public int     RuleObjectID                    { get; set; } // int
			/// <summary>
			/// 1 = Column is a sparse column. For more information, see <a href='https://docs.microsoft.com/en-us/sql/relational-databases/tables/use-sparse-columns'>Use Sparse Columns</a>.
			/// </summary>
			[Column("is_sparse"),                           NotNull    ] public bool    IsSparse                        { get; set; } // bit
			/// <summary>
			/// 1 = Column is a column set. For more information, see <a href='https://docs.microsoft.com/en-us/sql/relational-databases/tables/use-sparse-columns'>Use Sparse Columns</a>.
			/// </summary>
			[Column("is_column_set"),                       NotNull    ] public bool    IsColumnSet                     { get; set; } // bit
			/// <summary>
			/// <strong>Applies to</strong>: SQL Server 2016 (13.x) and later, SQL Database. 7, 8, 9, 10 only applies to SQL Database.<br/><br/> Identifies when the column value is generated (will always be 0 for columns in system tables):<br/><br/> 0 = NOT_APPLICABLE<br/> 1 = AS_ROW_START<br/> 2 = AS_ROW_END<br/>7 = AS_TRANSACTION_ID_START<br/>8 = AS_TRANSACTION_ID_END<br/>9 = AS_SEQUENCE_NUMBER_START<br/>10 = AS_SEQUENCE_NUMBER_END<br/><br/> For more information, see <a href='https://docs.microsoft.com/en-us/sql/relational-databases/tables/temporal-tables'>Temporal Tables (Relational databases)</a>.
			/// </summary>
			[Column("generated_always_type"),                  Nullable] public byte?   GeneratedAlwaysType             { get; set; } // tinyint
			/// <summary>
			/// <strong>Applies to</strong>: SQL Server 2016 (13.x) and later, SQL Database.<br/><br/> Textual description of <c>generated_always_type</c>'s value (always NOT_APPLICABLE for columns in system tables) <br/><br/> NOT_APPLICABLE<br/> AS_ROW_START<br/> AS_ROW_END<br/><br/><strong>Applies to</strong>: SQL Database<br/><br/>AS_TRANSACTION_ID_START<br/>AS_TRANSACTION_ID_END<br/>AS_SEQUENCE_NUMBER_START<br/>AS_SEQUENCE_NUMBER_END
			/// </summary>
			[Column("generated_always_type_desc"),             Nullable] public string? GeneratedAlwaysTypeDesc         { get; set; } // nvarchar(60)
			/// <summary>
			/// <strong>Applies to</strong>: SQL Server 2016 (13.x) and later, SQL Database.<br/><br/> Encryption type:<br/><br/> 1 = Deterministic encryption<br/><br/> 2 = Randomized encryption
			/// </summary>
			[Column("encryption_type"),                        Nullable] public int?    EncryptionType                  { get; set; } // int
			/// <summary>
			/// <strong>Applies to</strong>: SQL Server 2016 (13.x) and later, SQL Database.<br/><br/> Encryption type description:<br/><br/> RANDOMIZED<br/><br/> DETERMINISTIC
			/// </summary>
			[Column("encryption_type_desc"),                   Nullable] public string? EncryptionTypeDesc              { get; set; } // nvarchar(64)
			/// <summary>
			/// <strong>Applies to</strong>: SQL Server 2016 (13.x) and later, SQL Database.<br/><br/> Name of encryption algorithm.<br/><br/> Only AEAD_AES_256_CBC_HMAC_SHA_512 is supported.
			/// </summary>
			[Column("encryption_algorithm_name"),              Nullable] public string? EncryptionAlgorithmName         { get; set; } // sysname
			/// <summary>
			/// <strong>Applies to</strong>: SQL Server 2016 (13.x) and later, SQL Database.<br/><br/> ID of the CEK.
			/// </summary>
			[Column("column_encryption_key_id"),               Nullable] public int?    ColumnEncryptionKeyID           { get; set; } // int
			/// <summary>
			/// <strong>Applies to</strong>: SQL Server 2016 (13.x) and later, SQL Database.<br/><br/> The name of the database where the column encryption key exists if different than the database of the column. <c>NULL</c> if the key exists in the same database as the column.
			/// </summary>
			[Column("column_encryption_key_database_name"),    Nullable] public string? ColumnEncryptionKeyDatabaseName { get; set; } // sysname
			/// <summary>
			/// <strong>Applies to</strong>: SQL Server 2019 (15.x) and later, SQL Database.<br/><br/> Indicates if the column is hidden:<br/><br/> 0 = regular, not-hidden, visible column<br/><br/> 1 = hidden column
			/// </summary>
			[Column("is_hidden"),                           NotNull    ] public bool    IsHidden                        { get; set; } // bit
			/// <summary>
			/// <strong>Applies to</strong>: SQL Server 2019 (15.x) and later, SQL Database.<br/><br/> Indicates if the column is masked by a dynamic data masking:<br/><br/> 0 = regular, not-masked column<br/><br/> 1 = column is masked
			/// </summary>
			[Column("is_masked"),                           NotNull    ] public bool    IsMasked                        { get; set; } // bit
			/// <summary>
			/// Internal column with a set of values. The values are between 1-8 for graph columns and <c>NULL</c> for others.
			/// </summary>
			[Column("graph_type"),                             Nullable] public int?    GraphType                       { get; set; } // int
			/// <summary>
			/// internal column with a set of values
			/// </summary>
			[Column("graph_type_desc"),                        Nullable] public string? GraphTypeDesc                   { get; set; } // nvarchar(60)
			/// <summary>
			/// <strong>Applies to</strong>: Azure SQL Database Edge. Indicates if the column is the data retention filter column for the table.
			/// </summary>
			[Column("is_data_deletion_filter_column"),      NotNull    ] public bool    IsDataDeletionFilterColumn      { get; set; } // bit
			/// <summary>
			/// <strong>Applies to</strong>: SQL Database.<br/><br/> If not NULL, indicates the type of a column in a ledger view:<br/><br/> 1 = TRANSACTION_ID<br/> 2 = SEQUENCE_NUMBER<br/> 3 = OPERATION_TYPE<br/> 4 = OPERATION_TYPE_DESC<br/><br/>For more information on database ledger, see <a href='https://docs.microsoft.com/en-us/azure/azure-sql/database/ledger-overview'>Azure SQL Database ledger</a>.
			/// </summary>
			[Column("ledger_view_column_type"),             NotNull    ] public byte    LedgerViewColumnType            { get; set; } // tinyint
			/// <summary>
			/// <strong>Applies to</strong>: SQL Database.<br/><br/> If not NULL, contains a textual description of the the type of a column in a ledger view:<br/><br/> TRANSACTION_ID<br/> SEQUENCE_NUMBER<br/> OPERATION_TYPE<br/> OPERATION_TYPE_DESC
			/// </summary>
			[Column("ledger_view_column_type_desc"),        NotNull    ] public string  LedgerViewColumnTypeDesc        { get; set; } = null!; // nvarchar(60)
			/// <summary>
			/// Seed value for this identity column. The data type of the seed value is the same as the data type of the column itself.
			/// </summary>
			[Column("seed_value"),                             Nullable] public object? SeedValue                       { get; set; } // sql_variant
			/// <summary>
			/// Increment value for this identity column. The data type of the seed value is the same as the data type of the column itself.
			/// </summary>
			[Column("increment_value"),                        Nullable] public object? IncrementValue                  { get; set; } // sql_variant
			/// <summary>
			/// Last value generated for this identity column. The data type of the seed value is the same as the data type of the column itself.
			/// </summary>
			[Column("last_value"),                             Nullable] public object? LastValue                       { get; set; } // sql_variant
			/// <summary>
			/// Identity column is declared NOT FOR REPLICATION. <strong>Note:</strong> This column does not apply to Azure Synapse Analytics.
			/// </summary>
			[Column("is_not_for_replication"),                 Nullable] public bool?   IsNotForReplication             { get; set; } // bit

			#region Associations

			/// <summary>
			/// objects (sys.objects)
			/// </summary>
			[Association(ThisKey="ObjectID", OtherKey="ObjectID", CanBeNull=false)]
			public ObjectSchema.Object Object { get; set; } = null!;

			#endregion
		}

		/// <summary>
		/// <para><strong>sys.indexes (Transact-SQL)</strong></para>
		/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions) √ Azure SQL Database √ Azure SQL Managed Instance √ Azure Synapse Analytics √ Analytics Platform System (PDW)</para>
		/// <para>Contains a row per index or heap of a tabular object, such as a table, view, or table-valued function.</para><br/>
		/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-indexes-transact-sql'>sys.indexes</a>.</para>
		/// </summary>
		[Table(Schema="sys", Name="indexes", IsView=true)]
		public partial class Index
		{
			/// <summary>
			/// ID of the object to which this index belongs.
			/// </summary>
			[Column("object_id"),                   NotNull    ] public int     ObjectID                 { get; set; } // int
			/// <summary>
			/// Name of the index. <strong>name</strong> is unique only within the object.<br/><br/> NULL = Heap
			/// </summary>
			[Column("name"),                           Nullable] public string? Name                     { get; set; } // sysname
			/// <summary>
			/// ID of the index. <strong>index_id</strong> is unique only within the object.<br/><br/> 0 = Heap<br/><br/> 1 = Clustered index<br/><br/> > 1 = Nonclustered index
			/// </summary>
			[Column("index_id"),                    NotNull    ] public int     IndexID                  { get; set; } // int
			/// <summary>
			/// Type of index:<br/><br/> 0 = Heap<br/><br/> 1 = Clustered rowstore (b-tree)<br/><br/> 2 = Nonclustered rowstore (b-tree)<br/><br/> 3 = XML<br/><br/> 4 = Spatial<br/><br/> 5 = Clustered columnstore index. <strong>Applies to</strong>: SQL Server 2014 (12.x) and later.<br/><br/> 6 = Nonclustered columnstore index. <strong>Applies to</strong>: SQL Server 2012 (11.x) and later.<br/><br/> 7 = Nonclustered hash index. <strong>Applies to</strong>: SQL Server 2014 (12.x) and later.
			/// </summary>
			[Column("type"),                        NotNull    ] public byte    TypeColumn               { get; set; } // tinyint
			/// <summary>
			/// Description of index type:<br/><br/> HEAP<br/><br/> CLUSTERED<br/><br/> NONCLUSTERED<br/><br/> XML<br/><br/> SPATIAL<br/><br/> CLUSTERED COLUMNSTORE - <strong>Applies to</strong>: SQL Server 2014 (12.x) and later.<br/><br/> NONCLUSTERED COLUMNSTORE - <strong>Applies to</strong>: SQL Server 2012 (11.x) and later.<br/><br/> NONCLUSTERED HASH : NONCLUSTERED HASH indexes are supported only on memory-optimized tables. The sys.hash_indexes view shows the current hash indexes and the hash properties. For more information, see <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-hash-indexes-transact-sql'>sys.hash_indexes (Transact-SQL)</a>. <strong>Applies to</strong>: SQL Server 2014 (12.x) and later.
			/// </summary>
			[Column("type_desc"),                      Nullable] public string? TypeDesc                 { get; set; } // nvarchar(60)
			/// <summary>
			/// 1 = Index is unique.<br/><br/> 0 = Index is not unique.<br/><br/> Always 0 for clustered columnstore indexes.
			/// </summary>
			[Column("is_unique"),                      Nullable] public bool?   IsUnique                 { get; set; } // bit
			/// <summary>
			/// ID of the data space for this index. Data space is either a filegroup or partition scheme.<br/><br/> 0 = <strong>object_id</strong> is a table-valued function or in-memory index.
			/// </summary>
			[Column("data_space_id"),                  Nullable] public int?    DataSpaceID              { get; set; } // int
			/// <summary>
			/// 1 = IGNORE_DUP_KEY is ON.<br/><br/> 0 = IGNORE_DUP_KEY is OFF.
			/// </summary>
			[Column("ignore_dup_key"),                 Nullable] public bool?   IgnoreDupKey             { get; set; } // bit
			/// <summary>
			/// 1 = Index is part of a PRIMARY KEY constraint.<br/><br/> Always 0 for clustered columnstore indexes.
			/// </summary>
			[Column("is_primary_key"),                 Nullable] public bool?   IsPrimaryKey             { get; set; } // bit
			/// <summary>
			/// 1 = Index is part of a UNIQUE constraint.<br/><br/> Always 0 for clustered columnstore indexes.
			/// </summary>
			[Column("is_unique_constraint"),           Nullable] public bool?   IsUniqueConstraint       { get; set; } // bit
			/// <summary>
			/// > 0 = FILLFACTOR percentage used when the index was created or rebuilt.<br/><br/> 0 = Default value<br/><br/> Always 0 for clustered columnstore indexes.
			/// </summary>
			[Column("fill_factor"),                 NotNull    ] public byte    FillFactor               { get; set; } // tinyint
			/// <summary>
			/// 1 = PADINDEX is ON.<br/><br/> 0 = PADINDEX is OFF.<br/><br/> Always 0 for clustered columnstore indexes.
			/// </summary>
			[Column("is_padded"),                      Nullable] public bool?   IsPadded                 { get; set; } // bit
			/// <summary>
			/// 1 = Index is disabled.<br/><br/> 0 = Index is not disabled.
			/// </summary>
			[Column("is_disabled"),                    Nullable] public bool?   IsDisabled               { get; set; } // bit
			/// <summary>
			/// 1 = Index is hypothetical and cannot be used directly as a data access path. Hypothetical indexes hold column-level statistics.<br/><br/> 0 = Index is not hypothetical.
			/// </summary>
			[Column("is_hypothetical"),                Nullable] public bool?   IsHypothetical           { get; set; } // bit
			/// <summary>
			/// 1 = Index allows row locks.<br/><br/> 0 = Index does not allow row locks.<br/><br/> Always 0 for clustered columnstore indexes.
			/// </summary>
			[Column("allow_row_locks"),                Nullable] public bool?   AllowRowLocks            { get; set; } // bit
			/// <summary>
			/// 1 = Index allows page locks.<br/><br/> 0 = Index does not allow page locks.<br/><br/> Always 0 for clustered columnstore indexes.
			/// </summary>
			[Column("allow_page_locks"),               Nullable] public bool?   AllowPageLocks           { get; set; } // bit
			/// <summary>
			/// 1 = Index has a filter and only contains rows that satisfy the filter definition.<br/><br/> 0 = Index does not have a filter.
			/// </summary>
			[Column("has_filter"),                     Nullable] public bool?   HasFilter                { get; set; } // bit
			/// <summary>
			/// Expression for the subset of rows included in the filtered index.<br/><br/> NULL for heap, non-filtered index, or insufficient permissions on the table.
			/// </summary>
			[Column("filter_definition"),              Nullable] public string? FilterDefinition         { get; set; } // nvarchar(max)
			/// <summary>
			/// > 0 = Columnstore index compression delay specified in minutes.<br/><br/> NULL = Columnstore index rowgroup compression delay is managed automatically.
			/// </summary>
			[Column("compression_delay"),              Nullable] public int?    CompressionDelay         { get; set; } // int
			/// <summary>
			/// 1 = Index is configured to suppress duplicate key messages during an index rebuild operation.<br/><br/> <strong>0</strong> = Index is not configured to suppress duplicate key messages during an index rebuild operation.<br/><br/><strong>Applies to:</strong> SQL Server (Starting with SQL Server 2017 (14.x)), Azure SQL Database, and Azure SQL Managed Instance
			/// </summary>
			[Column("suppress_dup_key_messages"),      Nullable] public bool?   SuppressDupKeyMessages   { get; set; } // bit
			/// <summary>
			/// 1 = Index was created by the automatic tuning.<br/><br/>0 = Index was created by the user.<br/><br/><strong>Applies to:</strong> Azure SQL Database
			/// </summary>
			[Column("auto_created"),                   Nullable] public bool?   AutoCreated              { get; set; } // bit
			/// <summary>
			/// 1 = Index has last-page insert optimization enabled.<br/><br/>0 = Default value. Index has last-page insert optimization disabled.<br/><br/><strong>Applies to:</strong> SQL Server (Starting with SQL Server 2019 (15.x)), Azure SQL Database, and Azure SQL Managed Instance
			/// </summary>
			[Column("optimize_for_sequential_key"),    Nullable] public bool?   OptimizeForSequentialKey { get; set; } // bit

			#region Associations

			/// <summary>
			/// objects (sys.objects)
			/// </summary>
			[Association(ThisKey="ObjectID", OtherKey="ObjectID", CanBeNull=false)]
			public ObjectSchema.Object Object { get; set; } = null!;

			#endregion
		}

		/// <summary>
		/// <para><strong>sys.index_columns (Transact-SQL)</strong></para>
		/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions) √ Azure SQL Database √ Azure SQL Managed Instance √ Azure Synapse Analytics √ Analytics Platform System (PDW)</para>
		/// <para>Contains one row per column that is part of a <strong>sys.indexes</strong> index or unordered table (heap).</para><br/>
		/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-index-columns-transact-sql'>sys.index_columns</a>.</para>
		/// </summary>
		[Table(Schema="sys", Name="index_columns", IsView=true)]
		public partial class IndexColumn
		{
			/// <summary>
			/// ID of the object the index is defined on.
			/// </summary>
			[Column("object_id"),                  NotNull    ] public int   ObjectID                { get; set; } // int
			/// <summary>
			/// ID of the index in which the column is defined.
			/// </summary>
			[Column("index_id"),                   NotNull    ] public int   IndexID                 { get; set; } // int
			/// <summary>
			/// ID of the index column. <strong>index_column_id</strong> is unique only within <strong>index_id</strong>.
			/// </summary>
			[Column("index_column_id"),            NotNull    ] public int   IndexColumnID           { get; set; } // int
			/// <summary>
			/// ID of the column in <strong>object_id</strong>.<br/><br/> 0 = Row Identifier (RID) in a nonclustered index.<br/><br/> <strong>column_id</strong> is unique only within <strong>object_id</strong>.
			/// </summary>
			[Column("column_id"),                  NotNull    ] public int   ColumnID                { get; set; } // int
			/// <summary>
			/// Ordinal (1-based) within set of key-columns.<br/><br/> 0 = Not a key column, or is an XML index, a columnstore index, or a spatial index.<br/><br/> Note: An XML or spatial index cannot be a key because the underlying columns are not comparable, meaning that their values cannot be ordered.
			/// </summary>
			[Column("key_ordinal"),                NotNull    ] public byte  KeyOrdinal              { get; set; } // tinyint
			/// <summary>
			/// Ordinal (1-based) within set of partitioning columns. A clustered columnstore index can have at most 1 partitioning column.<br/><br/> 0 = Not a partitioning column.
			/// </summary>
			[Column("partition_ordinal"),          NotNull    ] public byte  PartitionOrdinal        { get; set; } // tinyint
			/// <summary>
			/// 1 = Index key column has a descending sort direction.<br/><br/> 0 = Index key column has an ascending sort direction, or the column is part of a columnstore or hash index.
			/// </summary>
			[Column("is_descending_key"),             Nullable] public bool? IsDescendingKey         { get; set; } // bit
			/// <summary>
			/// 1 = Column is a nonkey column added to the index by using the CREATE INDEX INCLUDE clause, or the column is part of a columnstore index.<br/><br/> 0 = Column is not an included column.<br/><br/> Columns implicitly added because they are part of the clustering key are not listed in <strong>sys.index_columns</strong>.<br/><br/> Columns implicitly added because they are a partitioning column are returned as 0.
			/// </summary>
			[Column("is_included_column"),            Nullable] public bool? IsIncludedColumn        { get; set; } // bit
			/// <summary>
			/// Ordinal (1-based) within set of order columns in an ordered clustered columnstore index.
			/// </summary>
			[Column("column_store_order_ordinal"), NotNull    ] public byte  ColumnStoreOrderOrdinal { get; set; } // tinyint

			#region Associations

			/// <summary>
			/// objects (sys.objects)
			/// </summary>
			[Association(ThisKey="ObjectID", OtherKey="ObjectID", CanBeNull=false)]
			public ObjectSchema.Object Object { get; set; } = null!;

			#endregion
		}

		/// <summary>
		/// <para><strong>sys.index_resumable_operations (Transact-SQL)</strong></para>
		/// <para><strong>Applies to:</strong> √ SQL Server 2017 (14.x) and later  √ Azure SQL Database</para>
		/// <para><strong>sys.index_resumable_operations</strong> is a system view that monitors and checks the current execution status for resumable Index rebuild or creation.<br/>
		/// <strong>Applies to</strong>: SQL Server (2017 and newer), and Azure SQL Database</para><br/>
		/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-index-resumable-operations'>sys.index_resumable_operations</a>.</para>
		/// </summary>
		[Table(Schema="sys", Name="index_resumable_operations", IsView=true)]
		public partial class IndexResumableOperation
		{
			/// <summary>
			/// ID of the object to which this index belongs (not nullable).
			/// </summary>
			[Column("object_id"),            NotNull    ] public int      ObjectID           { get; set; } // int
			/// <summary>
			/// ID of the index (not nullable). <strong>index_id</strong> is unique only within the object.
			/// </summary>
			[Column("index_id"),             NotNull    ] public int      IndexID            { get; set; } // int
			/// <summary>
			/// Name of the index. <strong>name</strong> is unique only within the object.
			/// </summary>
			[Column("name"),                 NotNull    ] public string   Name               { get; set; } = null!; // sysname
			/// <summary>
			/// DDL T-SQL statement text
			/// </summary>
			[Column("sql_text"),                Nullable] public string?  SqlText            { get; set; } // nvarchar(max)
			/// <summary>
			/// Last MAX_DOP used (default = 0)
			/// </summary>
			[Column("last_max_dop"),         NotNull    ] public short    LastMaxDop         { get; set; } // smallint
			/// <summary>
			/// Partition number within the owning index or heap. For non-partitioned tables and indexes or in case all partitions are being rebuild the value of this column is NULL.
			/// </summary>
			[Column("partition_number"),        Nullable] public int?     PartitionNumber    { get; set; } // int
			/// <summary>
			/// Operational state for resumable index:<br/><br/>0=Running<br/><br/>1=Pause
			/// </summary>
			[Column("state"),                NotNull    ] public byte     State              { get; set; } // tinyint
			/// <summary>
			/// Description of the operational state for resumable index (running or Paused)
			/// </summary>
			[Column("state_desc"),              Nullable] public string?  StateDesc          { get; set; } // nvarchar(60)
			/// <summary>
			/// Index operation start time (not nullable)
			/// </summary>
			[Column("start_time"),           NotNull    ] public DateTime StartTime          { get; set; } // datetime
			/// <summary>
			/// Index operation last pause time (nullable). NULL if operation is running and never paused.
			/// </summary>
			[Column("last_pause_time"),         Nullable] public object?  LastPauseTime      { get; set; } // datatime
			/// <summary>
			/// Total execution time from start time in minutes (not nullable)
			/// </summary>
			[Column("total_execution_time"), NotNull    ] public int      TotalExecutionTime { get; set; } // int
			/// <summary>
			/// Index operation progress completion in % ( not nullable).
			/// </summary>
			[Column("percent_complete"),     NotNull    ] public float    PercentComplete    { get; set; } // real
			/// <summary>
			/// Total number of index pages allocated by the index build operation for the new and mapping indexes ( not nullable ).
			/// </summary>
			[Column("page_count"),           NotNull    ] public long     PageCount          { get; set; } // bigint

			#region Associations

			/// <summary>
			/// objects (sys.objects)
			/// </summary>
			[Association(ThisKey="ObjectID", OtherKey="ObjectID", CanBeNull=false)]
			public ObjectSchema.Object Object { get; set; } = null!;

			#endregion
		}

		/// <summary>
		/// <para><strong>sys.internal_partitions (Transact-SQL)</strong></para>
		/// <para><strong>Applies to:</strong> √ SQL Server 2016 (13.x) and later √ Azure SQL Database √ Azure SQL Managed Instance</para>
		/// <para>Returns one row for each rowset that tracks internal data for columnstore indexes on disk-based tables. These rowsets are internal to columnstore indexes and track deleted rows, rowgroup mappings, and delta store rowgroups. They track data for each for each table partition; every table has at least one partition. SQL Server re-creates the rowsets each time it rebuilds the columnstore index.</para><br/>
		/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-internal-partitions-transact-sql'>sys.internal_partitions</a>.</para>
		/// </summary>
		[Table(Schema="sys", Name="internal_partitions", IsView=true)]
		public partial class InternalPartition
		{
			/// <summary>
			/// Partition ID for this partition. This is unique within a database.
			/// </summary>
			[Column("partition_id"),                NotNull    ] public long    PartitionID              { get; set; } // bigint
			/// <summary>
			/// Object ID for the table that contains the partition.
			/// </summary>
			[Column("object_id"),                   NotNull    ] public int     ObjectID                 { get; set; } // int
			/// <summary>
			/// Index ID for the columnstore index defined on the table.<br/><br/> 1 = clustered columnstore index<br/><br/> 2 = nonclustered columnstore index
			/// </summary>
			[Column("index_id"),                    NotNull    ] public int     IndexID                  { get; set; } // int
			/// <summary>
			/// The partition number.<br/><br/> 1 = first partition of a partitioned table, or the single partition of a nonpartitioned table.<br/><br/> 2 = second partition, and so on.
			/// </summary>
			[Column("partition_number"),            NotNull    ] public int     PartitionNumber          { get; set; } // int
			/// <summary>
			/// Rowset objects that track internal data for the columnstore index.<br/><br/> 2 = COLUMN_STORE_DELETE_BITMAP<br/><br/> 3 = COLUMN_STORE_DELTA_STORE<br/><br/> 4 = COLUMN_STORE_DELETE_BUFFER<br/><br/> 5 = COLUMN_STORE_MAPPING_INDEX
			/// </summary>
			[Column("internal_object_type"),           Nullable] public byte?   InternalObjectType       { get; set; } // tinyint
			/// <summary>
			/// COLUMN_STORE_DELETE_BITMAP - This bitmap index tracks rows that are marked as deleted from the columnstore. The bitmap is for every rowgroup since partitions can have rows in multiple rowgroups. The rows are that are still physically present and taking up space in the columnstore.<br/><br/> COLUMN_STORE_DELTA_STORE - Stores groups of rows, called rowgroups, that have not been compressed into columnar storage. Each table partition can have zero or more deltastore rowgroups.<br/><br/> COLUMN_STORE_DELETE_BUFFER - For maintaining deletes to updateable nonclustered columnstore indexes. When a query deletes a row from the underlying rowstore table, the delete buffer tracks the deletion from the columnstore. When the number of deleted rows exceed 1048576, they are merged back into the delete bitmap by background Tuple Mover thread or by an explicit Reorganize command.  At any given point in time, the union of the delete bitmap and the delete buffer represents all deleted rows.<br/><br/> COLUMN_STORE_MAPPING_INDEX - Used only when the clustered columnstore index has a secondary nonclustered index. This maps nonclustered index keys to the correct rowgroup and row ID in the columnstore. It only stores keys for rows that move to a different rowgroup; this occurs when a delta rowgroup is compressed into the columnstore, and when a merge operation merges rows from two different rowgroups.
			/// </summary>
			[Column("internal_object_type_desc"),      Nullable] public string? InternalObjectTypeDesc   { get; set; } // nvarchar(60)
			/// <summary>
			/// ID for the deltastore rowgroup. Each table partition can have zero or more deltastore rowgroups.
			/// </summary>
			[Column("row_group_id"),                   Nullable] public int?    RowGroupID               { get; set; } // int
			/// <summary>
			/// ID of the internal rowset object (HoBT). This is a good key for joining with other DMVs to get more information about the physical characteristics of the internal rowset.
			/// </summary>
			[Column("hobt_id"),                     NotNull    ] public long    HoBTID                   { get; set; } // bigint
			/// <summary>
			/// Approximate number of rows in this partition.
			/// </summary>
			[Column("rows"),                           Nullable] public long?   Rows                     { get; set; } // bigint
			/// <summary>
			/// The state of compression for the rowset:<br/><br/> 0 = NONE<br/><br/> 1 = ROW<br/><br/> 2 = PAGE
			/// </summary>
			[Column("data_compression"),               Nullable] public byte?   DataCompression          { get; set; } // tinyint
			/// <summary>
			/// The state of compression for each partition. Possible values for rowstore tables are NONE, ROW, and PAGE. Possible values for columnstore tables are COLUMNSTORE and COLUMNSTORE_ARCHIVE.
			/// </summary>
			[Column("data_compression_desc"),          Nullable] public string? DataCompressionDesc      { get; set; } // nvarchar(60)
			/// <summary>
			/// 1 = Partition has last-page insert optimization enabled.<br/><br/>0 = Default value. Partition has last-page insert optimization disabled.
			/// </summary>
			[Column("optimize_for_sequential_key"), NotNull    ] public bool    OptimizeForSequentialKey { get; set; } // bit

			#region Associations

			/// <summary>
			/// objects (sys.objects)
			/// </summary>
			[Association(ThisKey="ObjectID", OtherKey="ObjectID", CanBeNull=false)]
			public ObjectSchema.Object Object { get; set; } = null!;

			#endregion
		}

		/// <summary>
		/// <para><strong>sys.internal_tables (Transact-SQL)</strong></para>
		/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)</para>
		/// <para>Returns one row for each object that is an internal table. Internal tables are automatically generated by SQL Server to support various features. For example, when you create a primary XML index, SQL Server automatically creates an internal table to persist the shredded XML document data. Internal tables appear in the <strong>sys</strong> schema of every database and have unique, system-generated names that indicate their function, for example, <strong>xml_index_nodes_2021582240_32001</strong> or <strong>queue_messages_1977058079</strong><br/>
		///  Internal tables do not contain user-accessible data, and their schema are fixed and unalterable. You cannot reference internal table names in Transact\-SQL statements. For example, you cannot execute a statement such as SELECT \* FROM *\&lt;sys.internal_table_name&gt;*. However, you can query catalog views to see the metadata of internal tables.</para><br/>
		/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-internal-tables-transact-sql'>sys.internal_tables</a>.</para>
		/// </summary>
		[Table(Schema="sys", Name="internal_tables", IsView=true)]
		public partial class InternalTable
		{
			/// <summary>
			/// Object name.
			/// </summary>
			[Column("name"),                     NotNull    ] public string   Name                  { get; set; } = null!; // sysname
			/// <summary>
			/// Object identification number. Is unique within a database.
			/// </summary>
			[Column("object_id"),                NotNull    ] public int      ObjectID              { get; set; } // int
			/// <summary>
			/// ID of the individual owner, if different from the schema owner. By default, schema-contained objects are owned by the schema owner. However, an alternate owner can be specified by using the ALTER AUTHORIZATION statement to change ownership.<br/><br/> Is NULL if there is no alternate individual owner.<br/><br/> Is NULL if the object type is one of the following:<br/><br/> C = CHECK constraint<br/><br/> D = DEFAULT (constraint or stand-alone)<br/><br/> F = FOREIGN KEY constraint<br/><br/> PK = PRIMARY KEY constraint<br/><br/> R = Rule (old-style, stand-alone)<br/><br/> TA = Assembly (CLR-integration) trigger<br/><br/> TR = SQL trigger<br/><br/> UQ = UNIQUE constraint<br/><br/> EC = Edge constraint
			/// </summary>
			[Column("principal_id"),                Nullable] public int?     PrincipalID           { get; set; } // int
			/// <summary>
			/// ID of the schema that the object is contained in.<br/><br/> Schema-scoped system objects are always contained in the sys or INFORMATION_SCHEMA schemas.
			/// </summary>
			[Column("schema_id"),                NotNull    ] public int      SchemaID              { get; set; } // int
			/// <summary>
			/// ID of the object to which this object belongs.<br/><br/> 0 = Not a child object.
			/// </summary>
			[Column("parent_object_id"),         NotNull    ] public int      ParentObjectID        { get; set; } // int
			/// <summary>
			/// Object type:<br/><br/> AF = Aggregate function (CLR)<br/><br/> C = CHECK constraint<br/><br/> D = DEFAULT (constraint or stand-alone)<br/><br/> F = FOREIGN KEY constraint<br/><br/> FN = SQL scalar function<br/><br/> FS = Assembly (CLR) scalar-function<br/><br/> FT = Assembly (CLR) table-valued function<br/><br/> IF = SQL inline table-valued function<br/><br/> IT = Internal table<br/><br/> P = SQL Stored Procedure<br/><br/> PC = Assembly (CLR) stored-procedure<br/><br/> PG = Plan guide<br/><br/> PK = PRIMARY KEY constraint<br/><br/> R = Rule (old-style, stand-alone)<br/><br/> RF = Replication-filter-procedure<br/><br/> S = System base table<br/><br/> SN = Synonym<br/><br/> SO = Sequence object<br/><br/> U = Table (user-defined)<br/><br/> V = View<br/><br/> EC = Edge constraint <br/><br/> <br/><br/> <strong>Applies to</strong>: SQL Server 2012 (11.x) and later.<br/><br/> SQ = Service queue<br/><br/> TA = Assembly (CLR) DML trigger<br/><br/> TF = SQL table-valued-function<br/><br/> TR = SQL DML trigger<br/><br/> TT = Table type<br/><br/> UQ = UNIQUE constraint<br/><br/> X = Extended stored procedure<br/><br/> <br/><br/> <strong>Applies to</strong>: SQL Server 2014 (12.x) and later, Azure SQL Database, Azure Synapse Analytics, Analytics Platform System (PDW).<br/><br/> ST = STATS_TREE<br/><br/> <br/><br/> <strong>Applies to</strong>: SQL Server 2016 (13.x) and later, Azure SQL Database, Azure Synapse Analytics, Analytics Platform System (PDW).<br/><br/> ET = External Table
			/// </summary>
			[Column("type"),                     NotNull    ] public string   TypeColumn            { get; set; } = null!; // char(2)
			/// <summary>
			/// Description of the object type:<br/><br/> AGGREGATE_FUNCTION<br/><br/> CHECK_CONSTRAINT<br/><br/> CLR_SCALAR_FUNCTION<br/><br/> CLR_STORED_PROCEDURE<br/><br/> CLR_TABLE_VALUED_FUNCTION<br/><br/> CLR_TRIGGER<br/><br/> DEFAULT_CONSTRAINT<br/><br/> EXTENDED_STORED_PROCEDURE<br/><br/> FOREIGN_KEY_CONSTRAINT<br/><br/> INTERNAL_TABLE<br/><br/> PLAN_GUIDE<br/><br/> PRIMARY_KEY_CONSTRAINT<br/><br/> REPLICATION_FILTER_PROCEDURE<br/><br/> RULE<br/><br/> SEQUENCE_OBJECT<br/><br/> <br/><br/> <strong>Applies to</strong>: SQL Server 2012 (11.x) and later.<br/><br/>  SERVICE_QUEUE<br/><br/> SQL_INLINE_TABLE_VALUED_FUNCTION<br/><br/> SQL_SCALAR_FUNCTION<br/><br/> SQL_STORED_PROCEDURE<br/><br/> SQL_TABLE_VALUED_FUNCTION<br/><br/> SQL_TRIGGER<br/><br/> SYNONYM<br/><br/> SYSTEM_TABLE<br/><br/> TABLE_TYPE<br/><br/> UNIQUE_CONSTRAINT<br/><br/> USER_TABLE<br/><br/> VIEW
			/// </summary>
			[Column("type_desc"),                   Nullable] public string?  TypeDesc              { get; set; } // nvarchar(60)
			/// <summary>
			/// Date the object was created.
			/// </summary>
			[Column("create_date"),              NotNull    ] public DateTime CreateDate            { get; set; } // datetime
			/// <summary>
			/// Date the object was last modified by using an ALTER statement. If the object is a table or a view, modify_date also changes when an index on the table or view is created or altered.
			/// </summary>
			[Column("modify_date"),              NotNull    ] public DateTime ModifyDate            { get; set; } // datetime
			/// <summary>
			/// Object is created by an internal SQL Server component.
			/// </summary>
			[Column("is_ms_shipped"),               Nullable] public bool?    IsMSShipped           { get; set; } // bit
			/// <summary>
			/// Object is published.
			/// </summary>
			[Column("is_published"),                Nullable] public bool?    IsPublished           { get; set; } // bit
			/// <summary>
			/// Only the schema of the object is published.
			/// </summary>
			[Column("is_schema_published"),         Nullable] public bool?    IsSchemaPublished     { get; set; } // bit
			/// <summary>
			/// Type of the internal table:<br/><br/> 3 = <strong>query_disk_store_query_hints</strong><br/><br/> 4 = <strong>query_disk_store_query_template_parameterization</strong><br/><br/> 6 = <strong>query_disk_store_wait_stats</strong><br/><br/> 201 = <strong>queue_messages</strong><br/><br/> 202 = <strong>xml_index_nodes</strong><br/><br/> 203 = <strong>fulltext_catalog_freelist</strong><br/><br/> 205 = <strong>query_notification</strong><br/><br/> 206 = <strong>service_broker_map</strong><br/><br/> 207 = <strong>extended_indexes</strong> (such as a spatial index)<br/><br/> 208 = <strong>filestream_tombstone</strong><br/><br/> 209 = <strong>change_tracking</strong><br/><br/> 210 = <strong>tracked_committed_transactions</strong><br/><br/> 220 = <strong>contained_features</strong><br/><br/> 225 = <strong>filetable_updates</strong><br/><br/> 236 = <strong>selective_xml_index_node_table</strong><br/><br/> 240 = <strong>query_disk_store_query_text</strong><br/><br/> 241 = <strong>query_disk_store_query</strong><br/><br/> 242 = <strong>query_disk_store_plan</strong><br/><br/> 243 = <strong>query_disk_store_runtime_stats</strong><br/><br/> 244 = <strong>query_disk_store_runtime_stats_interval</strong><br/><br/> 245 = <strong>query_context_settings</strong>
			/// </summary>
			[Column("internal_type"),               Nullable] public byte?    InternalType          { get; set; } // tinyint
			/// <summary>
			/// Description of the type of internal table:<br/><br/> QUERY_DISK_STORE_QUERY_HINTS<br/><br/> QUERY_DISK_STORE_QUERY_TEMPLATE_PARAMETERIZATION<br/><br/> QUERY_DISK_STORE_WAIT_STATS<br/><br/> QUEUE_MESSAGES<br/><br/> XML_INDEX_NODES<br/><br/> FULLTEXT_CATALOG_FREELIST<br/><br/> FULLTEXT_CATALOG_MAP<br/><br/> QUERY_NOTIFICATION<br/><br/> SERVICE_BROKER_MAP<br/><br/> EXTENDED_INDEXES<br/><br/> FILESTREAM_TOMBSTONE<br/><br/> CHANGE_TRACKING<br/><br/> TRACKED_COMMITTED_TRANSACTIONS<br/><br/> CONTAINED_FEATURES<br/><br/> FILETABLE_UPDATES<br/><br/> SELECTIVE_XML_INDEX_NODE_TABLE<br/><br/> QUERY_DISK_STORE_QUERY_TEXT<br/><br/> QUERY_DISK_STORE_QUERY<br/><br/> QUERY_DISK_STORE_PLAN<br/><br/> QUERY_DISK_STORE_RUNTIME_STATS<br/><br/> QUERY_DISK_STORE_RUNTIME_STATS_INTERVAL<br/><br/> QUERY_CONTEXT_SETTINGS
			/// </summary>
			[Column("internal_type_desc"),          Nullable] public string?  InternalTypeDesc      { get; set; } // nvarchar(60)
			/// <summary>
			/// ID of the parent, regardless of whether it is schema-scoped or not. Otherwise, 0 if there is no parent.<br/><br/> <strong>queue_messages</strong> = <strong>object_id</strong> of queue<br/><br/> <strong>xml_index_nodes</strong> = <strong>object_id</strong> of the xml index<br/><br/> <strong>fulltext_catalog_freelist</strong> = <strong>fulltext_catalog_id</strong> of the full-text catalog<br/><br/> <strong>fulltext_index_map</strong> = <strong>object_id</strong> of the full-text index<br/><br/> <strong>query_notification</strong>, or <strong>service_broker_map</strong> = 0<br/><br/> <strong>extended_indexes</strong> = <strong>object_id</strong> of an extended index, such as a spatial index<br/><br/> <strong>object_id</strong> of the table for which table tracking is enabled = <strong>change_tracking</strong>
			/// </summary>
			[Column("parent_id"),                   Nullable] public int?     ParentID              { get; set; } // int
			/// <summary>
			/// Minor ID of the parent.<br/><br/> <strong>xml_index_nodes</strong> = <strong>index_id</strong> of the XML index<br/><br/> <strong>extended_indexes</strong> = <strong>index_id</strong> of an extended index, such as a spatial index<br/><br/> 0 = <strong>queue_messages</strong>, <strong>fulltext_catalog_freelist</strong>, <strong>fulltext_index_map</strong>, <strong>query_notification</strong>, <strong>service_broker_map</strong>, or <strong>change_tracking</strong>
			/// </summary>
			[Column("parent_minor_id"),             Nullable] public int?     ParentMinorID         { get; set; } // int
			/// <summary>
			/// Non-zero value is the ID of data space (filegroup or partition-scheme) that holds the large object (LOB) data for this table.
			/// </summary>
			[Column("lob_data_space_id"),        NotNull    ] public int      LobDataSpaceID        { get; set; } // int
			/// <summary>
			/// Reserved for future use.
			/// </summary>
			[Column("filestream_data_space_id"),    Nullable] public int?     FilestreamDataSpaceID { get; set; } // int

			#region Associations

			/// <summary>
			/// objects (sys.objects)
			/// </summary>
			[Association(ThisKey="ObjectID", OtherKey="ObjectID", CanBeNull=false)]
			public ObjectSchema.Object Object { get; set; } = null!;

			#endregion
		}

		/// <summary>
		/// <para><strong>sys.key_constraints (Transact-SQL)</strong></para>
		/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions) √ Azure SQL Database √ Azure SQL Managed Instance √ Azure Synapse Analytics √ Analytics Platform System (PDW)</para>
		/// <para>Contains a row for each object that is a primary key or unique constraint. Includes <strong>sys.objects.type</strong> PK and UQ.</para><br/>
		/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-key-constraints-transact-sql'>sys.key_constraints</a>.</para>
		/// </summary>
		[Table(Schema="sys", Name="key_constraints", IsView=true)]
		public partial class KeyConstraint
		{
			/// <summary>
			/// Object name.
			/// </summary>
			[Column("name"),                NotNull    ] public string   Name              { get; set; } = null!; // sysname
			/// <summary>
			/// Object identification number. Is unique within a database.
			/// </summary>
			[Column("object_id"),           NotNull    ] public int      ObjectID          { get; set; } // int
			/// <summary>
			/// ID of the individual owner, if different from the schema owner. By default, schema-contained objects are owned by the schema owner. However, an alternate owner can be specified by using the ALTER AUTHORIZATION statement to change ownership.<br/><br/> Is NULL if there is no alternate individual owner.<br/><br/> Is NULL if the object type is one of the following:<br/><br/> C = CHECK constraint<br/><br/> D = DEFAULT (constraint or stand-alone)<br/><br/> F = FOREIGN KEY constraint<br/><br/> PK = PRIMARY KEY constraint<br/><br/> R = Rule (old-style, stand-alone)<br/><br/> TA = Assembly (CLR-integration) trigger<br/><br/> TR = SQL trigger<br/><br/> UQ = UNIQUE constraint<br/><br/> EC = Edge constraint
			/// </summary>
			[Column("principal_id"),           Nullable] public int?     PrincipalID       { get; set; } // int
			/// <summary>
			/// ID of the schema that the object is contained in.<br/><br/> Schema-scoped system objects are always contained in the sys or INFORMATION_SCHEMA schemas.
			/// </summary>
			[Column("schema_id"),           NotNull    ] public int      SchemaID          { get; set; } // int
			/// <summary>
			/// ID of the object to which this object belongs.<br/><br/> 0 = Not a child object.
			/// </summary>
			[Column("parent_object_id"),    NotNull    ] public int      ParentObjectID    { get; set; } // int
			/// <summary>
			/// Object type:<br/><br/> AF = Aggregate function (CLR)<br/><br/> C = CHECK constraint<br/><br/> D = DEFAULT (constraint or stand-alone)<br/><br/> F = FOREIGN KEY constraint<br/><br/> FN = SQL scalar function<br/><br/> FS = Assembly (CLR) scalar-function<br/><br/> FT = Assembly (CLR) table-valued function<br/><br/> IF = SQL inline table-valued function<br/><br/> IT = Internal table<br/><br/> P = SQL Stored Procedure<br/><br/> PC = Assembly (CLR) stored-procedure<br/><br/> PG = Plan guide<br/><br/> PK = PRIMARY KEY constraint<br/><br/> R = Rule (old-style, stand-alone)<br/><br/> RF = Replication-filter-procedure<br/><br/> S = System base table<br/><br/> SN = Synonym<br/><br/> SO = Sequence object<br/><br/> U = Table (user-defined)<br/><br/> V = View<br/><br/> EC = Edge constraint <br/><br/> <br/><br/> <strong>Applies to</strong>: SQL Server 2012 (11.x) and later.<br/><br/> SQ = Service queue<br/><br/> TA = Assembly (CLR) DML trigger<br/><br/> TF = SQL table-valued-function<br/><br/> TR = SQL DML trigger<br/><br/> TT = Table type<br/><br/> UQ = UNIQUE constraint<br/><br/> X = Extended stored procedure<br/><br/> <br/><br/> <strong>Applies to</strong>: SQL Server 2014 (12.x) and later, Azure SQL Database, Azure Synapse Analytics, Analytics Platform System (PDW).<br/><br/> ST = STATS_TREE<br/><br/> <br/><br/> <strong>Applies to</strong>: SQL Server 2016 (13.x) and later, Azure SQL Database, Azure Synapse Analytics, Analytics Platform System (PDW).<br/><br/> ET = External Table
			/// </summary>
			[Column("type"),                   Nullable] public string?  TypeColumn        { get; set; } // char(2)
			/// <summary>
			/// Description of the object type:<br/><br/> AGGREGATE_FUNCTION<br/><br/> CHECK_CONSTRAINT<br/><br/> CLR_SCALAR_FUNCTION<br/><br/> CLR_STORED_PROCEDURE<br/><br/> CLR_TABLE_VALUED_FUNCTION<br/><br/> CLR_TRIGGER<br/><br/> DEFAULT_CONSTRAINT<br/><br/> EXTENDED_STORED_PROCEDURE<br/><br/> FOREIGN_KEY_CONSTRAINT<br/><br/> INTERNAL_TABLE<br/><br/> PLAN_GUIDE<br/><br/> PRIMARY_KEY_CONSTRAINT<br/><br/> REPLICATION_FILTER_PROCEDURE<br/><br/> RULE<br/><br/> SEQUENCE_OBJECT<br/><br/> <br/><br/> <strong>Applies to</strong>: SQL Server 2012 (11.x) and later.<br/><br/>  SERVICE_QUEUE<br/><br/> SQL_INLINE_TABLE_VALUED_FUNCTION<br/><br/> SQL_SCALAR_FUNCTION<br/><br/> SQL_STORED_PROCEDURE<br/><br/> SQL_TABLE_VALUED_FUNCTION<br/><br/> SQL_TRIGGER<br/><br/> SYNONYM<br/><br/> SYSTEM_TABLE<br/><br/> TABLE_TYPE<br/><br/> UNIQUE_CONSTRAINT<br/><br/> USER_TABLE<br/><br/> VIEW
			/// </summary>
			[Column("type_desc"),              Nullable] public string?  TypeDesc          { get; set; } // nvarchar(60)
			/// <summary>
			/// Date the object was created.
			/// </summary>
			[Column("create_date"),         NotNull    ] public DateTime CreateDate        { get; set; } // datetime
			/// <summary>
			/// Date the object was last modified by using an ALTER statement. If the object is a table or a view, modify_date also changes when an index on the table or view is created or altered.
			/// </summary>
			[Column("modify_date"),         NotNull    ] public DateTime ModifyDate        { get; set; } // datetime
			/// <summary>
			/// Object is created by an internal SQL Server component.
			/// </summary>
			[Column("is_ms_shipped"),       NotNull    ] public bool     IsMSShipped       { get; set; } // bit
			/// <summary>
			/// Object is published.
			/// </summary>
			[Column("is_published"),        NotNull    ] public bool     IsPublished       { get; set; } // bit
			/// <summary>
			/// Only the schema of the object is published.
			/// </summary>
			[Column("is_schema_published"), NotNull    ] public bool     IsSchemaPublished { get; set; } // bit
			/// <summary>
			/// ID of the corresponding unique index in the parent object that was created to enforce this constraint.
			/// </summary>
			[Column("unique_index_id"),        Nullable] public int?     UniqueIndexID     { get; set; } // int
			/// <summary>
			/// 1 = Name was generated by system.<br/><br/> 0 = Name was supplied by the user.
			/// </summary>
			[Column("is_system_named"),     NotNull    ] public bool     IsSystemNamed     { get; set; } // bit

			#region Associations

			/// <summary>
			/// objects (sys.objects)
			/// </summary>
			[Association(ThisKey="ObjectID", OtherKey="ObjectID", CanBeNull=false)]
			public ObjectSchema.Object Object { get; set; } = null!;

			#endregion
		}

		/// <summary>
		/// <para><strong>sys.masked_columns (Transact-SQL)</strong></para>
		/// <para><strong>Applies to:</strong> √ SQL Server 2016 (13.x) and later √ Azure SQL Database √ Azure SQL Managed Instance</para>
		/// <para>Use the <strong>sys.masked_columns</strong> view to query for table-columns that have a dynamic data masking function applied to them. This view inherits from the <strong>sys.columns</strong> view. It returns all columns in the <strong>sys.columns</strong> view, plus the <strong>is_masked</strong> and <strong>masking_function</strong> columns, indicating if the column is masked, and if so, what masking function is defined. This view only shows the columns on which there is a masking function applied.</para><br/>
		/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-masked-columns-transact-sql'>sys.masked_columns</a>.</para>
		/// </summary>
		[Table(Schema="sys", Name="masked_columns", IsView=true)]
		public partial class MaskedColumn
		{
			/// <summary>
			/// ID of the object to which this column belongs.
			/// </summary>
			[Column("object_id"),             NotNull    ] public int     ObjectID            { get; set; } // int
			/// <summary>
			/// Name of the column. Is unique within the object.
			/// </summary>
			[Column("name"),                     Nullable] public string? Name                { get; set; } // sysname
			/// <summary>
			/// ID of the column. Is unique within the object.<br/><br/> Column IDs might not be sequential.
			/// </summary>
			[Column("column_id"),             NotNull    ] public int     ColumnID            { get; set; } // int
			/// <summary>
			/// See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-columns-transact-sql'>sys.columns (Transact-SQL)</a> for more column definitions.
			/// </summary>
			[Column("sys.masked_columns"),    NotNull    ] public object  SysMaskedColumns    { get; set; } = null!; // various
			/// <summary>
			/// Indicates if the column is masked. 1 indicates masked.
			/// </summary>
			[Column("is_masked"),                Nullable] public bool?   IsMasked            { get; set; } // bit
			/// <summary>
			/// The masking function for the column.
			/// </summary>
			[Column("masking_function"),         Nullable] public string? MaskingFunction     { get; set; } // nvarchar(4000)
			/// <summary>
			/// <strong>Applies to</strong>: SQL Server 2016 (13.x) and later, SQL Database. 7, 8, 9, 10 only applies to SQL Database.<br/><br/> Identifies when the column value is generated (will always be 0 for columns in system tables):<br/><br/> 0 = NOT_APPLICABLE<br/> 1 = AS_ROW_START<br/> 2 = AS_ROW_END<br/>7 = AS_TRANSACTION_ID_START<br/>8 = AS_TRANSACTION_ID_END<br/>9 = AS_SEQUENCE_NUMBER_START<br/>10 = AS_SEQUENCE_NUMBER_END<br/><br/> For more information, see <a href='https://docs.microsoft.com/en-us/sql/relational-databases/tables/temporal-tables'>Temporal Tables (Relational databases)</a>.
			/// </summary>
			[Column("generated_always_type"),    Nullable] public byte?   GeneratedAlwaysType { get; set; } // tinyint

			#region Associations

			/// <summary>
			/// objects (sys.objects)
			/// </summary>
			[Association(ThisKey="ObjectID", OtherKey="ObjectID", CanBeNull=false)]
			public ObjectSchema.Object Object { get; set; } = null!;

			#endregion
		}

		/// <summary>
		/// <para><strong>sys.memory_optimized_tables_internal_attributes (Transact-SQL)</strong></para>
		/// <para><strong>Applies to:</strong> √ SQL Server 2016 (13.x) and later √ Azure SQL Database √ Azure SQL Managed Instance</para>
		/// <para>Contains a row for each internal memory-optimized table used for storing user memory-optimized tables. Each user table corresponds to one or more internal tables. A single table is used for the core data storage. Additional internal tables are used to support features such as temporal, columnstore index and off-row (LOB) storage for memory-optimized tables.</para><br/>
		/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-memory-optimized-tables-internal-attributes-transact-sql'>sys.memory_optimized_tables_internal_attributes</a>.</para>
		/// </summary>
		[Table(Schema="sys", Name="memory_optimized_tables_internal_attributes", IsView=true)]
		public partial class MemoryOptimizedTablesInternalAttribute
		{
			/// <summary>
			/// ID of the user table. Internal memory-optimized tables that exist to support a user table (such as off-row storage or deleted rows in case of Hk/Columnstore combinations) have the same object_id as their parent.
			/// </summary>
			[Column("object_id"),        Nullable] public int?   ObjectID    { get; set; } // int
			/// <summary>
			/// In-Memory OLTP object ID corresponding to the internal memory-optimized table that is used to support the user table. It is unique within the database and it can change over the lifetime of the object.
			/// </summary>
			[Column("xtp_object_id"), NotNull    ] public long   XtpObjectID { get; set; } // bigint
			/// <summary>
			/// Type of internal table.<br/><br/> 0 => DELETED_ROWS_TABLE <br/> 1 => USER_TABLE <br/> 2 => DICTIONARIES_TABLE<br/>3 => SEGMENTS_TABLE<br/>4 => ROW_GROUPS_INFO_TABLE<br/>5 => INTERNAL OFF-ROW DATA TABLE<br/>252 => INTERNAL_TEMPORAL_HISTORY_TABLE
			/// </summary>
			[Column("type"),             Nullable] public int?   TypeColumn  { get; set; } // int
			/// <summary>
			/// Description of the type<br/><br/>DELETED_ROWS_TABLE -> Internal table tracking deleted rows for a columnstore index<br/>USER_TABLE -> Table containing the in-row user data<br/>DICTIONARIES_TABLE -> Dictionaries for a columnstore index<br/>SEGMENTS_TABLE -> Compressed segments for a columnstore index<br/>ROW_GROUPS_INFO_TABLE -> Metadata about compressed row groups of a columnstore index<br/>INTERNAL OFF-ROW DATA TABLE -> Internal table used for storage of an off-row column. In this case, minor_id reflects the column_id.<br/>INTERNAL_TEMPORAL_HISTORY_TABLE -> Hot tail of the disk-based history table. Rows inserted into the history are inserted into this internal memory-optimized table first. There is a background task that asynchronously moves rows from this internal table to the disk-based history table.
			/// </summary>
			[Column("type_desc"),     NotNull    ] public string TypeDesc    { get; set; } = null!; // nvarchar(60)
			/// <summary>
			/// 0 indicates a user or internal table<br/><br/>Non-0 indicates the ID of a column stored off-row. Joins with column_id in sys.columns.<br/><br/>Each column stored off-row has a corresponding row in this system view.
			/// </summary>
			[Column("minor_id"),      NotNull    ] public int    MinorID     { get; set; } // int

			#region Associations

			/// <summary>
			/// objects (sys.objects)
			/// </summary>
			[Association(ThisKey="ObjectID", OtherKey="ObjectID", CanBeNull=false)]
			public ObjectSchema.Object Object { get; set; } = null!;

			#endregion
		}

		/// <summary>
		/// <para><strong>sys.module_assembly_usages (Transact-SQL)</strong></para>
		/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)</para>
		/// <para>Returns a row for each module-to-assembly reference.</para><br/>
		/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-module-assembly-usages-transact-sql'>sys.module_assembly_usages</a>.</para>
		/// </summary>
		[Table(Schema="sys", Name="module_assembly_usages", IsView=true)]
		public partial class ModuleAssemblyUsage
		{
			/// <summary>
			/// Object identification number of the SQL object. Is unique within a database.
			/// </summary>
			[Column("object_id"),   NotNull] public int ObjectID   { get; set; } // int
			/// <summary>
			/// ID of the assembly from which this module was created.
			/// </summary>
			[Column("assembly_id"), NotNull] public int AssemblyID { get; set; } // int

			#region Associations

			/// <summary>
			/// objects (sys.objects)
			/// </summary>
			[Association(ThisKey="ObjectID", OtherKey="ObjectID", CanBeNull=false)]
			public ObjectSchema.Object Object { get; set; } = null!;

			#endregion
		}

		/// <summary>
		/// <para><strong>sys.numbered_procedures (Transact-SQL)</strong></para>
		/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions) √ Azure SQL Managed Instance √ Azure Synapse Analytics √ Analytics Platform System (PDW)</para>
		/// <para>Contains a row for each SQL Server stored procedure that was created as a numbered procedure. This does not show a row for the base (number = 1) stored procedure. Entries for the base stored procedures can be found in views such as <strong>sys.objects</strong> and <strong>sys.procedures</strong>.<br/>
		/// <note type='important'><br/>
		/// Numbered procedures are deprecated. Use of numbered procedures is discouraged. A DEPRECATION_ANNOUNCEMENT event is fired when a query that uses this catalog view is compiled.<br/>
		/// </note></para><br/>
		/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-numbered-procedures-transact-sql'>sys.numbered_procedures</a>.</para>
		/// </summary>
		[Table(Schema="sys", Name="numbered_procedures", IsView=true)]
		public partial class NumberedProcedure
		{
			/// <summary>
			/// ID of the object of the stored procedure.
			/// </summary>
			[Column("object_id"),        NotNull    ] public int     ObjectID        { get; set; } // int
			/// <summary>
			/// Number of this procedure within the object, 2 or greater.
			/// </summary>
			[Column("procedure_number"),    Nullable] public short?  ProcedureNumber { get; set; } // smallint
			/// <summary>
			/// The SQL Server text that defines this procedure.<br/><br/> NULL = encrypted.
			/// </summary>
			[Column("definition"),          Nullable] public string? Definition      { get; set; } // nvarchar(max)

			#region Associations

			/// <summary>
			/// objects (sys.objects)
			/// </summary>
			[Association(ThisKey="ObjectID", OtherKey="ObjectID", CanBeNull=false)]
			public ObjectSchema.Object Object { get; set; } = null!;

			#endregion
		}

		/// <summary>
		/// <para><strong>sys.numbered_procedure_parameters (Transact-SQL)</strong></para>
		/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)</para>
		/// <para>Contains one row for each parameter of a numbered procedure. When you create a numbered stored procedure, the base procedure is number 1. All subsequent procedures have numbers 2, 3, and so forth. <strong>sys.numbered_procedure_parameters</strong> contains the parameter definitions for all subsequent procedures, numbered 2 and greater. This view does not show parameters for the base stored procedure (number = 1). The base stored procedure is similar to a nonnumbered stored procedure. Therefore, its parameters are represented in <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-parameters-transact-sql'>sys.parameters (Transact-SQL)</a>.<br/>
		/// <note type='important'><br/>
		/// Numbered procedures are deprecated. Use of numbered procedures is discouraged. A DEPRECATION_ANNOUNCEMENT event is fired when a query that uses this catalog view is compiled.<br/>
		/// </note><br/>
		/// <note type='note'><br/>
		/// XML and CLR parameters are not supported for numbered procedures.<br/>
		/// </note></para><br/>
		/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-numbered-procedure-parameters-transact-sql'>sys.numbered_procedure_parameters</a>.</para>
		/// </summary>
		[Table(Schema="sys", Name="numbered_procedure_parameters", IsView=true)]
		public partial class NumberedProcedureParameter
		{
			/// <summary>
			/// ID of the object to which this parameter belongs.
			/// </summary>
			[Column("object_id"),        NotNull    ] public int     ObjectID        { get; set; } // int
			/// <summary>
			/// Number of this procedure within the object, 2 or greater.
			/// </summary>
			[Column("procedure_number"), NotNull    ] public short   ProcedureNumber { get; set; } // smallint
			/// <summary>
			/// Name of the parameter. Is unique within <strong>procedure_number</strong>.
			/// </summary>
			[Column("name"),                Nullable] public string? Name            { get; set; } // sysname
			/// <summary>
			/// ID of the parameter. Is unique within the <strong>procedure_number</strong>.
			/// </summary>
			[Column("parameter_id"),     NotNull    ] public int     ParameterID     { get; set; } // int
			/// <summary>
			/// ID of the system type of the parameter
			/// </summary>
			[Column("system_type_id"),   NotNull    ] public byte    SystemTypeID    { get; set; } // tinyint
			/// <summary>
			/// ID of the type, as defined by user, of the parameter.
			/// </summary>
			[Column("user_type_id"),     NotNull    ] public int     UserTypeID      { get; set; } // int
			/// <summary>
			/// Maximum length of the parameter in bytes.<br/><br/> -1 = Column data type is varchar(max), nvarchar(max), or varbinary(max).
			/// </summary>
			[Column("max_length"),       NotNull    ] public short   MaxLength       { get; set; } // smallint
			/// <summary>
			/// Precision of the parameter if numeric-based; otherwise, 0.
			/// </summary>
			[Column("precision"),        NotNull    ] public byte    Precision       { get; set; } // tinyint
			/// <summary>
			/// Scale of the parameter if numeric-based; otherwise, 0.
			/// </summary>
			[Column("scale"),            NotNull    ] public byte    Scale           { get; set; } // tinyint
			/// <summary>
			/// 1 = Parameter is output or return; otherwise, 0
			/// </summary>
			[Column("is_output"),        NotNull    ] public bool    IsOutput        { get; set; } // bit
			/// <summary>
			/// 1 = Parameter is a cursor-reference parameter.
			/// </summary>
			[Column("is_cursor_ref"),    NotNull    ] public bool    IsCursorRef     { get; set; } // bit

			#region Associations

			/// <summary>
			/// objects (sys.objects)
			/// </summary>
			[Association(ThisKey="ObjectID", OtherKey="ObjectID", CanBeNull=false)]
			public ObjectSchema.Object Object { get; set; } = null!;

			#endregion
		}

		/// <summary>
		/// <para><strong>sys.objects (Transact-SQL)</strong></para>
		/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions) √ Azure SQL Database √ Azure SQL Managed Instance √ Azure Synapse Analytics √ Analytics Platform System (PDW)</para>
		/// <para>Contains a row for each user-defined, schema-scoped object that is created within a database, including natively compiled scalar user-defined function.<br/>
		///  For more information, see <a href='https://docs.microsoft.com/en-us/sql/relational-databases/in-memory-oltp/scalar-user-defined-functions-for-in-memory-oltp'>Scalar User-Defined Functions for In-Memory OLTP</a>.<br/>
		/// <note type='note'><br/>
		/// sys.objects does not show DDL triggers, because they are not schema-scoped. All triggers, both DML and DDL, are found in <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-triggers-transact-sql'>sys.triggers</a>. sys.triggers supports a mixture of name-scoping rules for the various kinds of triggers.<br/>
		/// </note></para><br/>
		/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-objects-transact-sql'>sys.objects</a>.</para>
		/// </summary>
		[Table(Schema="sys", Name="objects", IsView=true)]
		public partial class Object
		{
			/// <summary>
			/// Object name.
			/// </summary>
			[Column("name"),                NotNull    ] public string   Name              { get; set; } = null!; // sysname
			/// <summary>
			/// Object identification number. Is unique within a database.
			/// </summary>
			[Column("object_id"),           NotNull    ] public int      ObjectID          { get; set; } // int
			/// <summary>
			/// ID of the individual owner, if different from the schema owner. By default, schema-contained objects are owned by the schema owner. However, an alternate owner can be specified by using the ALTER AUTHORIZATION statement to change ownership.<br/><br/> Is NULL if there is no alternate individual owner.<br/><br/> Is NULL if the object type is one of the following:<br/><br/> C = CHECK constraint<br/><br/> D = DEFAULT (constraint or stand-alone)<br/><br/> F = FOREIGN KEY constraint<br/><br/> PK = PRIMARY KEY constraint<br/><br/> R = Rule (old-style, stand-alone)<br/><br/> TA = Assembly (CLR-integration) trigger<br/><br/> TR = SQL trigger<br/><br/> UQ = UNIQUE constraint<br/><br/> EC = Edge constraint
			/// </summary>
			[Column("principal_id"),           Nullable] public int?     PrincipalID       { get; set; } // int
			/// <summary>
			/// ID of the schema that the object is contained in.<br/><br/> Schema-scoped system objects are always contained in the sys or INFORMATION_SCHEMA schemas.
			/// </summary>
			[Column("schema_id"),           NotNull    ] public int      SchemaID          { get; set; } // int
			/// <summary>
			/// ID of the object to which this object belongs.<br/><br/> 0 = Not a child object.
			/// </summary>
			[Column("parent_object_id"),    NotNull    ] public int      ParentObjectID    { get; set; } // int
			/// <summary>
			/// Object type:<br/><br/> AF = Aggregate function (CLR)<br/><br/> C = CHECK constraint<br/><br/> D = DEFAULT (constraint or stand-alone)<br/><br/> F = FOREIGN KEY constraint<br/><br/> FN = SQL scalar function<br/><br/> FS = Assembly (CLR) scalar-function<br/><br/> FT = Assembly (CLR) table-valued function<br/><br/> IF = SQL inline table-valued function<br/><br/> IT = Internal table<br/><br/> P = SQL Stored Procedure<br/><br/> PC = Assembly (CLR) stored-procedure<br/><br/> PG = Plan guide<br/><br/> PK = PRIMARY KEY constraint<br/><br/> R = Rule (old-style, stand-alone)<br/><br/> RF = Replication-filter-procedure<br/><br/> S = System base table<br/><br/> SN = Synonym<br/><br/> SO = Sequence object<br/><br/> U = Table (user-defined)<br/><br/> V = View<br/><br/> EC = Edge constraint <br/><br/> <br/><br/> <strong>Applies to</strong>: SQL Server 2012 (11.x) and later.<br/><br/> SQ = Service queue<br/><br/> TA = Assembly (CLR) DML trigger<br/><br/> TF = SQL table-valued-function<br/><br/> TR = SQL DML trigger<br/><br/> TT = Table type<br/><br/> UQ = UNIQUE constraint<br/><br/> X = Extended stored procedure<br/><br/> <br/><br/> <strong>Applies to</strong>: SQL Server 2014 (12.x) and later, Azure SQL Database, Azure Synapse Analytics, Analytics Platform System (PDW).<br/><br/> ST = STATS_TREE<br/><br/> <br/><br/> <strong>Applies to</strong>: SQL Server 2016 (13.x) and later, Azure SQL Database, Azure Synapse Analytics, Analytics Platform System (PDW).<br/><br/> ET = External Table
			/// </summary>
			[Column("type"),                   Nullable] public string?  TypeColumn        { get; set; } // char(2)
			/// <summary>
			/// Description of the object type:<br/><br/> AGGREGATE_FUNCTION<br/><br/> CHECK_CONSTRAINT<br/><br/> CLR_SCALAR_FUNCTION<br/><br/> CLR_STORED_PROCEDURE<br/><br/> CLR_TABLE_VALUED_FUNCTION<br/><br/> CLR_TRIGGER<br/><br/> DEFAULT_CONSTRAINT<br/><br/> EXTENDED_STORED_PROCEDURE<br/><br/> FOREIGN_KEY_CONSTRAINT<br/><br/> INTERNAL_TABLE<br/><br/> PLAN_GUIDE<br/><br/> PRIMARY_KEY_CONSTRAINT<br/><br/> REPLICATION_FILTER_PROCEDURE<br/><br/> RULE<br/><br/> SEQUENCE_OBJECT<br/><br/> <br/><br/> <strong>Applies to</strong>: SQL Server 2012 (11.x) and later.<br/><br/>  SERVICE_QUEUE<br/><br/> SQL_INLINE_TABLE_VALUED_FUNCTION<br/><br/> SQL_SCALAR_FUNCTION<br/><br/> SQL_STORED_PROCEDURE<br/><br/> SQL_TABLE_VALUED_FUNCTION<br/><br/> SQL_TRIGGER<br/><br/> SYNONYM<br/><br/> SYSTEM_TABLE<br/><br/> TABLE_TYPE<br/><br/> UNIQUE_CONSTRAINT<br/><br/> USER_TABLE<br/><br/> VIEW
			/// </summary>
			[Column("type_desc"),              Nullable] public string?  TypeDesc          { get; set; } // nvarchar(60)
			/// <summary>
			/// Date the object was created.
			/// </summary>
			[Column("create_date"),         NotNull    ] public DateTime CreateDate        { get; set; } // datetime
			/// <summary>
			/// Date the object was last modified by using an ALTER statement. If the object is a table or a view, modify_date also changes when an index on the table or view is created or altered.
			/// </summary>
			[Column("modify_date"),         NotNull    ] public DateTime ModifyDate        { get; set; } // datetime
			/// <summary>
			/// Object is created by an internal SQL Server component.
			/// </summary>
			[Column("is_ms_shipped"),       NotNull    ] public bool     IsMSShipped       { get; set; } // bit
			/// <summary>
			/// Object is published.
			/// </summary>
			[Column("is_published"),        NotNull    ] public bool     IsPublished       { get; set; } // bit
			/// <summary>
			/// Only the schema of the object is published.
			/// </summary>
			[Column("is_schema_published"), NotNull    ] public bool     IsSchemaPublished { get; set; } // bit

			#region Associations

			/// <summary>
			/// assembly_modules (sys.assembly_modules)
			/// </summary>
			[Association(ThisKey="ObjectID", OtherKey="ObjectID", CanBeNull=true)]
			public ObjectSchema.AssemblyModule? AssemblyModule { get; set; }

			/// <summary>
			/// change_tracking_tables (sys.change_tracking_tables)
			/// </summary>
			[Association(ThisKey="ObjectID", OtherKey="ObjectID", CanBeNull=true)]
			public IList<ChangeTrackingSchema.ChangeTrackingTable> ChangeTrackingTables { get; set; } = null!;

			/// <summary>
			/// check_constraints (sys.check_constraints)
			/// </summary>
			[Association(ThisKey="ObjectID", OtherKey="ObjectID", CanBeNull=true)]
			public ObjectSchema.CheckConstraint? CheckConstraint { get; set; }

			/// <summary>
			/// columns (sys.columns)
			/// </summary>
			[Association(ThisKey="ObjectID", OtherKey="ObjectID", CanBeNull=true)]
			public IList<ObjectSchema.Column> Columns { get; set; } = null!;

			/// <summary>
			/// column_store_row_groups (sys.column_store_row_groups)
			/// </summary>
			[Association(ThisKey="ObjectID", OtherKey="ObjectID", CanBeNull=true)]
			public IList<ObjectSchema.ColumnStoreRowGroup> ColumnStoreRowGroups { get; set; } = null!;

			/// <summary>
			/// column_type_usages (sys.column_type_usages)
			/// </summary>
			[Association(ThisKey="ObjectID", OtherKey="ObjectID", CanBeNull=true)]
			public IList<ScalarTypesSchema.ColumnTypeUsage> ColumnTypeUsages { get; set; } = null!;

			/// <summary>
			/// column_xml_schema_collection_usages (sys.column_xml_schema_collection_usages)
			/// </summary>
			[Association(ThisKey="ObjectID", OtherKey="ObjectID", CanBeNull=true)]
			public IList<XmlSchema.ColumnXmlSchemaCollectionUsage> ColumnXmlSchemaCollectionUsages { get; set; } = null!;

			/// <summary>
			/// computed_columns (sys.computed_columns)
			/// </summary>
			[Association(ThisKey="ObjectID", OtherKey="ObjectID", CanBeNull=true)]
			public IList<ObjectSchema.ComputedColumn> ComputedColumns { get; set; } = null!;

			/// <summary>
			/// database_event_session_fields (sys.database_event_session_fields)
			/// </summary>
			[Association(ThisKey="ObjectID", OtherKey="ObjectID", CanBeNull=true)]
			public IList<ExtendedEventsSchema.DatabaseEventSessionField> DatabaseEventSessionFields { get; set; } = null!;

			/// <summary>
			/// default_constraints (sys.default_constraints)
			/// </summary>
			[Association(ThisKey="ObjectID", OtherKey="ObjectID", CanBeNull=true)]
			public ObjectSchema.DefaultConstraint? DefaultConstraint { get; set; }

			/// <summary>
			/// event_notifications (sys.event_notifications)
			/// </summary>
			[Association(ThisKey="ObjectID", OtherKey="ObjectID", CanBeNull=true)]
			public IList<ObjectSchema.EventNotification> EventNotifications { get; set; } = null!;

			/// <summary>
			/// events (sys.events)
			/// </summary>
			[Association(ThisKey="ObjectID", OtherKey="ObjectID", CanBeNull=true)]
			public IList<ObjectSchema.Event> Events { get; set; } = null!;

			/// <summary>
			/// extended_procedures (sys.extended_procedures)
			/// </summary>
			[Association(ThisKey="ObjectID", OtherKey="ObjectID", CanBeNull=true)]
			public IList<ObjectSchema.ExtendedProcedure> ExtendedProcedures { get; set; } = null!;

			/// <summary>
			/// external_tables (sys.external_tables)
			/// </summary>
			[Association(ThisKey="ObjectID", OtherKey="ObjectID", CanBeNull=true)]
			public IList<ExternalOperationsSchema.ExternalTable> ExternalTables { get; set; } = null!;

			/// <summary>
			/// filetables (sys.filetables)
			/// </summary>
			[Association(ThisKey="ObjectID", OtherKey="ObjectID", CanBeNull=true)]
			public IList<FilestreamAndFileTableSchema.FileTable> Filetables { get; set; } = null!;

			/// <summary>
			/// filetable_system_defined_objects (sys.filetable_system_defined_objects)
			/// </summary>
			[Association(ThisKey="ObjectID", OtherKey="ObjectID", CanBeNull=true)]
			public IList<FilestreamAndFileTableSchema.FileTableSystemDefinedObject> FiletableSystemDefinedObjects { get; set; } = null!;

			/// <summary>
			/// foreign_keys (sys.foreign_keys)
			/// </summary>
			[Association(ThisKey="ObjectID", OtherKey="ObjectID", CanBeNull=true)]
			public ObjectSchema.ForeignKey? ForeignKey { get; set; }

			/// <summary>
			/// fulltext_index_catalog_usages (sys.fulltext_index_catalog_usages)
			/// </summary>
			[Association(ThisKey="ObjectID", OtherKey="ObjectID", CanBeNull=true)]
			public IList<FullTextSearchSchema.IndexCatalogUsage> FulltextIndexCatalogUsages { get; set; } = null!;

			/// <summary>
			/// fulltext_index_columns (sys.fulltext_index_columns)
			/// </summary>
			[Association(ThisKey="ObjectID", OtherKey="ObjectID", CanBeNull=true)]
			public IList<FullTextSearchSchema.IndexColumn> FulltextIndexColumns { get; set; } = null!;

			/// <summary>
			/// fulltext_indexes (sys.fulltext_indexes)
			/// </summary>
			[Association(ThisKey="ObjectID", OtherKey="ObjectID", CanBeNull=true)]
			public IList<FullTextSearchSchema.Index> FulltextIndexes { get; set; } = null!;

			/// <summary>
			/// function_order_columns (sys.function_order_columns)
			/// </summary>
			[Association(ThisKey="ObjectID", OtherKey="ObjectID", CanBeNull=true)]
			public IList<ObjectSchema.FunctionOrderColumn> FunctionOrderColumns { get; set; } = null!;

			/// <summary>
			/// hash_indexes (sys.hash_indexes)
			/// </summary>
			[Association(ThisKey="ObjectID", OtherKey="ObjectID", CanBeNull=true)]
			public IList<ObjectSchema.HashIndex> HashIndexes { get; set; } = null!;

			/// <summary>
			/// identity_columns (sys.identity_columns)
			/// </summary>
			[Association(ThisKey="ObjectID", OtherKey="ObjectID", CanBeNull=true)]
			public IList<ObjectSchema.IdentityColumn> IdentityColumns { get; set; } = null!;

			/// <summary>
			/// index_columns (sys.index_columns)
			/// </summary>
			[Association(ThisKey="ObjectID", OtherKey="ObjectID", CanBeNull=true)]
			public IList<ObjectSchema.IndexColumn> IndexColumns { get; set; } = null!;

			/// <summary>
			/// indexes (sys.indexes)
			/// </summary>
			[Association(ThisKey="ObjectID", OtherKey="ObjectID", CanBeNull=true)]
			public IList<ObjectSchema.Index> Indexes { get; set; } = null!;

			/// <summary>
			/// index_resumable_operations (sys.index_resumable_operations)
			/// </summary>
			[Association(ThisKey="ObjectID", OtherKey="ObjectID", CanBeNull=true)]
			public IList<ObjectSchema.IndexResumableOperation> IndexResumableOperations { get; set; } = null!;

			/// <summary>
			/// internal_partitions (sys.internal_partitions)
			/// </summary>
			[Association(ThisKey="ObjectID", OtherKey="ObjectID", CanBeNull=true)]
			public IList<ObjectSchema.InternalPartition> InternalPartitions { get; set; } = null!;

			/// <summary>
			/// internal_tables (sys.internal_tables)
			/// </summary>
			[Association(ThisKey="ObjectID", OtherKey="ObjectID", CanBeNull=true)]
			public IList<ObjectSchema.InternalTable> InternalTables { get; set; } = null!;

			/// <summary>
			/// key_constraints (sys.key_constraints)
			/// </summary>
			[Association(ThisKey="ObjectID", OtherKey="ObjectID", CanBeNull=true)]
			public ObjectSchema.KeyConstraint? KeyConstraint { get; set; }

			/// <summary>
			/// ledger_column_history (sys.ledger_column_history)
			/// </summary>
			[Association(ThisKey="ObjectID", OtherKey="ObjectID", CanBeNull=true)]
			public IList<SecuritySchema.LedgerColumnHistory> LedgerColumnHistory { get; set; } = null!;

			/// <summary>
			/// ledger_table_history (sys.ledger_table_history)
			/// </summary>
			[Association(ThisKey="ObjectID", OtherKey="ObjectID", CanBeNull=true)]
			public IList<SecuritySchema.LedgerTableHistory> LedgerTableHistory { get; set; } = null!;

			/// <summary>
			/// masked_columns (sys.masked_columns)
			/// </summary>
			[Association(ThisKey="ObjectID", OtherKey="ObjectID", CanBeNull=true)]
			public IList<ObjectSchema.MaskedColumn> MaskedColumns { get; set; } = null!;

			/// <summary>
			/// memory_optimized_tables_internal_attributes (sys.memory_optimized_tables_internal_attributes)
			/// </summary>
			[Association(ThisKey="ObjectID", OtherKey="ObjectID", CanBeNull=true)]
			public IList<ObjectSchema.MemoryOptimizedTablesInternalAttribute> MemoryOptimizedTablesInternalAttributes { get; set; } = null!;

			/// <summary>
			/// module_assembly_usages (sys.module_assembly_usages)
			/// </summary>
			[Association(ThisKey="ObjectID", OtherKey="ObjectID", CanBeNull=true)]
			public IList<ObjectSchema.ModuleAssemblyUsage> ModuleAssemblyUsages { get; set; } = null!;

			/// <summary>
			/// numbered_procedure_parameters (sys.numbered_procedure_parameters)
			/// </summary>
			[Association(ThisKey="ObjectID", OtherKey="ObjectID", CanBeNull=true)]
			public IList<ObjectSchema.NumberedProcedureParameter> NumberedProcedureParameters { get; set; } = null!;

			/// <summary>
			/// numbered_procedures (sys.numbered_procedures)
			/// </summary>
			[Association(ThisKey="ObjectID", OtherKey="ObjectID", CanBeNull=true)]
			public IList<ObjectSchema.NumberedProcedure> NumberedProcedures { get; set; } = null!;

			/// <summary>
			/// parameters (sys.parameters)
			/// </summary>
			[Association(ThisKey="ObjectID", OtherKey="ObjectID", CanBeNull=true)]
			public IList<ObjectSchema.Parameter> Parameters { get; set; } = null!;

			/// <summary>
			/// parameter_type_usages (sys.parameter_type_usages)
			/// </summary>
			[Association(ThisKey="ObjectID", OtherKey="ObjectID", CanBeNull=true)]
			public IList<ScalarTypesSchema.ParameterTypeUsage> ParameterTypeUsages { get; set; } = null!;

			/// <summary>
			/// parameter_xml_schema_collection_usages (sys.parameter_xml_schema_collection_usages)
			/// </summary>
			[Association(ThisKey="ObjectID", OtherKey="ObjectID", CanBeNull=true)]
			public IList<XmlSchema.ParameterXmlSchemaCollectionUsage> ParameterXmlSchemaCollectionUsages { get; set; } = null!;

			/// <summary>
			/// partitions (sys.partitions)
			/// </summary>
			[Association(ThisKey="ObjectID", OtherKey="ObjectID", CanBeNull=true)]
			public IList<ObjectSchema.Partition> Partitions { get; set; } = null!;

			/// <summary>
			/// pdw_column_distribution_properties (sys.pdw_column_distribution_properties)
			/// </summary>
			[Association(ThisKey="ObjectID", OtherKey="ObjectID", CanBeNull=true)]
			public IList<AzureSynapseAnalyticsSchema.ColumnDistributionProperty> PdwColumnDistributionProperties { get; set; } = null!;

			/// <summary>
			/// pdw_index_mappings (sys.pdw_index_mappings)
			/// </summary>
			[Association(ThisKey="ObjectID", OtherKey="ObjectID", CanBeNull=true)]
			public IList<AzureSynapseAnalyticsSchema.IndexMapping> PdwIndexMappings { get; set; } = null!;

			/// <summary>
			/// pdw_materialized_view_column_distribution_properties (sys.pdw_materialized_view_column_distribution_properties)
			/// </summary>
			[Association(ThisKey="ObjectID", OtherKey="ObjectID", CanBeNull=true)]
			public IList<AzureSynapseAnalyticsSchema.MaterializedViewColumnDistributionProperty> PdwMaterializedViewColumnDistributionProperties { get; set; } = null!;

			/// <summary>
			/// pdw_materialized_view_distribution_properties (sys.pdw_materialized_view_distribution_properties)
			/// </summary>
			[Association(ThisKey="ObjectID", OtherKey="ObjectID", CanBeNull=true)]
			public IList<AzureSynapseAnalyticsSchema.MaterializedViewDistributionProperty> PdwMaterializedViewDistributionProperties { get; set; } = null!;

			/// <summary>
			/// pdw_materialized_view_mappings (sys.pdw_materialized_view_mappings)
			/// </summary>
			[Association(ThisKey="ObjectID", OtherKey="ObjectID", CanBeNull=true)]
			public IList<AzureSynapseAnalyticsSchema.MaterializedViewMapping> PdwMaterializedViewMappings { get; set; } = null!;

			/// <summary>
			/// pdw_nodes_columns (sys.pdw_nodes_columns)
			/// </summary>
			[Association(ThisKey="ObjectID", OtherKey="ObjectID", CanBeNull=true)]
			public IList<AzureSynapseAnalyticsSchema.NodesColumn> PdwNodesColumns { get; set; } = null!;

			/// <summary>
			/// pdw_nodes_column_store_row_groups (sys.pdw_nodes_column_store_row_groups)
			/// </summary>
			[Association(ThisKey="ObjectID", OtherKey="ObjectID", CanBeNull=true)]
			public IList<AzureSynapseAnalyticsSchema.NodesColumnStoreRowGroup> PdwNodesColumnStoreRowGroups { get; set; } = null!;

			/// <summary>
			/// pdw_nodes_indexes (sys.pdw_nodes_indexes)
			/// </summary>
			[Association(ThisKey="ObjectID", OtherKey="ObjectID", CanBeNull=true)]
			public IList<AzureSynapseAnalyticsSchema.NodesIndex> PdwNodesIndexes { get; set; } = null!;

			/// <summary>
			/// pdw_nodes_partitions (sys.pdw_nodes_partitions)
			/// </summary>
			[Association(ThisKey="ObjectID", OtherKey="ObjectID", CanBeNull=true)]
			public IList<AzureSynapseAnalyticsSchema.NodesPartition> PdwNodesPartitions { get; set; } = null!;

			/// <summary>
			/// pdw_nodes_tables (sys.pdw_nodes_tables)
			/// </summary>
			[Association(ThisKey="ObjectID", OtherKey="ObjectID", CanBeNull=true)]
			public IList<AzureSynapseAnalyticsSchema.NodesTable> PdwNodesTables { get; set; } = null!;

			/// <summary>
			/// pdw_permanent_table_mappings (sys.pdw_permanent_table_mappings)
			/// </summary>
			[Association(ThisKey="ObjectID", OtherKey="ObjectID", CanBeNull=true)]
			public IList<AzureSynapseAnalyticsSchema.PermanentTableMapping> PdwPermanentTableMappings { get; set; } = null!;

			/// <summary>
			/// pdw_replicated_table_cache_state (sys.pdw_replicated_table_cache_state)
			/// </summary>
			[Association(ThisKey="ObjectID", OtherKey="ObjectID", CanBeNull=true)]
			public IList<AzureSynapseAnalyticsSchema.ReplicatedTableCacheState> PdwReplicatedTableCacheState { get; set; } = null!;

			/// <summary>
			/// pdw_table_distribution_properties (sys.pdw_table_distribution_properties)
			/// </summary>
			[Association(ThisKey="ObjectID", OtherKey="ObjectID", CanBeNull=true)]
			public IList<AzureSynapseAnalyticsSchema.TableDistributionProperty> PdwTableDistributionProperties { get; set; } = null!;

			/// <summary>
			/// pdw_table_mappings (sys.pdw_table_mappings)
			/// </summary>
			[Association(ThisKey="ObjectID", OtherKey="ObjectID", CanBeNull=true)]
			public IList<AzureSynapseAnalyticsSchema.TableMapping> PdwTableMappings { get; set; } = null!;

			/// <summary>
			/// periods (sys.periods)
			/// </summary>
			[Association(ThisKey="ObjectID", OtherKey="ObjectID", CanBeNull=true)]
			public IList<ObjectSchema.Period> Periods { get; set; } = null!;

			/// <summary>
			/// procedures (sys.procedures)
			/// </summary>
			[Association(ThisKey="ObjectID", OtherKey="ObjectID", CanBeNull=true)]
			public IList<ObjectSchema.Procedure> Procedures { get; set; } = null!;

			/// <summary>
			/// query_store_query (sys.query_store_query)
			/// </summary>
			[Association(ThisKey="ObjectID", OtherKey="ObjectID", CanBeNull=true)]
			public IList<QueryStoreSchema.QueryStoreQuery> QueryStoreQuery { get; set; } = null!;

			/// <summary>
			/// remote_data_archive_tables (sys.remote_data_archive_tables)
			/// </summary>
			[Association(ThisKey="ObjectID", OtherKey="ObjectID", CanBeNull=true)]
			public IList<StretchDatabaseSchema.RemoteDataArchiveTable> RemoteDataArchiveTables { get; set; } = null!;

			/// <summary>
			/// security_policies (sys.security_policies)
			/// </summary>
			[Association(ThisKey="ObjectID", OtherKey="ObjectID", CanBeNull=true)]
			public IList<SecuritySchema.SecurityPolicy> SecurityPolicies { get; set; } = null!;

			/// <summary>
			/// security_predicates (sys.security_predicates)
			/// </summary>
			[Association(ThisKey="ObjectID", OtherKey="ObjectID", CanBeNull=true)]
			public IList<SecuritySchema.SecurityPredicate> SecurityPredicates { get; set; } = null!;

			/// <summary>
			/// selective_xml_index_paths (sys.selective_xml_index_paths)
			/// </summary>
			[Association(ThisKey="ObjectID", OtherKey="ObjectID", CanBeNull=true)]
			public IList<XmlSchema.SelectiveXmlIndexPath> SelectiveXmlIndexPaths { get; set; } = null!;

			/// <summary>
			/// sequences (sys.sequences)
			/// </summary>
			[Association(ThisKey="ObjectID", OtherKey="ObjectID", CanBeNull=true)]
			public IList<ObjectSchema.Sequence> Sequences { get; set; } = null!;

			/// <summary>
			/// server_assembly_modules (sys.server_assembly_modules)
			/// </summary>
			[Association(ThisKey="ObjectID", OtherKey="ObjectID", CanBeNull=true)]
			public IList<ObjectSchema.ServerAssemblyModule> ServerAssemblyModules { get; set; } = null!;

			/// <summary>
			/// server_event_notifications (sys.server_event_notifications)
			/// </summary>
			[Association(ThisKey="ObjectID", OtherKey="ObjectID", CanBeNull=true)]
			public IList<ObjectSchema.ServerEventNotification> ServerEventNotifications { get; set; } = null!;

			/// <summary>
			/// server_events (sys.server_events)
			/// </summary>
			[Association(ThisKey="ObjectID", OtherKey="ObjectID", CanBeNull=true)]
			public IList<ObjectSchema.ServerEvent> ServerEvents { get; set; } = null!;

			/// <summary>
			/// server_event_session_fields (sys.server_event_session_fields)
			/// </summary>
			[Association(ThisKey="ObjectID", OtherKey="ObjectID", CanBeNull=true)]
			public IList<ExtendedEventsSchema.ServerEventSessionField> ServerEventSessionFields { get; set; } = null!;

			/// <summary>
			/// server_sql_modules (sys.server_sql_modules)
			/// </summary>
			[Association(ThisKey="ObjectID", OtherKey="ObjectID", CanBeNull=true)]
			public IList<ObjectSchema.ServerSqlModule> ServerSqlModules { get; set; } = null!;

			/// <summary>
			/// server_triggers (sys.server_triggers)
			/// </summary>
			[Association(ThisKey="ObjectID", OtherKey="ObjectID", CanBeNull=true)]
			public IList<ObjectSchema.ServerTrigger> ServerTriggers { get; set; } = null!;

			/// <summary>
			/// service_queues (sys.service_queues)
			/// </summary>
			[Association(ThisKey="ObjectID", OtherKey="ObjectID", CanBeNull=true)]
			public ServiceBrokerSchema.ServiceQueue? ServiceQueue { get; set; }

			/// <summary>
			/// spatial_indexes (sys.spatial_indexes)
			/// </summary>
			[Association(ThisKey="ObjectID", OtherKey="ObjectID", CanBeNull=true)]
			public IList<SpatialDataSchema.SpatialIndex> SpatialIndexes { get; set; } = null!;

			/// <summary>
			/// spatial_index_tessellations (sys.spatial_index_tessellations)
			/// </summary>
			[Association(ThisKey="ObjectID", OtherKey="ObjectID", CanBeNull=true)]
			public IList<SpatialDataSchema.SpatialIndexTessellation> SpatialIndexTessellations { get; set; } = null!;

			/// <summary>
			/// sql_dependencies (sys.sql_dependencies)
			/// </summary>
			[Association(ThisKey="ObjectID", OtherKey="ObjectID", CanBeNull=true)]
			public IList<ObjectSchema.SqlDependency> SqlDependencies { get; set; } = null!;

			/// <summary>
			/// sql_modules (sys.sql_modules)
			/// </summary>
			[Association(ThisKey="ObjectID", OtherKey="ObjectID", CanBeNull=true)]
			public IList<ObjectSchema.SqlModule> SqlModules { get; set; } = null!;

			/// <summary>
			/// stats (sys.stats)
			/// </summary>
			[Association(ThisKey="ObjectID", OtherKey="ObjectID", CanBeNull=true)]
			public IList<ObjectSchema.Stat> Stats { get; set; } = null!;

			/// <summary>
			/// stats_columns (sys.stats_columns)
			/// </summary>
			[Association(ThisKey="ObjectID", OtherKey="ObjectID", CanBeNull=true)]
			public IList<ObjectSchema.StatsColumn> StatsColumns { get; set; } = null!;

			/// <summary>
			/// synonyms (sys.synonyms)
			/// </summary>
			[Association(ThisKey="ObjectID", OtherKey="ObjectID", CanBeNull=true)]
			public ObjectSchema.Synonym? Synonym { get; set; }

			/// <summary>
			/// tables (sys.tables)
			/// </summary>
			[Association(ThisKey="ObjectID", OtherKey="ObjectID", CanBeNull=true)]
			public ObjectSchema.Table? Table { get; set; }

			/// <summary>
			/// trigger_events (sys.trigger_events)
			/// </summary>
			[Association(ThisKey="ObjectID", OtherKey="ObjectID", CanBeNull=true)]
			public IList<ObjectSchema.TriggerEvent> TriggerEvents { get; set; } = null!;

			/// <summary>
			/// triggers (sys.triggers)
			/// </summary>
			[Association(ThisKey="ObjectID", OtherKey="ObjectID", CanBeNull=true)]
			public IList<ObjectSchema.Trigger> Triggers { get; set; } = null!;

			/// <summary>
			/// views (sys.views)
			/// </summary>
			[Association(ThisKey="ObjectID", OtherKey="ObjectID", CanBeNull=true)]
			public ObjectSchema.View? View { get; set; }

			/// <summary>
			/// xml_indexes (sys.xml_indexes)
			/// </summary>
			[Association(ThisKey="ObjectID", OtherKey="ObjectID", CanBeNull=true)]
			public IList<XmlSchema.XmlIndex> XmlIndexes { get; set; } = null!;

			#endregion
		}

		/// <summary>
		/// <para><strong>sys.parameters (Transact-SQL)</strong></para>
		/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions) √ Azure SQL Database √ Azure SQL Managed Instance √ Azure Synapse Analytics √ Analytics Platform System (PDW)</para>
		/// <para>Contains a row for each parameter of an object that accepts parameters. If the object is a scalar function, there is also a single row describing the return value. That row will have a <strong>parameter_id</strong> value of 0.</para><br/>
		/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-parameters-transact-sql'>sys.parameters</a>.</para>
		/// </summary>
		[Table(Schema="sys", Name="parameters", IsView=true)]
		public partial class Parameter
		{
			/// <summary>
			/// ID of the object to which this parameter belongs.
			/// </summary>
			[Column("object_id"),                           NotNull    ] public int     ObjectID                        { get; set; } // int
			/// <summary>
			/// Name of the parameter. Is unique within the object.<br/><br/> If the object is a scalar function, the parameter name is an empty string in the row representing the return value.
			/// </summary>
			[Column("name"),                                   Nullable] public string? Name                            { get; set; } // sysname
			/// <summary>
			/// ID of the parameter. Is unique within the object.<br/><br/> If the object is a scalar function, <strong>parameter_id</strong> = 0 represents the return value.
			/// </summary>
			[Column("parameter_id"),                        NotNull    ] public int     ParameterID                     { get; set; } // int
			/// <summary>
			/// ID of the system type of the parameter.
			/// </summary>
			[Column("system_type_id"),                      NotNull    ] public byte    SystemTypeID                    { get; set; } // tinyint
			/// <summary>
			/// ID of the type of the parameter as defined by the user.<br/><br/> To return the name of the type, join to the <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-types-transact-sql'>sys.types</a> catalog view on this column.
			/// </summary>
			[Column("user_type_id"),                        NotNull    ] public int     UserTypeID                      { get; set; } // int
			/// <summary>
			/// Maximum length of the parameter, in bytes.<br/><br/> Value = -1 when the column data type is <strong>varchar(max)</strong>, <strong>nvarchar(max)</strong>, <strong>varbinary(max)</strong>, or <strong>xml</strong>.
			/// </summary>
			[Column("max_length"),                          NotNull    ] public short   MaxLength                       { get; set; } // smallint
			/// <summary>
			/// Precision of the parameter if numeric-based; otherwise, 0.
			/// </summary>
			[Column("precision"),                           NotNull    ] public byte    Precision                       { get; set; } // tinyint
			/// <summary>
			/// Scale of the parameter if numeric-based; otherwise, 0.
			/// </summary>
			[Column("scale"),                               NotNull    ] public byte    Scale                           { get; set; } // tinyint
			/// <summary>
			/// 1 = Parameter is OUTPUT or RETURN; otherwise, 0.
			/// </summary>
			[Column("is_output"),                           NotNull    ] public bool    IsOutput                        { get; set; } // bit
			/// <summary>
			/// 1 = Parameter is a cursor-reference parameter.
			/// </summary>
			[Column("is_cursor_ref"),                       NotNull    ] public bool    IsCursorRef                     { get; set; } // bit
			/// <summary>
			/// 1 = Parameter has default value.<br/><br/> SQL Server only maintains default values for CLR objects in this catalog view; therefore, this column has a value of 0 for Transact\-SQL objects. To view the default value of a parameter in a Transact\-SQL object, query the <strong>definition</strong> column of the <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-sql-modules-transact-sql'>sys.sql_modules</a> catalog view, or use the <a href='https://docs.microsoft.com/en-us/sql/t-sql/functions/object-definition-transact-sql'>OBJECT_DEFINITION</a> system function.
			/// </summary>
			[Column("has_default_value"),                   NotNull    ] public bool    HasDefaultValue                 { get; set; } // bit
			/// <summary>
			/// 1 = Content is a complete XML document.<br/><br/> 0 = Content is a document fragment, or the data type of the column is not <strong>xml</strong>.
			/// </summary>
			[Column("is_xml_document"),                     NotNull    ] public bool    IsXmlDocument                   { get; set; } // bit
			/// <summary>
			/// If <strong>has_default_value</strong> is 1, the value of this column is the value of the default for the parameter; otherwise <c>NULL</c>.
			/// </summary>
			[Column("default_value"),                          Nullable] public object? DefaultValue                    { get; set; } // sql_variant
			/// <summary>
			/// Non-zero if the data type of the parameter is <strong>xml</strong> and the XML is typed. The value is the ID of the collection containing the validating XML schema namespace of the parameter.<br/><br/> 0 = No XML schema collection.
			/// </summary>
			[Column("xml_collection_id"),                   NotNull    ] public int     XmlCollectionID                 { get; set; } // int
			/// <summary>
			/// 1 = Parameter is  READONLY; otherwise, 0.
			/// </summary>
			[Column("is_readonly"),                         NotNull    ] public bool    IsReadonly                      { get; set; } // bit
			/// <summary>
			/// 1 = Parameter is nullable. (the default).<br/><br/> 0 = Parameter is not nullable, for more efficient execution of natively-compiled stored procedures.
			/// </summary>
			[Column("is_nullable"),                            Nullable] public bool?   IsNullable                      { get; set; } // bit
			/// <summary>
			/// <strong>Applies to</strong>: SQL Server 2016 (13.x) and later, SQL Database.<br/><br/> Encryption type:<br/><br/> 1 = Deterministic encryption<br/><br/> 2 = Randomized encryption
			/// </summary>
			[Column("encryption_type"),                        Nullable] public int?    EncryptionType                  { get; set; } // int
			/// <summary>
			/// <strong>Applies to</strong>: SQL Server 2016 (13.x) and later, SQL Database.<br/><br/> Encryption type description:<br/><br/> RANDOMIZED<br/><br/> DETERMINISTIC
			/// </summary>
			[Column("encryption_type_desc"),                   Nullable] public string? EncryptionTypeDesc              { get; set; } // nvarchar(64)
			/// <summary>
			/// <strong>Applies to</strong>: SQL Server 2016 (13.x) and later, SQL Database.<br/><br/> Name of encryption algorithm.<br/><br/> Only AEAD_AES_256_CBC_HMAC_SHA_512 is supported.
			/// </summary>
			[Column("encryption_algorithm_name"),              Nullable] public string? EncryptionAlgorithmName         { get; set; } // sysname
			/// <summary>
			/// <strong>Applies to</strong>: SQL Server 2016 (13.x) and later, SQL Database.<br/><br/> ID of the CEK.
			/// </summary>
			[Column("column_encryption_key_id"),               Nullable] public int?    ColumnEncryptionKeyID           { get; set; } // int
			/// <summary>
			/// <strong>Applies to</strong>: SQL Server 2016 (13.x) and later, SQL Database.<br/><br/> The name of the database where the column encryption key exists if different than the database of the column. Is <c>NULL</c> if the key exists in the same database as the column.
			/// </summary>
			[Column("column_encryption_key_database_name"),    Nullable] public string? ColumnEncryptionKeyDatabaseName { get; set; } // sysname

			#region Associations

			/// <summary>
			/// objects (sys.objects)
			/// </summary>
			[Association(ThisKey="ObjectID", OtherKey="ObjectID", CanBeNull=false)]
			public ObjectSchema.Object Object { get; set; } = null!;

			#endregion
		}

		/// <summary>
		/// <para><strong>sys.partitions (Transact-SQL)</strong></para>
		/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions) √ Azure SQL Database √ Azure SQL Managed Instance √ Azure Synapse Analytics √ Analytics Platform System (PDW)</para>
		/// <para>Contains a row for each partition of all the tables and most types of indexes in the database. Special index types such as Full-Text, Spatial, and XML are not included in this view. All tables and indexes in SQL Server contain at least one partition, whether or not they are explicitly partitioned.</para><br/>
		/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-partitions-transact-sql'>sys.partitions</a>.</para>
		/// </summary>
		[Table(Schema="sys", Name="partitions", IsView=true)]
		public partial class Partition
		{
			/// <summary>
			/// Indicates the partition ID. Is unique within a database.
			/// </summary>
			[Column("partition_id"),            NotNull    ] public long    PartitionID           { get; set; } // bigint
			/// <summary>
			/// Indicates the ID of the object to which this partition belongs. Every table or view is composed of at least one partition.
			/// </summary>
			[Column("object_id"),               NotNull    ] public int     ObjectID              { get; set; } // int
			/// <summary>
			/// Indicates the ID of the index within the object to which this partition belongs.<br/><br/> 0 = heap<br/>1 = clustered index<br/>2 or greater = nonclustered index
			/// </summary>
			[Column("index_id"),                NotNull    ] public int     IndexID               { get; set; } // int
			/// <summary>
			/// Is a 1-based partition number within the owning index or heap. For non-partitioned tables and indexes, the value of this column is 1.
			/// </summary>
			[Column("partition_number"),        NotNull    ] public int     PartitionNumber       { get; set; } // int
			/// <summary>
			/// Indicates the ID of the data heap or B-tree (HoBT) that contains the rows for this partition.
			/// </summary>
			[Column("hobt_id"),                 NotNull    ] public long    HoBTID                { get; set; } // bigint
			/// <summary>
			/// Indicates the approximate number of rows in this partition.
			/// </summary>
			[Column("rows"),                       Nullable] public long?   Rows                  { get; set; } // bigint
			/// <summary>
			/// <strong>Applies to</strong>: SQL Server 2012 (11.x) and later.<br/><br/> Indicates the ID of the FILESTREAM filegroup stored on this partition.
			/// </summary>
			[Column("filestream_filegroup_id"), NotNull    ] public short   FilestreamFileGroupID { get; set; } // smallint
			/// <summary>
			/// Indicates the state of compression for each partition:<br/><br/> 0 = NONE <br/>1 = ROW <br/>2 = PAGE <br/>3 = COLUMNSTORE : <strong>Applies to</strong>: SQL Server 2012 (11.x) and later<br/>4 = COLUMNSTORE_ARCHIVE : <strong>Applies to</strong>: SQL Server 2014 (12.x) and later<br/><br/> <strong>Note:</strong> Full text indexes will be compressed in any edition of SQL Server.
			/// </summary>
			[Column("data_compression"),        NotNull    ] public byte    DataCompression       { get; set; } // tinyint
			/// <summary>
			/// Indicates the state of compression for each partition. Possible values for rowstore tables are NONE, ROW, and PAGE. Possible values for columnstore tables are COLUMNSTORE and COLUMNSTORE_ARCHIVE.
			/// </summary>
			[Column("data_compression_desc"),      Nullable] public string? DataCompressionDesc   { get; set; } // nvarchar(60)

			#region Associations

			/// <summary>
			/// objects (sys.objects)
			/// </summary>
			[Association(ThisKey="ObjectID", OtherKey="ObjectID", CanBeNull=false)]
			public ObjectSchema.Object Object { get; set; } = null!;

			#endregion
		}

		/// <summary>
		/// <para><strong>sys.periods (Transact-SQL)</strong></para>
		/// <para><strong>Applies to:</strong> √ SQL Server 2016 (13.x) and later</para>
		/// <para>Returns a row for each table for which periods have been defined.</para><br/>
		/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-periods-transact-sql'>sys.periods</a>.</para>
		/// </summary>
		[Table(Schema="sys", Name="periods", IsView=true)]
		public partial class Period
		{
			/// <summary>
			/// Name of the period
			/// </summary>
			[Column("name"),                Nullable] public string? Name           { get; set; } // sysname
			/// <summary>
			/// The numeric value representing the type of period:<br/><br/> 1 = system-time period
			/// </summary>
			[Column("period_type"),         Nullable] public byte?   PeriodType     { get; set; } // tinyint
			/// <summary>
			/// The text description of the type of column:<br/><br/> SYSTEM_TIME_PERIOD
			/// </summary>
			[Column("period_type_desc"),    Nullable] public string? PeriodTypeDesc { get; set; } // nvarchar(60)
			/// <summary>
			/// The id of the table containing the period_type column
			/// </summary>
			[Column("object_id"),        NotNull    ] public int     ObjectID       { get; set; } // int
			/// <summary>
			/// The id of the column that defines the lower period boundary
			/// </summary>
			[Column("start_column_id"),  NotNull    ] public int     StartColumnID  { get; set; } // int
			/// <summary>
			/// The id of the column that defines the upper period boundary
			/// </summary>
			[Column("end_column_id"),    NotNull    ] public int     EndColumnID    { get; set; } // int

			#region Associations

			/// <summary>
			/// objects (sys.objects)
			/// </summary>
			[Association(ThisKey="ObjectID", OtherKey="ObjectID", CanBeNull=false)]
			public ObjectSchema.Object Object { get; set; } = null!;

			#endregion
		}

		/// <summary>
		/// <para><strong>sys.plan_guides (Transact-SQL)</strong></para>
		/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)  √ Azure SQL Database</para>
		/// <para>Contains a row for each plan guide in the database.</para><br/>
		/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-plan-guides-transact-sql'>sys.plan_guides</a>.</para>
		/// </summary>
		[Table(Schema="sys", Name="plan_guides", IsView=true)]
		public partial class PlanGuide
		{
			/// <summary>
			/// Unique identifier of the plan guide in the database.
			/// </summary>
			[Column("plan_guide_id"),   NotNull    ] public int      PlanGuideID   { get; set; } // int
			/// <summary>
			/// Name of the plan guide.
			/// </summary>
			[Column("name"),            NotNull    ] public string   Name          { get; set; } = null!; // sysname
			/// <summary>
			/// Date and time the plan guide was created.
			/// </summary>
			[Column("create_date"),     NotNull    ] public DateTime CreateDate    { get; set; } // datetime
			/// <summary>
			/// Date the plan guide was last modified.
			/// </summary>
			[Column("modify_date"),     NotNull    ] public object   ModifyDate    { get; set; } = null!; // Datetime
			/// <summary>
			/// 1 = Plan guide is disabled.<br/><br/> 0 = Plan guide is enabled.
			/// </summary>
			[Column("is_disabled"),     NotNull    ] public bool     IsDisabled    { get; set; } // bit
			/// <summary>
			/// Text of the query on which the plan guide is created.
			/// </summary>
			[Column("query_text"),         Nullable] public string?  QueryText     { get; set; } // nvarchar(max)
			/// <summary>
			/// Identifies the scope of the plan guide.<br/><br/> 1 = OBJECT<br/><br/> 2 = SQL<br/><br/> 3 = TEMPLATE
			/// </summary>
			[Column("scope_type"),      NotNull    ] public byte     ScopeType     { get; set; } // tinyint
			/// <summary>
			/// Description of scope of the plan guide.<br/><br/> OBJECT<br/><br/> SQL<br/><br/> TEMPLATE
			/// </summary>
			[Column("scope_type_desc"),    Nullable] public string?  ScopeTypeDesc { get; set; } // nvarchar(60)
			/// <summary>
			/// object_id of the object defining the scope of the plan guide, if the scope is OBJECT.<br/><br/> NULL if the plan guide is not scoped to OBJECT.
			/// </summary>
			[Column("scope_object_id"),    Nullable] public object?  ScopeObjectID { get; set; } // Int
			/// <summary>
			/// Batch text, if <strong>scope_type</strong> is SQL.<br/><br/> NULL if batch type is not SQL.<br/><br/> If NULL and <strong>scope_type</strong> is SQL, the value of <strong>query_text</strong> applies.
			/// </summary>
			[Column("scope_batch"),        Nullable] public string?  ScopeBatch    { get; set; } // nvarchar(max)
			/// <summary>
			/// The string defining the list of parameters associated with the plan guide.<br/><br/> NULL = No parameter list is associated with the plan guide.
			/// </summary>
			[Column("parameters"),         Nullable] public string?  Parameters    { get; set; } // nvarchar(max)
			/// <summary>
			/// The OPTION clause hints associated with the plan guide.
			/// </summary>
			[Column("hints"),              Nullable] public string?  Hints         { get; set; } // nvarchar(max)
		}

		/// <summary>
		/// <para><strong>sys.procedures (Transact-SQL)</strong></para>
		/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions) √ Azure SQL Database √ Azure SQL Managed Instance √ Azure Synapse Analytics √ Analytics Platform System (PDW)</para>
		/// <para>Contains a row for each object that is a procedure of some kind, with <strong>sys.objects.type</strong> = P, X, RF, and PC.</para><br/>
		/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-procedures-transact-sql'>sys.procedures</a>.</para>
		/// </summary>
		[Table(Schema="sys", Name="procedures", IsView=true)]
		public partial class Procedure
		{
			/// <summary>
			/// Object name.
			/// </summary>
			[Column("name"),                      NotNull    ] public string   Name                   { get; set; } = null!; // sysname
			/// <summary>
			/// Object identification number. Is unique within a database.
			/// </summary>
			[Column("object_id"),                 NotNull    ] public int      ObjectID               { get; set; } // int
			/// <summary>
			/// ID of the individual owner, if different from the schema owner. By default, schema-contained objects are owned by the schema owner. However, an alternate owner can be specified by using the ALTER AUTHORIZATION statement to change ownership.<br/><br/> Is NULL if there is no alternate individual owner.<br/><br/> Is NULL if the object type is one of the following:<br/><br/> C = CHECK constraint<br/><br/> D = DEFAULT (constraint or stand-alone)<br/><br/> F = FOREIGN KEY constraint<br/><br/> PK = PRIMARY KEY constraint<br/><br/> R = Rule (old-style, stand-alone)<br/><br/> TA = Assembly (CLR-integration) trigger<br/><br/> TR = SQL trigger<br/><br/> UQ = UNIQUE constraint<br/><br/> EC = Edge constraint
			/// </summary>
			[Column("principal_id"),                 Nullable] public int?     PrincipalID            { get; set; } // int
			/// <summary>
			/// ID of the schema that the object is contained in.<br/><br/> Schema-scoped system objects are always contained in the sys or INFORMATION_SCHEMA schemas.
			/// </summary>
			[Column("schema_id"),                 NotNull    ] public int      SchemaID               { get; set; } // int
			/// <summary>
			/// ID of the object to which this object belongs.<br/><br/> 0 = Not a child object.
			/// </summary>
			[Column("parent_object_id"),          NotNull    ] public int      ParentObjectID         { get; set; } // int
			/// <summary>
			/// Object type:<br/><br/> AF = Aggregate function (CLR)<br/><br/> C = CHECK constraint<br/><br/> D = DEFAULT (constraint or stand-alone)<br/><br/> F = FOREIGN KEY constraint<br/><br/> FN = SQL scalar function<br/><br/> FS = Assembly (CLR) scalar-function<br/><br/> FT = Assembly (CLR) table-valued function<br/><br/> IF = SQL inline table-valued function<br/><br/> IT = Internal table<br/><br/> P = SQL Stored Procedure<br/><br/> PC = Assembly (CLR) stored-procedure<br/><br/> PG = Plan guide<br/><br/> PK = PRIMARY KEY constraint<br/><br/> R = Rule (old-style, stand-alone)<br/><br/> RF = Replication-filter-procedure<br/><br/> S = System base table<br/><br/> SN = Synonym<br/><br/> SO = Sequence object<br/><br/> U = Table (user-defined)<br/><br/> V = View<br/><br/> EC = Edge constraint <br/><br/> <br/><br/> <strong>Applies to</strong>: SQL Server 2012 (11.x) and later.<br/><br/> SQ = Service queue<br/><br/> TA = Assembly (CLR) DML trigger<br/><br/> TF = SQL table-valued-function<br/><br/> TR = SQL DML trigger<br/><br/> TT = Table type<br/><br/> UQ = UNIQUE constraint<br/><br/> X = Extended stored procedure<br/><br/> <br/><br/> <strong>Applies to</strong>: SQL Server 2014 (12.x) and later, Azure SQL Database, Azure Synapse Analytics, Analytics Platform System (PDW).<br/><br/> ST = STATS_TREE<br/><br/> <br/><br/> <strong>Applies to</strong>: SQL Server 2016 (13.x) and later, Azure SQL Database, Azure Synapse Analytics, Analytics Platform System (PDW).<br/><br/> ET = External Table
			/// </summary>
			[Column("type"),                         Nullable] public string?  TypeColumn             { get; set; } // char(2)
			/// <summary>
			/// Description of the object type:<br/><br/> AGGREGATE_FUNCTION<br/><br/> CHECK_CONSTRAINT<br/><br/> CLR_SCALAR_FUNCTION<br/><br/> CLR_STORED_PROCEDURE<br/><br/> CLR_TABLE_VALUED_FUNCTION<br/><br/> CLR_TRIGGER<br/><br/> DEFAULT_CONSTRAINT<br/><br/> EXTENDED_STORED_PROCEDURE<br/><br/> FOREIGN_KEY_CONSTRAINT<br/><br/> INTERNAL_TABLE<br/><br/> PLAN_GUIDE<br/><br/> PRIMARY_KEY_CONSTRAINT<br/><br/> REPLICATION_FILTER_PROCEDURE<br/><br/> RULE<br/><br/> SEQUENCE_OBJECT<br/><br/> <br/><br/> <strong>Applies to</strong>: SQL Server 2012 (11.x) and later.<br/><br/>  SERVICE_QUEUE<br/><br/> SQL_INLINE_TABLE_VALUED_FUNCTION<br/><br/> SQL_SCALAR_FUNCTION<br/><br/> SQL_STORED_PROCEDURE<br/><br/> SQL_TABLE_VALUED_FUNCTION<br/><br/> SQL_TRIGGER<br/><br/> SYNONYM<br/><br/> SYSTEM_TABLE<br/><br/> TABLE_TYPE<br/><br/> UNIQUE_CONSTRAINT<br/><br/> USER_TABLE<br/><br/> VIEW
			/// </summary>
			[Column("type_desc"),                    Nullable] public string?  TypeDesc               { get; set; } // nvarchar(60)
			/// <summary>
			/// Date the object was created.
			/// </summary>
			[Column("create_date"),               NotNull    ] public DateTime CreateDate             { get; set; } // datetime
			/// <summary>
			/// Date the object was last modified by using an ALTER statement. If the object is a table or a view, modify_date also changes when an index on the table or view is created or altered.
			/// </summary>
			[Column("modify_date"),               NotNull    ] public DateTime ModifyDate             { get; set; } // datetime
			/// <summary>
			/// Object is created by an internal SQL Server component.
			/// </summary>
			[Column("is_ms_shipped"),             NotNull    ] public bool     IsMSShipped            { get; set; } // bit
			/// <summary>
			/// Object is published.
			/// </summary>
			[Column("is_published"),              NotNull    ] public bool     IsPublished            { get; set; } // bit
			/// <summary>
			/// Only the schema of the object is published.
			/// </summary>
			[Column("is_schema_published"),       NotNull    ] public bool     IsSchemaPublished      { get; set; } // bit
			/// <summary>
			/// 1 = Procedure is auto-executed at the server startup; otherwise, 0. Can only be set for procedures in the master database.
			/// </summary>
			[Column("is_auto_executed"),          NotNull    ] public bool     IsAutoExecuted         { get; set; } // bit
			/// <summary>
			/// Execution of this procedure is replicated.
			/// </summary>
			[Column("is_execution_replicated"),      Nullable] public bool?    IsExecutionReplicated  { get; set; } // bit
			/// <summary>
			/// Replication of the procedure execution is done only when the transaction can be serialized.
			/// </summary>
			[Column("is_repl_serializable_only"),    Nullable] public bool?    IsReplSerializableOnly { get; set; } // bit
			/// <summary>
			/// During execution, the procedure skips constraints marked NOT FOR REPLICATION.
			/// </summary>
			[Column("skips_repl_constraints"),       Nullable] public bool?    SkipsReplConstraints   { get; set; } // bit

			#region Associations

			/// <summary>
			/// objects (sys.objects)
			/// </summary>
			[Association(ThisKey="ObjectID", OtherKey="ObjectID", CanBeNull=false)]
			public ObjectSchema.Object Object { get; set; } = null!;

			#endregion
		}

		/// <summary>
		/// <para><strong>sys.sequences (Transact-SQL)</strong></para>
		/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)  √ Azure SQL Database</para>
		/// <para>Contains a row for each sequence object in a database.</para><br/>
		/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-sequences-transact-sql'>sys.sequences</a>.</para>
		/// </summary>
		[Table(Schema="sys", Name="sequences", IsView=true)]
		public partial class Sequence
		{
			/// <summary>
			/// Object name.
			/// </summary>
			[Column("name"),                NotNull    ] public string   Name              { get; set; } = null!; // sysname
			/// <summary>
			/// Object identification number. Is unique within a database.
			/// </summary>
			[Column("object_id"),           NotNull    ] public int      ObjectID          { get; set; } // int
			/// <summary>
			/// ID of the individual owner, if different from the schema owner. By default, schema-contained objects are owned by the schema owner. However, an alternate owner can be specified by using the ALTER AUTHORIZATION statement to change ownership.<br/><br/> Is NULL if there is no alternate individual owner.<br/><br/> Is NULL if the object type is one of the following:<br/><br/> C = CHECK constraint<br/><br/> D = DEFAULT (constraint or stand-alone)<br/><br/> F = FOREIGN KEY constraint<br/><br/> PK = PRIMARY KEY constraint<br/><br/> R = Rule (old-style, stand-alone)<br/><br/> TA = Assembly (CLR-integration) trigger<br/><br/> TR = SQL trigger<br/><br/> UQ = UNIQUE constraint<br/><br/> EC = Edge constraint
			/// </summary>
			[Column("principal_id"),           Nullable] public int?     PrincipalID       { get; set; } // int
			/// <summary>
			/// ID of the schema that the object is contained in.<br/><br/> Schema-scoped system objects are always contained in the sys or INFORMATION_SCHEMA schemas.
			/// </summary>
			[Column("schema_id"),           NotNull    ] public int      SchemaID          { get; set; } // int
			/// <summary>
			/// ID of the object to which this object belongs.<br/><br/> 0 = Not a child object.
			/// </summary>
			[Column("parent_object_id"),    NotNull    ] public int      ParentObjectID    { get; set; } // int
			/// <summary>
			/// Object type:<br/><br/> AF = Aggregate function (CLR)<br/><br/> C = CHECK constraint<br/><br/> D = DEFAULT (constraint or stand-alone)<br/><br/> F = FOREIGN KEY constraint<br/><br/> FN = SQL scalar function<br/><br/> FS = Assembly (CLR) scalar-function<br/><br/> FT = Assembly (CLR) table-valued function<br/><br/> IF = SQL inline table-valued function<br/><br/> IT = Internal table<br/><br/> P = SQL Stored Procedure<br/><br/> PC = Assembly (CLR) stored-procedure<br/><br/> PG = Plan guide<br/><br/> PK = PRIMARY KEY constraint<br/><br/> R = Rule (old-style, stand-alone)<br/><br/> RF = Replication-filter-procedure<br/><br/> S = System base table<br/><br/> SN = Synonym<br/><br/> SO = Sequence object<br/><br/> U = Table (user-defined)<br/><br/> V = View<br/><br/> EC = Edge constraint <br/><br/> <br/><br/> <strong>Applies to</strong>: SQL Server 2012 (11.x) and later.<br/><br/> SQ = Service queue<br/><br/> TA = Assembly (CLR) DML trigger<br/><br/> TF = SQL table-valued-function<br/><br/> TR = SQL DML trigger<br/><br/> TT = Table type<br/><br/> UQ = UNIQUE constraint<br/><br/> X = Extended stored procedure<br/><br/> <br/><br/> <strong>Applies to</strong>: SQL Server 2014 (12.x) and later, Azure SQL Database, Azure Synapse Analytics, Analytics Platform System (PDW).<br/><br/> ST = STATS_TREE<br/><br/> <br/><br/> <strong>Applies to</strong>: SQL Server 2016 (13.x) and later, Azure SQL Database, Azure Synapse Analytics, Analytics Platform System (PDW).<br/><br/> ET = External Table
			/// </summary>
			[Column("type"),                   Nullable] public string?  TypeColumn        { get; set; } // char(2)
			/// <summary>
			/// Description of the object type:<br/><br/> AGGREGATE_FUNCTION<br/><br/> CHECK_CONSTRAINT<br/><br/> CLR_SCALAR_FUNCTION<br/><br/> CLR_STORED_PROCEDURE<br/><br/> CLR_TABLE_VALUED_FUNCTION<br/><br/> CLR_TRIGGER<br/><br/> DEFAULT_CONSTRAINT<br/><br/> EXTENDED_STORED_PROCEDURE<br/><br/> FOREIGN_KEY_CONSTRAINT<br/><br/> INTERNAL_TABLE<br/><br/> PLAN_GUIDE<br/><br/> PRIMARY_KEY_CONSTRAINT<br/><br/> REPLICATION_FILTER_PROCEDURE<br/><br/> RULE<br/><br/> SEQUENCE_OBJECT<br/><br/> <br/><br/> <strong>Applies to</strong>: SQL Server 2012 (11.x) and later.<br/><br/>  SERVICE_QUEUE<br/><br/> SQL_INLINE_TABLE_VALUED_FUNCTION<br/><br/> SQL_SCALAR_FUNCTION<br/><br/> SQL_STORED_PROCEDURE<br/><br/> SQL_TABLE_VALUED_FUNCTION<br/><br/> SQL_TRIGGER<br/><br/> SYNONYM<br/><br/> SYSTEM_TABLE<br/><br/> TABLE_TYPE<br/><br/> UNIQUE_CONSTRAINT<br/><br/> USER_TABLE<br/><br/> VIEW
			/// </summary>
			[Column("type_desc"),              Nullable] public string?  TypeDesc          { get; set; } // nvarchar(60)
			/// <summary>
			/// Date the object was created.
			/// </summary>
			[Column("create_date"),         NotNull    ] public DateTime CreateDate        { get; set; } // datetime
			/// <summary>
			/// Date the object was last modified by using an ALTER statement. If the object is a table or a view, modify_date also changes when an index on the table or view is created or altered.
			/// </summary>
			[Column("modify_date"),         NotNull    ] public DateTime ModifyDate        { get; set; } // datetime
			/// <summary>
			/// Object is created by an internal SQL Server component.
			/// </summary>
			[Column("is_ms_shipped"),       NotNull    ] public bool     IsMSShipped       { get; set; } // bit
			/// <summary>
			/// Object is published.
			/// </summary>
			[Column("is_published"),        NotNull    ] public bool     IsPublished       { get; set; } // bit
			/// <summary>
			/// Only the schema of the object is published.
			/// </summary>
			[Column("is_schema_published"), NotNull    ] public bool     IsSchemaPublished { get; set; } // bit
			/// <summary>
			/// The starting value for the sequence object. If the sequence object is restarted by using ALTER SEQUENCE it will restart at this value. When the sequence object cycles it proceeds to the <strong>minimum_value</strong> or <strong>maximum_value</strong>, not the <strong>start_value</strong>.
			/// </summary>
			[Column("start_value"),         NotNull    ] public object   StartValue        { get; set; } = null!; // sql_variant NOT NULL
			/// <summary>
			/// The value that is used to increment the sequence object after each generated value.
			/// </summary>
			[Column("increment"),           NotNull    ] public object   Increment         { get; set; } = null!; // sql_variant NOT NULL
			/// <summary>
			/// The minimum value that can be generated by the sequence object. After this value is reached, the sequence object will either return an error when trying to generate more values or restart if the CYCLE option is specified. If no MINVALUE has been specified, this column returns the minimum value supported by the sequence generator's data type.
			/// </summary>
			[Column("minimum_value"),       NotNull    ] public object   MinimumValue      { get; set; } = null!; // sql_variant NULL
			/// <summary>
			/// The maximum value that can be generated by the sequence object. After this value is reached the sequence object will either start returning an error when trying to generate more values or restart if the CYCLE option is specified. If no MAXVALUE has been specified this column returns the maximum value supported by the sequence object's data type.
			/// </summary>
			[Column("maximum_value"),       NotNull    ] public object   MaximumValue      { get; set; } = null!; // sql_variant NULL
			/// <summary>
			/// Returns 0 if NO CYCLE has been specified for the sequence object and 1 if CYCLE has been specified.
			/// </summary>
			[Column("is_cycling"),             Nullable] public object?  IsCycling         { get; set; } // bit NOT NULL
			/// <summary>
			/// Returns 0 if NO CACHE has been specified for the sequence object and 1 if CACHE has been specified.
			/// </summary>
			[Column("is_cached"),              Nullable] public object?  IsCached          { get; set; } // bit NOT NULL
			/// <summary>
			/// Returns the specified cache size for the sequence object. This column contains NULL if the sequence was created with the NO CACHE option or if CACHE was specified without specifying a cache size. If the value specified by the cache size is larger than the maximum number of values that can be returned by the sequence object, that unobtainable cache size is still displayed.
			/// </summary>
			[Column("cache_size"),             Nullable] public object?  CacheSize         { get; set; } // int NULL
			/// <summary>
			/// ID of the system type for sequence object's data type.
			/// </summary>
			[Column("system_type_id"),      NotNull    ] public object   SystemTypeID      { get; set; } = null!; // tinyint NOT NULL
			/// <summary>
			/// ID of the data type for the sequence object as defined by the user.
			/// </summary>
			[Column("user_type_id"),        NotNull    ] public object   UserTypeID        { get; set; } = null!; // int NOT NULL
			/// <summary>
			/// Max precision of the data type.
			/// </summary>
			[Column("precision"),           NotNull    ] public object   Precision         { get; set; } = null!; // tinyint NOT NULL
			/// <summary>
			/// Max scale of the type. Scale is returned together with precision to give users complete metadata. Scale is always 0 for sequence objects because only integer types are allowed.
			/// </summary>
			[Column("scale"),                  Nullable] public object?  Scale             { get; set; } // tinyint NOT NULL
			/// <summary>
			/// The last value obligated. That is, the value returned from the most recent execution of the NEXT VALUE FOR function or the last value from executing the <strong>sp_sequence_get_range</strong> procedure. Returns the START WITH value if the sequence has never been used.
			/// </summary>
			[Column("current_value"),       NotNull    ] public object   CurrentValue      { get; set; } = null!; // sql_variant NOT NULL
			/// <summary>
			/// 0 indicates that more values can be generated from the sequence. 1 indicates that the sequence object has reached the MAXVALUE parameter and the sequence is not set to CYCLE. The NEXT VALUE FOR function returns an error until the sequence is restarted by using ALTER SEQUENCE.
			/// </summary>
			[Column("is_exhausted"),        NotNull    ] public object   IsExhausted       { get; set; } = null!; // bit NOT NULL
			/// <summary>
			/// Returns the last value generated by the <a href='https://docs.microsoft.com/en-us/sql/t-sql/functions/next-value-for-transact-sql'>Next Value For</a> function. Applies to SQL Server 2017 and later.
			/// </summary>
			[Column("last_used_value"),        Nullable] public object?  LastUsedValue     { get; set; } // sql_variant NULL

			#region Associations

			/// <summary>
			/// objects (sys.objects)
			/// </summary>
			[Association(ThisKey="ObjectID", OtherKey="ObjectID", CanBeNull=false)]
			public ObjectSchema.Object Object { get; set; } = null!;

			#endregion
		}

		/// <summary>
		/// <para><strong>sys.server_assembly_modules (Transact-SQL)</strong></para>
		/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)</para>
		/// <para>Contains one row for each assembly module for the server-level triggers of type TA. This view maps assembly triggers to the underlying CLR implementation. You can join this relation to <strong>sys.server_triggers</strong>. The assembly must be loaded into the <strong>master</strong> database. The tuple (object_id) is the key for the relation.</para><br/>
		/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-server-assembly-modules-transact-sql'>sys.server_assembly_modules</a>.</para>
		/// </summary>
		[Table(Schema="sys", Name="server_assembly_modules", IsView=true)]
		public partial class ServerAssemblyModule
		{
			/// <summary>
			/// This is a FOREIGN KEY reference back to the object upon which this assembly module is defined.
			/// </summary>
			[Column("object_id"),               NotNull    ] public int     ObjectID             { get; set; } // int
			/// <summary>
			/// ID of the assembly from which this module was created. The assembly must be loaded into the master database.
			/// </summary>
			[Column("assembly_id"),             NotNull    ] public int     AssemblyID           { get; set; } // int
			/// <summary>
			/// Name of the class within assembly that defines this module.
			/// </summary>
			[Column("assembly_class"),             Nullable] public string? AssemblyClass        { get; set; } // sysname
			/// <summary>
			/// Name of the method within the class that defines this module. Is NULL for aggregate functions (AF).
			/// </summary>
			[Column("assembly_method"),            Nullable] public string? AssemblyMethod       { get; set; } // sysname
			/// <summary>
			/// ID of the EXECUTE AS server principal.<br/><br/> NULL by default or if EXECUTE AS CALLER.<br/><br/> ID of the specified principal if EXECUTE AS SELF EXECUTE AS &lt;principal&gt;.<br/><br/> -2 = EXECUTE AS OWNER.
			/// </summary>
			[Column("execute_as_principal_id"),    Nullable] public int?    ExecuteAsPrincipalID { get; set; } // int

			#region Associations

			/// <summary>
			/// objects (sys.objects)
			/// </summary>
			[Association(ThisKey="ObjectID", OtherKey="ObjectID", CanBeNull=false)]
			public ObjectSchema.Object Object { get; set; } = null!;

			#endregion
		}

		/// <summary>
		/// <para><strong>sys.server_events (Transact-SQL)</strong></para>
		/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)</para>
		/// <para>Contains one row for each event for which a server-level event-notification or server-level DDL trigger fires. The columns <strong>object_id</strong> and <strong>type</strong> uniquely identify the server event.</para><br/>
		/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-server-events-transact-sql'>sys.server_events</a>.</para>
		/// </summary>
		[Table(Schema="sys", Name="server_events", IsView=true)]
		public partial class ServerEvent
		{
			/// <summary>
			/// ID of the server-level event notification or server-level DDL trigger to fire.
			/// </summary>
			[Column("object_id"),             NotNull    ] public int     ObjectID           { get; set; } // int
			/// <summary>
			/// Type of the event that causes the event notification or DDL trigger to fire.
			/// </summary>
			[Column("type"),                  NotNull    ] public int     TypeColumn         { get; set; } // int
			/// <summary>
			/// Description of the event that causes the DDL trigger or event notification to fire.
			/// </summary>
			[Column("type_desc"),             NotNull    ] public string  TypeDesc           { get; set; } = null!; // nvarchar(60)
			/// <summary>
			/// Event group on which the trigger or event notification is created, or null if not created on an event group.
			/// </summary>
			[Column("event_group_type"),         Nullable] public int?    EventGroupType     { get; set; } // int
			/// <summary>
			/// Description of the event group on which the trigger or event notification is created, or null if not created on an event group
			/// </summary>
			[Column("event_group_type_desc"),    Nullable] public string? EventGroupTypeDesc { get; set; } // nvarchar(60)

			#region Associations

			/// <summary>
			/// objects (sys.objects)
			/// </summary>
			[Association(ThisKey="ObjectID", OtherKey="ObjectID", CanBeNull=false)]
			public ObjectSchema.Object Object { get; set; } = null!;

			#endregion
		}

		/// <summary>
		/// <para><strong>sys.server_event_notifications (Transact-SQL)</strong></para>
		/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)</para>
		/// <para>Returns a row for each server-level event notification object.</para><br/>
		/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-server-event-notifications-transact-sql'>sys.server_event_notifications</a>.</para>
		/// </summary>
		[Table(Schema="sys", Name="server_event_notifications", IsView=true)]
		public partial class ServerEventNotification
		{
			/// <summary>
			/// Server event notification name. Is unique across all server-level event notifications.
			/// </summary>
			[Column("name"),              NotNull    ] public string   Name            { get; set; } = null!; // sysname
			/// <summary>
			/// Object identification number. Is unique within the <strong>master</strong> database.
			/// </summary>
			[Column("object_id"),         NotNull    ] public int      ObjectID        { get; set; } // int
			/// <summary>
			/// Class of parent. Is always 100 = Server.
			/// </summary>
			[Column("parent_class"),      NotNull    ] public byte     ParentClass     { get; set; } // tinyint
			/// <summary>
			/// Description of class of parent. Is always SERVER.
			/// </summary>
			[Column("parent_class_desc"),    Nullable] public string?  ParentClassDesc { get; set; } // nvarchar(60)
			/// <summary>
			/// Is always 0.
			/// </summary>
			[Column("parent_id"),         NotNull    ] public int      ParentID        { get; set; } // int
			/// <summary>
			/// Date created.
			/// </summary>
			[Column("create_date"),       NotNull    ] public DateTime CreateDate      { get; set; } // datetime
			/// <summary>
			/// Date object was last modified by using an ALTER statement.
			/// </summary>
			[Column("modify_date"),       NotNull    ] public DateTime ModifyDate      { get; set; } // datetime
			/// <summary>
			/// Name of the target service to which the notification is sent.
			/// </summary>
			[Column("service_name"),         Nullable] public string?  ServiceName     { get; set; } // nvarchar(256)
			/// <summary>
			/// The service broker where the named target service is defined.
			/// </summary>
			[Column("broker_instance"),      Nullable] public string?  BrokerInstance  { get; set; } // nvarchar(128)
			/// <summary>
			/// SID of the login executing the statement that creates the event notification. NULL if WITH FAN_IN is not specified in the event notification definition.
			/// </summary>
			[Column("creator_sid"),          Nullable] public byte[]?  CreatorSID      { get; set; } // varbinary(85)
			/// <summary>
			/// ID of the server principal that owns this.
			/// </summary>
			[Column("principal_id"),         Nullable] public int?     PrincipalID     { get; set; } // int

			#region Associations

			/// <summary>
			/// objects (sys.objects)
			/// </summary>
			[Association(ThisKey="ObjectID", OtherKey="ObjectID", CanBeNull=false)]
			public ObjectSchema.Object Object { get; set; } = null!;

			#endregion
		}

		/// <summary>
		/// <para><strong>sys.server_sql_modules (Transact-SQL)</strong></para>
		/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)</para>
		/// <para>Contains the set of SQL modules for server-level triggers of type TR. You can join this relation to sys.server_triggers. The tuple (object_id) is the key of the relation.</para><br/>
		/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-server-sql-modules-transact-sql'>sys.server_sql_modules</a>.</para>
		/// </summary>
		[Table(Schema="sys", Name="server_sql_modules", IsView=true)]
		public partial class ServerSqlModule
		{
			/// <summary>
			/// This is a FOREIGN KEY reference back to the server-level trigger where this module is defined.
			/// </summary>
			[Column("object_id"),               NotNull    ] public int     ObjectID             { get; set; } // int
			/// <summary>
			/// SQL text that defines this module.<br/><br/> NULL = Encrypted.
			/// </summary>
			[Column("definition"),                 Nullable] public string? Definition           { get; set; } // nvarchar(max)
			/// <summary>
			/// Module was created with ANSI NULLS set option set to ON.
			/// </summary>
			[Column("uses_ansi_nulls"),            Nullable] public bool?   UsesAnsiNulls        { get; set; } // bit
			/// <summary>
			/// Module was created with QUOTED IDENTIFIER set option set to ON.
			/// </summary>
			[Column("uses_quoted_identifier"),     Nullable] public bool?   UsesQuotedIdentifier { get; set; } // bit
			/// <summary>
			/// ID of the EXECUTE AS server principal.<br/><br/> NULL by default or if EXECUTE AS CALLER<br/><br/> ID of the specified principal if EXECUTE AS SELF EXECUTE AS principal-2 = EXECUTE AS OWNER.
			/// </summary>
			[Column("execute_as_principal_id"),    Nullable] public int?    ExecuteAsPrincipalID { get; set; } // int

			#region Associations

			/// <summary>
			/// objects (sys.objects)
			/// </summary>
			[Association(ThisKey="ObjectID", OtherKey="ObjectID", CanBeNull=false)]
			public ObjectSchema.Object Object { get; set; } = null!;

			#endregion
		}

		/// <summary>
		/// <para><strong>sys.server_triggers (Transact-SQL)</strong></para>
		/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)</para>
		/// <para>Contains the set of all server-level DDL triggers with object_type of TR or TA. In the case of CLR triggers, the assembly must be loaded into the <strong>master</strong> database. All server-level DDL trigger names exist in a single, global scope.</para><br/>
		/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-server-triggers-transact-sql'>sys.server_triggers</a>.</para>
		/// </summary>
		[Table(Schema="sys", Name="server_triggers", IsView=true)]
		public partial class ServerTrigger
		{
			/// <summary>
			/// Name of the trigger.
			/// </summary>
			[Column("name"),              NotNull    ] public string   Name            { get; set; } = null!; // sysname
			/// <summary>
			/// ID of the object.
			/// </summary>
			[Column("object_id"),         NotNull    ] public int      ObjectID        { get; set; } // int
			/// <summary>
			/// Class of parent. Is always:<br/><br/> 100 = Server
			/// </summary>
			[Column("parent_class"),      NotNull    ] public byte     ParentClass     { get; set; } // tinyint
			/// <summary>
			/// Description of class of parent. Is always:<br/><br/> SERVER.
			/// </summary>
			[Column("parent_class_desc"),    Nullable] public string?  ParentClassDesc { get; set; } // nvarchar(60)
			/// <summary>
			/// Always 0 for triggers on the SERVER.
			/// </summary>
			[Column("parent_id"),         NotNull    ] public int      ParentID        { get; set; } // int
			/// <summary>
			/// Object type:<br/><br/> TA = Assembly (CLR) trigger<br/><br/> TR = SQL trigger
			/// </summary>
			[Column("type"),              NotNull    ] public string   TypeColumn      { get; set; } = null!; // char(2)
			/// <summary>
			/// Description of the class of the object type.<br/><br/> CLR_TRIGGER<br/><br/> SQL_TRIGGER
			/// </summary>
			[Column("type_desc"),            Nullable] public string?  TypeDesc        { get; set; } // nvarchar(60)
			/// <summary>
			/// Date the trigger was created.
			/// </summary>
			[Column("create_date"),       NotNull    ] public DateTime CreateDate      { get; set; } // datetime
			/// <summary>
			/// Date the trigger was last modified by using an ALTER statement.
			/// </summary>
			[Column("modify_date"),       NotNull    ] public DateTime ModifyDate      { get; set; } // datetime
			/// <summary>
			/// Trigger created on behalf of the user by an internal SQL Server component.
			/// </summary>
			[Column("is_ms_shipped"),     NotNull    ] public bool     IsMSShipped     { get; set; } // bit
			/// <summary>
			/// 1 = Trigger is disabled.
			/// </summary>
			[Column("is_disabled"),       NotNull    ] public bool     IsDisabled      { get; set; } // bit

			#region Associations

			/// <summary>
			/// objects (sys.objects)
			/// </summary>
			[Association(ThisKey="ObjectID", OtherKey="ObjectID", CanBeNull=false)]
			public ObjectSchema.Object Object { get; set; } = null!;

			#endregion
		}

		/// <summary>
		/// <para><strong>sys.server_trigger_events (Transact-SQL)</strong></para>
		/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)</para>
		/// <para>Contains one row for each event for which a server-level (synchronous) trigger fires.</para><br/>
		/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-server-trigger-events-transact-sql'>sys.server_trigger_events</a>.</para>
		/// </summary>
		[Table(Schema="sys", Name="server_trigger_events", IsView=true)]
		public partial class ServerTriggerEvent
		{
			/// <summary>
			/// Inherits all columns from <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-server-events-transact-sql'>sys.server_events</a>.
			/// </summary>
			[Column("inherited columns"), NotNull    ] public object InheritedColumns { get; set; } = null!; // object
			/// <summary>
			/// Trigger is marked to be the first to fire for this event.
			/// </summary>
			[Column("is_first"),             Nullable] public bool?  IsFirst          { get; set; } // bit
			/// <summary>
			/// Trigger is marked to be the last to fire for this event.
			/// </summary>
			[Column("is_last"),              Nullable] public bool?  IsLast           { get; set; } // bit
		}

		/// <summary>
		/// <para><strong>sys.sql_dependencies (Transact-SQL)</strong></para>
		/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)</para>
		/// <para>Contains a row for each dependency on a referenced entity as referenced in the Transact\-SQL expression or statements that define some other referencing object.<br/>
		/// <note type='important'><br/>
		/// This feature will be removed in a future version of Microsoft SQL Server. Avoid using this feature in new development work, and plan to modify applications that currently use this feature. Use <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-sql-expression-dependencies-transact-sql'>sys.sql_expression_dependencies</a> instead.<br/>
		/// </note></para><br/>
		/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-sql-dependencies-transact-sql'>sys.sql_dependencies</a>.</para>
		/// </summary>
		[Table(Schema="sys", Name="sql_dependencies", IsView=true)]
		public partial class SqlDependency
		{
			/// <summary>
			/// Identifies the class of the referenced entity:<br/><br/> 0 = Object or column (non-schema-bound references only)<br/><br/> 1 = Object or column (schema-bound references)<br/><br/> 2 = Types (schema-bound references)<br/><br/> 3 = XML Schema collections (schema-bound references)<br/><br/> 4 = Partition function (schema-bound references)
			/// </summary>
			[Column("class"),               NotNull    ] public byte    Class             { get; set; } // tinyint
			/// <summary>
			/// Description of class of referenced entity:<br/><br/> <strong>OBJECT_OR_COLUMN_REFERENCE_NON_SCHEMA_BOUND</strong><br/><br/> <strong>OBJECT_OR_COLUMN_REFERENCE_SCHEMA_BOUND</strong><br/><br/> <strong>TYPE_REFERENCE</strong><br/><br/> <strong>XML_SCHEMA_COLLECTION_REFERENCE</strong><br/><br/> <strong>PARTITION_FUNCTION_REFERENCE</strong>
			/// </summary>
			[Column("class_desc"),             Nullable] public string? ClassDesc         { get; set; } // nvarchar(60)
			/// <summary>
			/// ID of the referencing object.
			/// </summary>
			[Column("object_id"),           NotNull    ] public int     ObjectID          { get; set; } // int
			/// <summary>
			/// If the referencing ID is a column, ID of referencing column; otherwise, 0.
			/// </summary>
			[Column("column_id"),           NotNull    ] public int     ColumnID          { get; set; } // int
			/// <summary>
			/// ID of the referenced entity, interpreted by value of class, according to:<br/><br/> 0, 1 = Object ID of object or column.<br/><br/> 2 = Type ID.<br/><br/> 3 = XML Schema collection ID.
			/// </summary>
			[Column("referenced_major_id"), NotNull    ] public int     ReferencedMajorID { get; set; } // int
			/// <summary>
			/// Minor-ID of the referenced entity, interpreted by value of class, as shown in the following.<br/><br/> When class =:<br/><br/> 0, <strong>referenced_minor_id</strong> is a column ID; or if not a column, it is 0.<br/><br/> 1, <strong>referenced_minor_id</strong> is a column ID; or if not a column, it is 0.<br/><br/> Otherwise, <strong>referenced_minor_id</strong> = 0.
			/// </summary>
			[Column("referenced_minor_id"), NotNull    ] public int     ReferencedMinorID { get; set; } // int
			/// <summary>
			/// Object or column is selected.
			/// </summary>
			[Column("is_selected"),         NotNull    ] public bool    IsSelected        { get; set; } // bit
			/// <summary>
			/// Object or column is updated.
			/// </summary>
			[Column("is_updated"),          NotNull    ] public bool    IsUpdated         { get; set; } // bit
			/// <summary>
			/// Object is used in SELECT * clause (object-level only).
			/// </summary>
			[Column("is_select_all"),       NotNull    ] public bool    IsSelectAll       { get; set; } // bit

			#region Associations

			/// <summary>
			/// objects (sys.objects)
			/// </summary>
			[Association(ThisKey="ObjectID", OtherKey="ObjectID", CanBeNull=false)]
			public ObjectSchema.Object Object { get; set; } = null!;

			#endregion
		}

		/// <summary>
		/// <para><strong>sys.sql_expression_dependencies (Transact-SQL)</strong></para>
		/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions) √ Azure SQL Managed Instance √ Azure Synapse Analytics √ Analytics Platform System (PDW)</para>
		/// <para>Contains one row for each by-name dependency on a user-defined entity in the current database. This includes dependences between natively compiled, scalar user-defined functions and other SQL Server modules. A dependency between two entities is created when one entity, called the *referenced entity*, appears by name in a persisted SQL expression of another entity, called the *referencing entity*. For example, when a table is referenced in the definition of a view, the view, as the referencing entity, depends on the table, the referenced entity. If the table is dropped, the view is unusable.<br/>
		///  For more information, see <a href='https://docs.microsoft.com/en-us/sql/relational-databases/in-memory-oltp/scalar-user-defined-functions-for-in-memory-oltp'>Scalar User-Defined Functions for In-Memory OLTP</a>.<br/>
		///  You can use this catalog view to report dependency information for the following entities:<br/>
		/// -   Schema-bound entities.<br/>
		/// -   Non-schema-bound entities.<br/>
		/// -   Cross-database and cross-server entities. Entity names are reported; however, entity IDs are not resolved.<br/>
		/// -   Column-level dependencies on schema-bound entities. Column-level dependencies for non-schema-bound objects can be returned by using <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-dynamic-management-views/sys-dm-sql-referenced-entities-transact-sql'>sys.dm_sql_referenced_entities</a>.<br/>
		/// -   Server-level DDL triggers when in the context of the master database.</para><br/>
		/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-sql-expression-dependencies-transact-sql'>sys.sql_expression_dependencies</a>.</para>
		/// </summary>
		[Table(Schema="sys", Name="sql_expression_dependencies", IsView=true)]
		public partial class SqlExpressionDependency
		{
			/// <summary>
			/// ID of the referencing entity. Is not nullable.
			/// </summary>
			[Column("referencing_id"),            NotNull    ] public int     ReferencingID          { get; set; } // int
			/// <summary>
			/// Column ID when the referencing entity is a column; otherwise 0. Is not nullable.
			/// </summary>
			[Column("referencing_minor_id"),      NotNull    ] public int     ReferencingMinorID     { get; set; } // int
			/// <summary>
			/// Class of the referencing entity.<br/><br/> 1 = Object or column<br/><br/> 12 = Database DDL trigger<br/><br/> 13 = Server DDL trigger<br/><br/> Is not nullable.
			/// </summary>
			[Column("referencing_class"),            Nullable] public byte?   ReferencingClass       { get; set; } // tinyint
			/// <summary>
			/// Description of the class of referencing entity.<br/><br/> OBJECT_OR_COLUMN<br/><br/> DATABASE_DDL_TRIGGER<br/><br/> SERVER_DDL_TRIGGER<br/><br/> Is not nullable.
			/// </summary>
			[Column("referencing_class_desc"),       Nullable] public string? ReferencingClassDesc   { get; set; } // nvarchar(60)
			/// <summary>
			/// 1 = Referenced entity is schema-bound.<br/><br/> 0 = Referenced entity is non-schema-bound.<br/><br/> Is not nullable.
			/// </summary>
			[Column("is_schema_bound_reference"), NotNull    ] public bool    IsSchemaBoundReference { get; set; } // bit
			/// <summary>
			/// Class of the referenced entity.<br/><br/> 1 = Object or column<br/><br/> 6 = Type<br/><br/> 10 = XML schema collection<br/><br/> 21 = Partition function<br/><br/> Is not nullable.
			/// </summary>
			[Column("referenced_class"),             Nullable] public byte?   ReferencedClass        { get; set; } // tinyint
			/// <summary>
			/// Description of class of referenced entity.<br/><br/> OBJECT_OR_COLUMN<br/><br/> TYPE<br/><br/> XML_SCHEMA_COLLECTION<br/><br/> PARTITION_FUNCTION<br/><br/> Is not nullable.
			/// </summary>
			[Column("referenced_class_desc"),        Nullable] public string? ReferencedClassDesc    { get; set; } // nvarchar(60)
			/// <summary>
			/// Name of the server of the referenced entity.<br/><br/> This column is populated for cross-server dependencies that are made by specifying a valid four-part name. For information about multipart names, see <a href='https://docs.microsoft.com/en-us/sql/t-sql/language-elements/transact-sql-syntax-conventions-transact-sql'>Transact-SQL Syntax Conventions (Transact-SQL)</a>.<br/><br/> NULL for non-schema-bound entities for which the entity was referenced without specifying a four-part name.<br/><br/> NULL for schema-bound entities because they must be in the same database and therefore can only be defined using a two-part (*schema.object*) name.
			/// </summary>
			[Column("referenced_server_name"),       Nullable] public string? ReferencedServerName   { get; set; } // sysname
			/// <summary>
			/// Name of the database of the referenced entity.<br/><br/> This column is populated for cross-database or cross-server references that are made by specifying a valid three-part or four-part name.<br/><br/> NULL for non-schema-bound references when specified using a one-part or two-part name.<br/><br/> NULL for schema-bound entities because they must be in the same database and therefore can only be defined using a two-part (*schema.object*) name.
			/// </summary>
			[Column("referenced_database_name"),     Nullable] public string? ReferencedDatabaseName { get; set; } // sysname
			/// <summary>
			/// Schema in which the referenced entity belongs.<br/><br/> NULL for non-schema-bound references in which the entity was referenced without specifying the schema name.<br/><br/> Never NULL for schema-bound references because schema-bound entities must be defined and referenced by using a two-part name.
			/// </summary>
			[Column("referenced_schema_name"),       Nullable] public string? ReferencedSchemaName   { get; set; } // sysname
			/// <summary>
			/// Name of the referenced entity. Is not nullable.
			/// </summary>
			[Column("referenced_entity_name"),       Nullable] public string? ReferencedEntityName   { get; set; } // sysname
			/// <summary>
			/// ID of the referenced entity. The value of this column is never NULL for schema-bound references. The value of this column is always NULL for cross-server and cross-database references.<br/><br/> NULL for references within the database if the ID cannot be determined. For non-schema-bound references, the ID cannot be resolved in the following cases:<br/><br/> The referenced entity does not exist in the database.<br/><br/> The schema of the referenced entity depends on the schema of the caller and is resolved at run time. In this case, is_caller_dependent is set to 1.
			/// </summary>
			[Column("referenced_id"),                Nullable] public int?    ReferencedID           { get; set; } // int
			/// <summary>
			/// ID of the referenced column when the referencing entity is a column; otherwise 0. Is not nullable.<br/><br/> A referenced entity is a column when a column is identified by name in the referencing entity, or when the parent entity is used in a SELECT * statement.
			/// </summary>
			[Column("referenced_minor_id"),       NotNull    ] public int     ReferencedMinorID      { get; set; } // int
			/// <summary>
			/// Indicates that schema binding for the referenced entity occurs at runtime; therefore, resolution of the entity ID depends on the schema of the caller. This occurs when the referenced entity is a stored procedure, extended stored procedure, or a non-schema-bound user-defined function called in an EXECUTE statement.<br/><br/> 1 = The referenced entity is caller dependent and is resolved at runtime. In this case, referenced_id is NULL.<br/><br/> 0 = The referenced entity ID is not caller dependent.<br/><br/> Always 0 for schema-bound references and for cross-database and cross-server references that explicitly specify a schema name. For example, a reference to an entity in the format <c>EXEC MyDatabase.MySchema.MyProc</c> is not caller dependent. However, a reference in the format <c>EXEC MyDatabase..MyProc</c> is caller dependent.
			/// </summary>
			[Column("is_caller_dependent"),       NotNull    ] public bool    IsCallerDependent      { get; set; } // bit
			/// <summary>
			/// Indicates the reference is ambiguous and can resolve at run time to a user-defined function, a user-defined type (UDT), or an xquery reference to a column of type <strong>xml</strong>.<br/><br/> For example, assume that the statement <c>SELECT Sales.GetOrder() FROM Sales.MySales</c> is defined in a stored procedure. Until the stored procedure is executed, it is not known whether <c>Sales.GetOrder()</c> is a user-defined function in the <c>Sales</c> schema or column named <c>Sales</c> of type UDT with a method named <c>GetOrder()</c>.<br/><br/> 1 = Reference is ambiguous.<br/><br/> 0 = Reference is unambiguous or the entity can be successfully bound when the view is called.<br/><br/> Always 0 for schema bound references.
			/// </summary>
			[Column("is_ambiguous"),              NotNull    ] public bool    IsAmbiguous            { get; set; } // bit
		}

		/// <summary>
		/// <para><strong>sys.sql_modules (Transact-SQL)</strong></para>
		/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions) √ Azure SQL Database √ Azure SQL Managed Instance √ Azure Synapse Analytics √ Analytics Platform System (PDW)</para>
		/// <para>Returns a row for each object that is an SQL language-defined module in SQL Server, including natively compiled scalar user-defined function. Objects of type P, RF, V, TR, FN, IF, TF, and R have an associated SQL module. Stand-alone defaults, objects of type D, also have an SQL module definition in this view. For a description of these types, see the <c>type</c> column in the <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-objects-transact-sql'>sys.objects</a> catalog view.<br/>
		///  For more information, see <a href='https://docs.microsoft.com/en-us/sql/relational-databases/in-memory-oltp/scalar-user-defined-functions-for-in-memory-oltp'>Scalar User-Defined Functions for In-Memory OLTP</a>.</para><br/>
		/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-sql-modules-transact-sql'>sys.sql_modules</a>.</para>
		/// </summary>
		[Table(Schema="sys", Name="sql_modules", IsView=true)]
		public partial class SqlModule
		{
			/// <summary>
			/// ID of the object of the containing object. Is unique within a database.
			/// </summary>
			[Column("object_id"),               NotNull    ] public int     ObjectID              { get; set; } // int
			/// <summary>
			/// SQL text that defines this module. This value can also be obtained using the <a href='https://docs.microsoft.com/en-us/sql/t-sql/functions/object-definition-transact-sql'>OBJECT_DEFINITION</a> built-in function.<br/><br/> NULL = Encrypted.
			/// </summary>
			[Column("definition"),                 Nullable] public string? Definition            { get; set; } // nvarchar(max)
			/// <summary>
			/// Module was created with SET ANSI_NULLS ON.<br/><br/> Will always be = 0 for rules and defaults.
			/// </summary>
			[Column("uses_ansi_nulls"),            Nullable] public bool?   UsesAnsiNulls         { get; set; } // bit
			/// <summary>
			/// Module was created with SET QUOTED_IDENTIFIER ON.
			/// </summary>
			[Column("uses_quoted_identifier"),     Nullable] public bool?   UsesQuotedIdentifier  { get; set; } // bit
			/// <summary>
			/// Module was created with SCHEMABINDING option.<br/><br/> Always contains a value of 1 for natively compiled stored procedures.
			/// </summary>
			[Column("is_schema_bound"),            Nullable] public bool?   IsSchemaBound         { get; set; } // bit
			/// <summary>
			/// 1 = Schema-bound module definition depends on the default-collation of the database for correct evaluation; otherwise, 0. Such a dependency prevents changing the database's default collation.
			/// </summary>
			[Column("uses_database_collation"),    Nullable] public bool?   UsesDatabaseCollation { get; set; } // bit
			/// <summary>
			/// Procedure was created WITH RECOMPILE option.
			/// </summary>
			[Column("is_recompiled"),              Nullable] public bool?   IsRecompiled          { get; set; } // bit
			/// <summary>
			/// Module was declared to produce a <c>NULL</c> output on any <c>NULL</c> input.
			/// </summary>
			[Column("null_on_null_input"),         Nullable] public bool?   NullOnNullInput       { get; set; } // bit
			/// <summary>
			/// ID of the EXECUTE AS database principal.<br/><br/> <c>NULL</c> by default or if EXECUTE AS CALLER.<br/><br/> ID of the specified principal if EXECUTE AS SELF or EXECUTE AS &lt;principal&gt;.<br/><br/> -2 = EXECUTE AS OWNER.
			/// </summary>
			[Column("execute_as_principal_id"),    Nullable] public object? ExecuteAsPrincipalID  { get; set; } // Int
			/// <summary>
			/// <strong>Applies to</strong>: SQL Server 2014 (12.x) through SQL Server 2014 (12.x).<br/><br/> 0 = not natively compiled<br/><br/> 1 = is natively compiled<br/><br/> The default value is 0.
			/// </summary>
			[Column("uses_native_compilation"),    Nullable] public bool?   UsesNativeCompilation { get; set; } // bit
			/// <summary>
			/// <strong>Applies to</strong>: SQL Server 2019 (15.x) and later.<br/><br/>Indicates whether the module is inlineable or not. Inlineability is based on the conditions specified <a href='https://docs.microsoft.com/en-us/sql/relational-databases/user-defined-functions/scalar-udf-inlining#inlineable-scalar-udfs-requirements'>here</a>.<br/><br/> 0 = not inlineable<br/><br/> 1 = is inlineable. <br/><br/> For scalar user-defined functions (UDFs), the value will be 1 if the UDF is inlineable, and 0 otherwise. It always contains a value of 1 for inline table-valued functions (TVFs), and 0 for all other module types.<br/>
			/// </summary>
			[Column("is_inlineable"),              Nullable] public bool?   IsInlineable          { get; set; } // bit
			/// <summary>
			/// <strong>Applies to</strong>: SQL Server 2019 (15.x) and later.<br/><br/>Indicates whether inlining is turned on for the module currently. <br/><br/>0 = inlining is turned off<br/><br/> 1 = inlining is turned on.<br/><br/> For scalar user-defined functions (UDFs), the value will be 1 if inlining is turned on (explicitly or implicitly). The value will always be 1 for inline table-valued functions (TVFs), and 0 for other module types.<br/>
			/// </summary>
			[Column("inline_type"),                Nullable] public bool?   InlineType            { get; set; } // bit

			#region Associations

			/// <summary>
			/// objects (sys.objects)
			/// </summary>
			[Association(ThisKey="ObjectID", OtherKey="ObjectID", CanBeNull=false)]
			public ObjectSchema.Object Object { get; set; } = null!;

			#endregion
		}

		/// <summary>
		/// <para><strong>sys.stats (Transact-SQL)</strong></para>
		/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions) √ Azure SQL Database √ Azure SQL Managed Instance √ Azure Synapse Analytics √ Analytics Platform System (PDW)</para>
		/// <para>Contains a row for each statistics object that exists for the tables, indexes, and indexed views in the database in SQL Server. Every index will have a corresponding statistics row with the same name and ID (<strong>index_id</strong> = <strong>stats_id</strong>), but not every statistics row has a corresponding index.<br/>
		///  The catalog view <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-stats-columns-transact-sql'>sys.stats_columns</a> provides statistics information for each column in the database. For more information about statistics, see <a href='https://docs.microsoft.com/en-us/sql/relational-databases/statistics/statistics'>Statistics</a>.</para><br/>
		/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-stats-transact-sql'>sys.stats</a>.</para>
		/// </summary>
		[Table(Schema="sys", Name="stats", IsView=true)]
		public partial class Stat
		{
			/// <summary>
			/// ID of the object to which these statistics belong.
			/// </summary>
			[Column("object_id"),                    NotNull    ] public int     ObjectID                  { get; set; } // int
			/// <summary>
			/// Name of the statistics. Is unique within the object.
			/// </summary>
			[Column("name"),                            Nullable] public string? Name                      { get; set; } // sysname
			/// <summary>
			/// ID of the statistics. Is unique within the object.<br/><br/>If statistics correspond to an index, the *stats_id* value is the same as the *index_id* value in the <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-indexes-transact-sql'>sys.indexes</a> catalog view.
			/// </summary>
			[Column("stats_id"),                     NotNull    ] public int     StatsID                   { get; set; } // int
			/// <summary>
			/// Indicates whether the statistics were automatically created by SQL Server.<br/><br/> 0 = Statistics were not automatically created by SQL Server.<br/><br/> 1 = Statistics were automatically created by SQL Server.
			/// </summary>
			[Column("auto_created"),                    Nullable] public bool?   AutoCreated               { get; set; } // bit
			/// <summary>
			/// Indicates whether the statistics were created by a user.<br/><br/> 0 = Statistics were not created by a user.<br/><br/> 1 = Statistics were created by a user.
			/// </summary>
			[Column("user_created"),                    Nullable] public bool?   UserCreated               { get; set; } // bit
			/// <summary>
			/// Indicates whether the statistics were created with the <strong>NORECOMPUTE</strong> option.<br/><br/> 0 = Statistics were not created with the <strong>NORECOMPUTE</strong> option.<br/><br/> 1 = Statistics were created with the <strong>NORECOMPUTE</strong> option.
			/// </summary>
			[Column("no_recompute"),                    Nullable] public bool?   NoRecompute               { get; set; } // bit
			/// <summary>
			/// 0 = Statistics do not have a filter and are computed on all rows.<br/><br/> 1 = Statistics have a filter and are computed only on rows that satisfy the filter definition.
			/// </summary>
			[Column("has_filter"),                      Nullable] public bool?   HasFilter                 { get; set; } // bit
			/// <summary>
			/// Expression for the subset of rows included in filtered statistics.<br/><br/> NULL = Non-filtered statistics.
			/// </summary>
			[Column("filter_definition"),               Nullable] public string? FilterDefinition          { get; set; } // nvarchar(max)
			/// <summary>
			/// Indicates whether the statistics is temporary. Temporary statistics support Always On availability groups secondary databases that are enabled for read-only access.<br/><br/> 0 = The statistics is not temporary.<br/><br/> 1 = The statistics is temporary.<br/><br/><strong>Applies to</strong>: SQL Server (Starting with SQL Server 2012 (11.x))
			/// </summary>
			[Column("is_temporary"),                    Nullable] public bool?   IsTemporary               { get; set; } // bit
			/// <summary>
			/// Indicate whether the statistics are created as incremental statistics.<br/><br/> 0 = The statistics are not incremental.<br/><br/> 1 = The statistics are incremental.<br/><br/><strong>Applies to</strong>: SQL Server (Starting with SQL Server 2014 (12.x))
			/// </summary>
			[Column("is_incremental"),                  Nullable] public bool?   IsIncremental             { get; set; } // bit
			/// <summary>
			/// Indicates whether the statistics were created or updated with the PERSIST_SAMPLE_PERCENT option.<br/><br/> <strong>0</strong> = Statistics are not persisting the sample percentage.<br/><br/> 1 = Statistics were created or updated with the PERSIST_SAMPLE_PERCENT option.<br/><br/><strong>Applies to</strong>: SQL Server (Starting with SQL Server 2019 (15.x))
			/// </summary>
			[Column("has_persisted_sample"),            Nullable] public bool?   HasPersistedSample        { get; set; } // bit
			/// <summary>
			/// Indicates the method by which statistics are created.<br/><br/><strong>0</strong> = Sort based statistics<br/><br/>1 = Internal use only<br/><br/><strong>Applies to</strong>: SQL Server (Starting with SQL Server 2019 (15.x))
			/// </summary>
			[Column("stats_generation_method"),      NotNull    ] public int     StatsGenerationMethod     { get; set; } // int
			/// <summary>
			/// The text description of the method by which statistics are created.<br/><br/>Sort based statistics<br/><br/>Internal use only<br/><br/><strong>Applies to</strong>: SQL Server (Starting with SQL Server 2019 (15.x))
			/// </summary>
			[Column("stats_generation_method_desc"), NotNull    ] public string  StatsGenerationMethodDesc { get; set; } = null!; // varchar(255)

			#region Associations

			/// <summary>
			/// objects (sys.objects)
			/// </summary>
			[Association(ThisKey="ObjectID", OtherKey="ObjectID", CanBeNull=false)]
			public ObjectSchema.Object Object { get; set; } = null!;

			#endregion
		}

		/// <summary>
		/// <para><strong>sys.stats_columns (Transact-SQL)</strong></para>
		/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions) √ Azure SQL Database √ Azure SQL Managed Instance √ Azure Synapse Analytics √ Analytics Platform System (PDW)</para>
		/// <para>Contains a row for each column that is part of <strong>sys.stats</strong> statistics.</para><br/>
		/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-stats-columns-transact-sql'>sys.stats_columns</a>.</para>
		/// </summary>
		[Table(Schema="sys", Name="stats_columns", IsView=true)]
		public partial class StatsColumn
		{
			/// <summary>
			/// ID of the object of which this column is part.
			/// </summary>
			[Column("object_id"),       NotNull    ] public int  ObjectID      { get; set; } // int
			/// <summary>
			/// ID of the statistics of which this column is part.<br/><br/>If statistics correspond to an index, the *stats_id* value is the same as the *index_id* value in the <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-indexes-transact-sql'>sys.indexes</a> catalog view.
			/// </summary>
			[Column("stats_id"),        NotNull    ] public int  StatsID       { get; set; } // int
			/// <summary>
			/// 1-based ordinal within set of stats columns.
			/// </summary>
			[Column("stats_column_id"),    Nullable] public int? StatsColumnID { get; set; } // int
			/// <summary>
			/// ID of the column from <strong>sys.columns</strong>.
			/// </summary>
			[Column("column_id"),          Nullable] public int? ColumnID      { get; set; } // int

			#region Associations

			/// <summary>
			/// objects (sys.objects)
			/// </summary>
			[Association(ThisKey="ObjectID", OtherKey="ObjectID", CanBeNull=false)]
			public ObjectSchema.Object Object { get; set; } = null!;

			#endregion
		}

		/// <summary>
		/// <para><strong>sys.synonyms (Transact-SQL)</strong></para>
		/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions) √ Azure SQL Database √ Azure SQL Managed Instance √ Azure Synapse Analytics √ Analytics Platform System (PDW)</para>
		/// <para>Contains a row for each synonym object that is <strong>sys.objects.type</strong> = SN.</para><br/>
		/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-synonyms-transact-sql'>sys.synonyms</a>.</para>
		/// </summary>
		[Table(Schema="sys", Name="synonyms", IsView=true)]
		public partial class Synonym
		{
			/// <summary>
			/// Object name.
			/// </summary>
			[Column("name"),                NotNull    ] public string   Name              { get; set; } = null!; // sysname
			/// <summary>
			/// Object identification number. Is unique within a database.
			/// </summary>
			[Column("object_id"),           NotNull    ] public int      ObjectID          { get; set; } // int
			/// <summary>
			/// ID of the individual owner, if different from the schema owner. By default, schema-contained objects are owned by the schema owner. However, an alternate owner can be specified by using the ALTER AUTHORIZATION statement to change ownership.<br/><br/> Is NULL if there is no alternate individual owner.<br/><br/> Is NULL if the object type is one of the following:<br/><br/> C = CHECK constraint<br/><br/> D = DEFAULT (constraint or stand-alone)<br/><br/> F = FOREIGN KEY constraint<br/><br/> PK = PRIMARY KEY constraint<br/><br/> R = Rule (old-style, stand-alone)<br/><br/> TA = Assembly (CLR-integration) trigger<br/><br/> TR = SQL trigger<br/><br/> UQ = UNIQUE constraint<br/><br/> EC = Edge constraint
			/// </summary>
			[Column("principal_id"),           Nullable] public int?     PrincipalID       { get; set; } // int
			/// <summary>
			/// ID of the schema that the object is contained in.<br/><br/> Schema-scoped system objects are always contained in the sys or INFORMATION_SCHEMA schemas.
			/// </summary>
			[Column("schema_id"),           NotNull    ] public int      SchemaID          { get; set; } // int
			/// <summary>
			/// ID of the object to which this object belongs.<br/><br/> 0 = Not a child object.
			/// </summary>
			[Column("parent_object_id"),    NotNull    ] public int      ParentObjectID    { get; set; } // int
			/// <summary>
			/// Object type:<br/><br/> AF = Aggregate function (CLR)<br/><br/> C = CHECK constraint<br/><br/> D = DEFAULT (constraint or stand-alone)<br/><br/> F = FOREIGN KEY constraint<br/><br/> FN = SQL scalar function<br/><br/> FS = Assembly (CLR) scalar-function<br/><br/> FT = Assembly (CLR) table-valued function<br/><br/> IF = SQL inline table-valued function<br/><br/> IT = Internal table<br/><br/> P = SQL Stored Procedure<br/><br/> PC = Assembly (CLR) stored-procedure<br/><br/> PG = Plan guide<br/><br/> PK = PRIMARY KEY constraint<br/><br/> R = Rule (old-style, stand-alone)<br/><br/> RF = Replication-filter-procedure<br/><br/> S = System base table<br/><br/> SN = Synonym<br/><br/> SO = Sequence object<br/><br/> U = Table (user-defined)<br/><br/> V = View<br/><br/> EC = Edge constraint <br/><br/> <br/><br/> <strong>Applies to</strong>: SQL Server 2012 (11.x) and later.<br/><br/> SQ = Service queue<br/><br/> TA = Assembly (CLR) DML trigger<br/><br/> TF = SQL table-valued-function<br/><br/> TR = SQL DML trigger<br/><br/> TT = Table type<br/><br/> UQ = UNIQUE constraint<br/><br/> X = Extended stored procedure<br/><br/> <br/><br/> <strong>Applies to</strong>: SQL Server 2014 (12.x) and later, Azure SQL Database, Azure Synapse Analytics, Analytics Platform System (PDW).<br/><br/> ST = STATS_TREE<br/><br/> <br/><br/> <strong>Applies to</strong>: SQL Server 2016 (13.x) and later, Azure SQL Database, Azure Synapse Analytics, Analytics Platform System (PDW).<br/><br/> ET = External Table
			/// </summary>
			[Column("type"),                   Nullable] public string?  TypeColumn        { get; set; } // char(2)
			/// <summary>
			/// Description of the object type:<br/><br/> AGGREGATE_FUNCTION<br/><br/> CHECK_CONSTRAINT<br/><br/> CLR_SCALAR_FUNCTION<br/><br/> CLR_STORED_PROCEDURE<br/><br/> CLR_TABLE_VALUED_FUNCTION<br/><br/> CLR_TRIGGER<br/><br/> DEFAULT_CONSTRAINT<br/><br/> EXTENDED_STORED_PROCEDURE<br/><br/> FOREIGN_KEY_CONSTRAINT<br/><br/> INTERNAL_TABLE<br/><br/> PLAN_GUIDE<br/><br/> PRIMARY_KEY_CONSTRAINT<br/><br/> REPLICATION_FILTER_PROCEDURE<br/><br/> RULE<br/><br/> SEQUENCE_OBJECT<br/><br/> <br/><br/> <strong>Applies to</strong>: SQL Server 2012 (11.x) and later.<br/><br/>  SERVICE_QUEUE<br/><br/> SQL_INLINE_TABLE_VALUED_FUNCTION<br/><br/> SQL_SCALAR_FUNCTION<br/><br/> SQL_STORED_PROCEDURE<br/><br/> SQL_TABLE_VALUED_FUNCTION<br/><br/> SQL_TRIGGER<br/><br/> SYNONYM<br/><br/> SYSTEM_TABLE<br/><br/> TABLE_TYPE<br/><br/> UNIQUE_CONSTRAINT<br/><br/> USER_TABLE<br/><br/> VIEW
			/// </summary>
			[Column("type_desc"),              Nullable] public string?  TypeDesc          { get; set; } // nvarchar(60)
			/// <summary>
			/// Date the object was created.
			/// </summary>
			[Column("create_date"),         NotNull    ] public DateTime CreateDate        { get; set; } // datetime
			/// <summary>
			/// Date the object was last modified by using an ALTER statement. If the object is a table or a view, modify_date also changes when an index on the table or view is created or altered.
			/// </summary>
			[Column("modify_date"),         NotNull    ] public DateTime ModifyDate        { get; set; } // datetime
			/// <summary>
			/// Object is created by an internal SQL Server component.
			/// </summary>
			[Column("is_ms_shipped"),       NotNull    ] public bool     IsMSShipped       { get; set; } // bit
			/// <summary>
			/// Object is published.
			/// </summary>
			[Column("is_published"),        NotNull    ] public bool     IsPublished       { get; set; } // bit
			/// <summary>
			/// Only the schema of the object is published.
			/// </summary>
			[Column("is_schema_published"), NotNull    ] public bool     IsSchemaPublished { get; set; } // bit
			/// <summary>
			/// Fully quoted name of the object to which the user of this synonym is redirected.
			/// </summary>
			[Column("base_object_name"),       Nullable] public string?  BaseObjectName    { get; set; } // nvarchar(1035)

			#region Associations

			/// <summary>
			/// objects (sys.objects)
			/// </summary>
			[Association(ThisKey="ObjectID", OtherKey="ObjectID", CanBeNull=false)]
			public ObjectSchema.Object Object { get; set; } = null!;

			#endregion
		}

		/// <summary>
		/// <para><strong>sys.system_columns (Transact-SQL)</strong></para>
		/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions) √ Azure SQL Database √ Azure SQL Managed Instance √ Azure Synapse Analytics √ Analytics Platform System (PDW)</para>
		/// <para>Contains a row for each column of system objects that have columns.</para><br/>
		/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-system-columns-transact-sql'>sys.system_columns</a>.</para>
		/// </summary>
		[Table(Schema="sys", Name="system_columns", IsView=true)]
		public partial class SystemColumn
		{
			/// <summary>
			/// ID of the object to which this column belongs.
			/// </summary>
			[Column("object_id"),                    NotNull    ] public int     ObjectID                 { get; set; } // int
			/// <summary>
			/// Name of the column. Is unique within the object.
			/// </summary>
			[Column("name"),                            Nullable] public string? Name                     { get; set; } // sysname
			/// <summary>
			/// ID of the column. Is unique within the object.<br/><br/> Column IDs might not be sequential.
			/// </summary>
			[Column("column_id"),                    NotNull    ] public int     ColumnID                 { get; set; } // int
			/// <summary>
			/// ID of the system-type of the column
			/// </summary>
			[Column("system_type_id"),               NotNull    ] public byte    SystemTypeID             { get; set; } // tinyint
			/// <summary>
			/// ID of the type of the column as defined by the user.<br/><br/> To return the name of the type, join to the <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-types-transact-sql'>sys.types</a> catalog view on this column.
			/// </summary>
			[Column("user_type_id"),                 NotNull    ] public int     UserTypeID               { get; set; } // int
			/// <summary>
			/// Maximum length (in bytes) of column.<br/><br/> -1 = Column data type is <strong>varchar(max)</strong>, <strong>nvarchar(max)</strong>, <strong>varbinary(max)</strong>, or <strong>xml</strong>.<br/><br/> For <strong>text</strong> columns, the <strong>max_length</strong> value will be 16 or the value set by <strong>sp_tableoption</strong> 'text in row'.
			/// </summary>
			[Column("max_length"),                   NotNull    ] public short   MaxLength                { get; set; } // smallint
			/// <summary>
			/// Precision of the column if numeric-based; otherwise, 0.
			/// </summary>
			[Column("precision"),                    NotNull    ] public byte    Precision                { get; set; } // tinyint
			/// <summary>
			/// Scale of the column if numeric-based; otherwise, 0.
			/// </summary>
			[Column("scale"),                        NotNull    ] public byte    Scale                    { get; set; } // tinyint
			/// <summary>
			/// Name of the collation of the column if character-based; otherwise, NULL.
			/// </summary>
			[Column("collation_name"),                  Nullable] public string? CollationName            { get; set; } // sysname
			/// <summary>
			/// 1 = Column is nullable.
			/// </summary>
			[Column("is_nullable"),                     Nullable] public bool?   IsNullable               { get; set; } // bit
			/// <summary>
			/// 1 = Column uses ANSI_PADDING ON behavior if character, binary, or variant.<br/><br/> 0 = Column is not character, binary, or variant.
			/// </summary>
			[Column("is_ansi_padded"),               NotNull    ] public bool    IsAnsiPadded             { get; set; } // bit
			/// <summary>
			/// 1 = Column is a declared ROWGUIDCOL.
			/// </summary>
			[Column("is_rowguidcol"),                NotNull    ] public bool    IsRowGuidCol             { get; set; } // bit
			/// <summary>
			/// 1 = Column has identity values.
			/// </summary>
			[Column("is_identity"),                  NotNull    ] public bool    IsIdentity               { get; set; } // bit
			/// <summary>
			/// 1 = Column is a computed column.
			/// </summary>
			[Column("is_computed"),                  NotNull    ] public bool    IsComputed               { get; set; } // bit
			/// <summary>
			/// 1 = Column is declared to use filestream storage.
			/// </summary>
			[Column("is_filestream"),                NotNull    ] public bool    IsFilestream             { get; set; } // bit
			/// <summary>
			/// 1 = Column is replicated.
			/// </summary>
			[Column("is_replicated"),                NotNull    ] public bool    IsReplicated             { get; set; } // bit
			/// <summary>
			/// 1 = Column has a non-SQL Server subscriber.
			/// </summary>
			[Column("is_non_sql_subscribed"),        NotNull    ] public bool    IsNonSqlSubscribed       { get; set; } // bit
			/// <summary>
			/// 1 = Column is merge-published.
			/// </summary>
			[Column("is_merge_published"),           NotNull    ] public bool    IsMergePublished         { get; set; } // bit
			/// <summary>
			/// 1 = Column is replicated by using SSIS.
			/// </summary>
			[Column("is_dts_replicated"),            NotNull    ] public bool    IsDtsReplicated          { get; set; } // bit
			/// <summary>
			/// 1 = Content is a complete XML document.<br/><br/> 0 = Content is a document fragment, or the column data type is not <strong>xml</strong>.
			/// </summary>
			[Column("is_xml_document"),              NotNull    ] public bool    IsXmlDocument            { get; set; } // bit
			/// <summary>
			/// Non-zero if the column data type is <strong>xml</strong> and the XML is typed. The value will be the ID of the collection containing the validating XML schema namespace of the column.<br/><br/> 0 = No XML schema collection.
			/// </summary>
			[Column("xml_collection_id"),            NotNull    ] public int     XmlCollectionID          { get; set; } // int
			/// <summary>
			/// ID of the default object, regardless of whether it is a stand-alone <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-stored-procedures/sp-bindefault-transact-sql'>sys.sp_bindefault</a>, or an inline, column-level DEFAULT constraint. The <strong>parent_object_id</strong> column of an inline column-level default object is a reference back to the table itself. Or, 0 if there is no default.
			/// </summary>
			[Column("default_object_id"),            NotNull    ] public int     DefaultObjectID          { get; set; } // int
			/// <summary>
			/// ID of the stand-alone rule bound to the column by using <strong>sys.sp_bindrule</strong>.<br/><br/> 0 = No stand-alone rule.<br/><br/> For column-level CHECK constraints, see <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-check-constraints-transact-sql'>sys.check_constraints (Transact-SQL)</a>.
			/// </summary>
			[Column("rule_object_id"),               NotNull    ] public int     RuleObjectID             { get; set; } // int
			/// <summary>
			/// 1 = Column is a sparse column. For more information, see <a href='https://docs.microsoft.com/en-us/sql/relational-databases/tables/use-sparse-columns'>Use Sparse Columns</a>.
			/// </summary>
			[Column("is_sparse"),                    NotNull    ] public bool    IsSparse                 { get; set; } // bit
			/// <summary>
			/// 1 = Column is a column set. For more information, see <a href='https://docs.microsoft.com/en-us/sql/relational-databases/tables/use-column-sets'>Use Column Sets</a>.
			/// </summary>
			[Column("is_column_set"),                NotNull    ] public bool    IsColumnSet              { get; set; } // bit
			/// <summary>
			/// <strong>Applies to</strong>: SQL Server 2016 (13.x) and later, SQL Database. 7, 8, 9, 10 only applies to SQL Database.<br/><br/> Identifies when the column value is generated (will always be 0 for columns in system tables):<br/><br/> 0 = NOT_APPLICABLE<br/> 1 = AS_ROW_START<br/> 2 = AS_ROW_END<br/>7 = AS_TRANSACTION_ID_START<br/>8 = AS_TRANSACTION_ID_END<br/>9 = AS_SEQUENCE_NUMBER_START<br/>10 = AS_SEQUENCE_NUMBER_END<br/><br/> For more information, see <a href='https://docs.microsoft.com/en-us/sql/relational-databases/tables/temporal-tables'>Temporal Tables (Relational databases)</a>.
			/// </summary>
			[Column("generated_always_type"),           Nullable] public byte?   GeneratedAlwaysType      { get; set; } // tinyint
			/// <summary>
			/// <strong>Applies to</strong>: SQL Server 2016 (13.x) and later, SQL Database.<br/><br/> Textual description of <c>generated_always_type</c>'s value (always NOT_APPLICABLE for columns in system tables) <br/><br/> NOT_APPLICABLE<br/> AS_ROW_START<br/> AS_ROW_END<br/><br/><strong>Applies to</strong>: SQL Database<br/><br/>AS_TRANSACTION_ID_START<br/>AS_TRANSACTION_ID_END<br/>AS_SEQUENCE_NUMBER_START<br/>AS_SEQUENCE_NUMBER_END
			/// </summary>
			[Column("generated_always_type_desc"),      Nullable] public string? GeneratedAlwaysTypeDesc  { get; set; } // nvarchar(60)
			/// <summary>
			/// <strong>Applies to</strong>: SQL Database.<br/><br/> If not NULL, indicates the type of a column in a ledger view:<br/><br/> 1 = TRANSACTION_ID<br/> 2 = SEQUENCE_NUMBER<br/> 3 = OPERATION_TYPE<br/> 4 = OPERATION_TYPE_DESC<br/><br/>For more information on database ledger, see <a href='https://docs.microsoft.com/en-us/azure/azure-sql/database/ledger-overview'>Azure SQL Database ledger</a>.
			/// </summary>
			[Column("ledger_view_column_type"),      NotNull    ] public byte    LedgerViewColumnType     { get; set; } // tinyint
			/// <summary>
			/// <strong>Applies to</strong>: SQL Database.<br/><br/> If not NULL, contains a textual description of the the type of a column in a ledger view:<br/><br/> TRANSACTION_ID<br/> SEQUENCE_NUMBER<br/> OPERATION_TYPE<br/> OPERATION_TYPE_DESC
			/// </summary>
			[Column("ledger_view_column_type_desc"), NotNull    ] public string  LedgerViewColumnTypeDesc { get; set; } = null!; // nvarchar(60)

			#region Associations

			/// <summary>
			/// system_objects (sys.system_objects)
			/// </summary>
			[Association(ThisKey="ObjectID", OtherKey="ObjectID", CanBeNull=false)]
			public ObjectSchema.SystemObject SystemObject { get; set; } = null!;

			#endregion
		}

		/// <summary>
		/// <para><strong>sys.system_objects (Transact-SQL)</strong></para>
		/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions) √ Azure SQL Database √ Azure SQL Managed Instance √ Azure Synapse Analytics √ Analytics Platform System (PDW)</para>
		/// <para>Contains one row for all schema-scoped system objects that are included with Microsoft SQL Server. All system objects are contained in the schemas named sys or INFORMATION_SCHEMA.</para><br/>
		/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-system-objects-transact-sql'>sys.system_objects</a>.</para>
		/// </summary>
		[Table(Schema="sys", Name="system_objects", IsView=true)]
		public partial class SystemObject
		{
			/// <summary>
			/// Object name.
			/// </summary>
			[Column("name"),                NotNull    ] public string   Name              { get; set; } = null!; // sysname
			/// <summary>
			/// Object identification number. Is unique within a database.
			/// </summary>
			[Column("object_id"),           NotNull    ] public int      ObjectID          { get; set; } // int
			/// <summary>
			/// ID of the individual owner if different from the schema owner. By default, schema-contained objects are owned by the schema owner. However, another owner can be specified by using the ALTER AUTHORIZATION statement to change ownership.<br/><br/> Is NULL if there is no other individual owner.<br/><br/> Is NULL if the object type is one of the following:<br/><br/> C = CHECK constraint<br/><br/> D = DEFAULT (constraint or stand-alone)<br/><br/> F = FOREIGN KEY constraint<br/><br/> PK = PRIMARY KEY constraint<br/><br/> R = Rule (old-style, stand-alone)<br/><br/> TA = Assembly (CLR) trigger<br/><br/> TR = SQL trigger<br/><br/> UQ = UNIQUE constraint
			/// </summary>
			[Column("principal_id"),           Nullable] public int?     PrincipalID       { get; set; } // int
			/// <summary>
			/// ID of the schema that the object is contained in.<br/><br/> For all schema-scoped system objects that included with SQL Server, this value will always be in (schema_id('sys'), schema_id('INFORMATION_SCHEMA'))
			/// </summary>
			[Column("schema_id"),           NotNull    ] public int      SchemaID          { get; set; } // int
			/// <summary>
			/// ID of the object to which this object belongs.<br/><br/> 0 = Not a child object.
			/// </summary>
			[Column("parent_object_id"),       Nullable] public int?     ParentObjectID    { get; set; } // int
			/// <summary>
			/// Object type:<br/><br/> AF = Aggregate function (CLR)<br/><br/> C = CHECK constraint<br/><br/> D = DEFAULT (constraint or stand-alone)<br/><br/> F = FOREIGN KEY constraint<br/><br/> FN = SQL scalar function<br/><br/> FS = Assembly (CLR) scalar-function<br/><br/> FT = Assembly (CLR) table-valued function<br/><br/> IF = SQL inline table-valued function<br/><br/> IT = Internal table<br/><br/> P = SQL Stored Procedure<br/><br/> PC = Assembly (CLR) stored-procedure<br/><br/> PG = Plan guide<br/><br/> PK = PRIMARY KEY constraint<br/><br/> R = Rule (old-style, stand-alone)<br/><br/> RF = Replication-filter-procedure<br/><br/> S = System base table<br/><br/> SN = Synonym<br/><br/> SQ = Service queue<br/><br/> TA = Assembly (CLR) DML trigger<br/><br/> TF = SQL table-valued-function<br/><br/> TR = SQL DML trigger<br/><br/> TT = Table type<br/><br/> U = Table (user-defined)<br/><br/> UQ = UNIQUE constraint<br/><br/> V = View<br/><br/> X = Extended stored procedure
			/// </summary>
			[Column("type"),                NotNull    ] public string   TypeColumn        { get; set; } = null!; // char(2)
			/// <summary>
			/// Description of the object type. AGGREGATE_FUNCTION<br/><br/> CHECK_CONSTRAINT<br/><br/> DEFAULT_CONSTRAINT<br/><br/> FOREIGN_KEY_CONSTRAINT<br/><br/> SQL_SCALAR_FUNCTION<br/><br/> CLR_SCALAR_FUNCTION<br/><br/> CLR_TABLE_VALUED_FUNCTION<br/><br/> SQL_INLINE_TABLE_VALUED_FUNCTION<br/><br/> INTERNAL_TABLE<br/><br/> SQL_STORED_PROCEDURE<br/><br/> CLR_STORED_PROCEDURE<br/><br/> PLAN_GUIDE<br/><br/> PRIMARY_KEY_CONSTRAINT<br/><br/> RULE<br/><br/> REPLICATION_FILTER_PROCEDURE<br/><br/> SYSTEM_TABLE<br/><br/> SYNONYM<br/><br/> SERVICE_QUEUE<br/><br/> CLR_TRIGGER<br/><br/> SQL_TABLE_VALUED_FUNCTION<br/><br/> SQL_TRIGGER<br/><br/> TABLE_TYPE<br/><br/> USER_TABLE<br/><br/> UNIQUE_CONSTRAINT<br/><br/> VIEW<br/><br/> EXTENDED_STORED_PROCEDURE
			/// </summary>
			[Column("type_desc"),              Nullable] public string?  TypeDesc          { get; set; } // nvarchar(60)
			/// <summary>
			/// Date the object was created.
			/// </summary>
			[Column("create_date"),         NotNull    ] public DateTime CreateDate        { get; set; } // datetime
			/// <summary>
			/// Date the object was last modified by using an ALTER statement. If the object is a table or a view, modify_date also changes when a clustered index on the table or view is created or altered.
			/// </summary>
			[Column("modify_date"),         NotNull    ] public DateTime ModifyDate        { get; set; } // datetime
			/// <summary>
			/// Object is created by an internal Microsoft SQL Server component.
			/// </summary>
			[Column("is_ms_shipped"),          Nullable] public bool?    IsMSShipped       { get; set; } // bit
			/// <summary>
			/// Object is published.
			/// </summary>
			[Column("is_published"),           Nullable] public bool?    IsPublished       { get; set; } // bit
			/// <summary>
			/// Only the schema of the object is published.
			/// </summary>
			[Column("is_schema_published"),    Nullable] public bool?    IsSchemaPublished { get; set; } // bit

			#region Associations

			/// <summary>
			/// system_columns (sys.system_columns)
			/// </summary>
			[Association(ThisKey="ObjectID", OtherKey="ObjectID", CanBeNull=true)]
			public IList<ObjectSchema.SystemColumn> SystemColumns { get; set; } = null!;

			/// <summary>
			/// system_parameters (sys.system_parameters)
			/// </summary>
			[Association(ThisKey="ObjectID", OtherKey="ObjectID", CanBeNull=true)]
			public IList<ObjectSchema.SystemParameter> SystemParameters { get; set; } = null!;

			/// <summary>
			/// system_sql_modules (sys.system_sql_modules)
			/// </summary>
			[Association(ThisKey="ObjectID", OtherKey="ObjectID", CanBeNull=true)]
			public IList<ObjectSchema.SystemSqlModule> SystemSqlModules { get; set; } = null!;

			/// <summary>
			/// system_views (sys.system_views)
			/// </summary>
			[Association(ThisKey="ObjectID", OtherKey="ObjectID", CanBeNull=true)]
			public ObjectSchema.SystemView? SystemView { get; set; }

			#endregion
		}

		/// <summary>
		/// <para><strong>sys.system_parameters (Transact-SQL)</strong></para>
		/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions) √ Azure SQL Database √ Azure SQL Managed Instance √ Azure Synapse Analytics √ Analytics Platform System (PDW)</para>
		/// <para>Contains one row for each system object that has parameters.</para><br/>
		/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-system-parameters-transact-sql'>sys.system_parameters</a>.</para>
		/// </summary>
		[Table(Schema="sys", Name="system_parameters", IsView=true)]
		public partial class SystemParameter
		{
			/// <summary>
			/// ID of the object to which this parameter belongs.
			/// </summary>
			[Column("object_id"),                           NotNull    ] public int     ObjectID                        { get; set; } // int
			/// <summary>
			/// Name of the parameter. Is unique within the object.<br/><br/> If the object is a scalar function, the parameter name is an empty string in the row representing the return value.
			/// </summary>
			[Column("name"),                                   Nullable] public string? Name                            { get; set; } // sysname
			/// <summary>
			/// ID of the parameter. Is unique within the object. If the object is a scalar function, <strong>parameter_id</strong> = 0 represents the return value.
			/// </summary>
			[Column("parameter_id"),                        NotNull    ] public int     ParameterID                     { get; set; } // int
			/// <summary>
			/// ID of the system type of the parameter.
			/// </summary>
			[Column("system_type_id"),                      NotNull    ] public byte    SystemTypeID                    { get; set; } // tinyint
			/// <summary>
			/// ID of the type of the parameter as defined by the user.<br/><br/> To return the name of the type, join to the <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-types-transact-sql'>sys.types</a> catalog view on this column.
			/// </summary>
			[Column("user_type_id"),                        NotNull    ] public int     UserTypeID                      { get; set; } // int
			/// <summary>
			/// Maximum length of the parameter, in bytes. Value will be -1 for when column data type is <strong>varchar(max)</strong>, <strong>nvarchar(max)</strong>, <strong>varbinary(max)</strong>, or <strong>xml</strong>.
			/// </summary>
			[Column("max_length"),                          NotNull    ] public short   MaxLength                       { get; set; } // smallint
			/// <summary>
			/// Precision of the parameter if numeric-based; otherwise, 0.
			/// </summary>
			[Column("precision"),                           NotNull    ] public byte    Precision                       { get; set; } // tinyint
			/// <summary>
			/// Scale of the parameter if numeric-based; otherwise, 0.
			/// </summary>
			[Column("scale"),                               NotNull    ] public byte    Scale                           { get; set; } // tinyint
			/// <summary>
			/// 1 = Parameter is output (or return); otherwise, 0.
			/// </summary>
			[Column("is_output"),                           NotNull    ] public bool    IsOutput                        { get; set; } // bit
			/// <summary>
			/// 1 = Parameter is a cursor-reference parameter.
			/// </summary>
			[Column("is_cursor_ref"),                       NotNull    ] public bool    IsCursorRef                     { get; set; } // bit
			/// <summary>
			/// 1 = Parameter has default value.<br/><br/> SQL Server only maintains default values for CLR objects in this catalog view; therefore, this column will always have a value of 0 for Transact\-SQL objects. To view the default value of a parameter in a Transact\-SQL object, query the <strong>definition</strong> column of the <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-sql-modules-transact-sql'>sys.sql_modules</a> catalog view, or use the <a href='https://docs.microsoft.com/en-us/sql/t-sql/functions/object-definition-transact-sql'>OBJECT_DEFINITION</a> system function.
			/// </summary>
			[Column("has_default_value"),                   NotNull    ] public bool    HasDefaultValue                 { get; set; } // bit
			/// <summary>
			/// 1 = Content is a complete XML document.<br/><br/> 0 = Content is a document fragment or the data type of the column is not <strong>xml</strong>.
			/// </summary>
			[Column("is_xml_document"),                     NotNull    ] public bool    IsXmlDocument                   { get; set; } // bit
			/// <summary>
			/// If <strong>has_default_value</strong> is 1, the value of this column is the value of the default for the parameter; otherwise <c>NULL</c>.
			/// </summary>
			[Column("default_value"),                          Nullable] public object? DefaultValue                    { get; set; } // sql_variant
			/// <summary>
			/// Non-zero if the data type of the parameter is <strong>xml</strong> and the XML is typed. The value is the ID of the collection that contains the validating XML schema namespace for the parameter.<br/><br/> 0 = There is no XML schema collection.
			/// </summary>
			[Column("xml_collection_id"),                   NotNull    ] public int     XmlCollectionID                 { get; set; } // int
			/// <summary>
			/// 1 =  Parameter is READONLY; otherwise, 0.
			/// </summary>
			[Column("is_readonly"),                         NotNull    ] public bool    IsReadonly                      { get; set; } // bit
			/// <summary>
			/// 1 = Parameter is nullable. (the default).<br/><br/> 0 = Parameter is not nullable, for more efficient execution of natively-compiled stored procedures.
			/// </summary>
			[Column("is_nullable"),                            Nullable] public bool?   IsNullable                      { get; set; } // bit
			/// <summary>
			/// <strong>Applies to</strong>: SQL Server 2016 (13.x) and later, SQL Database.<br/><br/> Encryption type:<br/><br/> 1 = Deterministic encryption<br/><br/> 2 = Randomized encryption
			/// </summary>
			[Column("encryption_type"),                        Nullable] public int?    EncryptionType                  { get; set; } // int
			/// <summary>
			/// <strong>Applies to</strong>: SQL Server 2016 (13.x) and later, SQL Database.<br/><br/> Encryption type description:<br/><br/> RANDOMIZED<br/><br/> DETERMINISTIC
			/// </summary>
			[Column("encryption_type_desc"),                   Nullable] public string? EncryptionTypeDesc              { get; set; } // nvarchar(64)
			/// <summary>
			/// <strong>Applies to</strong>: SQL Server 2016 (13.x) and later, SQL Database.<br/><br/> Name of encryption algorithm.<br/><br/> Only AEAD_AES_256_CBC_HMAC_SHA_512 is supported.
			/// </summary>
			[Column("encryption_algorithm_name"),              Nullable] public string? EncryptionAlgorithmName         { get; set; } // sysname
			/// <summary>
			/// <strong>Applies to</strong>: SQL Server 2016 (13.x) and later, SQL Database.<br/><br/> ID of the CEK.
			/// </summary>
			[Column("column_encryption_key_id"),               Nullable] public int?    ColumnEncryptionKeyID           { get; set; } // int
			/// <summary>
			/// <strong>Applies to</strong>: SQL Server 2016 (13.x) and later, SQL Database.<br/><br/> The name of the database where the column encryption key exists if different than the database of the column. <c>NULL</c> if the key exists in the same database as the column.
			/// </summary>
			[Column("column_encryption_key_database_name"),    Nullable] public string? ColumnEncryptionKeyDatabaseName { get; set; } // sysname

			#region Associations

			/// <summary>
			/// system_objects (sys.system_objects)
			/// </summary>
			[Association(ThisKey="ObjectID", OtherKey="ObjectID", CanBeNull=false)]
			public ObjectSchema.SystemObject SystemObject { get; set; } = null!;

			#endregion
		}

		/// <summary>
		/// <para><strong>sys.system_sql_modules (Transact-SQL)</strong></para>
		/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions) √ Azure SQL Database √ Azure SQL Managed Instance √ Azure Synapse Analytics √ Analytics Platform System (PDW)</para>
		/// <para>Returns one row per system object that contains an SQL language-defined module. System objects of type FN, IF, P, PC, TF, V have an associated SQL module. To identify the containing object, you can join this view to <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-system-objects-transact-sql'>sys.system_objects</a>.</para><br/>
		/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-system-sql-modules-transact-sql'>sys.system_sql_modules</a>.</para>
		/// </summary>
		[Table(Schema="sys", Name="system_sql_modules", IsView=true)]
		public partial class SystemSqlModule
		{
			/// <summary>
			/// Object identification number of the containing object, unique within a database.
			/// </summary>
			[Column("object_id"),               NotNull    ] public int     ObjectID              { get; set; } // int
			/// <summary>
			/// SQL text that defines this module.
			/// </summary>
			[Column("definition"),                 Nullable] public string? Definition            { get; set; } // nvarchar(max)
			/// <summary>
			/// 1 = Module was created with the SET ANSI_NULLS database option ON.<br/><br/> Always returns 1.
			/// </summary>
			[Column("uses_ansi_nulls"),         NotNull    ] public bool    UsesAnsiNulls         { get; set; } // bit
			/// <summary>
			/// 1 = Module was created with SET QUOTED_IDENTIFIER ON.<br/><br/> Always returns 1.
			/// </summary>
			[Column("uses_quoted_identifier"),  NotNull    ] public bool    UsesQuotedIdentifier  { get; set; } // bit
			/// <summary>
			/// 0 = Module was not created with the SCHEMABINDING option.<br/><br/> Always returns 0.
			/// </summary>
			[Column("is_schema_bound"),         NotNull    ] public bool    IsSchemaBound         { get; set; } // bit
			/// <summary>
			/// 0 = Module does not depend on the default collation of the database.<br/><br/> Always returns 0.
			/// </summary>
			[Column("uses_database_collation"), NotNull    ] public bool    UsesDatabaseCollation { get; set; } // bit
			/// <summary>
			/// 0 = Procedure was not created by using the WITH RECOMPILE option.<br/><br/> Always returns 0.
			/// </summary>
			[Column("is_recompiled"),           NotNull    ] public bool    IsRecompiled          { get; set; } // bit
			/// <summary>
			/// 0 = Module was not created to produce a NULL output on any NULL input.<br/><br/> Always returns 0.
			/// </summary>
			[Column("null_on_null_input"),      NotNull    ] public bool    NullOnNullInput       { get; set; } // bit
			/// <summary>
			/// Always returns NULL
			/// </summary>
			[Column("execute_as_principal_id"),    Nullable] public int?    ExecuteAsPrincipalID  { get; set; } // int

			#region Associations

			/// <summary>
			/// system_objects (sys.system_objects)
			/// </summary>
			[Association(ThisKey="ObjectID", OtherKey="ObjectID", CanBeNull=false)]
			public ObjectSchema.SystemObject SystemObject { get; set; } = null!;

			#endregion
		}

		/// <summary>
		/// <para><strong>sys.system_views (Transact-SQL)</strong></para>
		/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)</para>
		/// <para>Contains one row for each system view that is shipped with SQL Server. All system views are contained in the schemas named <strong>sys</strong> or <strong>INFORMATION_SCHEMA</strong>.</para><br/>
		/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-system-views-transact-sql'>sys.system_views</a>.</para>
		/// </summary>
		[Table(Schema="sys", Name="system_views", IsView=true)]
		public partial class SystemView
		{
			/// <summary>
			/// Object name.
			/// </summary>
			[Column("name"),                        NotNull    ] public string   Name                     { get; set; } = null!; // sysname
			/// <summary>
			/// Object identification number. Is unique within a database.
			/// </summary>
			[Column("object_id"),                   NotNull    ] public int      ObjectID                 { get; set; } // int
			/// <summary>
			/// ID of the individual owner, if different from the schema owner. By default, schema-contained objects are owned by the schema owner. However, an alternate owner can be specified by using the ALTER AUTHORIZATION statement to change ownership.<br/><br/> Is NULL if there is no alternate individual owner.<br/><br/> Is NULL if the object type is one of the following:<br/><br/> C = CHECK constraint<br/><br/> D = DEFAULT (constraint or stand-alone)<br/><br/> F = FOREIGN KEY constraint<br/><br/> PK = PRIMARY KEY constraint<br/><br/> R = Rule (old-style, stand-alone)<br/><br/> TA = Assembly (CLR-integration) trigger<br/><br/> TR = SQL trigger<br/><br/> UQ = UNIQUE constraint<br/><br/> EC = Edge constraint
			/// </summary>
			[Column("principal_id"),                   Nullable] public int?     PrincipalID              { get; set; } // int
			/// <summary>
			/// ID of the schema that the object is contained in.<br/><br/> Schema-scoped system objects are always contained in the sys or INFORMATION_SCHEMA schemas.
			/// </summary>
			[Column("schema_id"),                   NotNull    ] public int      SchemaID                 { get; set; } // int
			/// <summary>
			/// ID of the object to which this object belongs.<br/><br/> 0 = Not a child object.
			/// </summary>
			[Column("parent_object_id"),               Nullable] public int?     ParentObjectID           { get; set; } // int
			/// <summary>
			/// Object type:<br/><br/> AF = Aggregate function (CLR)<br/><br/> C = CHECK constraint<br/><br/> D = DEFAULT (constraint or stand-alone)<br/><br/> F = FOREIGN KEY constraint<br/><br/> FN = SQL scalar function<br/><br/> FS = Assembly (CLR) scalar-function<br/><br/> FT = Assembly (CLR) table-valued function<br/><br/> IF = SQL inline table-valued function<br/><br/> IT = Internal table<br/><br/> P = SQL Stored Procedure<br/><br/> PC = Assembly (CLR) stored-procedure<br/><br/> PG = Plan guide<br/><br/> PK = PRIMARY KEY constraint<br/><br/> R = Rule (old-style, stand-alone)<br/><br/> RF = Replication-filter-procedure<br/><br/> S = System base table<br/><br/> SN = Synonym<br/><br/> SO = Sequence object<br/><br/> U = Table (user-defined)<br/><br/> V = View<br/><br/> EC = Edge constraint <br/><br/> <br/><br/> <strong>Applies to</strong>: SQL Server 2012 (11.x) and later.<br/><br/> SQ = Service queue<br/><br/> TA = Assembly (CLR) DML trigger<br/><br/> TF = SQL table-valued-function<br/><br/> TR = SQL DML trigger<br/><br/> TT = Table type<br/><br/> UQ = UNIQUE constraint<br/><br/> X = Extended stored procedure<br/><br/> <br/><br/> <strong>Applies to</strong>: SQL Server 2014 (12.x) and later, Azure SQL Database, Azure Synapse Analytics, Analytics Platform System (PDW).<br/><br/> ST = STATS_TREE<br/><br/> <br/><br/> <strong>Applies to</strong>: SQL Server 2016 (13.x) and later, Azure SQL Database, Azure Synapse Analytics, Analytics Platform System (PDW).<br/><br/> ET = External Table
			/// </summary>
			[Column("type"),                        NotNull    ] public string   TypeColumn               { get; set; } = null!; // char(2)
			/// <summary>
			/// Description of the object type:<br/><br/> AGGREGATE_FUNCTION<br/><br/> CHECK_CONSTRAINT<br/><br/> CLR_SCALAR_FUNCTION<br/><br/> CLR_STORED_PROCEDURE<br/><br/> CLR_TABLE_VALUED_FUNCTION<br/><br/> CLR_TRIGGER<br/><br/> DEFAULT_CONSTRAINT<br/><br/> EXTENDED_STORED_PROCEDURE<br/><br/> FOREIGN_KEY_CONSTRAINT<br/><br/> INTERNAL_TABLE<br/><br/> PLAN_GUIDE<br/><br/> PRIMARY_KEY_CONSTRAINT<br/><br/> REPLICATION_FILTER_PROCEDURE<br/><br/> RULE<br/><br/> SEQUENCE_OBJECT<br/><br/> <br/><br/> <strong>Applies to</strong>: SQL Server 2012 (11.x) and later.<br/><br/>  SERVICE_QUEUE<br/><br/> SQL_INLINE_TABLE_VALUED_FUNCTION<br/><br/> SQL_SCALAR_FUNCTION<br/><br/> SQL_STORED_PROCEDURE<br/><br/> SQL_TABLE_VALUED_FUNCTION<br/><br/> SQL_TRIGGER<br/><br/> SYNONYM<br/><br/> SYSTEM_TABLE<br/><br/> TABLE_TYPE<br/><br/> UNIQUE_CONSTRAINT<br/><br/> USER_TABLE<br/><br/> VIEW
			/// </summary>
			[Column("type_desc"),                      Nullable] public string?  TypeDesc                 { get; set; } // nvarchar(60)
			/// <summary>
			/// Date the object was created.
			/// </summary>
			[Column("create_date"),                 NotNull    ] public DateTime CreateDate               { get; set; } // datetime
			/// <summary>
			/// Date the object was last modified by using an ALTER statement. If the object is a table or a view, modify_date also changes when an index on the table or view is created or altered.
			/// </summary>
			[Column("modify_date"),                 NotNull    ] public DateTime ModifyDate               { get; set; } // datetime
			/// <summary>
			/// Object is created by an internal SQL Server component.
			/// </summary>
			[Column("is_ms_shipped"),                  Nullable] public bool?    IsMSShipped              { get; set; } // bit
			/// <summary>
			/// Object is published.
			/// </summary>
			[Column("is_published"),                   Nullable] public bool?    IsPublished              { get; set; } // bit
			/// <summary>
			/// Only the schema of the object is published.
			/// </summary>
			[Column("is_schema_published"),            Nullable] public bool?    IsSchemaPublished        { get; set; } // bit
			/// <summary>
			/// 1 = View is replicated.
			/// </summary>
			[Column("is_replicated"),               NotNull    ] public bool     IsReplicated             { get; set; } // bit
			/// <summary>
			/// 1 = View has a replication filter.
			/// </summary>
			[Column("has_replication_filter"),      NotNull    ] public bool     HasReplicationFilter     { get; set; } // bit
			/// <summary>
			/// 1 = VIEW_METADATA option specified for view. For more information, see <a href='https://docs.microsoft.com/en-us/sql/t-sql/statements/create-view-transact-sql'>CREATE VIEW (Transact-SQL)</a>.
			/// </summary>
			[Column("has_opaque_metadata"),         NotNull    ] public bool     HasOpaqueMetadata        { get; set; } // bit
			/// <summary>
			/// 1 = Table contains persisted data that depends on an assembly whose definition changed during the last ALTER ASSEMBLY. Will be reset to 0 after the next successful DBCC CHECKDB or DBCC CHECKTABLE.
			/// </summary>
			[Column("has_unchecked_assembly_data"), NotNull    ] public bool     HasUncheckedAssemblyData { get; set; } // bit
			/// <summary>
			/// 1 = WITH CHECK OPTION was specified in the view definition.
			/// </summary>
			[Column("with_check_option"),           NotNull    ] public bool     WithCheckOption          { get; set; } // bit
			/// <summary>
			/// 1 = View was created automatically by the system to store correlation information between <strong>datetime</strong> columns. Creation of this view was enabled by setting DATE_CORRELATION_OPTIMIZATION to ON.
			/// </summary>
			[Column("is_date_correlation_view"),    NotNull    ] public bool     IsDateCorrelationView    { get; set; } // bit

			#region Associations

			/// <summary>
			/// system_objects (sys.system_objects)
			/// </summary>
			[Association(ThisKey="ObjectID", OtherKey="ObjectID", CanBeNull=false)]
			public ObjectSchema.SystemObject SystemObject { get; set; } = null!;

			#endregion
		}

		/// <summary>
		/// <para><strong>sys.tables (Transact-SQL)</strong></para>
		/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions) √ Azure SQL Database √ Azure SQL Managed Instance √ Azure Synapse Analytics √ Analytics Platform System (PDW)</para>
		/// <para>Returns a row for each user table in SQL Server.</para><br/>
		/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-tables-transact-sql'>sys.tables</a>.</para>
		/// </summary>
		[Table(Schema="sys", Name="tables", IsView=true)]
		public partial class Table
		{
			/// <summary>
			/// Object name.
			/// </summary>
			[Column("name"),                               NotNull    ] public string   Name                           { get; set; } = null!; // sysname
			/// <summary>
			/// Object identification number. Is unique within a database.
			/// </summary>
			[Column("object_id"),                          NotNull    ] public int      ObjectID                       { get; set; } // int
			/// <summary>
			/// ID of the individual owner, if different from the schema owner. By default, schema-contained objects are owned by the schema owner. However, an alternate owner can be specified by using the ALTER AUTHORIZATION statement to change ownership.<br/><br/> Is NULL if there is no alternate individual owner.<br/><br/> Is NULL if the object type is one of the following:<br/><br/> C = CHECK constraint<br/><br/> D = DEFAULT (constraint or stand-alone)<br/><br/> F = FOREIGN KEY constraint<br/><br/> PK = PRIMARY KEY constraint<br/><br/> R = Rule (old-style, stand-alone)<br/><br/> TA = Assembly (CLR-integration) trigger<br/><br/> TR = SQL trigger<br/><br/> UQ = UNIQUE constraint<br/><br/> EC = Edge constraint
			/// </summary>
			[Column("principal_id"),                          Nullable] public int?     PrincipalID                    { get; set; } // int
			/// <summary>
			/// ID of the schema that the object is contained in.<br/><br/> Schema-scoped system objects are always contained in the sys or INFORMATION_SCHEMA schemas.
			/// </summary>
			[Column("schema_id"),                          NotNull    ] public int      SchemaID                       { get; set; } // int
			/// <summary>
			/// ID of the object to which this object belongs.<br/><br/> 0 = Not a child object.
			/// </summary>
			[Column("parent_object_id"),                   NotNull    ] public int      ParentObjectID                 { get; set; } // int
			/// <summary>
			/// Object type:<br/><br/> AF = Aggregate function (CLR)<br/><br/> C = CHECK constraint<br/><br/> D = DEFAULT (constraint or stand-alone)<br/><br/> F = FOREIGN KEY constraint<br/><br/> FN = SQL scalar function<br/><br/> FS = Assembly (CLR) scalar-function<br/><br/> FT = Assembly (CLR) table-valued function<br/><br/> IF = SQL inline table-valued function<br/><br/> IT = Internal table<br/><br/> P = SQL Stored Procedure<br/><br/> PC = Assembly (CLR) stored-procedure<br/><br/> PG = Plan guide<br/><br/> PK = PRIMARY KEY constraint<br/><br/> R = Rule (old-style, stand-alone)<br/><br/> RF = Replication-filter-procedure<br/><br/> S = System base table<br/><br/> SN = Synonym<br/><br/> SO = Sequence object<br/><br/> U = Table (user-defined)<br/><br/> V = View<br/><br/> EC = Edge constraint <br/><br/> <br/><br/> <strong>Applies to</strong>: SQL Server 2012 (11.x) and later.<br/><br/> SQ = Service queue<br/><br/> TA = Assembly (CLR) DML trigger<br/><br/> TF = SQL table-valued-function<br/><br/> TR = SQL DML trigger<br/><br/> TT = Table type<br/><br/> UQ = UNIQUE constraint<br/><br/> X = Extended stored procedure<br/><br/> <br/><br/> <strong>Applies to</strong>: SQL Server 2014 (12.x) and later, Azure SQL Database, Azure Synapse Analytics, Analytics Platform System (PDW).<br/><br/> ST = STATS_TREE<br/><br/> <br/><br/> <strong>Applies to</strong>: SQL Server 2016 (13.x) and later, Azure SQL Database, Azure Synapse Analytics, Analytics Platform System (PDW).<br/><br/> ET = External Table
			/// </summary>
			[Column("type"),                                  Nullable] public string?  TypeColumn                     { get; set; } // char(2)
			/// <summary>
			/// Description of the object type:<br/><br/> AGGREGATE_FUNCTION<br/><br/> CHECK_CONSTRAINT<br/><br/> CLR_SCALAR_FUNCTION<br/><br/> CLR_STORED_PROCEDURE<br/><br/> CLR_TABLE_VALUED_FUNCTION<br/><br/> CLR_TRIGGER<br/><br/> DEFAULT_CONSTRAINT<br/><br/> EXTENDED_STORED_PROCEDURE<br/><br/> FOREIGN_KEY_CONSTRAINT<br/><br/> INTERNAL_TABLE<br/><br/> PLAN_GUIDE<br/><br/> PRIMARY_KEY_CONSTRAINT<br/><br/> REPLICATION_FILTER_PROCEDURE<br/><br/> RULE<br/><br/> SEQUENCE_OBJECT<br/><br/> <br/><br/> <strong>Applies to</strong>: SQL Server 2012 (11.x) and later.<br/><br/>  SERVICE_QUEUE<br/><br/> SQL_INLINE_TABLE_VALUED_FUNCTION<br/><br/> SQL_SCALAR_FUNCTION<br/><br/> SQL_STORED_PROCEDURE<br/><br/> SQL_TABLE_VALUED_FUNCTION<br/><br/> SQL_TRIGGER<br/><br/> SYNONYM<br/><br/> SYSTEM_TABLE<br/><br/> TABLE_TYPE<br/><br/> UNIQUE_CONSTRAINT<br/><br/> USER_TABLE<br/><br/> VIEW
			/// </summary>
			[Column("type_desc"),                             Nullable] public string?  TypeDesc                       { get; set; } // nvarchar(60)
			/// <summary>
			/// Date the object was created.
			/// </summary>
			[Column("create_date"),                        NotNull    ] public DateTime CreateDate                     { get; set; } // datetime
			/// <summary>
			/// Date the object was last modified by using an ALTER statement. If the object is a table or a view, modify_date also changes when an index on the table or view is created or altered.
			/// </summary>
			[Column("modify_date"),                        NotNull    ] public DateTime ModifyDate                     { get; set; } // datetime
			/// <summary>
			/// Object is created by an internal SQL Server component.
			/// </summary>
			[Column("is_ms_shipped"),                      NotNull    ] public bool     IsMSShipped                    { get; set; } // bit
			/// <summary>
			/// Object is published.
			/// </summary>
			[Column("is_published"),                       NotNull    ] public bool     IsPublished                    { get; set; } // bit
			/// <summary>
			/// Only the schema of the object is published.
			/// </summary>
			[Column("is_schema_published"),                NotNull    ] public bool     IsSchemaPublished              { get; set; } // bit
			/// <summary>
			/// A nonzero value is the ID of the data space (filegroup or partition scheme) that holds the large object binary (LOB) data for this table. Examples of LOB data types include <strong>varbinary(max)</strong>, <strong>varchar(max)</strong>, <strong>geography</strong>, or <strong>xml</strong>.<br/><br/> 0 = The table does not LOB data.
			/// </summary>
			[Column("lob_data_space_id"),                  NotNull    ] public int      LobDataSpaceID                 { get; set; } // int
			/// <summary>
			/// Is the data space ID for a FILESTREAM filegroup or a partition scheme that consists of FILESTREAM filegroups.<br/><br/> To report the name of a FILESTREAM filegroup, execute the query <c>SELECT FILEGROUP_NAME (filestream_data_space_id) FROM sys.tables</c>.<br/><br/> sys.tables can be joined to the following views on filestream_data_space_id = data_space_id.<br/><br/> - sys.filegroups<br/><br/> - sys.partition_schemes<br/><br/> - sys.indexes<br/><br/> - sys.allocation_units<br/><br/> - sys.fulltext_catalogs<br/><br/> - sys.data_spaces<br/><br/> - sys.destination_data_spaces<br/><br/> - sys.master_files<br/><br/> - sys.database_files<br/><br/> - backupfilegroup (join on filegroup_id)
			/// </summary>
			[Column("filestream_data_space_id"),              Nullable] public int?     FilestreamDataSpaceID          { get; set; } // int
			/// <summary>
			/// Maximum column ID ever used by this table.
			/// </summary>
			[Column("max_column_id_used"),                 NotNull    ] public int      MaxColumnIDUsed                { get; set; } // int
			/// <summary>
			/// Table is locked on bulk load. For more information, see <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-stored-procedures/sp-tableoption-transact-sql'>sp_tableoption (Transact-SQL)</a>.
			/// </summary>
			[Column("lock_on_bulk_load"),                  NotNull    ] public bool     LockOnBulkLoad                 { get; set; } // bit
			/// <summary>
			/// Table was created with the SET ANSI_NULLS database option ON.
			/// </summary>
			[Column("uses_ansi_nulls"),                       Nullable] public bool?    UsesAnsiNulls                  { get; set; } // bit
			/// <summary>
			/// 1 = Table is published using snapshot replication or transactional replication.
			/// </summary>
			[Column("is_replicated"),                         Nullable] public bool?    IsReplicated                   { get; set; } // bit
			/// <summary>
			/// 1 = Table has a replication filter.
			/// </summary>
			[Column("has_replication_filter"),                Nullable] public bool?    HasReplicationFilter           { get; set; } // bit
			/// <summary>
			/// 1 = Table is published using merge replication.
			/// </summary>
			[Column("is_merge_published"),                    Nullable] public bool?    IsMergePublished               { get; set; } // bit
			/// <summary>
			/// 1 = Table is subscribed using an immediate updating subscription.
			/// </summary>
			[Column("is_sync_tran_subscribed"),               Nullable] public bool?    IsSyncTranSubscribed           { get; set; } // bit
			/// <summary>
			/// 1 = Table contains persisted data that depends on an assembly whose definition changed during the last ALTER ASSEMBLY. Will be reset to 0 after the next successful DBCC CHECKDB or DBCC CHECKTABLE.
			/// </summary>
			[Column("has_unchecked_assembly_data"),        NotNull    ] public bool     HasUncheckedAssemblyData       { get; set; } // bit
			/// <summary>
			/// The maximum bytes allowed for text in row.<br/><br/> 0 = Text in row option is not set. For more information, see <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-stored-procedures/sp-tableoption-transact-sql'>sp_tableoption (Transact-SQL)</a>.
			/// </summary>
			[Column("text_in_row_limit"),                     Nullable] public int?     TextInRowLimit                 { get; set; } // int
			/// <summary>
			/// 1 = Large value types are stored out-of-row. For more information, see <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-stored-procedures/sp-tableoption-transact-sql'>sp_tableoption (Transact-SQL)</a>.
			/// </summary>
			[Column("large_value_types_out_of_row"),          Nullable] public bool?    LargeValueTypesOutOfRow        { get; set; } // bit
			/// <summary>
			/// 1 = Table is enabled for change data capture. For more information, see <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-stored-procedures/sys-sp-cdc-enable-table-transact-sql'>sys.sp_cdc_enable_table (Transact-SQL)</a>.
			/// </summary>
			[Column("is_tracked_by_cdc"),                     Nullable] public bool?    IsTrackedByCdc                 { get; set; } // bit
			/// <summary>
			/// The value of the LOCK_ESCALATION option for the table:<br/><br/> 0 = TABLE<br/><br/> 1 = DISABLE<br/><br/> 2 = AUTO
			/// </summary>
			[Column("lock_escalation"),                       Nullable] public byte?    LockEscalation                 { get; set; } // tinyint
			/// <summary>
			/// A text description of the lock_escalation option for the table. Possible values are: TABLE, AUTO, and DISABLE.
			/// </summary>
			[Column("lock_escalation_desc"),                  Nullable] public string?  LockEscalationDesc             { get; set; } // nvarchar(60)
			/// <summary>
			/// <strong>Applies to</strong>: SQL Server 2012 (11.x) and later and Azure SQL Database.<br/><br/> 1 = Table is a FileTable.<br/><br/> For more information about FileTables, see <a href='https://docs.microsoft.com/en-us/sql/relational-databases/blob/filetables-sql-server'>FileTables (SQL Server)</a>.
			/// </summary>
			[Column("is_filetable"),                          Nullable] public bool?    IsFileTable                    { get; set; } // bit
			/// <summary>
			/// <strong>Applies to</strong>: SQL Server 2014 (12.x) and later and Azure SQL Database.<br/><br/> The following are possible values:<br/><br/> 0 = SCHEMA_AND_DATA<br/><br/> 1 = SCHEMA_ONLY<br/><br/> The value of 0 is the default value.
			/// </summary>
			[Column("durability"),                            Nullable] public byte?    Durability                     { get; set; } // tinyint
			/// <summary>
			/// <strong>Applies to</strong>: SQL Server 2014 (12.x) and later and Azure SQL Database.<br/><br/> The following are the possible values:<br/><br/> SCHEMA_ONLY<br/><br/> SCHEMA_AND_DATA<br/><br/> The value of SCHEMA_AND_DATA indicates that the table is a durable, in-memory table. SCHEMA_AND_DATA is the default value for memory optimized tables. The value of SCHEMA_ONLY indicates that the table data will not be persisted upon restart of the database with memory optimized objects.
			/// </summary>
			[Column("durability_desc"),                       Nullable] public string?  DurabilityDesc                 { get; set; } // nvarchar(60)
			/// <summary>
			/// <strong>Applies to</strong>: SQL Server 2014 (12.x) and later and Azure SQL Database.<br/><br/> The following are the possible values:<br/><br/> 0 = not memory optimized.<br/><br/> 1 = is memory optimized.<br/><br/> A value of 0 is the default value.<br/><br/> Memory optimized tables are in-memory user tables, the schema of which is persisted on disk similar to other user tables. Memory optimized tables can be accessed from natively compiled stored procedures.
			/// </summary>
			[Column("is_memory_optimized"),                   Nullable] public bool?    IsMemoryOptimized              { get; set; } // bit
			/// <summary>
			/// <strong>Applies to</strong>: SQL Server 2016 (13.x) and later and Azure SQL Database.<br/><br/> The numeric value representing the type of table:<br/><br/> 0 = NON_TEMPORAL_TABLE<br/><br/> 1 = HISTORY_TABLE (associated with a temporal table)<br/><br/> 2 = SYSTEM_VERSIONED_TEMPORAL_TABLE
			/// </summary>
			[Column("temporal_type"),                         Nullable] public byte?    TemporalType                   { get; set; } // tinyint
			/// <summary>
			/// <strong>Applies to</strong>: SQL Server 2016 (13.x) and later and Azure SQL Database.<br/><br/> The text description of the type of table:<br/><br/> NON_TEMPORAL_TABLE<br/><br/> HISTORY_TABLE<br/><br/> SYSTEM_VERSIONED_TEMPORAL_TABLE
			/// </summary>
			[Column("temporal_type_desc"),                    Nullable] public string?  TemporalTypeDesc               { get; set; } // nvarchar(60)
			/// <summary>
			/// <strong>Applies to</strong>: SQL Server 2016 (13.x) and later and Azure SQL Database.<br/><br/> When temporal_type = 2 or ledger_type = 2 returns object_id of the table that maintains historical data for a temporal table, otherwise returns NULL.
			/// </summary>
			[Column("history_table_id"),                      Nullable] public int?     HistoryTableID                 { get; set; } // int
			/// <summary>
			/// <strong>Applies to</strong>: SQL Server 2016 (13.x) and later and Azure SQL Database<br/><br/> Indicates whether the table is Stretch-enabled.<br/><br/> 0 = The table is not Stretch-enabled.<br/><br/> 1 = The table is Stretch-enabled.<br/><br/> For more info, see <a href='https://docs.microsoft.com/en-us/sql/sql-server/stretch-database/stretch-database'>Stretch Database</a>.
			/// </summary>
			[Column("is_remote_data_archive_enabled"),        Nullable] public bool?    IsRemoteDataArchiveEnabled     { get; set; } // bit
			/// <summary>
			/// <strong>Applies to</strong>: SQL Server 2016 (13.x) and later, Azure SQL Database, and Azure Synapse Analytics.<br/><br/> Indicates table is an external table.<br/><br/> 0 = The table is not an external table.<br/><br/> 1 = The table is an external table.
			/// </summary>
			[Column("is_external"),                        NotNull    ] public bool     IsExternal                     { get; set; } // bit
			/// <summary>
			/// <strong>Applies to</strong>: Azure SQL Database. <br/><br/>The numeric value representing duration of the temporal history retention period in units specified with history_retention_period_unit.
			/// </summary>
			[Column("history_retention_period"),              Nullable] public int?     HistoryRetentionPeriod         { get; set; } // int
			/// <summary>
			/// <strong>Applies to</strong>: Azure SQL Database. <br/><br/>The numeric value representing type of temporal history retention period unit. <br/><br/>-1: INFINITE <br/><br/>3: DAY <br/><br/>4: WEEK <br/><br/>5: MONTH <br/><br/>6: YEAR
			/// </summary>
			[Column("history_retention_period_unit"),         Nullable] public int?     HistoryRetentionPeriodUnit     { get; set; } // int
			/// <summary>
			/// <strong>Applies to</strong>: Azure SQL Database. <br/><br/>The text description of type of temporal history retention period unit. <br/><br/>INFINITE <br/><br/>DAY <br/><br/>WEEK <br/><br/>MONTH <br/><br/>YEAR
			/// </summary>
			[Column("history_retention_period_unit_desc"),    Nullable] public string?  HistoryRetentionPeriodUnitDesc { get; set; } // nvarchar(10)
			/// <summary>
			/// <strong>Applies to</strong>: SQL Server 2017 (14.x) and Azure SQL Database. <br/><br/>1 = This is a graph Node table. <br/><br/>0 = This is not a graph Node table.
			/// </summary>
			[Column("is_node"),                               Nullable] public bool?    IsNode                         { get; set; } // bit
			/// <summary>
			/// <strong>Applies to</strong>: Azure SQL Database. <br/><br/>1 = This is a graph Edge table. <br/><br/>0 = This is not a graph Edge table.
			/// </summary>
			[Column("is_edge"),                               Nullable] public bool?    IsEdge                         { get; set; } // bit
			/// <summary>
			/// <strong>Applies to</strong>: Azure SQL Database. <br/><br/>The numeric value indicates if the table is a ledger table.<br/><br/>0 = NON_LEDGER_TABLE<br/>1 = HISTORY_TABLE (associated with an updatable ledger table)<br/>2 = UPDATABLE_LEDGER_TABLE<br/>3 = APPEND_ONLY_LEDGER_TABLE<br/><br/>For more information on database ledger, see <a href='https://docs.microsoft.com/en-us/azure/azure-sql/database/ledger-overview'>Azure SQL Database ledger</a>.
			/// </summary>
			[Column("ledger_type"),                        NotNull    ] public byte     LedgerType                     { get; set; } // tinyint
			/// <summary>
			/// <strong>Applies to</strong>: Azure SQL Database. <br/><br/>The text description of a value in the ledger_type column:<br/><br/>NON_LEDGER_TABLE<br/>HISTORY_TABLE<br/>UPDATABLE_LEDGER_TABLE<br/>APPEND_ONLY_LEDGER_TABLE
			/// </summary>
			[Column("ledger_type_desc"),                   NotNull    ] public string   LedgerTypeDesc                 { get; set; } = null!; // nvarchar(60)
			/// <summary>
			/// <strong>Applies to</strong>: Azure SQL Database. <br/><br/>When ledger_type IN (2,3) returns object_id of the ledger view, otherwise returns NULL.
			/// </summary>
			[Column("ledger_view_id"),                     NotNull    ] public int      LedgerViewID                   { get; set; } // int
			/// <summary>
			/// <strong>Applies to</strong>: Azure SQL Database. <br/><br/>Indicates a ledger table that has been dropped.
			/// </summary>
			[Column("is_dropped_ledger_table"),            NotNull    ] public bool     IsDroppedLedgerTable           { get; set; } // bit

			#region Associations

			/// <summary>
			/// objects (sys.objects)
			/// </summary>
			[Association(ThisKey="ObjectID", OtherKey="ObjectID", CanBeNull=false)]
			public ObjectSchema.Object Object { get; set; } = null!;

			#endregion
		}

		/// <summary>
		/// <para><strong>sys.table_types (Transact-SQL)</strong></para>
		/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)  √ Azure SQL Database</para>
		/// <para>Displays properties of user-defined table types in SQL Server. A table type is a type from which table variables or table-valued parameters could be declared. Each table type has a <strong>type_table_object_id</strong> that is a foreign key into the <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-objects-transact-sql'>sys.objects</a> catalog view. You can use this ID column to query various catalog views, in a way that is similar to an <strong>object_id</strong> column of a regular table, to discover the structure of the table type such as its columns and constraints.</para><br/>
		/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-table-types-transact-sql'>sys.table_types</a>.</para>
		/// </summary>
		[Table(Schema="sys", Name="table_types", IsView=true)]
		public partial class TableType
		{
			/// <summary>
			/// For a list of columns that this view inherits, see <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-types-transact-sql'>sys.types (Transact-SQL)</a>.
			/// </summary>
			[Column("*\\<inherited columns>*"), NotNull    ] public object InheritedColumns  { get; set; } = null!; // object
			/// <summary>
			/// Object identification number. This number is unique within a database.
			/// </summary>
			[Column("type_table_object_id"),    NotNull    ] public int    TypeTableObjectID { get; set; } // int
			/// <summary>
			/// <strong>Applies to</strong>: SQL Server 2014 (12.x) and later.<br/><br/> The following are the possible values:<br/><br/> 0 = is not memory optimized<br/><br/> 1 = is memory optimized<br/><br/> A value of 0 is the default value.<br/><br/> Table types are always created with DURABILITY = SCHEMA_ONLY. Only the schema is persisted on disk.
			/// </summary>
			[Column("is_memory_optimized"),        Nullable] public bool?  IsMemoryOptimized { get; set; } // bit
		}

		/// <summary>
		/// <para><strong>sys.triggers (Transact-SQL)</strong></para>
		/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)  √ Azure SQL Database</para>
		/// <para>Contains a row for each object that is a trigger, with a type of TR or TA. DML trigger names are schema-scoped and, therefore, are visible in <strong>sys.objects</strong>. DDL trigger names are scoped by the parent entity and are only visible in this view.<br/>
		///  The <strong>parent_class</strong> and <strong>name</strong> columns uniquely identify the trigger in the database.</para><br/>
		/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-triggers-transact-sql'>sys.triggers</a>.</para>
		/// </summary>
		[Table(Schema="sys", Name="triggers", IsView=true)]
		public partial class Trigger
		{
			/// <summary>
			/// Trigger name. DML trigger names are schema-scoped. DDL trigger names are scoped with respect to the parent entity.
			/// </summary>
			[Column("name"),                   NotNull    ] public string   Name                { get; set; } = null!; // sysname
			/// <summary>
			/// Object identification number. Is unique within a database.
			/// </summary>
			[Column("object_id"),              NotNull    ] public int      ObjectID            { get; set; } // int
			/// <summary>
			/// Class of the parent of the trigger.<br/><br/> 0 = Database, for the DDL triggers.<br/><br/> 1 = Object or column for the DML triggers.
			/// </summary>
			[Column("parent_class"),           NotNull    ] public byte     ParentClass         { get; set; } // tinyint
			/// <summary>
			/// Description of the parent class of the trigger.<br/><br/> DATABASE<br/><br/> OBJECT_OR_COLUMN
			/// </summary>
			[Column("parent_class_desc"),         Nullable] public string?  ParentClassDesc     { get; set; } // nvarchar(60)
			/// <summary>
			/// ID of the parent of the trigger, as follows:<br/><br/> 0 = Triggers that are database-parented triggers.<br/><br/> For DML triggers, this is the <strong>object_id</strong> of the table or view on which the DML trigger is defined.
			/// </summary>
			[Column("parent_id"),              NotNull    ] public int      ParentID            { get; set; } // int
			/// <summary>
			/// Object type:<br/><br/> TA = Assembly (CLR) trigger<br/><br/> TR = SQL trigger
			/// </summary>
			[Column("type"),                   NotNull    ] public string   TypeColumn          { get; set; } = null!; // char(2)
			/// <summary>
			/// Description of object type.<br/><br/> CLR_TRIGGER<br/><br/> SQL_TRIGGER
			/// </summary>
			[Column("type_desc"),                 Nullable] public string?  TypeDesc            { get; set; } // nvarchar(60)
			/// <summary>
			/// Date the trigger was created.
			/// </summary>
			[Column("create_date"),            NotNull    ] public DateTime CreateDate          { get; set; } // datetime
			/// <summary>
			/// Date the object was last modified by using an ALTER statement.
			/// </summary>
			[Column("modify_date"),            NotNull    ] public DateTime ModifyDate          { get; set; } // datetime
			/// <summary>
			/// Trigger created on behalf of the user by an internal SQL Server component.
			/// </summary>
			[Column("is_ms_shipped"),          NotNull    ] public bool     IsMSShipped         { get; set; } // bit
			/// <summary>
			/// Trigger is disabled.
			/// </summary>
			[Column("is_disabled"),            NotNull    ] public bool     IsDisabled          { get; set; } // bit
			/// <summary>
			/// Trigger was created as NOT FOR REPLICATION.
			/// </summary>
			[Column("is_not_for_replication"), NotNull    ] public bool     IsNotForReplication { get; set; } // bit
			/// <summary>
			/// 1 = INSTEAD OF triggers<br/><br/> 0 = AFTER triggers.
			/// </summary>
			[Column("is_instead_of_trigger"),  NotNull    ] public bool     IsInsteadOfTrigger  { get; set; } // bit

			#region Associations

			/// <summary>
			/// objects (sys.objects)
			/// </summary>
			[Association(ThisKey="ObjectID", OtherKey="ObjectID", CanBeNull=false)]
			public ObjectSchema.Object Object { get; set; } = null!;

			#endregion
		}

		/// <summary>
		/// <para><strong>sys.trigger_events (Transact-SQL)</strong></para>
		/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)  √ Azure SQL Database</para>
		/// <para>Contains a row per event for which a trigger fires.<br/>
		/// <note type='note'><br/>
		/// <strong>sys.trigger_events</strong> does not apply to event notifications.<br/>
		/// </note></para><br/>
		/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-trigger-events-transact-sql'>sys.trigger_events</a>.</para>
		/// </summary>
		[Table(Schema="sys", Name="trigger_events", IsView=true)]
		public partial class TriggerEvent
		{
			/// <summary>
			/// ID of the trigger or event notification. This value, together with <strong>type</strong>, uniquely identifies the row.
			/// </summary>
			[Column("object_id"),             NotNull    ] public int     ObjectID           { get; set; } // int
			/// <summary>
			/// Event that causes the trigger to fire.
			/// </summary>
			[Column("type"),                  NotNull    ] public int     TypeColumn         { get; set; } // int
			/// <summary>
			/// Description of the event that causes the trigger to fire.
			/// </summary>
			[Column("type_desc"),             NotNull    ] public string  TypeDesc           { get; set; } = null!; // nvarchar(60)
			/// <summary>
			/// 1 = Trigger event.<br/><br/> 0 = Notification event.
			/// </summary>
			[Column("is_trigger_event"),         Nullable] public bool?   IsTriggerEvent     { get; set; } // bit
			/// <summary>
			/// Event group on which the trigger or event notification is created, or null if not created on an event group.
			/// </summary>
			[Column("event_group_type"),         Nullable] public int?    EventGroupType     { get; set; } // int
			/// <summary>
			/// Description of the event group on which the trigger or event notification is created, or null if not created on an event group.
			/// </summary>
			[Column("event_group_type_desc"),    Nullable] public string? EventGroupTypeDesc { get; set; } // nvarchar(60)
			/// <summary>
			/// Trigger is marked to be the first to fire for this event.
			/// </summary>
			[Column("is_first"),                 Nullable] public bool?   IsFirst            { get; set; } // bit
			/// <summary>
			/// Trigger is marked to be the last to fire for this event.
			/// </summary>
			[Column("is_last"),                  Nullable] public bool?   IsLast             { get; set; } // bit

			#region Associations

			/// <summary>
			/// objects (sys.objects)
			/// </summary>
			[Association(ThisKey="ObjectID", OtherKey="ObjectID", CanBeNull=false)]
			public ObjectSchema.Object Object { get; set; } = null!;

			#endregion
		}

		/// <summary>
		/// <para><strong>sys.trigger_event_types (Transact-SQL)</strong></para>
		/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)</para>
		/// <para>Returns a row for each event or event group on which a trigger can fire.</para><br/>
		/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-trigger-event-types-transact-sql'>sys.trigger_event_types</a>.</para>
		/// </summary>
		[Table(Schema="sys", Name="trigger_event_types", IsView=true)]
		public partial class TriggerEventType
		{
			/// <summary>
			/// Type of event or event group that causes a trigger to fire.
			/// </summary>
			[Column("type"),        NotNull    ] public int     TypeColumn { get; set; } // int
			/// <summary>
			/// Name of an event or event group. This can be specified in the FOR clause of a <a href='https://docs.microsoft.com/en-us/sql/t-sql/statements/create-trigger-transact-sql'>CREATE TRIGGER</a> statement.
			/// </summary>
			[Column("type_name"),      Nullable] public string? TypeName   { get; set; } // nvarchar(64)
			/// <summary>
			/// Type of event group that is the parent of the event or event group.
			/// </summary>
			[Column("parent_type"),    Nullable] public int?    ParentType { get; set; } // int
		}

		/// <summary>
		/// <para><strong>sys.views (Transact-SQL)</strong></para>
		/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions) √ Azure SQL Database √ Azure SQL Managed Instance √ Azure Synapse Analytics √ Analytics Platform System (PDW)</para>
		/// <para>Contains a row for each view object, with <strong>sys.objects.type</strong> = V.</para><br/>
		/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-views-transact-sql'>sys.views</a>.</para>
		/// </summary>
		[Table(Schema="sys", Name="views", IsView=true)]
		public partial class View
		{
			/// <summary>
			/// Object name.
			/// </summary>
			[Column("name"),                        NotNull    ] public string   Name                     { get; set; } = null!; // sysname
			/// <summary>
			/// Object identification number. Is unique within a database.
			/// </summary>
			[Column("object_id"),                   NotNull    ] public int      ObjectID                 { get; set; } // int
			/// <summary>
			/// ID of the individual owner, if different from the schema owner. By default, schema-contained objects are owned by the schema owner. However, an alternate owner can be specified by using the ALTER AUTHORIZATION statement to change ownership.<br/><br/> Is NULL if there is no alternate individual owner.<br/><br/> Is NULL if the object type is one of the following:<br/><br/> C = CHECK constraint<br/><br/> D = DEFAULT (constraint or stand-alone)<br/><br/> F = FOREIGN KEY constraint<br/><br/> PK = PRIMARY KEY constraint<br/><br/> R = Rule (old-style, stand-alone)<br/><br/> TA = Assembly (CLR-integration) trigger<br/><br/> TR = SQL trigger<br/><br/> UQ = UNIQUE constraint<br/><br/> EC = Edge constraint
			/// </summary>
			[Column("principal_id"),                   Nullable] public int?     PrincipalID              { get; set; } // int
			/// <summary>
			/// ID of the schema that the object is contained in.<br/><br/> Schema-scoped system objects are always contained in the sys or INFORMATION_SCHEMA schemas.
			/// </summary>
			[Column("schema_id"),                   NotNull    ] public int      SchemaID                 { get; set; } // int
			/// <summary>
			/// ID of the object to which this object belongs.<br/><br/> 0 = Not a child object.
			/// </summary>
			[Column("parent_object_id"),            NotNull    ] public int      ParentObjectID           { get; set; } // int
			/// <summary>
			/// Object type:<br/><br/> AF = Aggregate function (CLR)<br/><br/> C = CHECK constraint<br/><br/> D = DEFAULT (constraint or stand-alone)<br/><br/> F = FOREIGN KEY constraint<br/><br/> FN = SQL scalar function<br/><br/> FS = Assembly (CLR) scalar-function<br/><br/> FT = Assembly (CLR) table-valued function<br/><br/> IF = SQL inline table-valued function<br/><br/> IT = Internal table<br/><br/> P = SQL Stored Procedure<br/><br/> PC = Assembly (CLR) stored-procedure<br/><br/> PG = Plan guide<br/><br/> PK = PRIMARY KEY constraint<br/><br/> R = Rule (old-style, stand-alone)<br/><br/> RF = Replication-filter-procedure<br/><br/> S = System base table<br/><br/> SN = Synonym<br/><br/> SO = Sequence object<br/><br/> U = Table (user-defined)<br/><br/> V = View<br/><br/> EC = Edge constraint <br/><br/> <br/><br/> <strong>Applies to</strong>: SQL Server 2012 (11.x) and later.<br/><br/> SQ = Service queue<br/><br/> TA = Assembly (CLR) DML trigger<br/><br/> TF = SQL table-valued-function<br/><br/> TR = SQL DML trigger<br/><br/> TT = Table type<br/><br/> UQ = UNIQUE constraint<br/><br/> X = Extended stored procedure<br/><br/> <br/><br/> <strong>Applies to</strong>: SQL Server 2014 (12.x) and later, Azure SQL Database, Azure Synapse Analytics, Analytics Platform System (PDW).<br/><br/> ST = STATS_TREE<br/><br/> <br/><br/> <strong>Applies to</strong>: SQL Server 2016 (13.x) and later, Azure SQL Database, Azure Synapse Analytics, Analytics Platform System (PDW).<br/><br/> ET = External Table
			/// </summary>
			[Column("type"),                           Nullable] public string?  TypeColumn               { get; set; } // char(2)
			/// <summary>
			/// Description of the object type:<br/><br/> AGGREGATE_FUNCTION<br/><br/> CHECK_CONSTRAINT<br/><br/> CLR_SCALAR_FUNCTION<br/><br/> CLR_STORED_PROCEDURE<br/><br/> CLR_TABLE_VALUED_FUNCTION<br/><br/> CLR_TRIGGER<br/><br/> DEFAULT_CONSTRAINT<br/><br/> EXTENDED_STORED_PROCEDURE<br/><br/> FOREIGN_KEY_CONSTRAINT<br/><br/> INTERNAL_TABLE<br/><br/> PLAN_GUIDE<br/><br/> PRIMARY_KEY_CONSTRAINT<br/><br/> REPLICATION_FILTER_PROCEDURE<br/><br/> RULE<br/><br/> SEQUENCE_OBJECT<br/><br/> <br/><br/> <strong>Applies to</strong>: SQL Server 2012 (11.x) and later.<br/><br/>  SERVICE_QUEUE<br/><br/> SQL_INLINE_TABLE_VALUED_FUNCTION<br/><br/> SQL_SCALAR_FUNCTION<br/><br/> SQL_STORED_PROCEDURE<br/><br/> SQL_TABLE_VALUED_FUNCTION<br/><br/> SQL_TRIGGER<br/><br/> SYNONYM<br/><br/> SYSTEM_TABLE<br/><br/> TABLE_TYPE<br/><br/> UNIQUE_CONSTRAINT<br/><br/> USER_TABLE<br/><br/> VIEW
			/// </summary>
			[Column("type_desc"),                      Nullable] public string?  TypeDesc                 { get; set; } // nvarchar(60)
			/// <summary>
			/// Date the object was created.
			/// </summary>
			[Column("create_date"),                 NotNull    ] public DateTime CreateDate               { get; set; } // datetime
			/// <summary>
			/// Date the object was last modified by using an ALTER statement. If the object is a table or a view, modify_date also changes when an index on the table or view is created or altered.
			/// </summary>
			[Column("modify_date"),                 NotNull    ] public DateTime ModifyDate               { get; set; } // datetime
			/// <summary>
			/// Object is created by an internal SQL Server component.
			/// </summary>
			[Column("is_ms_shipped"),               NotNull    ] public bool     IsMSShipped              { get; set; } // bit
			/// <summary>
			/// Object is published.
			/// </summary>
			[Column("is_published"),                NotNull    ] public bool     IsPublished              { get; set; } // bit
			/// <summary>
			/// Only the schema of the object is published.
			/// </summary>
			[Column("is_schema_published"),         NotNull    ] public bool     IsSchemaPublished        { get; set; } // bit
			/// <summary>
			/// 1 = View is replicated.
			/// </summary>
			[Column("is_replicated"),                  Nullable] public bool?    IsReplicated             { get; set; } // bit
			/// <summary>
			/// 1 = View has a replication filter.
			/// </summary>
			[Column("has_replication_filter"),         Nullable] public bool?    HasReplicationFilter     { get; set; } // bit
			/// <summary>
			/// 1 = VIEW_METADATA option specified for view. For more information, see <a href='https://docs.microsoft.com/en-us/sql/t-sql/statements/create-view-transact-sql'>CREATE VIEW (Transact-SQL)</a>.
			/// </summary>
			[Column("has_opaque_metadata"),         NotNull    ] public bool     HasOpaqueMetadata        { get; set; } // bit
			/// <summary>
			/// 1 = View contains persisted data that depends on an assembly whose definition changed during the last ALTER ASSEMBLY. Resets to 0 after the next successful DBCC CHECKDB or DBCC CHECKTABLE.
			/// </summary>
			[Column("has_unchecked_assembly_data"), NotNull    ] public bool     HasUncheckedAssemblyData { get; set; } // bit
			/// <summary>
			/// 1 = WITH CHECK OPTION was specified in the view definition.
			/// </summary>
			[Column("with_check_option"),           NotNull    ] public bool     WithCheckOption          { get; set; } // bit
			/// <summary>
			/// 1 = View was created automatically by the system to store correlation information between datetime columns. Creation of this view was enabled by setting DATE_CORRELATION_OPTIMIZATION to ON.
			/// </summary>
			[Column("is_date_correlation_view"),    NotNull    ] public bool     IsDateCorrelationView    { get; set; } // bit
			/// <summary>
			/// <strong>Applies to</strong>: Azure SQL Database. <br/><br/>The numeric value indicating if a view is a ledger view for an updatable ledger table.<br/><br/>0 = NON_LEDGER_VIEW<br/>1 = LEDGER_VIEW<br/><br/>For more information on database ledger, see <a href='https://docs.microsoft.com/en-us/azure/azure-sql/database/ledger-overview'>Azure SQL Database ledger</a>.
			/// </summary>
			[Column("ledger_view_type"),            NotNull    ] public byte     LedgerViewType           { get; set; } // tinyint
			/// <summary>
			/// <strong>Applies to</strong>: Azure SQL Database. <br/><br/>The text description of a value in the ledger_view_type column:<br/><br/>NON_LEDGER_VIEW<br/>LEDGER_VIEW
			/// </summary>
			[Column("ledger_view_type_desc"),       NotNull    ] public string   LedgerViewTypeDesc       { get; set; } = null!; // nvarchar(60)
			/// <summary>
			/// <strong>Applies to</strong>: Azure SQL Database. <br/><br/>Indicates a ledger view that has been dropped.
			/// </summary>
			[Column("is_dropped_ledger_view"),      NotNull    ] public bool     IsDroppedLedgerView      { get; set; } // bit

			#region Associations

			/// <summary>
			/// objects (sys.objects)
			/// </summary>
			[Association(ThisKey="ObjectID", OtherKey="ObjectID", CanBeNull=false)]
			public ObjectSchema.Object Object { get; set; } = null!;

			#endregion
		}
	}

	public static partial class PartitionFunctionSchema
	{
		public partial class DataContext
		{
			/// <summary>
			/// <para><strong>sys.partition_functions (Transact-SQL)</strong></para>
			/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions) √ Azure SQL Database √ Azure SQL Managed Instance √ Azure Synapse Analytics √ Analytics Platform System (PDW)</para>
			/// <para>Contains a row for each partition function in SQL Server.</para><br/>
			/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-partition-functions-transact-sql'>sys.partition_functions</a>.</para>
			/// </summary>
			public ITable<PartitionFunction>   PartitionFunctions   { get { return _dataContext.GetTable<PartitionFunction>(); } }
			/// <summary>
			/// <para><strong>sys.partition_parameters (Transact-SQL)</strong></para>
			/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions) √ Azure SQL Database √ Azure SQL Managed Instance √ Azure Synapse Analytics √ Analytics Platform System (PDW)</para>
			/// <para>Contains a row for each parameter of a partition function.</para><br/>
			/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-partition-parameters-transact-sql'>sys.partition_parameters</a>.</para>
			/// </summary>
			public ITable<PartitionParameter>  PartitionParameters  { get { return _dataContext.GetTable<PartitionParameter>(); } }
			/// <summary>
			/// <para><strong>sys.partition_range_values (Transact-SQL)</strong></para>
			/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions) √ Azure SQL Database √ Azure SQL Managed Instance √ Azure Synapse Analytics √ Analytics Platform System (PDW)</para>
			/// <para>Contains a row for each range boundary value of a partition function of type R.</para><br/>
			/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-partition-range-values-transact-sql'>sys.partition_range_values</a>.</para>
			/// </summary>
			public ITable<PartitionRangeValue> PartitionRangeValues { get { return _dataContext.GetTable<PartitionRangeValue>(); } }

			private readonly IDataContext _dataContext;

			public DataContext(IDataContext dataContext)
			{
				_dataContext = dataContext;
			}
		}

		/// <summary>
		/// <para><strong>sys.partition_functions (Transact-SQL)</strong></para>
		/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions) √ Azure SQL Database √ Azure SQL Managed Instance √ Azure Synapse Analytics √ Analytics Platform System (PDW)</para>
		/// <para>Contains a row for each partition function in SQL Server.</para><br/>
		/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-partition-functions-transact-sql'>sys.partition_functions</a>.</para>
		/// </summary>
		[Table(Schema="sys", Name="partition_functions", IsView=true)]
		public partial class PartitionFunction
		{
			/// <summary>
			/// Name of the partition function. Is unique within the database.
			/// </summary>
			[Column("name"),                    NotNull    ] public string   Name                 { get; set; } = null!; // sysname
			/// <summary>
			/// Partition function ID. Is unique within the database.
			/// </summary>
			[Column("function_id"),             NotNull    ] public int      FunctionID           { get; set; } // int
			/// <summary>
			/// Function type.<br/><br/> R = Range
			/// </summary>
			[Column("type"),                    NotNull    ] public string   TypeColumn           { get; set; } = null!; // char(2)
			/// <summary>
			/// Function type.<br/><br/> RANGE
			/// </summary>
			[Column("type_desc"),                  Nullable] public string?  TypeDesc             { get; set; } // nvarchar(60)
			/// <summary>
			/// Number of partitions created by the function.
			/// </summary>
			[Column("fanout"),                  NotNull    ] public int      Fanout               { get; set; } // int
			/// <summary>
			/// For range partitioning.<br/><br/> 1 = Boundary value is included in the RIGHT range of the boundary.<br/><br/> 0 = LEFT.
			/// </summary>
			[Column("boundary_value_on_right"), NotNull    ] public bool     BoundaryValueOnRight { get; set; } // bit
			/// <summary>
			/// <strong>Applies to</strong>: SQL Server 2012 (11.x) and later.<br/><br/> 1 = Object is used for full-text index fragments.<br/><br/> 0 = Object is not used for full-text index fragments.
			/// </summary>
			[Column("is_system"),               NotNull    ] public object   IsSystem             { get; set; } = null!;
			/// <summary>
			/// Date the function was created.
			/// </summary>
			[Column("create_date"),             NotNull    ] public DateTime CreateDate           { get; set; } // datetime
			/// <summary>
			/// Date the function was last modified using an ALTER statement.
			/// </summary>
			[Column("modify_date"),             NotNull    ] public DateTime ModifyDate           { get; set; } // datetime
		}

		/// <summary>
		/// <para><strong>sys.partition_parameters (Transact-SQL)</strong></para>
		/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions) √ Azure SQL Database √ Azure SQL Managed Instance √ Azure Synapse Analytics √ Analytics Platform System (PDW)</para>
		/// <para>Contains a row for each parameter of a partition function.</para><br/>
		/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-partition-parameters-transact-sql'>sys.partition_parameters</a>.</para>
		/// </summary>
		[Table(Schema="sys", Name="partition_parameters", IsView=true)]
		public partial class PartitionParameter
		{
			/// <summary>
			/// ID of the partition function to which this parameter belongs.
			/// </summary>
			[Column("function_id"),    NotNull    ] public int     FunctionID    { get; set; } // int
			/// <summary>
			/// ID of the parameter. Is unique within the partition function, beginning with 1.
			/// </summary>
			[Column("parameter_id"),   NotNull    ] public int     ParameterID   { get; set; } // int
			/// <summary>
			/// ID of the system type of the parameter. Corresponds to the <strong>system_type_id</strong> column of the <strong>sys.types</strong> catalog view.
			/// </summary>
			[Column("system_type_id"), NotNull    ] public byte    SystemTypeID  { get; set; } // tinyint
			/// <summary>
			/// Maximum length of the parameter in bytes.
			/// </summary>
			[Column("max_length"),     NotNull    ] public short   MaxLength     { get; set; } // smallint
			/// <summary>
			/// Precision of the parameter if numeric-based; otherwise, 0.
			/// </summary>
			[Column("precision"),      NotNull    ] public byte    Precision     { get; set; } // tinyint
			/// <summary>
			/// Scale of the parameter if numeric-based; otherwise, 0.
			/// </summary>
			[Column("scale"),          NotNull    ] public byte    Scale         { get; set; } // tinyint
			/// <summary>
			/// Name of the collation of the parameter if character-based; otherwise, NULL.
			/// </summary>
			[Column("collation_name"),    Nullable] public string? CollationName { get; set; } // sysname
			/// <summary>
			/// ID of the type. Is unique within the database. For system data types, <strong>user_type_id</strong> = <strong>system_type_id</strong>.
			/// </summary>
			[Column("user_type_id"),   NotNull    ] public int     UserTypeID    { get; set; } // int
		}

		/// <summary>
		/// <para><strong>sys.partition_range_values (Transact-SQL)</strong></para>
		/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions) √ Azure SQL Database √ Azure SQL Managed Instance √ Azure Synapse Analytics √ Analytics Platform System (PDW)</para>
		/// <para>Contains a row for each range boundary value of a partition function of type R.</para><br/>
		/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-partition-range-values-transact-sql'>sys.partition_range_values</a>.</para>
		/// </summary>
		[Table(Schema="sys", Name="partition_range_values", IsView=true)]
		public partial class PartitionRangeValue
		{
			/// <summary>
			/// ID of the partition function for this range boundary value.
			/// </summary>
			[Column("function_id"),  NotNull    ] public int     FunctionID  { get; set; } // int
			/// <summary>
			/// ID (1-based ordinal) of the boundary value tuple, with left-most boundary starting at an ID of 1.
			/// </summary>
			[Column("boundary_id"),  NotNull    ] public int     BoundaryID  { get; set; } // int
			/// <summary>
			/// ID of the parameter of the function to which this value corresponds. The values in this column correspond with those in the <strong>parameter_id</strong> column of the <strong>sys.partition_parameters</strong> catalog view for any particular <strong>function_id</strong>.
			/// </summary>
			[Column("parameter_id"), NotNull    ] public int     ParameterID { get; set; } // int
			/// <summary>
			/// The actual boundary value.
			/// </summary>
			[Column("value"),           Nullable] public object? Value       { get; set; } // sql_variant
		}
	}

	public static partial class PolicyBasedManagementSchema
	{
		public partial class DataContext
		{
			/// <summary>
			/// <para><strong>syspolicy_conditions (Transact-SQL)</strong></para>
			/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)</para>
			/// <para>Displays one row for each Policy-Based Management condition in the instance of SQL Server. syspolicy_conditions belongs to the dbo schema in the msdb database. The following table describes the columns in the syspolicy_conditions view.</para><br/>
			/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/syspolicy-conditions-transact-sql'>dbo.syspolicy_conditions</a>.</para>
			/// </summary>
			public ITable<Condition>                    Conditions                    { get { return _dataContext.GetTable<Condition>(); } }
			/// <summary>
			/// <para><strong>syspolicy_policies (Transact-SQL)</strong></para>
			/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)</para>
			/// <para>Displays one row for each Policy-Based Management policy in the instance of SQL Server. syspolicy_policies belongs to the dbo schema in the msdb database. The following table describes the columns in the syspolicy_policies view.</para><br/>
			/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/syspolicy-policies-transact-sql'>dbo.syspolicy_policies</a>.</para>
			/// </summary>
			public ITable<Policy>                       Policies                      { get { return _dataContext.GetTable<Policy>(); } }
			/// <summary>
			/// <para><strong>syspolicy_policy_categories (Transact-SQL)</strong></para>
			/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)</para>
			/// <para>Displays one row for each Policy-Based Management policy category in the instance of SQL Server. Policy categories help you organize policies when you have many policies. The following table describes the columns in the syspolicy_policy_groups view.</para><br/>
			/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/syspolicy-policy-categories-transact-sql'>dbo.syspolicy_policy_categories</a>.</para>
			/// </summary>
			public ITable<PolicyCategory>               PolicyCategories              { get { return _dataContext.GetTable<PolicyCategory>(); } }
			/// <summary>
			/// <para><strong>syspolicy_policy_category_subscriptions (Transact-SQL)</strong></para>
			/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)</para>
			/// <para>Displays one row for each Policy-Based Management subscription in the instance of SQL Server. Each row describes a target and policy category pair. The following table describes the columns in the syspolicy_policy_group_subscriptions view.</para><br/>
			/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/syspolicy-policy-category-subscriptions-transact-sql'>dbo.syspolicy_policy_category_subscriptions</a>.</para>
			/// </summary>
			public ITable<PolicyCategorySubscription>   PolicyCategorySubscriptions   { get { return _dataContext.GetTable<PolicyCategorySubscription>(); } }
			/// <summary>
			/// <para><strong>syspolicy_policy_execution_history (Transact-SQL)</strong></para>
			/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)</para>
			/// <para>Displays the time when policies were executed, the result of each execution, and details about errors if any occurred. The following table describes the columns in the syspolicy_policy_execution_history view.</para><br/>
			/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/syspolicy-policy-execution-history-transact-sql'>dbo.syspolicy_policy_execution_history</a>.</para>
			/// </summary>
			public ITable<PolicyExecutionHistory>       PolicyExecutionHistories      { get { return _dataContext.GetTable<PolicyExecutionHistory>(); } }
			/// <summary>
			/// <para><strong>syspolicy_policy_execution_history_details (Transact-SQL)</strong></para>
			/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)</para>
			/// <para>Displays the condition expressions that were executed, the targets of the expressions, the result of each execution, and details about errors if any occurred. The following table describes the columns in the syspolicy_execution_history_details view.</para><br/>
			/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/syspolicy-policy-execution-history-details-transact-sql'>dbo.syspolicy_policy_execution_history_details</a>.</para>
			/// </summary>
			public ITable<PolicyExecutionHistoryDetail> PolicyExecutionHistoryDetails { get { return _dataContext.GetTable<PolicyExecutionHistoryDetail>(); } }
			/// <summary>
			/// <para><strong>syspolicy_system_health_state (Transact-SQL)</strong></para>
			/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)</para>
			/// <para>Displays one row for each Policy-Based Management policy and target query expression combination. Use the syspolicy_system_health_state view to programmatically check the policy health of the server. The following table describes the columns in the syspolicy_system_health_state view.</para><br/>
			/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/syspolicy-system-health-state-transact-sql'>dbo.syspolicy_system_health_state</a>.</para>
			/// </summary>
			public ITable<SystemHealthState>            SystemHealthStates            { get { return _dataContext.GetTable<SystemHealthState>(); } }

			private readonly IDataContext _dataContext;

			public DataContext(IDataContext dataContext)
			{
				_dataContext = dataContext;
			}
		}

		/// <summary>
		/// <para><strong>syspolicy_conditions (Transact-SQL)</strong></para>
		/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)</para>
		/// <para>Displays one row for each Policy-Based Management condition in the instance of SQL Server. syspolicy_conditions belongs to the dbo schema in the msdb database. The following table describes the columns in the syspolicy_conditions view.</para><br/>
		/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/syspolicy-conditions-transact-sql'>dbo.syspolicy_conditions</a>.</para>
		/// </summary>
		[Table(Database="msdb", Schema="dbo", Name="syspolicy_conditions", IsView=true)]
		public partial class Condition
		{
			/// <summary>
			/// Identifier of this condition. Each condition represents a collection of one or more condition expressions.
			/// </summary>
			[Column("condition_id"),      NotNull] public int      ConditionID     { get; set; } // int
			/// <summary>
			/// Name of the condition.
			/// </summary>
			[Column("name"),              NotNull] public string   Name            { get; set; } = null!; // sysname
			/// <summary>
			/// Date and time the condition was created.
			/// </summary>
			[Column("date_created"),      NotNull] public DateTime DateCreated     { get; set; } // datetime
			/// <summary>
			/// Description of the condition. The description column is optional and can be NULL.
			/// </summary>
			[Column("description"),       NotNull] public string   Description     { get; set; } = null!; // nvarchar(max)
			/// <summary>
			/// Login that created the condition.
			/// </summary>
			[Column("created_by"),        NotNull] public string   CreatedBy       { get; set; } = null!; // sysname
			/// <summary>
			/// Login that most recently modified the condition. Is NULL if never modified.
			/// </summary>
			[Column("modified_by"),       NotNull] public string   ModifiedBy      { get; set; } = null!; // sysname
			/// <summary>
			/// Date and time the condition was created. Is NULL if never modified.
			/// </summary>
			[Column("date_modified"),     NotNull] public DateTime DateModified    { get; set; } // datetime
			/// <summary>
			/// Specifies whether the condition is a naming condition.<br/><br/> 0 = The condition expression does not contain the @Name variable.<br/><br/> 1 = The condition expression contains the @Name variable.
			/// </summary>
			[Column("is_name_condition"), NotNull] public short    IsNameCondition { get; set; } // smallint
			/// <summary>
			/// Name of the facet that the condition is based on.
			/// </summary>
			[Column("facet"),             NotNull] public string   Facet           { get; set; } = null!; // nvarchar(max)
			/// <summary>
			/// Expression of the facet states.
			/// </summary>
			[Column(),                    NotNull] public string   Expression      { get; set; } = null!; // nvarchar(max)
			/// <summary>
			/// The object name assigned to @Name if the condition expression contains this variable.
			/// </summary>
			[Column("obj_name"),          NotNull] public string   ObjName         { get; set; } = null!; // sysname
		}

		/// <summary>
		/// <para><strong>syspolicy_policies (Transact-SQL)</strong></para>
		/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)</para>
		/// <para>Displays one row for each Policy-Based Management policy in the instance of SQL Server. syspolicy_policies belongs to the dbo schema in the msdb database. The following table describes the columns in the syspolicy_policies view.</para><br/>
		/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/syspolicy-policies-transact-sql'>dbo.syspolicy_policies</a>.</para>
		/// </summary>
		[Table(Database="msdb", Schema="dbo", Name="syspolicy_policies", IsView=true)]
		public partial class Policy
		{
			/// <summary>
			/// Identifier of the policy.
			/// </summary>
			[Column("policy_id"),         NotNull] public int      PolicyID        { get; set; } // int
			/// <summary>
			/// Name of the policy.
			/// </summary>
			[Column("name"),              NotNull] public string   Name            { get; set; } = null!; // sysname
			/// <summary>
			/// ID of the condition enforced or tested by this policy.
			/// </summary>
			[Column("condition_id"),      NotNull] public int      ConditionID     { get; set; } // int
			/// <summary>
			/// For internal use only.
			/// </summary>
			[Column("root_condition_id"), NotNull] public int      RootConditionID { get; set; } // int
			/// <summary>
			/// Date and time the policy was created.
			/// </summary>
			[Column("date_created"),      NotNull] public DateTime DateCreated     { get; set; } // datetime
			/// <summary>
			/// Evaluation mode for the policy. Possible values are as follows:<br/><br/> 0 = On demand<br/><br/> This mode evaluates the policy when directly specified by the user.<br/><br/> 1 = On change: prevent<br/><br/> This automated mode uses DDL triggers to prevent policy violations.<br/><br/> 2 = On change: log only<br/><br/> This automated mode uses event notification to evaluate a policy when a relevant change occurs and logs policy violations.<br/><br/> 4 = On schedule<br/><br/> This automated mode uses a SQL Server Agent job to periodically evaluate a policy. The mode logs policy violations.<br/><br/> Note: The value 3 is not a possible value.
			/// </summary>
			[Column("execution_mode"),    NotNull] public int      ExecutionMode   { get; set; } // int
			/// <summary>
			/// ID of the Policy-Based Management policy category that this policy belongs to. Is NULL if it is the default policy group.
			/// </summary>
			[Column("policy_category"),   NotNull] public int      PolicyCategory  { get; set; } // int
			/// <summary>
			/// When the execution_mode is On schedule, contains the ID of the schedule; otherwise, is NULL.
			/// </summary>
			[Column("schedule_uid"),      NotNull] public Guid     ScheduleUID     { get; set; } // uniqueidentifier
			/// <summary>
			/// Description of the policy. The description column is optional and can be NULL.
			/// </summary>
			[Column("description"),       NotNull] public string   Description     { get; set; } = null!; // nvarchar(max)
			/// <summary>
			/// The hyperlink text that belongs to help_link.
			/// </summary>
			[Column("help_text"),         NotNull] public string   HelpText        { get; set; } = null!; // nvarchar(4000)
			/// <summary>
			/// The additional help hyperlink that is assigned to the policy by the policy creator.
			/// </summary>
			[Column("help_link"),         NotNull] public string   HelpLink        { get; set; } = null!; // nvarchar(2083)
			/// <summary>
			/// ID of the object set that the policy evaluates.
			/// </summary>
			[Column("object_set_id"),     NotNull] public int      ObjectSetID     { get; set; } // int
			/// <summary>
			/// Indicates whether the policy is currently enabled (1) or disabled (0).
			/// </summary>
			[Column("is_enabled"),        NotNull] public bool     IsEnabled       { get; set; } // bit
			/// <summary>
			/// When the execution_mode is On schedule, contains the ID of the SQL Server Agent job that runs the policy.
			/// </summary>
			[Column("job_id"),            NotNull] public Guid     JobID           { get; set; } // uniqueidentifier
			/// <summary>
			/// Login that created the policy.
			/// </summary>
			[Column("created_by"),        NotNull] public string   CreatedBy       { get; set; } = null!; // sysname
			/// <summary>
			/// Login that most recently modified the policy. Is NULL if never modified.
			/// </summary>
			[Column("modified_by"),       NotNull] public string   ModifiedBy      { get; set; } = null!; // sysname
			/// <summary>
			/// Date and time the policy was created. Is NULL if never modified.
			/// </summary>
			[Column("date_modified"),     NotNull] public DateTime DateModified    { get; set; } // datetime
		}

		/// <summary>
		/// <para><strong>syspolicy_policy_categories (Transact-SQL)</strong></para>
		/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)</para>
		/// <para>Displays one row for each Policy-Based Management policy category in the instance of SQL Server. Policy categories help you organize policies when you have many policies. The following table describes the columns in the syspolicy_policy_groups view.</para><br/>
		/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/syspolicy-policy-categories-transact-sql'>dbo.syspolicy_policy_categories</a>.</para>
		/// </summary>
		[Table(Database="msdb", Schema="dbo", Name="syspolicy_policy_categories", IsView=true)]
		public partial class PolicyCategory
		{
			/// <summary>
			/// Identifier of the policy category.
			/// </summary>
			[Column("policy_category_id"),             NotNull] public int    PolicyCategoryID             { get; set; } // int
			/// <summary>
			/// Name of the policy category.
			/// </summary>
			[Column("name"),                           NotNull] public string Name                         { get; set; } = null!; // sysname
			/// <summary>
			/// Indicates whether the policy category applies to all databases in an instance without an explicit subscription (1) or the policy category must be applied to a database by using an explicit subscription (0).
			/// </summary>
			[Column("mandate_database_subscriptions"), NotNull] public bool   MandateDatabaseSubscriptions { get; set; } // bit
		}

		/// <summary>
		/// <para><strong>syspolicy_policy_category_subscriptions (Transact-SQL)</strong></para>
		/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)</para>
		/// <para>Displays one row for each Policy-Based Management subscription in the instance of SQL Server. Each row describes a target and policy category pair. The following table describes the columns in the syspolicy_policy_group_subscriptions view.</para><br/>
		/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/syspolicy-policy-category-subscriptions-transact-sql'>dbo.syspolicy_policy_category_subscriptions</a>.</para>
		/// </summary>
		[Table(Database="msdb", Schema="dbo", Name="syspolicy_policy_category_subscriptions", IsView=true)]
		public partial class PolicyCategorySubscription
		{
			/// <summary>
			/// Identifier of this record.
			/// </summary>
			[Column("policy_category_subscription_id"), NotNull] public int    PolicyCategorySubscriptionID { get; set; } // int
			/// <summary>
			/// Type of database object that is the target of this subscription.
			/// </summary>
			[Column("target_type"),                     NotNull] public string TargetType                   { get; set; } = null!; // sysname
			/// <summary>
			/// Name of the target object.
			/// </summary>
			[Column("target_object"),                   NotNull] public string TargetObject                 { get; set; } = null!; // sysname
			/// <summary>
			/// ID of the policy category that is applied to the target.
			/// </summary>
			[Column("policy_category_id"),              NotNull] public int    PolicyCategoryID             { get; set; } // int
		}

		/// <summary>
		/// <para><strong>syspolicy_policy_execution_history (Transact-SQL)</strong></para>
		/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)</para>
		/// <para>Displays the time when policies were executed, the result of each execution, and details about errors if any occurred. The following table describes the columns in the syspolicy_policy_execution_history view.</para><br/>
		/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/syspolicy-policy-execution-history-transact-sql'>dbo.syspolicy_policy_execution_history</a>.</para>
		/// </summary>
		[Table(Database="msdb", Schema="dbo", Name="syspolicy_policy_execution_history", IsView=true)]
		public partial class PolicyExecutionHistory
		{
			/// <summary>
			/// Identifier of this record. Each record indicates a policy and one time that it was initiated.
			/// </summary>
			[Column("history_id"),        NotNull] public long     HistoryID        { get; set; } // bigint
			/// <summary>
			/// Identifier of the policy.
			/// </summary>
			[Column("policy_id"),         NotNull] public int      PolicyID         { get; set; } // int
			/// <summary>
			/// Date and time this policy tried to run.
			/// </summary>
			[Column("start_date"),        NotNull] public DateTime StartDate        { get; set; } // datetime
			/// <summary>
			/// Time this policy finished running.
			/// </summary>
			[Column("end_date"),          NotNull] public DateTime EndDate          { get; set; } // datetime
			/// <summary>
			/// Success or failure of the policy. 0 = Failure, 1 = Success.
			/// </summary>
			[Column("result"),            NotNull] public bool     Result           { get; set; } // bit
			/// <summary>
			/// Message generated by the exception if one occurred.
			/// </summary>
			[Column("exception_message"), NotNull] public string   ExceptionMessage { get; set; } = null!; // nvarchar(max)
			/// <summary>
			/// Description of the exception if one occurred.
			/// </summary>
			[Column("exception"),         NotNull] public string   Exception        { get; set; } = null!; // nvarchar(max)
		}

		/// <summary>
		/// <para><strong>syspolicy_policy_execution_history_details (Transact-SQL)</strong></para>
		/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)</para>
		/// <para>Displays the condition expressions that were executed, the targets of the expressions, the result of each execution, and details about errors if any occurred. The following table describes the columns in the syspolicy_execution_history_details view.</para><br/>
		/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/syspolicy-policy-execution-history-details-transact-sql'>dbo.syspolicy_policy_execution_history_details</a>.</para>
		/// </summary>
		[Table(Database="msdb", Schema="dbo", Name="syspolicy_policy_execution_history_details", IsView=true)]
		public partial class PolicyExecutionHistoryDetail
		{
			/// <summary>
			/// Identifier of this record. Each record represents the attempt to evaluate or enforce one condition expression in a policy. If applied to multiple targets, each condition will have a detail record for each target.
			/// </summary>
			[Column("detail_id"),               NotNull] public long     DetailID              { get; set; } // bigint
			/// <summary>
			/// Identifier of the history event. Each history event represents one try to execute a policy. Because a condition can have several condition expressions and several targets, a history_id can create several detail records. Use the history_id column to join this view to the <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/syspolicy-policy-execution-history-transact-sql'>syspolicy_policy_execution_history</a> view.
			/// </summary>
			[Column("history_id"),              NotNull] public long     HistoryID             { get; set; } // bigint
			/// <summary>
			/// Target of the policy and syspolicy_policy_execution_history view.
			/// </summary>
			[Column("target_query_expression"), NotNull] public string   TargetQueryExpression { get; set; } = null!; // nvarchar(max)
			/// <summary>
			/// Date and time that this detail record was created.
			/// </summary>
			[Column("execution_date"),          NotNull] public DateTime ExecutionDate         { get; set; } // datetime
			/// <summary>
			/// Success or failure of this target and condition expression evaluation:<br/><br/> 0 (success) or 1 (failure).
			/// </summary>
			[Column("result"),                  NotNull] public bool     Result                { get; set; } // bit
			/// <summary>
			/// Result message. Only available if provided by the facet.
			/// </summary>
			[Column("result_detail"),           NotNull] public string   ResultDetail          { get; set; } = null!; // nvarchar(max)
			/// <summary>
			/// Message generated by the exception if one occurred.
			/// </summary>
			[Column("exception_message"),       NotNull] public string   ExceptionMessage      { get; set; } = null!; // nvarchar(max)
			/// <summary>
			/// Description of the exception if one occurred.
			/// </summary>
			[Column("exception"),               NotNull] public string   Exception             { get; set; } = null!; // nvarchar(max)
		}

		/// <summary>
		/// <para><strong>syspolicy_system_health_state (Transact-SQL)</strong></para>
		/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)</para>
		/// <para>Displays one row for each Policy-Based Management policy and target query expression combination. Use the syspolicy_system_health_state view to programmatically check the policy health of the server. The following table describes the columns in the syspolicy_system_health_state view.</para><br/>
		/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/syspolicy-system-health-state-transact-sql'>dbo.syspolicy_system_health_state</a>.</para>
		/// </summary>
		[Table(Database="msdb", Schema="dbo", Name="syspolicy_system_health_state", IsView=true)]
		public partial class SystemHealthState
		{
			/// <summary>
			/// Identifier of the policy health state record.
			/// </summary>
			[Column("health_state_id"),                 NotNull] public long     HealthStateID               { get; set; } // bigint
			/// <summary>
			/// Identifier of the policy.
			/// </summary>
			[Column("policy_id"),                       NotNull] public int      PolicyID                    { get; set; } // int
			/// <summary>
			/// Date and time the policy was last run.
			/// </summary>
			[Column("last_run_date"),                   NotNull] public DateTime LastRunDate                 { get; set; } // datetime
			/// <summary>
			/// The target expression, with values assigned to identity variables, that defines the target against which the policy is evaluated.
			/// </summary>
			[Column("target_query_expression_with_id"), NotNull] public string   TargetQueryExpressionWithID { get; set; } = null!; // nvarchar(400)
			/// <summary>
			/// The epxression that defines the target against which the policy is evaluated.
			/// </summary>
			[Column("target_query_expression"),         NotNull] public string   TargetQueryExpression       { get; set; } = null!; // nvarchar(max)
			/// <summary>
			/// Health state of this target with regard to the policy:<br/><br/> 0 = Failure<br/><br/> 1 = Success
			/// </summary>
			[Column("result"),                          NotNull] public bool     Result                      { get; set; } // bit
		}
	}

	public static partial class QueryStoreSchema
	{
		public partial class DataContext
		{
			/// <summary>
			/// <para><strong>sys.database_query_store_options (Transact-SQL)</strong></para>
			/// <para><strong>Applies to:</strong> √ SQL Server 2016 (13.x) and later √ Azure SQL Database √ Azure SQL Managed Instance √ Azure Synapse Analytics</para>
			/// <para>Returns the Query Store options for this database.<br/>
			/// <strong>Applies to</strong>: SQL Server (SQL Server 2016 (13.x) and later), SQL Database.</para><br/>
			/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-database-query-store-options-transact-sql'>sys.database_query_store_options</a>.</para>
			/// </summary>
			public ITable<DatabaseQueryStoreOption>       DatabaseQueryStoreOptions       { get { return _dataContext.GetTable<DatabaseQueryStoreOption>(); } }
			/// <summary>
			/// <para><strong>sys.query_context_settings (Transact-SQL)</strong></para>
			/// <para><strong>Applies to:</strong> √ SQL Server 2016 (13.x) and later √ Azure SQL Database √ Azure SQL Managed Instance √ Azure Synapse Analytics</para>
			/// <para>Contains  information about the semantics affecting context settings associated with a query. There are a number of context settings available in SQL Server that influence the query semantics (defining the correct result of the query). The same query text compiled under different settings may produce different results (depending on the underlying data).</para><br/>
			/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-query-context-settings-transact-sql'>sys.query_context_settings</a>.</para>
			/// </summary>
			public ITable<QueryContextSetting>            QueryContextSettings            { get { return _dataContext.GetTable<QueryContextSetting>(); } }
			/// <summary>
			/// <para><strong>sys.query_store_plan (Transact-SQL)</strong></para>
			/// <para><strong>Applies to:</strong> √ SQL Server 2016 (13.x) and later √ Azure SQL Database √ Azure SQL Managed Instance √ Azure Synapse Analytics</para>
			/// <para>Contains information about each execution plan associated with a query.</para><br/>
			/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-query-store-plan-transact-sql'>sys.query_store_plan</a>.</para>
			/// </summary>
			public ITable<QueryStorePlan>                 QueryStorePlans                 { get { return _dataContext.GetTable<QueryStorePlan>(); } }
			/// <summary>
			/// <para><strong>sys.query_store_query (Transact-SQL)</strong></para>
			/// <para><strong>Applies to:</strong> √ SQL Server 2016 (13.x) and later √ Azure SQL Database √ Azure SQL Managed Instance √ Azure Synapse Analytics</para>
			/// <para>Contains  information about the query and its associated overall aggregated runtime execution statistics.</para><br/>
			/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-query-store-query-transact-sql'>sys.query_store_query</a>.</para>
			/// </summary>
			public ITable<QueryStoreQuery>                QueryStoreQueries               { get { return _dataContext.GetTable<QueryStoreQuery>(); } }
			/// <summary>
			/// <para><strong>sys.query_store_query_hints (Transact-SQL)</strong></para>
			/// <para><strong>Applies to:</strong> √ Azure SQL Database √ Azure SQL Managed Instance</para>
			/// <para> Contains query hints from the <a href='https://docs.microsoft.com/en-us/sql/relational-databases/performance/query-store-hints'>Query Store hints (Preview)</a> feature.</para><br/>
			/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-query-store-query-hints-transact-sql'>sys.query_store_query_hints</a>.</para>
			/// </summary>
			public ITable<QueryStoreQueryHint>            QueryStoreQueryHints            { get { return _dataContext.GetTable<QueryStoreQueryHint>(); } }
			/// <summary>
			/// <para><strong>sys.query_store_query_text (Transact-SQL)</strong></para>
			/// <para><strong>Applies to:</strong> √ SQL Server 2016 (13.x) and later √ Azure SQL Database √ Azure SQL Managed Instance √ Azure Synapse Analytics</para>
			/// <para>Contains  the Transact\-SQL text and the SQL handle of the query.</para><br/>
			/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-query-store-query-text-transact-sql'>sys.query_store_query_text</a>.</para>
			/// </summary>
			public ITable<QueryStoreQueryText>            QueryStoreQueryTexts            { get { return _dataContext.GetTable<QueryStoreQueryText>(); } }
			/// <summary>
			/// <para><strong>sys.query_store_runtime_stats (Transact-SQL)</strong></para>
			/// <para><strong>Applies to:</strong> √ SQL Server 2016 (13.x) and later √ Azure SQL Database √ Azure SQL Managed Instance √ Azure Synapse Analytics</para>
			/// <para>Contains  information about the runtime execution statistics information for the query.</para><br/>
			/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-query-store-runtime-stats-transact-sql'>sys.query_store_runtime_stats</a>.</para>
			/// </summary>
			public ITable<QueryStoreRuntimeStat>          QueryStoreRuntimeStats          { get { return _dataContext.GetTable<QueryStoreRuntimeStat>(); } }
			/// <summary>
			/// <para><strong>sys.query_store_runtime_stats_interval (Transact-SQL)</strong></para>
			/// <para><strong>Applies to:</strong> √ SQL Server 2016 (13.x) and later √ Azure SQL Database √ Azure SQL Managed Instance √ Azure Synapse Analytics</para>
			/// <para>Contains  information about the start and end time of each interval over which runtime execution statistics information for a query has been collected.</para><br/>
			/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-query-store-runtime-stats-interval-transact-sql'>sys.query_store_runtime_stats_interval</a>.</para>
			/// </summary>
			public ITable<QueryStoreRuntimeStatsInterval> QueryStoreRuntimeStatsIntervals { get { return _dataContext.GetTable<QueryStoreRuntimeStatsInterval>(); } }
			/// <summary>
			/// <para><strong>sys.query_store_wait_stats (Transact-SQL)</strong></para>
			/// <para><strong>Applies to:</strong> √ SQL Server 2017 (14.x) and later  √ Azure SQL Database</para>
			/// <para>Contains  information about the wait information for the query.</para><br/>
			/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-query-store-wait-stats-transact-sql'>sys.query_store_wait_stats</a>.</para>
			/// </summary>
			public ITable<QueryStoreWaitStat>             QueryStoreWaitStats             { get { return _dataContext.GetTable<QueryStoreWaitStat>(); } }

			private readonly IDataContext _dataContext;

			public DataContext(IDataContext dataContext)
			{
				_dataContext = dataContext;
			}
		}

		/// <summary>
		/// <para><strong>sys.database_query_store_options (Transact-SQL)</strong></para>
		/// <para><strong>Applies to:</strong> √ SQL Server 2016 (13.x) and later √ Azure SQL Database √ Azure SQL Managed Instance √ Azure Synapse Analytics</para>
		/// <para>Returns the Query Store options for this database.<br/>
		/// <strong>Applies to</strong>: SQL Server (SQL Server 2016 (13.x) and later), SQL Database.</para><br/>
		/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-database-query-store-options-transact-sql'>sys.database_query_store_options</a>.</para>
		/// </summary>
		[Table(Schema="sys", Name="database_query_store_options", IsView=true)]
		public partial class DatabaseQueryStoreOption
		{
			/// <summary>
			/// Indicates the desired operation mode of Query Store, explicitly set by user.<br/> 0 = OFF <br/> 1 = READ_ONLY<br/> 2 = READ_WRITE
			/// </summary>
			[Column("desired_state"),                              NotNull    ] public short   DesiredState                         { get; set; } // smallint
			/// <summary>
			/// Textual description of the desired operation mode of Query Store:<br/>OFF<br/>READ_ONLY<br/>READ_WRITE
			/// </summary>
			[Column("desired_state_desc"),                            Nullable] public string? DesiredStateDesc                     { get; set; } // nvarchar(60)
			/// <summary>
			/// Indicates the operation mode of Query Store. In addition to list of desired states required by the user, actual state can be an error state.<br/> 0 = OFF <br/> 1 = READ_ONLY<br/> 2 = READ_WRITE<br/> 3 = ERROR
			/// </summary>
			[Column("actual_state"),                               NotNull    ] public short   ActualState                          { get; set; } // smallint
			/// <summary>
			/// Textual description of the actual operation mode of Query Store.<br/>OFF<br/>READ_ONLY<br/>READ_WRITE<br/>ERROR<br/><br/> There are situations when actual state is different from the desired state:<br/>-  If the database is set to read-only mode or if Query Store size exceeds its configured quota, Query Store may operate in read-only mode even if read-write was specified by the user.<br/>-  In extreme scenarios Query Store can enter an ERROR state because of internal errors. Starting with SQL Server 2017 (14.x), if this happens, Query Store can be recovered by executing the <c>sp_query_store_consistency_check</c> stored procedure in the affected database. If running <c>sp_query_store_consistency_check</c> doesn't work, or if you are using SQL Server 2016 (13.x), you will need to clear the data by running <c>ALTER DATABASE [YourDatabaseName] SET QUERY_STORE CLEAR ALL;</c>
			/// </summary>
			[Column("actual_state_desc"),                             Nullable] public string? ActualStateDesc                      { get; set; } // nvarchar(60)
			/// <summary>
			/// When the <strong>desired_state_desc</strong> is READ_WRITE and the <strong>actual_state_desc</strong> is READ_ONLY, <strong>readonly_reason</strong> returns a bit map to indicate why the Query Store is in readonly mode.<br/><br/> <strong>1</strong> - database is in read-only mode<br/><br/> <strong>2</strong> - database is in single-user mode<br/><br/> <strong>4</strong> - database is in emergency mode<br/><br/> <strong>8</strong> - database is secondary replica (applies to Always On and Azure SQL Database geo-replication). This value can be effectively observed only on <strong>readable</strong> secondary replicas<br/><br/> <strong>65536</strong> - the Query Store has reached the size limit set by the <c>MAX_STORAGE_SIZE_MB</c> option. For more information about this option, see <a href='https://docs.microsoft.com/en-us/sql/t-sql/statements/alter-database-transact-sql-set-options'>ALTER DATABASE SET options (Transact-SQL)</a>.<br/><br/> <strong>131072</strong> - The number of different statements in Query Store has reached the internal memory limit. Consider removing queries that you do not need or upgrading to a higher service tier to enable transferring Query Store to read-write mode.<br/><br/><br/> <strong>262144</strong> - Size of in-memory items waiting to be persisted on disk has reached the internal memory limit. Query Store will be  in read-only mode temporarily until the in-memory items are persisted on disk. <br/><br/><br/> <strong>524288</strong> - Database has reached disk size limit. Query Store is part of user database, so if there is no more available space for a database, that means that Query Store cannot grow further anymore.<br/><br/> <br/> To switch the Query Store operations mode back to read-write, see <strong>Verify Query Store is Collecting Query Data Continuously</strong> section of <a href='https://docs.microsoft.com/en-us/sql/relational-databases/performance/best-practice-with-the-query-store#Verify'>Best Practice with the Query Store</a>.
			/// </summary>
			[Column("readonly_reason"),                               Nullable] public int?    ReadonlyReason                       { get; set; } // int
			/// <summary>
			/// Size of Query Store on disk in megabytes.
			/// </summary>
			[Column("current_storage_size_mb"),                       Nullable] public long?   CurrentStorageSizeMB                 { get; set; } // bigint
			/// <summary>
			/// The period for regular flushing of Query Store data to disk in seconds. Default value is <strong>900</strong> (15 min).<br/><br/> Change by using the <c>ALTER DATABASE &lt;database&gt; SET QUERY_STORE (DATA_FLUSH_INTERVAL_SECONDS  = &lt;interval&gt;)</c> statement.
			/// </summary>
			[Column("flush_interval_seconds"),                        Nullable] public long?   FlushIntervalSeconds                 { get; set; } // bigint
			/// <summary>
			/// The statistics aggregation interval in minutes. Arbitrary values are not allowed. Use one of the following: 1, 5, 10, 15, 30, 60, and 1440 minutes. The default value is <strong>60</strong> minutes.
			/// </summary>
			[Column("interval_length_minutes"),                       Nullable] public long?   IntervalLengthMinutes                { get; set; } // bigint
			/// <summary>
			/// Maximum disk size for the Query Store in megabytes (MB). Default value is <strong>100</strong> MB up to SQL Server 2017 (14.x), and <strong>1 GB</strong> starting with SQL Server 2019 (15.x) .<br/>For SQL Database Premium edition, default is 1 GB and for SQL Database Basic edition, default is 10 MB.<br/><br/> Change by using the <c>ALTER DATABASE &lt;database&gt; SET QUERY_STORE (MAX_STORAGE_SIZE_MB = &lt;size&gt;)</c> statement.
			/// </summary>
			[Column("max_storage_size_mb"),                           Nullable] public long?   MaxStorageSizeMB                     { get; set; } // bigint
			/// <summary>
			/// Number of days that the information for a query is kept in the Query Store. Default value is <strong>30</strong>. Set to 0 to disable the retention policy.<br/>For SQL Database Basic edition, default is 7 days.<br/><br/> Change by using the <c>ALTER DATABASE &lt;database&gt; SET QUERY_STORE ( CLEANUP_POLICY = ( STALE_QUERY_THRESHOLD_DAYS = &lt;value&gt; ) )</c> statement.
			/// </summary>
			[Column("stale_query_threshold_days"),                    Nullable] public long?   StaleQueryThresholdDays              { get; set; } // bigint
			/// <summary>
			/// Limits the maximum number of stored plans. Default value is <strong>200</strong>. If the maximum value is reached, Query Store stops capturing new plans for that query. Setting to 0 removes the limitation with regards to the number of captured plans.<br/><br/> Change by using the <c>ALTER DATABASE&lt;database&gt; SET QUERY_STORE (MAX_PLANS_PER_QUERY = &lt;n&gt;</c> statement.
			/// </summary>
			[Column("max_plans_per_query"),                           Nullable] public long?   MaxPlansPerQuery                     { get; set; } // bigint
			/// <summary>
			/// The currently active query capture mode:<br/><br/> <strong>1</strong> = ALL - all queries are captured. This is the default configuration value for SQL Server (SQL Server 2016 (13.x) and later).<br/><br/> 2 = AUTO - capture relevant queries based on execution count and resource consumption. This is the default configuration value for SQL Database.<br/><br/> 3 = NONE - stop capturing new queries. Query Store will continue to collect compile and runtime statistics for queries that were captured already. Use this configuration cautiously since you may miss capturing important queries. <br/><br/> 4 = CUSTOM - Allows additional control over the query capture policy using the <a href='https://docs.microsoft.com/en-us/sql/t-sql/statements/alter-database-transact-sql-set-options#SettingOptions'>QUERY_CAPTURE_POLICY options</a>.<br/> <strong>Applies to</strong>: SQL Server 2019 (15.x) and later.
			/// </summary>
			[Column("query_capture_mode"),                         NotNull    ] public short   QueryCaptureMode                     { get; set; } // smallint
			/// <summary>
			/// Textual description of the actual capture mode of Query Store:<br/><br/> ALL (default for SQL Server 2016 (13.x))<br/><br/> <strong>AUTO</strong> (default for SQL Database)<br/><br/> NONE <br/><br/> CUSTOM
			/// </summary>
			[Column("query_capture_mode_desc"),                       Nullable] public string? QueryCaptureModeDesc                 { get; set; } // nvarchar(60)
			/// <summary>
			/// Query Capture Mode CUSTOM policy option. Defines the number of times a query is executed over the evaluation period. The default is 30.<br/><strong>Applies to</strong>: SQL Server 2019 (15.x) and later.
			/// </summary>
			[Column("capture_policy_execution_count"),                Nullable] public int?    CapturePolicyExecutionCount          { get; set; } // int
			/// <summary>
			/// Query Capture Mode CUSTOM policy option. Defines total elapsed compile CPU time used by a query over the evaluation period. The default is 1000.<br/> <strong>Applies to</strong>: SQL Server 2019 (15.x) and later.
			/// </summary>
			[Column("capture_policy_total_compile_cpu_time_ms"),      Nullable] public long?   CapturePolicyTotalCompileCpuTimeMs   { get; set; } // bigint
			/// <summary>
			/// Query Capture Mode CUSTOM policy option. Defines total elapsed execution CPU time used by a query over the evaluation period. The default is 100.<br/> <strong>Applies to</strong>: SQL Server 2019 (15.x) and later.
			/// </summary>
			[Column("capture_policy_total_execution_cpu_time_ms"),    Nullable] public long?   CapturePolicyTotalExecutionCpuTimeMs { get; set; } // bigint
			/// <summary>
			/// Query Capture Mode CUSTOM policy option. Defines the evaluation interval period to determine if a query should be captured. The default is 24 hours.<br/> <strong>Applies to</strong>: SQL Server 2019 (15.x) and later.
			/// </summary>
			[Column("capture_policy_stale_threshold_hours"),          Nullable] public int?    CapturePolicyStaleThresholdHours     { get; set; } // int
			/// <summary>
			/// Controls whether cleanup will be automatically activated when total amount of data gets close to maximum size:<br/><br/> 0 = OFF - size-based cleanup won't be automatically activated.<br/><br/> <strong>1</strong> = AUTO - size-based cleanup will be automatically activated when size on disk reaches <strong>90 percent</strong> of *max_storage_size_mb*. This is the default configuration value.<br/><br/>Size-based cleanup removes the least expensive and oldest queries first. It stops when approximately <strong>80 percent</strong> of *max_storage_size_mb* is reached.
			/// </summary>
			[Column("size_based_cleanup_mode"),                    NotNull    ] public short   SizeBasedCleanupMode                 { get; set; } // smallint
			/// <summary>
			/// Textual description of the actual size-based cleanup mode of Query Store:<br/><br/> OFF <br/> <strong>AUTO</strong> (default)
			/// </summary>
			[Column("size_based_cleanup_mode_desc"),                  Nullable] public string? SizeBasedCleanupModeDesc             { get; set; } // nvarchar(60)
			/// <summary>
			/// Controls whether Query Store performs capture of wait statistics: <br/><br/> 0 = OFF <br/> <strong>1</strong> = ON<br/> <strong>Applies to</strong>: SQL Server 2017 (14.x) and later.
			/// </summary>
			[Column("wait_stats_capture_mode"),                    NotNull    ] public short   WaitStatsCaptureMode                 { get; set; } // smallint
			/// <summary>
			/// Textual description of the actual wait statistics capture mode: <br/><br/> OFF <br/> <strong>ON</strong> (default)<br/> <strong>Applies to</strong>: SQL Server 2017 (14.x) and later.
			/// </summary>
			[Column("wait_stats_capture_mode_desc"),                  Nullable] public string? WaitStatsCaptureModeDesc             { get; set; } // nvarchar(60)
			/// <summary>
			/// Currently unused. May be implemented in the future.
			/// </summary>
			[Column("actual_state_additional_info"),                  Nullable] public string? ActualStateAdditionalInfo            { get; set; } // nvarchar(8000)
		}

		/// <summary>
		/// <para><strong>sys.query_context_settings (Transact-SQL)</strong></para>
		/// <para><strong>Applies to:</strong> √ SQL Server 2016 (13.x) and later √ Azure SQL Database √ Azure SQL Managed Instance √ Azure Synapse Analytics</para>
		/// <para>Contains  information about the semantics affecting context settings associated with a query. There are a number of context settings available in SQL Server that influence the query semantics (defining the correct result of the query). The same query text compiled under different settings may produce different results (depending on the underlying data).</para><br/>
		/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-query-context-settings-transact-sql'>sys.query_context_settings</a>.</para>
		/// </summary>
		[Table(Schema="sys", Name="query_context_settings", IsView=true)]
		public partial class QueryContextSetting
		{
			/// <summary>
			/// Primary key. This value is exposed in Showplan XML for queries.
			/// </summary>
			[Column("context_settings_id"),       NotNull    ] public long    ContextSettingsID       { get; set; } // bigint
			/// <summary>
			/// Bit mask reflecting state of several SET options. For more information, see <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-dynamic-management-views/sys-dm-exec-plan-attributes-transact-sql'>sys.dm_exec_plan_attributes (Transact-SQL)</a>.
			/// </summary>
			[Column("set_options"),                  Nullable] public byte[]? SetOptions              { get; set; } // varbinary(8)
			/// <summary>
			/// The id of the language. For more information, see <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-compatibility-views/sys-syslanguages-transact-sql'>sys.syslanguages (Transact-SQL)</a>.
			/// </summary>
			[Column("language_id"),               NotNull    ] public short   LanguageID              { get; set; } // smallint
			/// <summary>
			/// The date format. For more information, see <a href='https://docs.microsoft.com/en-us/sql/t-sql/statements/set-dateformat-transact-sql'>SET DATEFORMAT (Transact-SQL)</a>.
			/// </summary>
			[Column("date_format"),               NotNull    ] public short   DateFormat              { get; set; } // smallint
			/// <summary>
			/// The date first value. For more information, see <a href='https://docs.microsoft.com/en-us/sql/t-sql/statements/set-datefirst-transact-sql'>SET DATEFIRST (Transact-SQL)</a>.
			/// </summary>
			[Column("date_first"),                NotNull    ] public byte    DateFirst               { get; set; } // tinyint
			/// <summary>
			/// Bitmask field that indicates type of query or context in which query was executed. <br/>Column value can be combination of multiple flags (expressed in hexadecimal):<br/><br/> 0x0 - regular query (no specific flags)<br/><br/> 0x1 - query that was executed through one of the cursor APIs stored procedures<br/><br/> 0x2 - query for notification<br/><br/> 0x4 - internal query<br/><br/> 0x8 - auto parameterized query without universal parameterization<br/><br/> 0x10 - cursor fetch refresh query<br/><br/> 0x20 - query that is being used in cursor update requests<br/><br/> 0x40 - initial result set is returned when a cursor is opened (Cursor Auto Fetch)<br/><br/> 0x80 - encrypted query<br/><br/> 0x100 - query in context of row-level security predicate
			/// </summary>
			[Column("status"),                       Nullable] public byte[]? Status                  { get; set; } // varbinary(2)
			/// <summary>
			/// Cursor options specified by the user such as the cursor type.
			/// </summary>
			[Column("required_cursor_options"),   NotNull    ] public int     RequiredCursorOptions   { get; set; } // int
			/// <summary>
			/// Cursor options that SQL Server may implicitly convert to in order to support the execution of the statement.
			/// </summary>
			[Column("acceptable_cursor_options"), NotNull    ] public int     AcceptableCursorOptions { get; set; } // int
			/// <summary>
			/// The type of trigger execution plan used as the result of a <strong>MERGE</strong> statement.<br/><br/> 0 indicates a non-trigger plan, a trigger plan that does not execute as the result of a <strong>MERGE</strong> statement, or a trigger plan that executes as the result of a <strong>MERGE</strong> statement that only specifies a <strong>DELETE</strong> action.<br/><br/> 1 indicates an <strong>INSERT</strong> trigger plan that runs as the result of a <strong>MERGE</strong> statement.<br/><br/> 2 indicates an <strong>UPDATE</strong> trigger plan that runs as the result of a <strong>MERGE</strong> statement.<br/><br/> 3 indicates a <strong>DELETE</strong> trigger plan that runs as the result of a <strong>MERGE</strong> statement containing a corresponding <strong>INSERT</strong> or <strong>UPDATE</strong> action.<br/><br/> <br/><br/> For nested triggers run by cascading actions, this value is the action of the <strong>MERGE</strong> statement that caused the cascade.
			/// </summary>
			[Column("merge_action_type"),         NotNull    ] public short   MergeActionType         { get; set; } // smallint
			/// <summary>
			/// ID of the default schema, which is used to resolve names that are not fully qualified.
			/// </summary>
			[Column("default_schema_id"),         NotNull    ] public int     DefaultSchemaID         { get; set; } // int
			/// <summary>
			/// Used for replication.
			/// </summary>
			[Column("is_replication_specific"),   NotNull    ] public bool    IsReplicationSpecific   { get; set; } // bit
			/// <summary>
			/// 1 indicates a contained database.
			/// </summary>
			[Column("is_contained"),                 Nullable] public byte[]? IsContained             { get; set; } // varbinary(1)
		}

		/// <summary>
		/// <para><strong>sys.query_store_plan (Transact-SQL)</strong></para>
		/// <para><strong>Applies to:</strong> √ SQL Server 2016 (13.x) and later √ Azure SQL Database √ Azure SQL Managed Instance √ Azure Synapse Analytics</para>
		/// <para>Contains information about each execution plan associated with a query.</para><br/>
		/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-query-store-plan-transact-sql'>sys.query_store_plan</a>.</para>
		/// </summary>
		[Table(Schema="sys", Name="query_store_plan", IsView=true)]
		public partial class QueryStorePlan
		{
			/// <summary>
			/// Primary key.
			/// </summary>
			[Column("plan_id"),                        NotNull    ] public long            PlanID                     { get; set; } // bigint
			/// <summary>
			/// Foreign key. Joins to <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-query-store-query-transact-sql'>sys.query_store_query (Transact-SQL)</a>.
			/// </summary>
			[Column("query_id"),                       NotNull    ] public long            QueryID                    { get; set; } // bigint
			/// <summary>
			/// ID of the plan group. Cursor queries typically require multiple (populate and fetch) plans. Populate and fetch plans that are compiled together are in the same group.<br/><br/> 0 means plan is not in a group.
			/// </summary>
			[Column("plan_group_id"),                     Nullable] public long?           PlanGroupID                { get; set; } // bigint
			/// <summary>
			/// Version of the engine used to compile the plan in <strong>'major.minor.build.revision'</strong> format.
			/// </summary>
			[Column("engine_version"),                    Nullable] public string?         EngineVersion              { get; set; } // nvarchar(32)
			/// <summary>
			/// Database compatibility level of the database referenced in the query.
			/// </summary>
			[Column("compatibility_level"),            NotNull    ] public short           CompatibilityLevel         { get; set; } // smallint
			/// <summary>
			/// MD5 hash of the individual plan.
			/// </summary>
			[Column("query_plan_hash"),                NotNull    ] public byte[]          QueryPlanHash              { get; set; } = null!; // binary(8)
			/// <summary>
			/// Showplan XML for the query plan.
			/// </summary>
			[Column("query_plan"),                        Nullable] public string?         QueryPlan                  { get; set; } // nvarchar(max)
			/// <summary>
			/// Plan was used during an online index build. <br/><strong>Note:</strong> Azure Synapse Analytics will always return zero (0).
			/// </summary>
			[Column("is_online_index_plan"),           NotNull    ] public bool            IsOnlineIndexPlan          { get; set; } // bit
			/// <summary>
			/// Plan is a trivial plan (output in stage 0 of query optimizer). <br/><strong>Note:</strong> Azure Synapse Analytics will always return zero (0).
			/// </summary>
			[Column("is_trivial_plan"),                NotNull    ] public bool            IsTrivialPlan              { get; set; } // bit
			/// <summary>
			/// Plan is parallel. <br/><strong>Note:</strong> Azure Synapse Analytics will always return one (1).
			/// </summary>
			[Column("is_parallel_plan"),               NotNull    ] public bool            IsParallelPlan             { get; set; } // bit
			/// <summary>
			/// Plan is marked as forced when user executes stored procedure <strong>sys.sp_query_store_force_plan</strong>. Forcing mechanism *does not guarantee* that exactly this plan will be used for the query referenced by <strong>query_id</strong>. Plan forcing causes query to be compiled again and typically produces exactly the same or similar plan to the plan referenced by <strong>plan_id</strong>. If plan forcing does not succeed, <strong>force_failure_count</strong> is incremented and <strong>last_force_failure_reason</strong> is populated with the failure reason. <br/><strong>Note:</strong> Azure Synapse Analytics will always return zero (0).
			/// </summary>
			[Column("is_forced_plan"),                 NotNull    ] public bool            IsForcedPlan               { get; set; } // bit
			/// <summary>
			/// Plan includes natively compiled memory optimized procedures. (0 = FALSE, 1 = TRUE). <br/><strong>Note:</strong> Azure Synapse Analytics will always return zero (0).
			/// </summary>
			[Column("is_natively_compiled"),           NotNull    ] public bool            IsNativelyCompiled         { get; set; } // bit
			/// <summary>
			/// Number of times that forcing this plan has failed. It can be incremented only when the query is recompiled (*not on every execution*). It is reset to 0 every time <strong>is_plan_forced</strong> is changed from <strong>FALSE</strong> to <strong>TRUE</strong>. <br/><strong>Note:</strong> Azure Synapse Analytics will always return zero (0).
			/// </summary>
			[Column("force_failure_count"),            NotNull    ] public long            ForceFailureCount          { get; set; } // bigint
			/// <summary>
			/// Reason why plan forcing failed.<br/><br/> 0: no failure, otherwise error number of the error that caused the forcing to fail<br/><br/> 8637: ONLINE_INDEX_BUILD<br/><br/> 8683: INVALID_STARJOIN<br/><br/> 8684: TIME_OUT<br/><br/> 8689: NO_DB<br/><br/> 8690: HINT_CONFLICT<br/><br/> 8691: SETOPT_CONFLICT<br/><br/> 8694: DQ_NO_FORCING_SUPPORTED<br/><br/> 8698: NO_PLAN<br/><br/> 8712: NO_INDEX<br/><br/> 8713: VIEW_COMPILE_FAILED<br/><br/> &lt;other value&gt;: GENERAL_FAILURE <br/><strong>Note:</strong> Azure Synapse Analytics will always return zero (0).
			/// </summary>
			[Column("last_force_failure_reason"),      NotNull    ] public int             LastForceFailureReason     { get; set; } // int
			/// <summary>
			/// Textual description of last_force_failure_reason_desc.<br/><br/> ONLINE_INDEX_BUILD: query tries to modify data while target table has an index that is being built online<br/><br/> INVALID_STARJOIN: plan contains invalid StarJoin specification<br/><br/> TIME_OUT: Optimizer exceeded number of allowed operations while searching for plan specified by forced plan<br/><br/> NO_DB: A database specified in the plan does not exist<br/><br/> HINT_CONFLICT: Query cannot be compiled because plan conflicts with a query hint<br/><br/> DQ_NO_FORCING_SUPPORTED: Cannot execute query because plan conflicts with use of distributed query or full-text operations.<br/><br/> NO_PLAN: Query processor could not produce query plan because forced plan could not be verified to be valid for the query<br/><br/> NO_INDEX: Index specified in plan no longer exists<br/><br/> VIEW_COMPILE_FAILED: Could not force query plan because of a problem in an indexed view referenced in the plan<br/><br/> GENERAL_FAILURE: general forcing error (not covered with reasons above) <br/><strong>Note:</strong> Azure Synapse Analytics will always return *NONE*.
			/// </summary>
			[Column("last_force_failure_reason_desc"),    Nullable] public string?         LastForceFailureReasonDesc { get; set; } // nvarchar(128)
			/// <summary>
			/// Plan compilation statistics.
			/// </summary>
			[Column("count_compiles"),                    Nullable] public long?           CountCompiles              { get; set; } // bigint
			/// <summary>
			/// Plan compilation statistics.
			/// </summary>
			[Column("initial_compile_start_time"),     NotNull    ] public DateTimeOffset  InitialCompileStartTime    { get; set; } // datetimeoffset
			/// <summary>
			/// Plan compilation statistics.
			/// </summary>
			[Column("last_compile_start_time"),           Nullable] public DateTimeOffset? LastCompileStartTime       { get; set; } // datetimeoffset
			/// <summary>
			/// Last execution time refers to the last end time of the query/plan.
			/// </summary>
			[Column("last_execution_time"),               Nullable] public DateTimeOffset? LastExecutionTime          { get; set; } // datetimeoffset
			/// <summary>
			/// Plan compilation statistics.
			/// </summary>
			[Column("avg_compile_duration"),              Nullable] public double?         AvgCompileDuration         { get; set; } // float
			/// <summary>
			/// Plan compilation statistics.
			/// </summary>
			[Column("last_compile_duration"),             Nullable] public long?           LastCompileDuration        { get; set; } // bigint
			/// <summary>
			/// Plan forcing type.<br/><br/>0: NONE<br/><br/>1: MANUAL<br/><br/>2: AUTO
			/// </summary>
			[Column("plan_forcing_type"),              NotNull    ] public int             PlanForcingType            { get; set; } // int
			/// <summary>
			/// Text description of plan_forcing_type.<br/><br/>NONE: No plan forcing<br/><br/>MANUAL: Plan forced by user<br/><br/>AUTO: Plan forced by automatic tuning
			/// </summary>
			[Column("plan_forcing_type_desc"),            Nullable] public string?         PlanForcingTypeDesc        { get; set; } // nvarchar(60)
		}

		/// <summary>
		/// <para><strong>sys.query_store_query (Transact-SQL)</strong></para>
		/// <para><strong>Applies to:</strong> √ SQL Server 2016 (13.x) and later √ Azure SQL Database √ Azure SQL Managed Instance √ Azure Synapse Analytics</para>
		/// <para>Contains  information about the query and its associated overall aggregated runtime execution statistics.</para><br/>
		/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-query-store-query-transact-sql'>sys.query_store_query</a>.</para>
		/// </summary>
		[Table(Schema="sys", Name="query_store_query", IsView=true)]
		public partial class QueryStoreQuery
		{
			/// <summary>
			/// Primary key.
			/// </summary>
			[Column("query_id"),                         NotNull    ] public long            QueryID                       { get; set; } // bigint
			/// <summary>
			/// Foreign key. Joins to <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-query-store-query-text-transact-sql'>sys.query_store_query_text (Transact-SQL)</a>
			/// </summary>
			[Column("query_text_id"),                    NotNull    ] public long            QueryTextID                   { get; set; } // bigint
			/// <summary>
			/// Foreign key. Joins to <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-query-context-settings-transact-sql'>sys.query_context_settings (Transact-SQL)</a>.<br/><strong>Note:</strong> Azure Synapse Analytics will always return one (1).
			/// </summary>
			[Column("context_settings_id"),              NotNull    ] public long            ContextSettingsID             { get; set; } // bigint
			/// <summary>
			/// ID of the database object that the query is part of (stored procedure, trigger, CLR UDF/UDAgg, etc.). 0 if the query is not executed as part of a database object (ad-hoc query).<br/><strong>Note:</strong> Azure Synapse Analytics will always return zero (0).
			/// </summary>
			[Column("object_id"),                           Nullable] public long?           ObjectID                      { get; set; } // bigint
			/// <summary>
			/// ID of the statement batch the query is part of. Populated only if query references temporary tables or table variables.<br/><strong>Note:</strong> Azure Synapse Analytics will always return *NULL*.
			/// </summary>
			[Column("batch_sql_handle"),                    Nullable] public byte[]?         BatchSqlHandle                { get; set; } // varbinary(64)
			/// <summary>
			/// MD5 hash of the individual query, based on the logical query tree. Includes optimizer hints.
			/// </summary>
			[Column("query_hash"),                       NotNull    ] public byte[]          QueryHash                     { get; set; } = null!; // binary(8)
			/// <summary>
			/// The query was generated internally.<br/><strong>Note:</strong> Azure Synapse Analytics will always return zero (0).
			/// </summary>
			[Column("is_internal_query"),                NotNull    ] public bool            IsInternalQuery               { get; set; } // bit
			/// <summary>
			/// Kind of parameterization:<br/><br/> 0 - None<br/><br/> 1 - User<br/><br/> 2 - Simple<br/><br/> 3 - Forced<br/><strong>Note:</strong> Azure Synapse Analytics will always return zero (0).
			/// </summary>
			[Column("query_parameterization_type"),      NotNull    ] public byte            QueryParameterizationType     { get; set; } // tinyint
			/// <summary>
			/// Textual description for the parameterization type.<br/><strong>Note:</strong> Azure Synapse Analytics will always return *None*.
			/// </summary>
			[Column("query_parameterization_type_desc"),    Nullable] public string?         QueryParameterizationTypeDesc { get; set; } // nvarchar(60)
			/// <summary>
			/// Compile start time.
			/// </summary>
			[Column("initial_compile_start_time"),       NotNull    ] public DateTimeOffset  InitialCompileStartTime       { get; set; } // datetimeoffset
			/// <summary>
			/// Compile start time.
			/// </summary>
			[Column("last_compile_start_time"),             Nullable] public DateTimeOffset? LastCompileStartTime          { get; set; } // datetimeoffset
			/// <summary>
			/// Last execution time refers to the last end time of the query/plan.
			/// </summary>
			[Column("last_execution_time"),                 Nullable] public DateTimeOffset? LastExecutionTime             { get; set; } // datetimeoffset
			/// <summary>
			/// Handle of the last SQL batch in which query was used last time. It can be provided as input to <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-dynamic-management-views/sys-dm-exec-sql-text-transact-sql'>sys.dm_exec_sql_text (Transact-SQL)</a> to get the full text of the batch.
			/// </summary>
			[Column("last_compile_batch_sql_handle"),       Nullable] public byte[]?         LastCompileBatchSqlHandle     { get; set; } // varbinary(64)
			/// <summary>
			/// Information that can be provided to sys.dm_exec_sql_text along with last_compile_batch_sql_handle.<br/><strong>Note:</strong> Azure Synapse Analytics will always return zero (0).
			/// </summary>
			[Column("last_compile_batch_offset_start"),     Nullable] public long?           LastCompileBatchOffsetStart   { get; set; } // bigint
			/// <summary>
			/// Information that can be provided to sys.dm_exec_sql_text along with last_compile_batch_sql_handle.<br/><strong>Note:</strong> Azure Synapse Analytics will always return zero (0).
			/// </summary>
			[Column("last_compile_batch_offset_end"),       Nullable] public long?           LastCompileBatchOffsetEnd     { get; set; } // bigint
			/// <summary>
			/// Compilation statistics.<br/><strong>Note:</strong> Azure Synapse Analytics will always return one (1).
			/// </summary>
			[Column("count_compiles"),                      Nullable] public long?           CountCompiles                 { get; set; } // bigint
			/// <summary>
			/// Compilation statistics in microseconds.
			/// </summary>
			[Column("avg_compile_duration"),                Nullable] public double?         AvgCompileDuration            { get; set; } // float
			/// <summary>
			/// Compilation statistics in microseconds.
			/// </summary>
			[Column("last_compile_duration"),               Nullable] public long?           LastCompileDuration           { get; set; } // bigint
			/// <summary>
			/// Binding statistics in microseconds.<br/><strong>Note:</strong> Azure Synapse Analytics will always return zero (0).
			/// </summary>
			[Column("avg_bind_duration"),                   Nullable] public double?         AvgBindDuration               { get; set; } // float
			/// <summary>
			/// Binding statistics.<br/><strong>Note:</strong> Azure Synapse Analytics will always return zero (0).
			/// </summary>
			[Column("last_bind_duration"),                  Nullable] public long?           LastBindDuration              { get; set; } // bigint
			/// <summary>
			/// Binding statistics.<br/><strong>Note:</strong> Azure Synapse Analytics will always return zero (0).
			/// </summary>
			[Column("avg_bind_cpu_time"),                   Nullable] public double?         AvgBindCpuTime                { get; set; } // float
			/// <summary>
			/// Binding statistics.<br/><strong>Note:</strong> Azure Synapse Analytics will always return zero (0).
			/// </summary>
			[Column("last_bind_cpu_time"),                  Nullable] public long?           LastBindCpuTime               { get; set; } // bigint
			/// <summary>
			/// Optimization statistics in microseconds.
			/// </summary>
			[Column("avg_optimize_duration"),               Nullable] public double?         AvgOptimizeDuration           { get; set; } // float
			/// <summary>
			/// Optimization statistics.
			/// </summary>
			[Column("last_optimize_duration"),              Nullable] public long?           LastOptimizeDuration          { get; set; } // bigint
			/// <summary>
			/// Optimization statistics in microseconds.<br/><strong>Note:</strong> Azure Synapse Analytics will always return zero (0).
			/// </summary>
			[Column("avg_optimize_cpu_time"),               Nullable] public double?         AvgOptimizeCpuTime            { get; set; } // float
			/// <summary>
			/// Optimization statistics.<br/><strong>Note:</strong> Azure Synapse Analytics will always return zero (0).
			/// </summary>
			[Column("last_optimize_cpu_time"),              Nullable] public long?           LastOptimizeCpuTime           { get; set; } // bigint
			/// <summary>
			/// Compile memory statistics.<br/><strong>Note:</strong> Azure Synapse Analytics will always return zero (0).
			/// </summary>
			[Column("avg_compile_memory_kb"),               Nullable] public double?         AvgCompileMemoryKb            { get; set; } // float
			/// <summary>
			/// Compile memory statistics.<br/><strong>Note:</strong> Azure Synapse Analytics will always return zero (0).
			/// </summary>
			[Column("last_compile_memory_kb"),              Nullable] public long?           LastCompileMemoryKb           { get; set; } // bigint
			/// <summary>
			/// Compile memory statistics.<br/><strong>Note:</strong> Azure Synapse Analytics will always return zero (0).
			/// </summary>
			[Column("max_compile_memory_kb"),               Nullable] public long?           MaxCompileMemoryKb            { get; set; } // bigint
			/// <summary>
			/// Always 0 in SQL Server on-premises.<br/><strong>Note:</strong> Azure Synapse Analytics will always return zero (0).
			/// </summary>
			[Column("is_clouddb_internal_query"),           Nullable] public bool?           IsClouddbInternalQuery        { get; set; } // bit

			#region Associations

			/// <summary>
			/// objects (sys.objects)
			/// </summary>
			[Association(ThisKey="ObjectID", OtherKey="ObjectID", CanBeNull=false)]
			public ObjectSchema.Object Object { get; set; } = null!;

			#endregion
		}

		/// <summary>
		/// <para><strong>sys.query_store_query_hints (Transact-SQL)</strong></para>
		/// <para><strong>Applies to:</strong> √ Azure SQL Database √ Azure SQL Managed Instance</para>
		/// <para> Contains query hints from the <a href='https://docs.microsoft.com/en-us/sql/relational-databases/performance/query-store-hints'>Query Store hints (Preview)</a> feature.</para><br/>
		/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-query-store-query-hints-transact-sql'>sys.query_store_query_hints</a>.</para>
		/// </summary>
		[Table(Schema="sys", Name="query_store_query_hints", IsView=true)]
		public partial class QueryStoreQueryHint
		{
			/// <summary>
			/// Unique identifier of a query hint.
			/// </summary>
			[Column("query_hint_id"),                       NotNull] public long   QueryHintID                    { get; set; } // bigint
			/// <summary>
			/// Unique identifier of a query in the Query Store. Foreign key to <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-query-store-query-transact-sql'>sys.query_store_query</a>.query_id.)
			/// </summary>
			[Column("query_id"),                            NotNull] public long   QueryID                        { get; set; } // bigint
			/// <summary>
			/// Hint definition in form of  N'OPTION (…)
			/// </summary>
			[Column("query_hint_text"),                     NotNull] public string QueryHintText                  { get; set; } = null!; // nvarchar(MAX)
			/// <summary>
			/// Error code returned when if applying hints failed. Will include the message_id of the error message.
			/// </summary>
			[Column("last_query_hint_failure_reason"),      NotNull] public int    LastQueryHintFailureReason     { get; set; } // int
			/// <summary>
			/// Will include the error description of the error message.
			/// </summary>
			[Column("last_query_hint_failure_reason_desc"), NotNull] public string LastQueryHintFailureReasonDesc { get; set; } = null!; // nvarchar(128)
			/// <summary>
			/// Number of times that the query hint application has failed since the query hint was created or last modified.
			/// </summary>
			[Column("query_hint_failure_count"),            NotNull] public long   QueryHintFailureCount          { get; set; } // bigint
			/// <summary>
			/// Source of Query Store hint: user source is zero and system-generated is non-zero.
			/// </summary>
			[Column("source"),                              NotNull] public int    Source                         { get; set; } // int
			/// <summary>
			/// Description of source of Query Store hint.
			/// </summary>
			[Column("source_desc"),                         NotNull] public string SourceDesc                     { get; set; } = null!; // nvarchar(128)
			/// <summary>
			/// Internal use only.
			/// </summary>
			[Column("comment"),                             NotNull] public string Comment                        { get; set; } = null!; // nvarchar(max)
		}

		/// <summary>
		/// <para><strong>sys.query_store_query_text (Transact-SQL)</strong></para>
		/// <para><strong>Applies to:</strong> √ SQL Server 2016 (13.x) and later √ Azure SQL Database √ Azure SQL Managed Instance √ Azure Synapse Analytics</para>
		/// <para>Contains  the Transact\-SQL text and the SQL handle of the query.</para><br/>
		/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-query-store-query-text-transact-sql'>sys.query_store_query_text</a>.</para>
		/// </summary>
		[Table(Schema="sys", Name="query_store_query_text", IsView=true)]
		public partial class QueryStoreQueryText
		{
			/// <summary>
			/// Primary key.
			/// </summary>
			[Column("query_text_id"),               NotNull    ] public long    QueryTextID             { get; set; } // bigint
			/// <summary>
			/// SQL text of the query, as provided by the user. Includes whitespaces, hints and comments. Comments and spaces before and after the query text are ignored. Comments and spaces inside text are not ignored.
			/// </summary>
			[Column("query_sql_text"),                 Nullable] public string? QuerySqlText            { get; set; } // nvarchar(max)
			/// <summary>
			/// SQL handle of the individual query.
			/// </summary>
			[Column("statement_sql_handle"),           Nullable] public object? StatementSqlHandle      { get; set; } // vabinary(64)
			/// <summary>
			/// Query text is a part of an encrypted module.<br/><strong>Note:</strong> Azure Synapse Analytics will always return zero (0).
			/// </summary>
			[Column("is_part_of_encrypted_module"), NotNull    ] public bool    IsPartOfEncryptedModule { get; set; } // bit
			/// <summary>
			/// Query text contains a password or other unmentionable words.<br/><strong>Note:</strong> Azure Synapse Analytics will always return zero (0).
			/// </summary>
			[Column("has_restricted_text"),         NotNull    ] public bool    HasRestrictedText       { get; set; } // bit
		}

		/// <summary>
		/// <para><strong>sys.query_store_runtime_stats (Transact-SQL)</strong></para>
		/// <para><strong>Applies to:</strong> √ SQL Server 2016 (13.x) and later √ Azure SQL Database √ Azure SQL Managed Instance √ Azure Synapse Analytics</para>
		/// <para>Contains  information about the runtime execution statistics information for the query.</para><br/>
		/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-query-store-runtime-stats-transact-sql'>sys.query_store_runtime_stats</a>.</para>
		/// </summary>
		[Table(Schema="sys", Name="query_store_runtime_stats", IsView=true)]
		public partial class QueryStoreRuntimeStat
		{
			/// <summary>
			/// Identifier of the row that represents runtime execution statistics for the <strong>plan_id</strong>, <strong>execution_type</strong> and <strong>runtime_stats_interval_id</strong>. It is unique only for the past runtime statistics intervals. For currently active interval, there may be multiple rows representing runtime statistics for the plan referenced by <strong>plan_id</strong>, with the execution type represented by <strong>execution_type</strong>. Typically, one row represents runtime statistics that are flushed to disk, while other(s) represent in-memory state. Hence, to get actual state for every interval you need to aggregate metrics, grouping by <strong>plan_id</strong>, <strong>execution_type</strong> and <strong>runtime_stats_interval_id</strong>.<br/><strong>Note:</strong> Azure Synapse Analytics will always return zero (0).
			/// </summary>
			[Column("runtime_stats_id"),            NotNull    ] public long           RuntimeStatsID          { get; set; } // bigint
			/// <summary>
			/// Foreign key. Joins to <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-query-store-plan-transact-sql'>sys.query_store_plan (Transact-SQL)</a>.
			/// </summary>
			[Column("plan_id"),                     NotNull    ] public long           PlanID                  { get; set; } // bigint
			/// <summary>
			/// Foreign key. Joins to <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-query-store-runtime-stats-interval-transact-sql'>sys.query_store_runtime_stats_interval (Transact-SQL)</a>.
			/// </summary>
			[Column("runtime_stats_interval_id"),   NotNull    ] public long           RuntimeStatsIntervalID  { get; set; } // bigint
			/// <summary>
			/// Determines type of query execution:<br/><br/> 0 - Regular execution (successfully finished)<br/><br/> 3 - Client initiated aborted execution<br/><br/> 4 -  Exception aborted execution
			/// </summary>
			[Column("execution_type"),              NotNull    ] public byte           ExecutionType           { get; set; } // tinyint
			/// <summary>
			/// Textual description of the execution type field:<br/><br/> 0 -  Regular<br/><br/> 3 -  Aborted<br/><br/> 4 -  Exception
			/// </summary>
			[Column("execution_type_desc"),            Nullable] public string?        ExecutionTypeDesc       { get; set; } // nvarchar(128)
			/// <summary>
			/// First execution time for the query plan within the aggregation interval. This is the end time of the query execution.
			/// </summary>
			[Column("first_execution_time"),        NotNull    ] public DateTimeOffset FirstExecutionTime      { get; set; } // datetimeoffset
			/// <summary>
			/// Last execution time for the query plan within the aggregation interval. This is the end time of the query execution.
			/// </summary>
			[Column("last_execution_time"),         NotNull    ] public DateTimeOffset LastExecutionTime       { get; set; } // datetimeoffset
			/// <summary>
			/// Total count of executions for the query plan within the aggregation interval.
			/// </summary>
			[Column("count_executions"),            NotNull    ] public long           CountExecutions         { get; set; } // bigint
			/// <summary>
			/// Average duration for the query plan within the aggregation interval (reported in microseconds).
			/// </summary>
			[Column("avg_duration"),                   Nullable] public double?        AvgDuration             { get; set; } // float
			/// <summary>
			/// Last duration for the query plan within the aggregation interval (reported in microseconds).
			/// </summary>
			[Column("last_duration"),               NotNull    ] public long           LastDuration            { get; set; } // bigint
			/// <summary>
			/// Minimum duration for the query plan within the aggregation interval (reported in microseconds).
			/// </summary>
			[Column("min_duration"),                NotNull    ] public long           MinDuration             { get; set; } // bigint
			/// <summary>
			/// Maximum duration for the query plan within the aggregation interval (reported in microseconds).
			/// </summary>
			[Column("max_duration"),                NotNull    ] public long           MaxDuration             { get; set; } // bigint
			/// <summary>
			/// Duration standard deviation for the query plan within the aggregation interval (reported in microseconds).
			/// </summary>
			[Column("stdev_duration"),                 Nullable] public double?        StdevDuration           { get; set; } // float
			/// <summary>
			/// Average CPU time for the query plan within the aggregation interval (reported in microseconds).<br/><strong>Note:</strong> Azure Synapse Analytics will always return zero (0).
			/// </summary>
			[Column("avg_cpu_time"),                   Nullable] public double?        AvgCpuTime              { get; set; } // float
			/// <summary>
			/// Last CPU time for the query plan within the aggregation interval (reported in microseconds).<br/><strong>Note:</strong> Azure Synapse Analytics will always return zero (0).
			/// </summary>
			[Column("last_cpu_time"),               NotNull    ] public long           LastCpuTime             { get; set; } // bigint
			/// <summary>
			/// Minimum CPU time for the query plan within the aggregation interval (reported in microseconds).<br/><strong>Note:</strong> Azure Synapse Analytics will always return zero (0).
			/// </summary>
			[Column("min_cpu_time"),                NotNull    ] public long           MinCpuTime              { get; set; } // bigint
			/// <summary>
			/// Maximum CPU time for the query plan within the aggregation interval (reported in microseconds).<br/><strong>Note:</strong> Azure Synapse Analytics will always return zero (0).
			/// </summary>
			[Column("max_cpu_time"),                NotNull    ] public long           MaxCpuTime              { get; set; } // bigint
			/// <summary>
			/// CPU time standard deviation for the query plan within the aggregation interval (reported in microseconds).<br/><strong>Note:</strong> Azure Synapse Analytics will always return zero (0).
			/// </summary>
			[Column("stdev_cpu_time"),                 Nullable] public double?        StdevCpuTime            { get; set; } // float
			/// <summary>
			/// Average number of logical I/O reads for the query plan within the aggregation interval. (expressed as a number of 8 KB pages read).<br/><strong>Note:</strong> Azure Synapse Analytics will always return zero (0).
			/// </summary>
			[Column("avg_logical_io_reads"),           Nullable] public double?        AvgLogicalIoReads       { get; set; } // float
			/// <summary>
			/// Last number of logical I/O reads for the query plan within the aggregation interval. (expressed as a number of 8 KB pages read).<br/><strong>Note:</strong> Azure Synapse Analytics will always return zero (0).
			/// </summary>
			[Column("last_logical_io_reads"),       NotNull    ] public long           LastLogicalIoReads      { get; set; } // bigint
			/// <summary>
			/// Minimum number of logical I/O reads for the query plan within the aggregation interval. (expressed as a number of 8 KB pages read).<br/><strong>Note:</strong> Azure Synapse Analytics will always return zero (0).
			/// </summary>
			[Column("min_logical_io_reads"),        NotNull    ] public long           MinLogicalIoReads       { get; set; } // bigint
			/// <summary>
			/// Maximum number of logical I/O reads for the query plan within the aggregation interval.(expressed as a number of 8 KB pages read).<br/><strong>Note:</strong> Azure Synapse Analytics will always return zero (0).
			/// </summary>
			[Column("max_logical_io_reads"),        NotNull    ] public long           MaxLogicalIoReads       { get; set; } // bigint
			/// <summary>
			/// Number of logical I/O reads standard deviation for the query plan within the aggregation interval. (expressed as a number of 8 KB pages read).<br/><strong>Note:</strong> Azure Synapse Analytics will always return zero (0).
			/// </summary>
			[Column("stdev_logical_io_reads"),         Nullable] public double?        StdevLogicalIoReads     { get; set; } // float
			/// <summary>
			/// Average number of logical I/O writes for the query plan within the aggregation interval.<br/><strong>Note:</strong> Azure Synapse Analytics will always return zero (0).
			/// </summary>
			[Column("avg_logical_io_writes"),          Nullable] public double?        AvgLogicalIoWrites      { get; set; } // float
			/// <summary>
			/// Last number of logical I/O writes for the query plan within the aggregation interval.<br/><strong>Note:</strong> Azure Synapse Analytics will always return zero (0).
			/// </summary>
			[Column("last_logical_io_writes"),      NotNull    ] public long           LastLogicalIoWrites     { get; set; } // bigint
			/// <summary>
			/// Minimum number of logical I/O writes for the query plan within the aggregation interval.<br/><strong>Note:</strong> Azure Synapse Analytics will always return zero (0).
			/// </summary>
			[Column("min_logical_io_writes"),       NotNull    ] public long           MinLogicalIoWrites      { get; set; } // bigint
			/// <summary>
			/// Maximum number of logical I/O writes for the query plan within the aggregation interval.<br/><strong>Note:</strong> Azure Synapse Analytics will always return zero (0).
			/// </summary>
			[Column("max_logical_io_writes"),       NotNull    ] public long           MaxLogicalIoWrites      { get; set; } // bigint
			/// <summary>
			/// Number of logical I/O writes standard deviation for the query plan within the aggregation interval.<br/><strong>Note:</strong> Azure Synapse Analytics will always return zero (0).
			/// </summary>
			[Column("stdev_logical_io_writes"),        Nullable] public double?        StdevLogicalIoWrites    { get; set; } // float
			/// <summary>
			/// Average number of physical I/O reads for the query plan within the aggregation interval (expressed as a number of 8 KB pages read).<br/><strong>Note:</strong> Azure Synapse Analytics will always return zero (0).
			/// </summary>
			[Column("avg_physical_io_reads"),          Nullable] public double?        AvgPhysicalIoReads      { get; set; } // float
			/// <summary>
			/// Last number of physical I/O reads for the query plan within the aggregation interval (expressed as a number of 8 KB pages read).<br/><strong>Note:</strong> Azure Synapse Analytics will always return zero (0).
			/// </summary>
			[Column("last_physical_io_reads"),      NotNull    ] public long           LastPhysicalIoReads     { get; set; } // bigint
			/// <summary>
			/// Minimum number of physical I/O reads for the query plan within the aggregation interval (expressed as a number of 8 KB pages read).<br/><strong>Note:</strong> Azure Synapse Analytics will always return zero (0).
			/// </summary>
			[Column("min_physical_io_reads"),       NotNull    ] public long           MinPhysicalIoReads      { get; set; } // bigint
			/// <summary>
			/// Maximum number of physical I/O reads for the query plan within the aggregation interval (expressed as a number of 8 KB pages read).<br/><strong>Note:</strong> Azure Synapse Analytics will always return zero (0).
			/// </summary>
			[Column("max_physical_io_reads"),       NotNull    ] public long           MaxPhysicalIoReads      { get; set; } // bigint
			/// <summary>
			/// Number of physical I/O reads standard deviation for the query plan within the aggregation interval (expressed as a number of 8 KB pages read).<br/><strong>Note:</strong> Azure Synapse Analytics will always return zero (0).
			/// </summary>
			[Column("stdev_physical_io_reads"),        Nullable] public double?        StdevPhysicalIoReads    { get; set; } // float
			/// <summary>
			/// Average CLR time for the query plan within the aggregation interval (reported in microseconds).<br/><strong>Note:</strong> Azure Synapse Analytics will always return zero (0).
			/// </summary>
			[Column("avg_clr_time"),                   Nullable] public double?        AvgClrTime              { get; set; } // float
			/// <summary>
			/// Last CLR time for the query plan within the aggregation interval (reported in microseconds).<br/><strong>Note:</strong> Azure Synapse Analytics will always return zero (0).
			/// </summary>
			[Column("last_clr_time"),               NotNull    ] public long           LastClrTime             { get; set; } // bigint
			/// <summary>
			/// Minimum CLR time for the query plan within the aggregation interval (reported in microseconds).<br/><strong>Note:</strong> Azure Synapse Analytics will always return zero (0).
			/// </summary>
			[Column("min_clr_time"),                NotNull    ] public long           MinClrTime              { get; set; } // bigint
			/// <summary>
			/// Maximum CLR time for the query plan within the aggregation interval (reported in microseconds).<br/><strong>Note:</strong> Azure Synapse Analytics will always return zero (0).
			/// </summary>
			[Column("max_clr_time"),                NotNull    ] public long           MaxClrTime              { get; set; } // bigint
			/// <summary>
			/// CLR time standard deviation for the query plan within the aggregation interval (reported in microseconds).<br/><strong>Note:</strong> Azure Synapse Analytics will always return zero (0).
			/// </summary>
			[Column("stdev_clr_time"),                 Nullable] public double?        StdevClrTime            { get; set; } // float
			/// <summary>
			/// Average DOP (degree of parallelism) for the query plan within the aggregation interval.<br/><strong>Note:</strong> Azure Synapse Analytics will always return zero (0).
			/// </summary>
			[Column("avg_dop"),                        Nullable] public double?        AvgDop                  { get; set; } // float
			/// <summary>
			/// Last DOP (degree of parallelism) for the query plan within the aggregation interval.<br/><strong>Note:</strong> Azure Synapse Analytics will always return zero (0).
			/// </summary>
			[Column("last_dop"),                    NotNull    ] public long           LastDop                 { get; set; } // bigint
			/// <summary>
			/// Minimum DOP (degree of parallelism) for the query plan within the aggregation interval.<br/><strong>Note:</strong> Azure Synapse Analytics will always return zero (0).
			/// </summary>
			[Column("min_dop"),                     NotNull    ] public long           MinDop                  { get; set; } // bigint
			/// <summary>
			/// Maximum DOP (degree of parallelism) for the query plan within the aggregation interval.<br/><strong>Note:</strong> Azure Synapse Analytics will always return zero (0).
			/// </summary>
			[Column("max_dop"),                     NotNull    ] public long           MaxDop                  { get; set; } // bigint
			/// <summary>
			/// DOP (degree of parallelism) standard deviation for the query plan within the aggregation interval.<br/><strong>Note:</strong> Azure Synapse Analytics will always return zero (0).
			/// </summary>
			[Column("stdev_dop"),                      Nullable] public double?        StdevDop                { get; set; } // float
			/// <summary>
			/// Average memory grant (reported as the number of 8 KB pages) for the query plan within the aggregation interval. Always 0 for queries using natively compiled memory optimized procedures.<br/><strong>Note:</strong> Azure Synapse Analytics will always return zero (0).
			/// </summary>
			[Column("avg_query_max_used_memory"),      Nullable] public double?        AvgQueryMaxUsedMemory   { get; set; } // float
			/// <summary>
			/// Last memory grant (reported as the number of 8 KB pages) for the query plan within the aggregation interval. Always 0 for queries using natively compiled memory optimized procedures.<br/><strong>Note:</strong> Azure Synapse Analytics will always return zero (0).
			/// </summary>
			[Column("last_query_max_used_memory"),  NotNull    ] public long           LastQueryMaxUsedMemory  { get; set; } // bigint
			/// <summary>
			/// Minimum memory grant (reported as the number of 8 KB pages) for the query plan within the aggregation interval. Always 0 for queries using natively compiled memory optimized procedures.<br/><strong>Note:</strong> Azure Synapse Analytics will always return zero (0).
			/// </summary>
			[Column("min_query_max_used_memory"),   NotNull    ] public long           MinQueryMaxUsedMemory   { get; set; } // bigint
			/// <summary>
			/// Maximum memory grant (reported as the number of 8 KB pages) for the query plan within the aggregation interval. Always 0 for queries using natively compiled memory optimized procedures.<br/><strong>Note:</strong> Azure Synapse Analytics will always return zero (0).
			/// </summary>
			[Column("max_query_max_used_memory"),   NotNull    ] public long           MaxQueryMaxUsedMemory   { get; set; } // bigint
			/// <summary>
			/// Memory grant standard deviation (reported as the number of 8 KB pages) for the query plan within the aggregation interval. Always 0 for queries using natively compiled memory optimized procedures.<br/><strong>Note:</strong> Azure Synapse Analytics will always return zero (0).
			/// </summary>
			[Column("stdev_query_max_used_memory"),    Nullable] public double?        StdevQueryMaxUsedMemory { get; set; } // float
			/// <summary>
			/// Average number of returned rows for the query plan within the aggregation interval.<br/><strong>Note:</strong> Azure Synapse Analytics will always return zero (0).
			/// </summary>
			[Column("avg_rowcount"),                   Nullable] public double?        AvgRowcount             { get; set; } // float
			/// <summary>
			/// Number of returned rows by the last execution of the query plan within the aggregation interval.<br/><strong>Note:</strong> Azure Synapse Analytics will always return zero (0).
			/// </summary>
			[Column("last_rowcount"),               NotNull    ] public long           LastRowcount            { get; set; } // bigint
			/// <summary>
			/// Minimum number of returned rows for the query plan within the aggregation interval.<br/><strong>Note:</strong> Azure Synapse Analytics will always return zero (0).
			/// </summary>
			[Column("min_rowcount"),                NotNull    ] public long           MinRowcount             { get; set; } // bigint
			/// <summary>
			/// Maximum number of returned rows for the query plan within the aggregation interval.
			/// </summary>
			[Column("max_rowcount"),                NotNull    ] public long           MaxRowcount             { get; set; } // bigint
			/// <summary>
			/// Standard deviation of the number of returned rows for the query plan within the aggregation interval.
			/// </summary>
			[Column("stdev_rowcount"),                 Nullable] public double?        StdevRowcount           { get; set; } // float
			/// <summary>
			/// Average number of physical I/O reads for the query plan within the aggregation interval (expressed as a number of read I/O operations).<br/><strong>Note:</strong> Azure Synapse Analytics will always return zero (0).
			/// </summary>
			[Column("avg_num_physical_io_reads"),      Nullable] public double?        AvgNumPhysicalIoReads   { get; set; } // float
			/// <summary>
			/// Last number of physical I/O reads for the query plan within the aggregation interval (expressed as a number of read I/O operations).<br/><strong>Note:</strong> Azure Synapse Analytics will always return zero (0).
			/// </summary>
			[Column("last_num_physical_io_reads"),     Nullable] public long?          LastNumPhysicalIoReads  { get; set; } // bigint
			/// <summary>
			/// Minimum number of physical I/O reads for the query plan within the aggregation interval (expressed as a number of read I/O operations).<br/><strong>Note:</strong> Azure Synapse Analytics will always return zero (0).
			/// </summary>
			[Column("min_num_physical_io_reads"),      Nullable] public long?          MinNumPhysicalIoReads   { get; set; } // bigint
			/// <summary>
			/// Maximum number of physical I/O reads for the query plan within the aggregation interval (expressed as a number of read I/O operations).<br/><strong>Note:</strong> Azure Synapse Analytics will always return zero (0).
			/// </summary>
			[Column("max_num_physical_io_reads"),      Nullable] public long?          MaxNumPhysicalIoReads   { get; set; } // bigint
			/// <summary>
			/// Average number of bytes in the database log used by the query plan, within the aggregation interval.<br/><strong>Applies to:</strong> SQL Server (Starting with SQL Server 2017 (14.x)) and Azure SQL Database.<br/><strong>Note:</strong> Azure Synapse Analytics will always return zero (0).
			/// </summary>
			[Column("avg_log_bytes_used"),             Nullable] public double?        AvgLogBytesUsed         { get; set; } // float
			/// <summary>
			/// Number of bytes in the database log used by the last execution of the query plan, within the aggregation interval.<br/><strong>Applies to:</strong> SQL Server (Starting with SQL Server 2017 (14.x)) and Azure SQL Database.<br/><strong>Note:</strong> Azure Synapse Analytics will always return zero (0).
			/// </summary>
			[Column("last_log_bytes_used"),            Nullable] public long?          LastLogBytesUsed        { get; set; } // bigint
			/// <summary>
			/// Minimum number of bytes in the database log used by the query plan, within the aggregation interval.<br/><strong>Applies to:</strong> SQL Server (Starting with SQL Server 2017 (14.x)) and Azure SQL Database.<br/><strong>Note:</strong> Azure Synapse Analytics will always return zero (0).
			/// </summary>
			[Column("min_log_bytes_used"),             Nullable] public long?          MinLogBytesUsed         { get; set; } // bigint
			/// <summary>
			/// Maximum number of bytes in the database log used by the query plan, within the aggregation interval.<br/><strong>Applies to:</strong> SQL Server (Starting with SQL Server 2017 (14.x)) and Azure SQL Database.<br/><strong>Note:</strong> Azure Synapse Analytics will always return zero (0).
			/// </summary>
			[Column("max_log_bytes_used"),             Nullable] public long?          MaxLogBytesUsed         { get; set; } // bigint
			/// <summary>
			/// Standard deviation of the number of bytes in the database log used by a query plan, within the aggregation interval.<br/><strong>Applies to:</strong> SQL Server (Starting with SQL Server 2017 (14.x)) and Azure SQL Database.<br/><strong>Note:</strong> Azure Synapse Analytics will always return zero (0).
			/// </summary>
			[Column("stdev_log_bytes_used"),           Nullable] public double?        StdevLogBytesUsed       { get; set; } // float
			/// <summary>
			/// Average number of pages used in tempdb for the query plan within the aggregation interval (expressed as a number of 8 KB pages).<br/><br/><strong>Applies to:</strong> SQL Server (Starting with SQL Server 2017 (14.x)) and Azure SQL Database.
			/// </summary>
			[Column("avg_tempdb_space_used"),          Nullable] public double?        AvgTempdbSpaceUsed      { get; set; } // float
			/// <summary>
			/// Last number of pages used in tempdb for the query plan within the aggregation interval (expressed as a number of 8 KB pages).<br/><br/><strong>Applies to:</strong> SQL Server (Starting with SQL Server 2017 (14.x)) and Azure SQL Database.
			/// </summary>
			[Column("last_tempdb_space_used"),         Nullable] public long?          LastTempdbSpaceUsed     { get; set; } // bigint
			/// <summary>
			/// Minimum number of pages used in tempdb for the query plan within the aggregation interval (expressed as a number of 8 KB pages).<br/><br/><strong>Applies to:</strong> SQL Server (Starting with SQL Server 2017 (14.x)) and Azure SQL Database.
			/// </summary>
			[Column("min_tempdb_space_used"),          Nullable] public long?          MinTempdbSpaceUsed      { get; set; } // bigint
			/// <summary>
			/// Maximum number of pages used in tempdb for the query plan within the aggregation interval (expressed as a number of 8 KB pages).<br/><br/><strong>Applies to:</strong> SQL Server (Starting with SQL Server 2017 (14.x)) and Azure SQL Database.
			/// </summary>
			[Column("max_tempdb_space_used"),          Nullable] public long?          MaxTempdbSpaceUsed      { get; set; } // bigint
			/// <summary>
			/// Number of pages used in tempdb standard deviation for the query plan within the aggregation interval (expressed as a number of 8 KB pages).<br/><br/><strong>Applies to:</strong> SQL Server (Starting with SQL Server 2017 (14.x)) and Azure SQL Database.
			/// </summary>
			[Column("stdev_tempdb_space_used"),        Nullable] public double?        StdevTempdbSpaceUsed    { get; set; } // float
			/// <summary>
			/// Average number of page server I/O reads for the query plan within the aggregation interval (expressed as a number of 8 KB pages read).<br/><br/><strong>Applies to:</strong> Azure SQL Database Hyperscale<br/><strong>Note:</strong> Azure Synapse Analytics, Azure SQL Database, Azure SQL Managed Instance (non-hyperscale) will always return zero (0).
			/// </summary>
			[Column("avg_page_server_io_reads"),    NotNull    ] public double         AvgPageServerIoReads    { get; set; } // float
			/// <summary>
			/// Last number of page server I/O reads for the query plan within the aggregation interval (expressed as a number of 8 KB pages read).<br/><br/><strong>Applies to:</strong> Azure SQL Database Hyperscale<br/><strong>Note:</strong> Azure Synapse Analytics, Azure SQL Database, Azure SQL Managed Instance (non-hyperscale) will always return zero (0).
			/// </summary>
			[Column("last_page_server_io_reads"),   NotNull    ] public long           LastPageServerIoReads   { get; set; } // bigint
			/// <summary>
			/// Minimum number of page server I/O reads for the query plan within the aggregation interval (expressed as a number of 8 KB pages read).<br/><br/><strong>Applies to:</strong> Azure SQL Database Hyperscale<br/><strong>Note:</strong> Azure Synapse Analytics, Azure SQL Database, Azure SQL Managed Instance (non-hyperscale) will always return zero (0).
			/// </summary>
			[Column("min_page_server_io_reads"),    NotNull    ] public long           MinPageServerIoReads    { get; set; } // bigint
			/// <summary>
			/// Maximum number of page server I/O reads for the query plan within the aggregation interval (expressed as a number of 8 KB pages read).<br/><br/><strong>Applies to:</strong> Azure SQL Database Hyperscale<br/><strong>Note:</strong> Azure Synapse Analytics, Azure SQL Database, Azure SQL Managed Instance (non-hyperscale) will always return zero (0).
			/// </summary>
			[Column("max_page_server_io_reads"),    NotNull    ] public long           MaxPageServerIoReads    { get; set; } // bigint
			/// <summary>
			/// Standard deviation of the number of page server I/O reads for the query plan within the aggregation interval (expressed as a number of 8 KB pages read).<br/><br/><strong>Applies to:</strong> Azure SQL Database Hyperscale<br/><strong>Note:</strong> Azure Synapse Analytics, Azure SQL Database, Azure SQL Managed Instance (non-hyperscale) will always return zero (0).
			/// </summary>
			[Column("stdev_page_server_io_reads"),  NotNull    ] public double         StdevPageServerIoReads  { get; set; } // float
		}

		/// <summary>
		/// <para><strong>sys.query_store_runtime_stats_interval (Transact-SQL)</strong></para>
		/// <para><strong>Applies to:</strong> √ SQL Server 2016 (13.x) and later √ Azure SQL Database √ Azure SQL Managed Instance √ Azure Synapse Analytics</para>
		/// <para>Contains  information about the start and end time of each interval over which runtime execution statistics information for a query has been collected.</para><br/>
		/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-query-store-runtime-stats-interval-transact-sql'>sys.query_store_runtime_stats_interval</a>.</para>
		/// </summary>
		[Table(Schema="sys", Name="query_store_runtime_stats_interval", IsView=true)]
		public partial class QueryStoreRuntimeStatsInterval
		{
			/// <summary>
			/// Primary key.
			/// </summary>
			[Column("runtime_stats_interval_id"), NotNull    ] public long           RuntimeStatsIntervalID { get; set; } // bigint
			/// <summary>
			/// Start time of the interval.
			/// </summary>
			[Column("start_time"),                NotNull    ] public DateTimeOffset StartTime              { get; set; } // datetimeoffset
			/// <summary>
			/// End time of the interval.
			/// </summary>
			[Column("end_time"),                  NotNull    ] public DateTimeOffset EndTime                { get; set; } // datetimeoffset
			/// <summary>
			/// Always NULL.
			/// </summary>
			[Column("comment"),                      Nullable] public string?        Comment                { get; set; } // nvarchar(32)
		}

		/// <summary>
		/// <para><strong>sys.query_store_wait_stats (Transact-SQL)</strong></para>
		/// <para><strong>Applies to:</strong> √ SQL Server 2017 (14.x) and later  √ Azure SQL Database</para>
		/// <para>Contains  information about the wait information for the query.</para><br/>
		/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-query-store-wait-stats-transact-sql'>sys.query_store_wait_stats</a>.</para>
		/// </summary>
		[Table(Schema="sys", Name="query_store_wait_stats", IsView=true)]
		public partial class QueryStoreWaitStat
		{
			/// <summary>
			/// Identifier of the row representing wait statistics for the plan_id, runtime_stats_interval_id, execution_type and wait_category. It is unique only for the past runtime statistics intervals. For the currently active interval, there may be multiple rows representing wait statistics for the plan referenced by plan_id, with the execution type represented by execution_type and the wait category represented by wait_category. Typically, one row represents wait statistics that are flushed to disk, while other(s) represent in-memory state. Hence, to get actual state for every interval you need to aggregate metrics, grouping by plan_id, runtime_stats_interval_id, execution_type and wait_category.
			/// </summary>
			[Column("wait_stats_id"),             NotNull    ] public long    WaitStatsID            { get; set; } // bigint
			/// <summary>
			/// Foreign key. Joins to <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-query-store-plan-transact-sql'>sys.query_store_plan (Transact-SQL)</a>.
			/// </summary>
			[Column("plan_id"),                   NotNull    ] public long    PlanID                 { get; set; } // bigint
			/// <summary>
			/// Foreign key. Joins to <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-query-store-runtime-stats-interval-transact-sql'>sys.query_store_runtime_stats_interval (Transact-SQL)</a>.
			/// </summary>
			[Column("runtime_stats_interval_id"), NotNull    ] public long    RuntimeStatsIntervalID { get; set; } // bigint
			/// <summary>
			/// Wait types are categorized using the table below, and then wait time is aggregated across these wait categories. Different wait categories require a different follow-up analysis to resolve the issue, but wait types from the same category lead to similar troubleshooting experiences, and providing the affected query in addition to the waits is the missing piece to complete the majority of such investigations successfully.
			/// </summary>
			[Column("wait_category"),             NotNull    ] public byte    WaitCategory           { get; set; } // tinyint
			/// <summary>
			/// For textual description of the wait category field, review the table below.
			/// </summary>
			[Column("wait_category_desc"),           Nullable] public string? WaitCategoryDesc       { get; set; } // nvarchar(128)
			/// <summary>
			/// Determines type of query execution:<br/><br/> 0 - Regular execution (successfully finished)<br/><br/> 3 - Client initiated aborted execution<br/><br/> 4 -  Exception aborted execution
			/// </summary>
			[Column("execution_type"),            NotNull    ] public byte    ExecutionType          { get; set; } // tinyint
			/// <summary>
			/// Textual description of the execution type field:<br/><br/> 0 -  Regular<br/><br/> 3 -  Aborted<br/><br/> 4 -  Exception
			/// </summary>
			[Column("execution_type_desc"),          Nullable] public string? ExecutionTypeDesc      { get; set; } // nvarchar(128)
			/// <summary>
			/// Total <c>CPU wait</c> time for the query plan within the aggregation interval and wait category (reported in milliseconds).
			/// </summary>
			[Column("total_query_wait_time_ms"),  NotNull    ] public long    TotalQueryWaitTimeMs   { get; set; } // bigint
			/// <summary>
			/// Average wait duration for the query plan per execution within the aggregation interval and wait category (reported in milliseconds).
			/// </summary>
			[Column("avg_query_wait_time_ms"),       Nullable] public double? AvgQueryWaitTimeMs     { get; set; } // float
			/// <summary>
			/// Last wait duration for the query plan within the aggregation interval and wait category (reported in milliseconds).
			/// </summary>
			[Column("last_query_wait_time_ms"),   NotNull    ] public long    LastQueryWaitTimeMs    { get; set; } // bigint
			/// <summary>
			/// Minimum <c>CPU wait</c> time for the query plan within the aggregation interval and wait category (reported in milliseconds).
			/// </summary>
			[Column("min_query_wait_time_ms"),    NotNull    ] public long    MinQueryWaitTimeMs     { get; set; } // bigint
			/// <summary>
			/// Maximum <c>CPU wait</c> time for the query plan within the aggregation interval and wait category (reported in milliseconds).
			/// </summary>
			[Column("max_query_wait_time_ms"),    NotNull    ] public long    MaxQueryWaitTimeMs     { get; set; } // bigint
			/// <summary>
			/// <c>Query wait</c> duration standard deviation for the query plan within the aggregation interval and wait category (reported in milliseconds).
			/// </summary>
			[Column("stdev_query_wait_time_ms"),     Nullable] public double? StdevQueryWaitTimeMs   { get; set; } // float
		}
	}

	public static partial class ResourceGovernorSchema
	{
		public partial class DataContext
		{
			/// <summary>
			/// <para><strong>sys.resource_governor_configuration (Transact-SQL)</strong></para>
			/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)</para>
			/// <para>Returns the stored Resource Governor state.</para><br/>
			/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-resource-governor-configuration-transact-sql'>sys.resource_governor_configuration</a>.</para>
			/// </summary>
			public ITable<Configuration>        Configurations        { get { return _dataContext.GetTable<Configuration>(); } }
			/// <summary>
			/// <para><strong>sys.resource_governor_external_resource_pools (Transact-SQL)</strong></para>
			/// <para><strong>Applies to:</strong> √ SQL Server 2016 (13.x) and later</para>
			/// <para><strong>Applies to:</strong> SQL Server 2016 (13.x) R Services (In-Database) and SQL Server 2017 (14.x) Machine Learning Services<br/>
			/// Returns the stored external resource pool configuration in SQL Server. Each row of the view determines the configuration of a pool.</para><br/>
			/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-resource-governor-external-resource-pools-transact-sql'>sys.resource_governor_external_resource_pools</a>.</para>
			/// </summary>
			public ITable<ExternalResourcePool> ExternalResourcePools { get { return _dataContext.GetTable<ExternalResourcePool>(); } }
			/// <summary>
			/// <para><strong>sys.resource_governor_resource_pools (Transact-SQL)</strong></para>
			/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)</para>
			/// <para>Returns the stored resource pool configuration in SQL Server. Each row of the view determines the configuration of a pool.</para><br/>
			/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-resource-governor-resource-pools-transact-sql'>sys.resource_governor_resource_pools</a>.</para>
			/// </summary>
			public ITable<ResourcePool>         ResourcePools         { get { return _dataContext.GetTable<ResourcePool>(); } }
			/// <summary>
			/// <para><strong>sys.resource_governor_workload_groups (Transact-SQL)</strong></para>
			/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)</para>
			/// <para>Returns the stored workload group configuration in SQL Server. Each workload group can subscribe to one and only one resource pool.</para><br/>
			/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-resource-governor-workload-groups-transact-sql'>sys.resource_governor_workload_groups</a>.</para>
			/// </summary>
			public ITable<WorkloadGroup>        WorkloadGroups        { get { return _dataContext.GetTable<WorkloadGroup>(); } }

			private readonly IDataContext _dataContext;

			public DataContext(IDataContext dataContext)
			{
				_dataContext = dataContext;
			}
		}

		/// <summary>
		/// <para><strong>sys.resource_governor_configuration (Transact-SQL)</strong></para>
		/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)</para>
		/// <para>Returns the stored Resource Governor state.</para><br/>
		/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-resource-governor-configuration-transact-sql'>sys.resource_governor_configuration</a>.</para>
		/// </summary>
		[Table(Schema="sys", Name="resource_governor_configuration", IsView=true)]
		public partial class Configuration
		{
			/// <summary>
			/// The ID of the classifier function as it is stored in the metadata. Is not nullable.<br/><br/> <strong>Note</strong> This function is used to classify new sessions and uses rules to route the workload to the appropriate workload group. For more information, see <a href='https://docs.microsoft.com/en-us/sql/relational-databases/resource-governor/resource-governor'>Resource Governor</a>.
			/// </summary>
			[Column("classifier_function_id"),        NotNull] public int  ClassifierFunctionID      { get; set; } // int
			/// <summary>
			/// Indicates the current state of the Resource Governor:<br/><br/> 0 = Resource Governor is not enabled.<br/><br/> 1 = Resource Governor is enabled.<br/><br/> Is not nullable.
			/// </summary>
			[Column("is_enabled"),                    NotNull] public bool IsEnabled                 { get; set; } // bit
			/// <summary>
			/// <strong>Applies to</strong>: SQL Server 2014 (12.x) and later.<br/><br/> The maximum number of outstanding I/O per volume.
			/// </summary>
			[Column("max_outstanding_io_per_volume"), NotNull] public int  MaxOutstandingIoPerVolume { get; set; } // int
		}

		/// <summary>
		/// <para><strong>sys.resource_governor_external_resource_pools (Transact-SQL)</strong></para>
		/// <para><strong>Applies to:</strong> √ SQL Server 2016 (13.x) and later</para>
		/// <para><strong>Applies to:</strong> SQL Server 2016 (13.x) R Services (In-Database) and SQL Server 2017 (14.x) Machine Learning Services<br/>
		/// Returns the stored external resource pool configuration in SQL Server. Each row of the view determines the configuration of a pool.</para><br/>
		/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-resource-governor-external-resource-pools-transact-sql'>sys.resource_governor_external_resource_pools</a>.</para>
		/// </summary>
		[Table(Schema="sys", Name="resource_governor_external_resource_pools", IsView=true)]
		public partial class ExternalResourcePool
		{
			/// <summary>
			/// Unique ID of the resource pool. Is not nullable.
			/// </summary>
			[Column("external_pool_id"),   NotNull] public int    ExternalPoolID   { get; set; } // int
			/// <summary>
			/// Name of the resource pool. Is not nullable.
			/// </summary>
			[Column("name"),               NotNull] public string Name             { get; set; } = null!; // sysname
			/// <summary>
			/// Maximum average CPU bandwidth allowed for all requests in the resource pool when there is CPU contention. Is not nullable.
			/// </summary>
			[Column("max_cpu_percent"),    NotNull] public int    MaxCpuPercent    { get; set; } // int
			/// <summary>
			/// Percentage of total server memory that can be used by requests in this resource pool. Is not nullable. The effective maximum depends on the pool minimums. For example, max_memory_percent can be set to 100, but the effective maximum is lower.
			/// </summary>
			[Column("max_memory_percent"), NotNull] public int    MaxMemoryPercent { get; set; } // int
			/// <summary>
			/// Maximum number of concurrent external processes. The default value, 0, specifies no limit. Is not nullable.
			/// </summary>
			[Column("max_processes"),      NotNull] public int    MaxProcesses     { get; set; } // int
			/// <summary>
			/// Internal version number.
			/// </summary>
			[Column("version"),            NotNull] public long   Version          { get; set; } // bigint
		}

		/// <summary>
		/// <para><strong>sys.resource_governor_resource_pools (Transact-SQL)</strong></para>
		/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)</para>
		/// <para>Returns the stored resource pool configuration in SQL Server. Each row of the view determines the configuration of a pool.</para><br/>
		/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-resource-governor-resource-pools-transact-sql'>sys.resource_governor_resource_pools</a>.</para>
		/// </summary>
		[Table(Schema="sys", Name="resource_governor_resource_pools", IsView=true)]
		public partial class ResourcePool
		{
			/// <summary>
			/// Unique ID of the resource pool. Is not nullable.
			/// </summary>
			[Column("pool_id"),             NotNull] public int    PoolID           { get; set; } // int
			/// <summary>
			/// Name of the resource pool. Is not nullable.
			/// </summary>
			[Column("name"),                NotNull] public string Name             { get; set; } = null!; // sysname
			/// <summary>
			/// Guaranteed average CPU bandwidth for all requests in the resource pool when there is CPU contention. Is not nullable.
			/// </summary>
			[Column("min_cpu_percent"),     NotNull] public int    MinCpuPercent    { get; set; } // int
			/// <summary>
			/// Maximum average CPU bandwidth allowed for all requests in the resource pool when there is CPU contention. Is not nullable.
			/// </summary>
			[Column("max_cpu_percent"),     NotNull] public int    MaxCpuPercent    { get; set; } // int
			/// <summary>
			/// Guaranteed amount of memory for all requests in the resource pool. This is not shared with other resource pools. Is not nullable.
			/// </summary>
			[Column("min_memory_percent"),  NotNull] public int    MinMemoryPercent { get; set; } // int
			/// <summary>
			/// Percentage of total server memory that can be used by requests in this resource pool. Is not nullable. The effective maximum depends on the pool minimums. For example, max_memory_percent can be set to 100, but the effective maximum is lower.
			/// </summary>
			[Column("max_memory_percent"),  NotNull] public int    MaxMemoryPercent { get; set; } // int
			/// <summary>
			/// <strong>Applies to</strong>: SQL Server 2012 (11.x) and later.<br/><br/> Hard cap on the CPU bandwidth that all requests in the resource pool will receive. Limits the maximum CPU bandwidth to the specified level. The allowed range for value is from 1 through 100.
			/// </summary>
			[Column("cap_cpu_percent"),     NotNull] public int    CapCpuPercent    { get; set; } // int
			/// <summary>
			/// <strong>Applies to</strong>: SQL Server 2014 (12.x) and later.<br/><br/> The minimum I/O operations per second (IOPS) per volume setting for this pool. 0 = no reservation. Cannot be null.
			/// </summary>
			[Column("min_iops_per_volume"), NotNull] public int    MinIopsPerVolume { get; set; } // int
			/// <summary>
			/// <strong>Applies to</strong>: SQL Server 2014 (12.x) and later.<br/><br/> The maximum I/O operations per second (IOPS) per volume setting for this pool. 0 = unlimited. Cannot be null.
			/// </summary>
			[Column("max_iops_per_volume"), NotNull] public int    MaxIopsPerVolume { get; set; } // int
		}

		/// <summary>
		/// <para><strong>sys.resource_governor_workload_groups (Transact-SQL)</strong></para>
		/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)</para>
		/// <para>Returns the stored workload group configuration in SQL Server. Each workload group can subscribe to one and only one resource pool.</para><br/>
		/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-resource-governor-workload-groups-transact-sql'>sys.resource_governor_workload_groups</a>.</para>
		/// </summary>
		[Table(Schema="sys", Name="resource_governor_workload_groups", IsView=true)]
		public partial class WorkloadGroup
		{
			/// <summary>
			/// Unique ID of the workload group. Is not nullable.
			/// </summary>
			[Column("group_id"),                         NotNull] public int    GroupID                      { get; set; } // int
			/// <summary>
			/// Name of the workload group. Is not nullable.
			/// </summary>
			[Column("name"),                             NotNull] public string Name                         { get; set; } = null!; // sysname
			/// <summary>
			/// <strong>Note:</strong> Importance only applies to workload groups in the same resource pool.<br/><br/> Is the relative importance of a request in this workload group. Importance is one of the following, with MEDIUM being the default: LOW, MEDIUM, HIGH.<br/><br/> Is not nullable.
			/// </summary>
			[Column("importance"),                       NotNull] public string Importance                   { get; set; } = null!; // sysname
			/// <summary>
			/// Maximum memory grant, as a percentage, for a single request. The default value is 25. Is not nullable.<br/><br/> <strong>Note:</strong> If this setting is higher than 50 percent, large queries will run one at a time. Therefore, there is greater risk of getting an out-of-memory error while the query is running.
			/// </summary>
			[Column("request_max_memory_grant_percent"), NotNull] public int    RequestMaxMemoryGrantPercent { get; set; } // int
			/// <summary>
			/// Maximum CPU use limit, in seconds, for a single request. The default value, 0, specifies no limit. Is not nullable.<br/><br/> <strong>Note:</strong> For more information, see <a href='https://docs.microsoft.com/en-us/sql/relational-databases/event-classes/cpu-threshold-exceeded-event-class'>CPU Threshold Exceeded Event Class</a>.
			/// </summary>
			[Column("request_max_cpu_time_sec"),         NotNull] public int    RequestMaxCpuTimeSec         { get; set; } // int
			/// <summary>
			/// Memory grant time-out, in seconds, for a single request. The default value, 0, uses an internal calculation based on query cost. Is not nullable.
			/// </summary>
			[Column("request_memory_grant_timeout_sec"), NotNull] public int    RequestMemoryGrantTimeoutSec { get; set; } // int
			/// <summary>
			/// Maximum degree of parallelism for the workload group. The default value, 0, uses global settings. Is not nullable.<br/><br/> <strong>Node:</strong> This setting will override the query option <strong>maxdop</strong>.
			/// </summary>
			[Column("max_dop"),                          NotNull] public int    MaxDop                       { get; set; } // int
			/// <summary>
			/// Maximum number of concurrent requests. The default value, 0, specifies no limit. Is not nullable.
			/// </summary>
			[Column("group_max_requests"),               NotNull] public int    GroupMaxRequests             { get; set; } // int
			/// <summary>
			/// ID of the resource pool that this workload group uses.
			/// </summary>
			[Column("pool_id"),                          NotNull] public int    PoolID                       { get; set; } // int
			/// <summary>
			/// <strong>Applies to</strong>: SQL Server 2016 (13.x) and later.<br/><br/> ID of the external resource pool that this workload group uses.
			/// </summary>
			[Column("external_pool_id"),                 NotNull] public int    ExternalPoolID               { get; set; } // int
		}
	}

	public static partial class ScalarTypesSchema
	{
		public partial class DataContext
		{
			/// <summary>
			/// <para><strong>sys.assembly_types (Transact-SQL)</strong></para>
			/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions) √ Azure SQL Managed Instance √ Azure Synapse Analytics √ Analytics Platform System (PDW)</para>
			/// <para>Contains a row for each user-defined type that is defined by a CLR assembly. The following <strong>sys.assembly_types</strong> appear in the list of inherited columns (see <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-types-transact-sql'>sys.types (Transact-SQL)</a>) after <strong>rule_object_id</strong>.</para><br/>
			/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-assembly-types-transact-sql'>sys.assembly_types</a>.</para>
			/// </summary>
			public ITable<AssemblyType>       AssemblyTypes       { get { return _dataContext.GetTable<AssemblyType>(); } }
			/// <summary>
			/// <para><strong>sys.column_type_usages (Transact-SQL)</strong></para>
			/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)</para>
			/// <para>Contains one row for each column that is of user-defined type.</para><br/>
			/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-column-type-usages-transact-sql'>sys.column_type_usages</a>.</para>
			/// </summary>
			public ITable<ColumnTypeUsage>    ColumnTypeUsages    { get { return _dataContext.GetTable<ColumnTypeUsage>(); } }
			/// <summary>
			/// <para><strong>sys.parameter_type_usages (Transact-SQL)</strong></para>
			/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)</para>
			/// <para>Returns one row for each parameter that is of user-defined type.<br/>
			/// <note type='note'><br/>
			/// This view does not return rows for parameters of numbered procedures.<br/>
			/// </note></para><br/>
			/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-parameter-type-usages-transact-sql'>sys.parameter_type_usages</a>.</para>
			/// </summary>
			public ITable<ParameterTypeUsage> ParameterTypeUsages { get { return _dataContext.GetTable<ParameterTypeUsage>(); } }
			/// <summary>
			/// <para><strong>sys.types (Transact-SQL)</strong></para>
			/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions) √ Azure SQL Database √ Azure SQL Managed Instance √ Azure Synapse Analytics √ Analytics Platform System (PDW)</para>
			/// <para>Contains a row for each system and user-defined type.</para><br/>
			/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-types-transact-sql'>sys.types</a>.</para>
			/// </summary>
			public ITable<Type>               Types               { get { return _dataContext.GetTable<Type>(); } }
			/// <summary>
			/// <para><strong>sys.type_assembly_usages (Transact-SQL)</strong></para>
			/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)</para>
			/// <para>Contains one row per type to assembly reference.</para><br/>
			/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-type-assembly-usages-transact-sql'>sys.type_assembly_usages</a>.</para>
			/// </summary>
			public ITable<TypeAssemblyUsage>  TypeAssemblyUsages  { get { return _dataContext.GetTable<TypeAssemblyUsage>(); } }

			private readonly IDataContext _dataContext;

			public DataContext(IDataContext dataContext)
			{
				_dataContext = dataContext;
			}
		}

		/// <summary>
		/// <para><strong>sys.assembly_types (Transact-SQL)</strong></para>
		/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions) √ Azure SQL Managed Instance √ Azure Synapse Analytics √ Analytics Platform System (PDW)</para>
		/// <para>Contains a row for each user-defined type that is defined by a CLR assembly. The following <strong>sys.assembly_types</strong> appear in the list of inherited columns (see <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-types-transact-sql'>sys.types (Transact-SQL)</a>) after <strong>rule_object_id</strong>.</para><br/>
		/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-assembly-types-transact-sql'>sys.assembly_types</a>.</para>
		/// </summary>
		[Table(Schema="sys", Name="assembly_types", IsView=true)]
		public partial class AssemblyType
		{
			/// <summary>
			/// ID of the assembly from which this type was created.
			/// </summary>
			[Column("assembly_id"),             NotNull    ] public int     AssemblyID            { get; set; } // int
			/// <summary>
			/// Name of the class within the assembly that defines this type.
			/// </summary>
			[Column("assembly_class"),             Nullable] public string? AssemblyClass         { get; set; } // sysname
			/// <summary>
			/// Sorting the bytes of this type is equivalent to sorting using comparison operators on the type.
			/// </summary>
			[Column("is_binary_ordered"),          Nullable] public bool?   IsBinaryOrdered       { get; set; } // bit
			/// <summary>
			/// Length of the type is always the same as max_length.
			/// </summary>
			[Column("is_fixed_length"),            Nullable] public bool?   IsFixedLength         { get; set; } // bit
			/// <summary>
			/// ProgID of the type as exposed to COM.
			/// </summary>
			[Column("prog_id"),                    Nullable] public string? ProgID                { get; set; } // nvarchar(40)
			/// <summary>
			/// Assembly qualified type name. The name is in a format suitable to be passed to Type.GetType().
			/// </summary>
			[Column("assembly_qualified_name"),    Nullable] public string? AssemblyQualifiedName { get; set; } // nvarchar(4000)
		}

		/// <summary>
		/// <para><strong>sys.column_type_usages (Transact-SQL)</strong></para>
		/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)</para>
		/// <para>Contains one row for each column that is of user-defined type.</para><br/>
		/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-column-type-usages-transact-sql'>sys.column_type_usages</a>.</para>
		/// </summary>
		[Table(Schema="sys", Name="column_type_usages", IsView=true)]
		public partial class ColumnTypeUsage
		{
			/// <summary>
			/// ID of the object to which this column belongs.
			/// </summary>
			[Column("object_id"),    NotNull] public int ObjectID   { get; set; } // int
			/// <summary>
			/// ID of the column. Is unique within the object.
			/// </summary>
			[Column("column_id"),    NotNull] public int ColumnID   { get; set; } // int
			/// <summary>
			/// ID of the user-defined type.<br/><br/> To return the name of the type, join to the <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-types-transact-sql'>sys.types</a> catalog view on this column.
			/// </summary>
			[Column("user_type_id"), NotNull] public int UserTypeID { get; set; } // int

			#region Associations

			/// <summary>
			/// objects (sys.objects)
			/// </summary>
			[Association(ThisKey="ObjectID", OtherKey="ObjectID", CanBeNull=false)]
			public ObjectSchema.Object Object { get; set; } = null!;

			#endregion
		}

		/// <summary>
		/// <para><strong>sys.parameter_type_usages (Transact-SQL)</strong></para>
		/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)</para>
		/// <para>Returns one row for each parameter that is of user-defined type.<br/>
		/// <note type='note'><br/>
		/// This view does not return rows for parameters of numbered procedures.<br/>
		/// </note></para><br/>
		/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-parameter-type-usages-transact-sql'>sys.parameter_type_usages</a>.</para>
		/// </summary>
		[Table(Schema="sys", Name="parameter_type_usages", IsView=true)]
		public partial class ParameterTypeUsage
		{
			/// <summary>
			/// ID of the object to which this parameter belongs.
			/// </summary>
			[Column("object_id"),    NotNull] public int ObjectID    { get; set; } // int
			/// <summary>
			/// ID of the parameter. Is unique within the object.
			/// </summary>
			[Column("parameter_id"), NotNull] public int ParameterID { get; set; } // int
			/// <summary>
			/// ID of the user-defined type.<br/><br/> To return the name of the type, join to the <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-types-transact-sql'>sys.types</a> catalog view on this column.
			/// </summary>
			[Column("user_type_id"), NotNull] public int UserTypeID  { get; set; } // int

			#region Associations

			/// <summary>
			/// objects (sys.objects)
			/// </summary>
			[Association(ThisKey="ObjectID", OtherKey="ObjectID", CanBeNull=false)]
			public ObjectSchema.Object Object { get; set; } = null!;

			#endregion
		}

		/// <summary>
		/// <para><strong>sys.types (Transact-SQL)</strong></para>
		/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions) √ Azure SQL Database √ Azure SQL Managed Instance √ Azure Synapse Analytics √ Analytics Platform System (PDW)</para>
		/// <para>Contains a row for each system and user-defined type.</para><br/>
		/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-types-transact-sql'>sys.types</a>.</para>
		/// </summary>
		[Table(Schema="sys", Name="types", IsView=true)]
		public partial class Type
		{
			/// <summary>
			/// Name of the type. Is unique within the schema.
			/// </summary>
			[Column("name"),              NotNull    ] public string  Name            { get; set; } = null!; // sysname
			/// <summary>
			/// ID of the internal system-type of the type.
			/// </summary>
			[Column("system_type_id"),    NotNull    ] public byte    SystemTypeID    { get; set; } // tinyint
			/// <summary>
			/// ID of the type. Is unique within the database. For system data types, <strong>user_type_id</strong> = <strong>system_type_id</strong>.
			/// </summary>
			[Column("user_type_id"),      NotNull    ] public int     UserTypeID      { get; set; } // int
			/// <summary>
			/// ID of the schema to which the type belongs.
			/// </summary>
			[Column("schema_id"),         NotNull    ] public int     SchemaID        { get; set; } // int
			/// <summary>
			/// ID of the individual owner if different from schema owner. By default, schema-contained objects are owned by the schema owner. However, an alternate owner can be specified by using the ALTER AUTHORIZATION statement to change ownership.<br/><br/> NULL if there is no alternate individual owner.
			/// </summary>
			[Column("principal_id"),         Nullable] public int?    PrincipalID     { get; set; } // int
			/// <summary>
			/// Maximum length (in bytes) of the type.<br/><br/> -1 = Column data type is <strong>varchar(max)</strong>, <strong>nvarchar(max)</strong>, <strong>varbinary(max)</strong>, or <strong>xml</strong>.<br/><br/> For <strong>text</strong> columns, the <strong>max_length</strong> value will be 16.
			/// </summary>
			[Column("max_length"),        NotNull    ] public short   MaxLength       { get; set; } // smallint
			/// <summary>
			/// Max precision of the type if it is numeric-based; otherwise, 0.
			/// </summary>
			[Column("precision"),         NotNull    ] public byte    Precision       { get; set; } // tinyint
			/// <summary>
			/// Max scale of the type if it is numeric-based; otherwise, 0.
			/// </summary>
			[Column("scale"),             NotNull    ] public byte    Scale           { get; set; } // tinyint
			/// <summary>
			/// Name of the collation of the type if it is character-based; other wise, NULL.
			/// </summary>
			[Column("collation_name"),       Nullable] public string? CollationName   { get; set; } // sysname
			/// <summary>
			/// Type is nullable.
			/// </summary>
			[Column("is_nullable"),          Nullable] public bool?   IsNullable      { get; set; } // bit
			/// <summary>
			/// 1 = User-defined type.<br/><br/> 0 = SQL Server system data type.
			/// </summary>
			[Column("is_user_defined"),   NotNull    ] public bool    IsUserDefined   { get; set; } // bit
			/// <summary>
			/// 1 = Implementation of the type is defined in a CLR assembly.<br/><br/> 0 = Type is based on a SQL Server system data type.
			/// </summary>
			[Column("is_assembly_type"),  NotNull    ] public bool    IsAssemblyType  { get; set; } // bit
			/// <summary>
			/// ID of the stand-alone default that is bound to the type by using <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-stored-procedures/sp-bindefault-transact-sql'>sp_bindefault</a>.<br/><br/> 0 = No default exists.
			/// </summary>
			[Column("default_object_id"), NotNull    ] public int     DefaultObjectID { get; set; } // int
			/// <summary>
			/// ID of the stand-alone rule that is bound to the type by using <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-stored-procedures/sp-bindrule-transact-sql'>sp_bindrule</a>.<br/><br/> 0 = No rule exists.
			/// </summary>
			[Column("rule_object_id"),    NotNull    ] public int     RuleObjectID    { get; set; } // int
			/// <summary>
			/// Indicates the type is a table.
			/// </summary>
			[Column("is_table_type"),     NotNull    ] public bool    IsTableType     { get; set; } // bit
		}

		/// <summary>
		/// <para><strong>sys.type_assembly_usages (Transact-SQL)</strong></para>
		/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)</para>
		/// <para>Contains one row per type to assembly reference.</para><br/>
		/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-type-assembly-usages-transact-sql'>sys.type_assembly_usages</a>.</para>
		/// </summary>
		[Table(Schema="sys", Name="type_assembly_usages", IsView=true)]
		public partial class TypeAssemblyUsage
		{
			/// <summary>
			/// ID of the type<br/><br/> To return the name of the type, join to the <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-types-transact-sql'>sys.types</a> catalog view on this column.
			/// </summary>
			[Column("user_type_id"), NotNull] public int UserTypeID { get; set; } // int
			/// <summary>
			/// ID of the assembly
			/// </summary>
			[Column("assembly_id"),  NotNull] public int AssemblyID { get; set; } // int
		}
	}

	public static partial class SecuritySchema
	{
		public partial class DataContext
		{
			/// <summary>
			/// <para><strong>sys.asymmetric_keys (Transact-SQL)</strong></para>
			/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)  √ Azure SQL Database</para>
			/// <para>Returns a row for each asymmetric key.</para><br/>
			/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-asymmetric-keys-transact-sql'>sys.asymmetric_keys</a>.</para>
			/// </summary>
			public ITable<AsymmetricKey>                            AsymmetricKeys                            { get { return _dataContext.GetTable<AsymmetricKey>(); } }
			/// <summary>
			/// <para><strong>sys.certificates (Transact-SQL)</strong></para>
			/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions) √ Azure SQL Database √ Azure SQL Managed Instance √ Azure Synapse Analytics √ Analytics Platform System (PDW)</para>
			/// <para>Returns a row for each certificate in the database.</para><br/>
			/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-certificates-transact-sql'>sys.certificates</a>.</para>
			/// </summary>
			public ITable<Certificate>                              Certificates                              { get { return _dataContext.GetTable<Certificate>(); } }
			/// <summary>
			/// <para><strong>sys.column_encryption_keys  (Transact-SQL)</strong></para>
			/// <para><strong>APPLIES TO:</strong> (Yes) SQL Server 2016 and later (No) Azure SQL Database (Yes) Azure Synapse Analytics (No) Parallel Data Warehouse</para>
			/// <para>Returns information about column encryption keys (CEKs) created with the <a href='https://docs.microsoft.com/en-us/sql/t-sql/statements/create-column-encryption-key-transact-sql'>CREATE COLUMN ENCRYPTION KEY</a> statement. Each row represents a CEK.</para><br/>
			/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-column-encryption-keys-transact-sql'>sys.column_encryption_keys</a>.</para>
			/// </summary>
			public ITable<ColumnEncryptionKey>                      ColumnEncryptionKeys                      { get { return _dataContext.GetTable<ColumnEncryptionKey>(); } }
			/// <summary>
			/// <para><strong>sys.column_encryption_key_values (Transact-SQL)</strong></para>
			/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)  √ Azure SQL Database</para>
			/// <para>Returns information about encrypted values of column encryption keys (CEKs) created with either the <a href='https://docs.microsoft.com/en-us/sql/t-sql/statements/create-column-encryption-key-transact-sql'>CREATE COLUMN ENCRYPTION KEY</a> or the <a href='https://docs.microsoft.com/en-us/sql/t-sql/statements/alter-column-encryption-key-transact-sql'>ALTER COLUMN ENCRYPTION KEY (Transact-SQL)</a> statement. Each row represents a value of a CEK, encrypted with a column master key (CMK).</para><br/>
			/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-column-encryption-key-values-transact-sql'>sys.column_encryption_key_values</a>.</para>
			/// </summary>
			public ITable<ColumnEncryptionKeyValue>                 ColumnEncryptionKeyValues                 { get { return _dataContext.GetTable<ColumnEncryptionKeyValue>(); } }
			/// <summary>
			/// <para><strong>sys.column_master_keys (Transact-SQL)</strong></para>
			/// <para><strong>Applies to:</strong> √ SQL Server 2016 (13.x) and later √ Azure SQL Database √ Azure SQL Managed Instance</para>
			/// <para>Returns a row for each database master key added by using the <a href='https://docs.microsoft.com/en-us/sql/t-sql/statements/create-column-master-key-transact-sql'>CREATE MASTER KEY</a> statement. Each row represents a single column master key (CMK).</para><br/>
			/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-column-master-keys-transact-sql'>sys.column_master_keys</a>.</para>
			/// </summary>
			public ITable<ColumnMasterKey>                          ColumnMasterKeys                          { get { return _dataContext.GetTable<ColumnMasterKey>(); } }
			/// <summary>
			/// <para><strong>sys.credentials (Transact-SQL)</strong></para>
			/// <para><strong>APPLIES TO:</strong> (Yes) SQL Server (Yes) Azure SQL Managed Instance ![yes](media/yes-icon.png)Azure Synapse Analytics (Yes) Parallel Data Warehouse</para>
			/// <para>Returns one row for each server-level credential.</para><br/>
			/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-credentials-transact-sql'>sys.credentials</a>.</para>
			/// </summary>
			public ITable<Credential>                               Credentials                               { get { return _dataContext.GetTable<Credential>(); } }
			/// <summary>
			/// <para><strong>sys.cryptographic_providers (Transact-SQL)</strong></para>
			/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)  √ Azure SQL Database</para>
			/// <para>Returns one row for each registered cryptographic provider.</para><br/>
			/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-cryptographic-providers-transact-sql'>sys.cryptographic_providers</a>.</para>
			/// </summary>
			public ITable<CryptographicProvider>                    CryptographicProviders                    { get { return _dataContext.GetTable<CryptographicProvider>(); } }
			/// <summary>
			/// <para><strong>sys.crypt_properties (Transact-SQL)</strong></para>
			/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)  √ Azure SQL Database</para>
			/// <para>Returns one row for each cryptographic property associated with a securable.</para><br/>
			/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-crypt-properties-transact-sql'>sys.crypt_properties</a>.</para>
			/// </summary>
			public ITable<CryptProperty>                            CryptProperties                           { get { return _dataContext.GetTable<CryptProperty>(); } }
			/// <summary>
			/// <para><strong>sys.database_audit_specifications (Transact-SQL)</strong></para>
			/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)</para>
			/// <para>Contains information about the database audit specifications in a SQL Server audit on a server instance. For more information, see <a href='https://docs.microsoft.com/en-us/sql/relational-databases/security/auditing/sql-server-audit-database-engine'>SQL Server Audit (Database Engine)</a>.</para><br/>
			/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-database-audit-specifications-transact-sql'>sys.database_audit_specifications</a>.</para>
			/// </summary>
			public ITable<DatabaseAuditSpecification>               DatabaseAuditSpecifications               { get { return _dataContext.GetTable<DatabaseAuditSpecification>(); } }
			/// <summary>
			/// <para><strong>sys.database_audit_specification_details (Transact-SQL)</strong></para>
			/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)</para>
			/// <para>Contains information about the database audit specifications in a SQL Server audit on a server instance for all databases. For more information, see <a href='https://docs.microsoft.com/en-us/sql/relational-databases/security/auditing/sql-server-audit-database-engine'>SQL Server Audit (Database Engine)</a>. For a list of all audit_action_id's and their names, query <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-dynamic-management-views/sys-dm-audit-actions-transact-sql'>sys.dm_audit_actions (Transact-SQL)</a>.</para><br/>
			/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-database-audit-specification-details-transact-sql'>sys.database_audit_specification_details</a>.</para>
			/// </summary>
			public ITable<DatabaseAuditSpecificationDetail>         DatabaseAuditSpecificationDetails         { get { return _dataContext.GetTable<DatabaseAuditSpecificationDetail>(); } }
			/// <summary>
			/// <para><strong>sys.database_credentials (Transact-SQL)</strong></para>
			/// <para><strong>Applies to:</strong> √ SQL Server 2016 (13.x) and later √ Azure SQL Database √ Azure SQL Managed Instance √ Azure Synapse Analytics</para>
			/// <para>Returns one row for each database scoped credential in the database.<br/>
			/// <note type='important'><br/>
			/// This feature will be removed in a future version of Microsoft SQL Server. Avoid using this feature in new development work, and plan to modify applications that currently use this feature. Use <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-database-scoped-credentials-transact-sql'>sys.database_scoped_credentials</a> instead.  <br/>
			/// </note></para><br/>
			/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-database-credentials-transact-sql'>sys.database_credentials</a>.</para>
			/// </summary>
			public ITable<DatabaseCredential>                       DatabaseCredentials                       { get { return _dataContext.GetTable<DatabaseCredential>(); } }
			/// <summary>
			/// <para><strong>sys.database_ledger_blocks (Transact-SQL)</strong></para>
			/// <para><strong>Applies to:</strong> √ Azure SQL Database</para>
			/// <para>Captures the cryptographically chained blocks, each of which represents a block of transactions against ledger tables.<br/>
			/// For more information on database ledger, see <a href='https://docs.microsoft.com/en-us/azure/azure-sql/database/ledger-overview'>Azure SQL Database ledger</a></para><br/>
			/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-database-ledger-blocks-transact-sql'>sys.database_ledger_blocks</a>.</para>
			/// </summary>
			public ITable<DatabaseLedgerBlock>                      DatabaseLedgerBlocks                      { get { return _dataContext.GetTable<DatabaseLedgerBlock>(); } }
			/// <summary>
			/// <para><strong>sys.database_ledger_digest_locations (Transact-SQL)</strong></para>
			/// <para><strong>Applies to:</strong> √ Azure SQL Database</para>
			/// <para>Captures the current and the historical ledger digest storage endpoints for the ledger feature.<br/>
			/// For more information on database ledger, see <a href='https://docs.microsoft.com/en-us/azure/azure-sql/database/ledger-overview'>Azure SQL Database ledger</a>.</para><br/>
			/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-database-ledger-digest-locations-transact-sql'>sys.database_ledger_digest_locations</a>.</para>
			/// </summary>
			public ITable<DatabaseLedgerDigestLocation>             DatabaseLedgerDigestLocations             { get { return _dataContext.GetTable<DatabaseLedgerDigestLocation>(); } }
			/// <summary>
			/// <para><strong>sys.database_ledger_transactions (Transact-SQL)</strong></para>
			/// <para><strong>Applies to:</strong> √ Azure SQL Database</para>
			/// <para>Captures the cryptographically protected history of database transactions against ledger tables in the database. A row in this view represents a database transaction.<br/>
			/// For more information on database ledger, see <a href='https://docs.microsoft.com/en-us/azure/azure-sql/database/ledger-overview'>Azure SQL Database ledger</a>.</para><br/>
			/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-database-ledger-transactions-transact-sql'>sys.database_ledger_transactions</a>.</para>
			/// </summary>
			public ITable<DatabaseLedgerTransaction>                DatabaseLedgerTransactions                { get { return _dataContext.GetTable<DatabaseLedgerTransaction>(); } }
			/// <summary>
			/// <para><strong>sys.database_permissions (Transact-SQL)</strong></para>
			/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions) √ Azure SQL Database √ Azure SQL Managed Instance √ Azure Synapse Analytics √ Analytics Platform System (PDW)</para>
			/// <para>Returns a row for every permission or column-exception permission in the database. For columns, there is a row for every permission that is different from the corresponding object-level permission. If the column permission is the same as the corresponding object permission, there is no row for it and the permission applied is that of the object.<br/>
			/// <note type='important'><br/>
			/// Column-level permissions override object-level permissions on the same entity.<br/>
			/// </note></para><br/>
			/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-database-permissions-transact-sql'>sys.database_permissions</a>.</para>
			/// </summary>
			public ITable<DatabasePermission>                       DatabasePermissions                       { get { return _dataContext.GetTable<DatabasePermission>(); } }
			/// <summary>
			/// <para><strong>sys.database_principals (Transact-SQL)</strong></para>
			/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions) √ Azure SQL Database √ Azure SQL Managed Instance √ Azure Synapse Analytics √ Analytics Platform System (PDW)</para>
			/// <para>Returns a row for each security principal in a SQL Server database.</para><br/>
			/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-database-principals-transact-sql'>sys.database_principals</a>.</para>
			/// </summary>
			public ITable<DatabasePrincipal>                        DatabasePrincipals                        { get { return _dataContext.GetTable<DatabasePrincipal>(); } }
			/// <summary>
			/// <para><strong>sys.database_role_members (Transact-SQL)</strong></para>
			/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions) √ Azure SQL Database √ Azure SQL Managed Instance √ Azure Synapse Analytics √ Analytics Platform System (PDW)</para>
			/// <para>Returns one row for each member of each database role.  Database users, application roles, and other database roles can be members of a database role. To add members to a role, use the <a href='https://docs.microsoft.com/en-us/sql/t-sql/statements/alter-role-transact-sql'>ALTER ROLE</a> statement with the <c>ADD MEMBER</c> option. Join with <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-database-principals-transact-sql'>sys.database_principals</a> to return the names of the <c>principal_id</c> values.</para><br/>
			/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-database-role-members-transact-sql'>sys.database_role_members</a>.</para>
			/// </summary>
			public ITable<DatabaseRoleMember>                       DatabaseRoleMembers                       { get { return _dataContext.GetTable<DatabaseRoleMember>(); } }
			/// <summary>
			/// <para><strong>sys.database_scoped_credentials (Transact-SQL)</strong></para>
			/// <para><strong>Applies to:</strong> √ SQL Server 2016 (13.x) and later √ Azure SQL Database √ Azure SQL Managed Instance √ Azure Synapse Analytics</para>
			/// <para>Returns one row for each database scoped credential in the database.<br/>
			/// ::: moniker range='=sql-server-2016'</para><br/>
			/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-database-scoped-credentials-transact-sql'>sys.database_scoped_credentials</a>.</para>
			/// </summary>
			public ITable<DatabaseScopedCredential>                 DatabaseScopedCredentials                 { get { return _dataContext.GetTable<DatabaseScopedCredential>(); } }
			/// <summary>
			/// <para><strong>sys.key_encryptions (Transact-SQL)</strong></para>
			/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)  √ Azure SQL Database</para>
			/// <para>Returns a row for each symmetric key encryption specified by using the ENCRYPTION BY clause of the CREATE SYMMETRIC KEY statement.</para><br/>
			/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-key-encryptions-transact-sql'>sys.key_encryptions</a>.</para>
			/// </summary>
			public ITable<KeyEncryption>                            KeyEncryptions                            { get { return _dataContext.GetTable<KeyEncryption>(); } }
			/// <summary>
			/// <para><strong>sys.ledger_column_history (Transact-SQL)</strong></para>
			/// <para><strong>Applies to:</strong> √ Azure SQL Database</para>
			/// <para>Captures the cryptographically protected history of operations on columns of ledger tables: adding, renaming, and dropping columns.<br/>
			/// For more information on database ledger, see <a href='https://docs.microsoft.com/en-us/azure/azure-sql/database/ledger-overview'>Azure SQL Database ledger</a></para><br/>
			/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-ledger-column-history-transact-sql'>sys.ledger_column_history</a>.</para>
			/// </summary>
			public ITable<LedgerColumnHistory>                      LedgerColumnHistories                     { get { return _dataContext.GetTable<LedgerColumnHistory>(); } }
			/// <summary>
			/// <para><strong>sys.ledger_table_history (Transact-SQL)</strong></para>
			/// <para><strong>Applies to:</strong> √ Azure SQL Database</para>
			/// <para>Captures the cryptographically protected history of operations on ledger tables: creating ledger tables, renaming ledger tables or ledger views, and dropping ledger tables.<br/>
			/// For more information on database ledger, see <a href='https://docs.microsoft.com/en-us/azure/azure-sql/database/ledger-overview'>Azure SQL Database ledger</a></para><br/>
			/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-ledger-table-history-transact-sql'>sys.ledger_table_history</a>.</para>
			/// </summary>
			public ITable<LedgerTableHistory>                       LedgerTableHistories                      { get { return _dataContext.GetTable<LedgerTableHistory>(); } }
			/// <summary>
			/// <para><strong>sys.login_token (Transact-SQL)</strong></para>
			/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)</para>
			/// <para>Returns one row for every server principal that is part of the login token.</para><br/>
			/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-login-token-transact-sql'>sys.login_token</a>.</para>
			/// </summary>
			public ITable<LoginToken>                               LoginTokens                               { get { return _dataContext.GetTable<LoginToken>(); } }
			/// <summary>
			/// <para><strong>sys.master_key_passwords (Transact-SQL)</strong></para>
			/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions) √ Azure SQL Managed Instance</para>
			/// <para>Returns a row for each database master key password added by using the <strong>sp_control_dbmasterkey_password</strong> stored procedure. The passwords that are used to protect the master keys are stored in the credential store. The credential name follows this format: ##DBMKEY_&lt;database_family_guid&gt;_&lt;random_password_guid&gt;##. The password is stored as the credential secret. For each password added by using <strong>sp_control_dbmasterkey_password</strong>, there is a row in <strong>sys.credentials</strong>.<br/>
			///  Each row in this view shows a <strong>credential_id</strong> and the <strong>family_guid</strong> of a database the master key of which is protected by the password associated with that credential. A join with <strong>sys.credentials</strong> on the <strong>credential_id</strong> will return useful fields, such as the <strong>create_date</strong> and credential name.</para><br/>
			/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-master-key-passwords-transact-sql'>sys.master_key_passwords</a>.</para>
			/// </summary>
			public ITable<MasterKeyPassword>                        MasterKeyPasswords                        { get { return _dataContext.GetTable<MasterKeyPassword>(); } }
			/// <summary>
			/// <para><strong>sys.openkeys (Transact-SQL)</strong></para>
			/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)  √ Azure SQL Database</para>
			/// <para>This catalog view returns information about encryption keys that are open in the current session.</para><br/>
			/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-openkeys-transact-sql'>sys.openkeys</a>.</para>
			/// </summary>
			public ITable<OpenKey>                                  OpenKeys                                  { get { return _dataContext.GetTable<OpenKey>(); } }
			/// <summary>
			/// <para><strong>sys.securable_classes (Transact-SQL)</strong></para>
			/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions) √ Azure SQL Database √ Azure SQL Managed Instance √ Azure Synapse Analytics √ Analytics Platform System (PDW)</para>
			/// <para>Returns a list of securable classes</para><br/>
			/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-securable-classes-transact-sql'>sys.securable_classes</a>.</para>
			/// </summary>
			public ITable<SecurableClass>                           SecurableClasses                          { get { return _dataContext.GetTable<SecurableClass>(); } }
			/// <summary>
			/// <para><strong>sys.security_policies (Transact-SQL)</strong></para>
			/// <para><strong>Applies to:</strong> √ SQL Server 2016 (13.x) and later √ Azure SQL Database √ Azure SQL Managed Instance √ Azure Synapse Analytics</para>
			/// <para>Returns a row for each security policy in the database.</para><br/>
			/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-security-policies-transact-sql'>sys.security_policies</a>.</para>
			/// </summary>
			public ITable<SecurityPolicy>                           SecurityPolicies                          { get { return _dataContext.GetTable<SecurityPolicy>(); } }
			/// <summary>
			/// <para><strong>sys.security_predicates (Transact-SQL)</strong></para>
			/// <para><strong>Applies to:</strong> √ SQL Server 2016 (13.x) and later √ Azure SQL Database √ Azure SQL Managed Instance √ Azure Synapse Analytics</para>
			/// <para>Returns a row for each security predicate in the database.</para><br/>
			/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-security-predicates-transact-sql'>sys.security_predicates</a>.</para>
			/// </summary>
			public ITable<SecurityPredicate>                        SecurityPredicates                        { get { return _dataContext.GetTable<SecurityPredicate>(); } }
			/// <summary>
			/// <para><strong>sys.sensitivity_classifications (Transact-SQL)</strong></para>
			/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)  √ Azure SQL Database √ Azure SQL Managed Instance √ Azure Synapse Analytics</para>
			/// <para>Returns a row for each classified item in the database.</para><br/>
			/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-sensitivity-classifications-transact-sql'>sys.sensitivity_classifications</a>.</para>
			/// </summary>
			public ITable<SensitivityClassification>                SensitivityClassifications                { get { return _dataContext.GetTable<SensitivityClassification>(); } }
			/// <summary>
			/// <para><strong>sys.server_audits (Transact-SQL)</strong></para>
			/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)</para>
			/// <para>Contains one row for each SQL Server audit in a server instance. For more information, see <a href='https://docs.microsoft.com/en-us/sql/relational-databases/security/auditing/sql-server-audit-database-engine'>SQL Server Audit (Database Engine)</a>.</para><br/>
			/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-server-audits-transact-sql'>sys.server_audits</a>.</para>
			/// </summary>
			public ITable<ServerAudit>                              ServerAudits                              { get { return _dataContext.GetTable<ServerAudit>(); } }
			/// <summary>
			/// <para><strong>sys.server_audit_specifications (Transact-SQL)</strong></para>
			/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)</para>
			/// <para>Contains information about the server audit specifications in a SQL Server audit on a server instance. For more information on SQL Server Audit, see <a href='https://docs.microsoft.com/en-us/sql/relational-databases/security/auditing/sql-server-audit-database-engine'>SQL Server Audit (Database Engine)</a>.</para><br/>
			/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-server-audit-specifications-transact-sql'>sys.server_audit_specifications</a>.</para>
			/// </summary>
			public ITable<ServerAuditSpecification>                 ServerAuditSpecifications                 { get { return _dataContext.GetTable<ServerAuditSpecification>(); } }
			/// <summary>
			/// <para><strong>sys.server_audit_specification_details (Transact-SQL)</strong></para>
			/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)</para>
			/// <para>Contains information about the server audit specification details (actions) in a SQL Server audit on a server instance. For more information, see <a href='https://docs.microsoft.com/en-us/sql/relational-databases/security/auditing/sql-server-audit-database-engine'>SQL Server Audit (Database Engine)</a>. For a list of all audit_action_id's and their names, query <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-dynamic-management-views/sys-dm-audit-actions-transact-sql'>sys.dm_audit_actions (Transact-SQL)</a>.</para><br/>
			/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-server-audit-specification-details-transact-sql'>sys.server_audit_specification_details</a>.</para>
			/// </summary>
			public ITable<ServerAuditSpecificationDetail>           ServerAuditSpecificationDetails           { get { return _dataContext.GetTable<ServerAuditSpecificationDetail>(); } }
			/// <summary>
			/// <para><strong>sys.server_file_audits (Transact-SQL)</strong></para>
			/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)</para>
			/// <para>Contains extended information about the file audit type in a SQL Server audit on a server instance. For more information, see <a href='https://docs.microsoft.com/en-us/sql/relational-databases/security/auditing/sql-server-audit-database-engine'>SQL Server Audit (Database Engine)</a>.</para><br/>
			/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-server-file-audits-transact-sql'>sys.server_file_audits</a>.</para>
			/// </summary>
			public ITable<ServerFileAudit>                          ServerFileAudits                          { get { return _dataContext.GetTable<ServerFileAudit>(); } }
			/// <summary>
			/// <para><strong>sys.server_permissions (Transact-SQL)</strong></para>
			/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions) √ Azure SQL Managed Instance √ Analytics Platform System (PDW)</para>
			/// <para>Returns one row for each server-level permission.</para><br/>
			/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-server-permissions-transact-sql'>sys.server_permissions</a>.</para>
			/// </summary>
			public ITable<ServerPermission>                         ServerPermissions                         { get { return _dataContext.GetTable<ServerPermission>(); } }
			/// <summary>
			/// <para><strong>sys.server_principals (Transact-SQL)</strong></para>
			/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions) √ Azure SQL Managed Instance √ Analytics Platform System (PDW)</para>
			/// <para>Contains a row for every server-level principal.</para><br/>
			/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-server-principals-transact-sql'>sys.server_principals</a>.</para>
			/// </summary>
			public ITable<ServerPrincipal>                          ServerPrincipals                          { get { return _dataContext.GetTable<ServerPrincipal>(); } }
			/// <summary>
			/// <para><strong>sys.server_role_members (Transact-SQL)</strong></para>
			/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions) √ Azure SQL Managed Instance √ Analytics Platform System (PDW)</para>
			/// <para>Returns one row for each member of each fixed and user-defined server role.</para><br/>
			/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-server-role-members-transact-sql'>sys.server_role_members</a>.</para>
			/// </summary>
			public ITable<ServerRoleMember>                         ServerRoleMembers                         { get { return _dataContext.GetTable<ServerRoleMember>(); } }
			/// <summary>
			/// <para><strong>sys.sql_logins (Transact-SQL)</strong></para>
			/// <para><strong>APPLIES TO:</strong> (Yes) SQL Server (Yes) Azure SQL Database (No) Azure Synapse Analytics (Yes) Parallel Data Warehouse</para>
			/// <para>Returns one row for every SQL Server authentication login.</para><br/>
			/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-sql-logins-transact-sql'>sys.sql_logins</a>.</para>
			/// </summary>
			public ITable<SqlLogin>                                 SqlLogins                                 { get { return _dataContext.GetTable<SqlLogin>(); } }
			/// <summary>
			/// <para><strong>sys.symmetric_keys (Transact-SQL)</strong></para>
			/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions) √ Azure SQL Database √ Azure SQL Managed Instance √ Azure Synapse Analytics √ Analytics Platform System (PDW)</para>
			/// <para>Returns one row for every symmetric key created with the CREATE SYMMETRIC KEY statement.</para><br/>
			/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-symmetric-keys-transact-sql'>sys.symmetric_keys</a>.</para>
			/// </summary>
			public ITable<SymmetricKey>                             SymmetricKeys                             { get { return _dataContext.GetTable<SymmetricKey>(); } }
			/// <summary>
			/// <para><strong>sys.system_components_surface_area_configuration (Transact-SQL)</strong></para>
			/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)</para>
			/// <para>Returns one row for each executable system object that can be enabled or disabled by a surface area configuration component. For more information, see <a href='https://docs.microsoft.com/en-us/sql/relational-databases/security/surface-area-configuration'>Surface Area Configuration</a>.</para><br/>
			/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-system-components-surface-area-configuration-transact-sql'>sys.system_components_surface_area_configuration</a>.</para>
			/// </summary>
			public ITable<SystemComponentsSurfaceAreaConfiguration> SystemComponentsSurfaceAreaConfigurations { get { return _dataContext.GetTable<SystemComponentsSurfaceAreaConfiguration>(); } }
			/// <summary>
			/// <para><strong>sys.user_token (Transact-SQL)</strong></para>
			/// <para><strong>APPLIES TO:</strong> (Yes) SQL Server (Yes) Azure SQL Database (Yes) Azure Synapse Analytics (No) Parallel Data Warehouse</para>
			/// <para>Returns one row for every database principal that is part of the user token in SQL Server.</para><br/>
			/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-user-token-transact-sql'>sys.user_token</a>.</para>
			/// </summary>
			public ITable<UserToken>                                UserTokens                                { get { return _dataContext.GetTable<UserToken>(); } }

			private readonly IDataContext _dataContext;

			public DataContext(IDataContext dataContext)
			{
				_dataContext = dataContext;
			}
		}

		/// <summary>
		/// <para><strong>sys.asymmetric_keys (Transact-SQL)</strong></para>
		/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)  √ Azure SQL Database</para>
		/// <para>Returns a row for each asymmetric key.</para><br/>
		/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-asymmetric-keys-transact-sql'>sys.asymmetric_keys</a>.</para>
		/// </summary>
		[Table(Schema="sys", Name="asymmetric_keys", IsView=true)]
		public partial class AsymmetricKey
		{
			/// <summary>
			/// Name of the key. Is unique within the database.
			/// </summary>
			[Column("name"),                         NotNull    ] public string  Name                       { get; set; } = null!; // sysname
			/// <summary>
			/// ID of the database principal that owns the key.
			/// </summary>
			[Column("principal_id"),                    Nullable] public int?    PrincipalID                { get; set; } // int
			/// <summary>
			/// ID of the key. Is unique within the database.
			/// </summary>
			[Column("asymmetric_key_id"),            NotNull    ] public int     AsymmetricKeyID            { get; set; } // int
			/// <summary>
			/// How the key is encrypted.<br/><br/> NA = Not encrypted<br/><br/> MK = Key is encrypted by the master key<br/><br/> PW = Key is encrypted by a user-defined password<br/><br/> SK = Key is encrypted by service master key.
			/// </summary>
			[Column("pvt_key_encryption_type"),      NotNull    ] public string  PvtKeyEncryptionType       { get; set; } = null!; // char(2)
			/// <summary>
			/// Description of how the private key is encrypted.<br/><br/> NO_PRIVATE_KEY<br/><br/> ENCRYPTED_BY_MASTER_KEY<br/><br/> ENCRYPTED_BY_PASSWORD<br/><br/> ENCRYPTED_BY_SERVICE_MASTER_KEY
			/// </summary>
			[Column("pvt_key_encryption_type_desc"),    Nullable] public string? PvtKeyEncryptionTypeDesc   { get; set; } // nvarchar(60)
			/// <summary>
			/// SHA-1 hash of the key. The hash is globally unique.
			/// </summary>
			[Column("thumbprint"),                   NotNull    ] public byte[]  Thumbprint                 { get; set; } = null!; // varbinary(32)
			/// <summary>
			/// Algorithm used with the key.<br/><br/> 1R = 512-bit RSA<br/><br/> 2R = 1024-bit RSA<br/><br/> 3R = 2048-bit RSA
			/// </summary>
			[Column("algorithm"),                    NotNull    ] public string  Algorithm                  { get; set; } = null!; // char(2)
			/// <summary>
			/// Description of the algorithm used with the key.<br/><br/> RSA_512<br/><br/> RSA_1024<br/><br/> RSA_2048
			/// </summary>
			[Column("algorithm_desc"),                  Nullable] public string? AlgorithmDesc              { get; set; } // nvarchar(60)
			/// <summary>
			/// Bit length of the key.
			/// </summary>
			[Column("key_length"),                   NotNull    ] public int     KeyLength                  { get; set; } // int
			/// <summary>
			/// Login SID for this key. For Extensible Key Management keys this value will be NULL.
			/// </summary>
			[Column("sid"),                             Nullable] public byte[]? SID                        { get; set; } // varbinary(85)
			/// <summary>
			/// String representation of the login SID of the key. For Extensible Key Management keys this value will be NULL.
			/// </summary>
			[Column("string_sid"),                      Nullable] public string? StringSID                  { get; set; } // nvarchar(128)
			/// <summary>
			/// Public key.
			/// </summary>
			[Column("public_key"),                   NotNull    ] public byte[]  PublicKey                  { get; set; } = null!; // varbinary(max)
			/// <summary>
			/// System use only.
			/// </summary>
			[Column("attested_by"),                     Nullable] public string? AttestedBy                 { get; set; } // nvarchar(260)
			/// <summary>
			/// Type of cryptographic provider:<br/><br/> CRYPTOGRAPHIC PROVIDER = Extensible Key Management keys<br/><br/> NULL = Non-Extensible Key Management keys
			/// </summary>
			[Column("provider_type"),                   Nullable] public string? ProviderType               { get; set; } // nvarchar(120)
			/// <summary>
			/// GUID for the cryptographic provider. For non-Extensible Key Management keys this value will be NULL.
			/// </summary>
			[Column("cryptographic_provider_guid"),     Nullable] public Guid?   CryptographicProviderGuid  { get; set; } // uniqueidentifier
			/// <summary>
			/// Algorithm ID for the cryptographic provider. For non-Extensible Key Management keys this value will be NULL.
			/// </summary>
			[Column("cryptographic_provider_algid"),    Nullable] public object? CryptographicProviderAlgid { get; set; } // sql_variant
		}

		/// <summary>
		/// <para><strong>sys.certificates (Transact-SQL)</strong></para>
		/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions) √ Azure SQL Database √ Azure SQL Managed Instance √ Azure Synapse Analytics √ Analytics Platform System (PDW)</para>
		/// <para>Returns a row for each certificate in the database.</para><br/>
		/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-certificates-transact-sql'>sys.certificates</a>.</para>
		/// </summary>
		[Table(Schema="sys", Name="certificates", IsView=true)]
		public partial class Certificate
		{
			/// <summary>
			/// Name of the certificate. Is unique within the database.
			/// </summary>
			[Column("name"),                         NotNull    ] public string    Name                     { get; set; } = null!; // sysname
			/// <summary>
			/// ID of the certificate. Is unique within the database.
			/// </summary>
			[Column("certificate_id"),               NotNull    ] public int       CertificateID            { get; set; } // int
			/// <summary>
			/// ID of the database principal that owns this certificate.
			/// </summary>
			[Column("principal_id"),                    Nullable] public int?      PrincipalID              { get; set; } // int
			/// <summary>
			/// How the private key is encrypted.<br/><br/> NA = There is no private key for the certificate<br/><br/> MK = Private key is encrypted by the master key<br/><br/> PW = Private key is encrypted by a user-defined password<br/><br/> SK = Private key is encrypted by the service master key.
			/// </summary>
			[Column("pvt_key_encryption_type"),      NotNull    ] public string    PvtKeyEncryptionType     { get; set; } = null!; // char(2)
			/// <summary>
			/// Description of how the private key is encrypted.<br/><br/> NO_PRIVATE_KEY<br/><br/> ENCRYPTED_BY_MASTER_KEY<br/><br/> ENCRYPTED_BY_PASSWORD<br/><br/> ENCRYPTED_BY_SERVICE_MASTER_KEY
			/// </summary>
			[Column("pvt_key_encryption_type_desc"),    Nullable] public string?   PvtKeyEncryptionTypeDesc { get; set; } // nvarchar(60)
			/// <summary>
			/// If 1, this certificate is used to initiate encrypted service dialogs.
			/// </summary>
			[Column("is_active_for_begin_dialog"),      Nullable] public bool?     IsActiveForBeginDialog   { get; set; } // bit
			/// <summary>
			/// Name of certificate issuer.
			/// </summary>
			[Column("issuer_name"),                     Nullable] public string?   IssuerName               { get; set; } // nvarchar(442)
			/// <summary>
			/// Serial number of certificate.
			/// </summary>
			[Column("cert_serial_number"),              Nullable] public string?   CertSerialNumber         { get; set; } // nvarchar(64)
			/// <summary>
			/// Login SID for this certificate.
			/// </summary>
			[Column("sid"),                             Nullable] public byte[]?   SID                      { get; set; } // varbinary(85)
			/// <summary>
			/// String representation of the login SID for this certificate
			/// </summary>
			[Column("string_sid"),                      Nullable] public string?   StringSID                { get; set; } // nvarchar(128)
			/// <summary>
			/// Subject of this certificate.
			/// </summary>
			[Column("subject"),                         Nullable] public string?   Subject                  { get; set; } // nvarchar(4000)
			/// <summary>
			/// When certificate expires.
			/// </summary>
			[Column("expiry_date"),                     Nullable] public DateTime? ExpiryDate               { get; set; } // datetime
			/// <summary>
			/// When certificate becomes valid.
			/// </summary>
			[Column("start_date"),                      Nullable] public DateTime? StartDate                { get; set; } // datetime
			/// <summary>
			/// SHA-1 hash of the certificate. The SHA-1 hash is globally unique.
			/// </summary>
			[Column("thumbprint"),                   NotNull    ] public byte[]    Thumbprint               { get; set; } = null!; // varbinary(32)
			/// <summary>
			/// System use only.
			/// </summary>
			[Column("attested_by"),                     Nullable] public string?   AttestedBy               { get; set; } // nvarchar(260)
			/// <summary>
			/// The date and time the certificate's private key was last exported.
			/// </summary>
			[Column("pvt_key_last_backup_date"),        Nullable] public DateTime? PvtKeyLastBackupDate     { get; set; } // datetime
		}

		/// <summary>
		/// <para><strong>sys.column_encryption_keys  (Transact-SQL)</strong></para>
		/// <para><strong>APPLIES TO:</strong> (Yes) SQL Server 2016 and later (No) Azure SQL Database (Yes) Azure Synapse Analytics (No) Parallel Data Warehouse</para>
		/// <para>Returns information about column encryption keys (CEKs) created with the <a href='https://docs.microsoft.com/en-us/sql/t-sql/statements/create-column-encryption-key-transact-sql'>CREATE COLUMN ENCRYPTION KEY</a> statement. Each row represents a CEK.</para><br/>
		/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-column-encryption-keys-transact-sql'>sys.column_encryption_keys</a>.</para>
		/// </summary>
		[Table(Schema="sys", Name="column_encryption_keys", IsView=true)]
		public partial class ColumnEncryptionKey
		{
			/// <summary>
			/// The name of the CEK.
			/// </summary>
			[Column("name"),                     NotNull] public string   Name                  { get; set; } = null!; // sysname
			/// <summary>
			/// ID of the CEK.
			/// </summary>
			[Column("column_encryption_key_id"), NotNull] public int      ColumnEncryptionKeyID { get; set; } // int
			/// <summary>
			/// Date the CEK was created.
			/// </summary>
			[Column("create_date"),              NotNull] public DateTime CreateDate            { get; set; } // datetime
			/// <summary>
			/// Date the CEK was last modified.
			/// </summary>
			[Column("modify_date"),              NotNull] public DateTime ModifyDate            { get; set; } // datetime
		}

		/// <summary>
		/// <para><strong>sys.column_encryption_key_values (Transact-SQL)</strong></para>
		/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)  √ Azure SQL Database</para>
		/// <para>Returns information about encrypted values of column encryption keys (CEKs) created with either the <a href='https://docs.microsoft.com/en-us/sql/t-sql/statements/create-column-encryption-key-transact-sql'>CREATE COLUMN ENCRYPTION KEY</a> or the <a href='https://docs.microsoft.com/en-us/sql/t-sql/statements/alter-column-encryption-key-transact-sql'>ALTER COLUMN ENCRYPTION KEY (Transact-SQL)</a> statement. Each row represents a value of a CEK, encrypted with a column master key (CMK).</para><br/>
		/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-column-encryption-key-values-transact-sql'>sys.column_encryption_key_values</a>.</para>
		/// </summary>
		[Table(Schema="sys", Name="column_encryption_key_values", IsView=true)]
		public partial class ColumnEncryptionKeyValue
		{
			/// <summary>
			/// ID of the CEK in the database.
			/// </summary>
			[Column("column_encryption_key_id"),  NotNull    ] public int     ColumnEncryptionKeyID   { get; set; } // int
			/// <summary>
			/// ID of the column master key that was used to encrypt the CEK value.
			/// </summary>
			[Column("column_master_key_id"),      NotNull    ] public int     ColumnMasteRKeyID       { get; set; } // int
			/// <summary>
			/// CEK value encrypted with the CMK specified in column_master_key_id.
			/// </summary>
			[Column("encrypted_value"),              Nullable] public byte[]? EncryptedValue          { get; set; } // varbinary(8000)
			/// <summary>
			/// Name of an algorithm used to encrypt the CEK value.<br/><br/> Name of the encryption algorithm used to encrypt the value. The algorithm for the system providers must be  <strong>RSA_OAEP</strong>.
			/// </summary>
			[Column("encryption_algorithm_name"),    Nullable] public string? EncryptionAlgorithmName { get; set; } // sysname
		}

		/// <summary>
		/// <para><strong>sys.column_master_keys (Transact-SQL)</strong></para>
		/// <para><strong>Applies to:</strong> √ SQL Server 2016 (13.x) and later √ Azure SQL Database √ Azure SQL Managed Instance</para>
		/// <para>Returns a row for each database master key added by using the <a href='https://docs.microsoft.com/en-us/sql/t-sql/statements/create-column-master-key-transact-sql'>CREATE MASTER KEY</a> statement. Each row represents a single column master key (CMK).</para><br/>
		/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-column-master-keys-transact-sql'>sys.column_master_keys</a>.</para>
		/// </summary>
		[Table(Schema="sys", Name="column_master_keys", IsView=true)]
		public partial class ColumnMasterKey
		{
			/// <summary>
			/// The name of the CMK.
			/// </summary>
			[Column("name"),                       NotNull    ] public string   Name                     { get; set; } = null!; // sysname
			/// <summary>
			/// ID of the column master key.
			/// </summary>
			[Column("column_master_key_id"),       NotNull    ] public int      ColumnMasteRKeyID        { get; set; } // int
			/// <summary>
			/// Date the column master key was created.
			/// </summary>
			[Column("create_date"),                NotNull    ] public DateTime CreateDate               { get; set; } // datetime
			/// <summary>
			/// Date the column master key was last modified.
			/// </summary>
			[Column("modify_date"),                NotNull    ] public DateTime ModifyDate               { get; set; } // datetime
			/// <summary>
			/// Name of the provider for the column master key store that contains the CMK. Allowed values are:<br/><br/> MSSQL_CERTIFICATE_STORE - If the column master key store is a Certificate Store.<br/><br/> A user-defined value, if the column master key store is of a custom type.
			/// </summary>
			[Column("key_store_provider_name"),       Nullable] public string?  KeyStoreProviderName     { get; set; } // sysname
			/// <summary>
			/// A column master key store-specific path of the key. The format of the path depends on the column master key store type. Example:<br/><br/> <c>'CurrentUser/Personal/'&lt;thumbprint&gt;</c><br/><br/> For a custom column master key store, the developer is responsible for defining what a key path is for the custom column master key store.
			/// </summary>
			[Column("key_path"),                      Nullable] public string?  KeyPath                  { get; set; } // nvarchar(4000)
			/// <summary>
			/// Indicates if the column master key is enclave-enabled, (if column encryption keys, encrypted with this master key, can be used for computations inside server-side secure enclaves). For more information, see <a href='https://docs.microsoft.com/en-us/sql/relational-databases/security/encryption/always-encrypted-enclaves'>Always Encrypted with secure enclaves</a>.
			/// </summary>
			[Column("allow_enclave_computations"), NotNull    ] public bool     AllowEnclaveComputations { get; set; } // bit
			/// <summary>
			/// A digital signature of <strong>key_path</strong> and <strong>allow_enclave_computations</strong>, produced using the column master key, referenced by <strong>key_path</strong>.
			/// </summary>
			[Column("signature"),                     Nullable] public byte[]?  Signature                { get; set; } // varbinary(max)
		}

		/// <summary>
		/// <para><strong>sys.credentials (Transact-SQL)</strong></para>
		/// <para><strong>APPLIES TO:</strong> (Yes) SQL Server (Yes) Azure SQL Managed Instance ![yes](media/yes-icon.png)Azure Synapse Analytics (Yes) Parallel Data Warehouse</para>
		/// <para>Returns one row for each server-level credential.</para><br/>
		/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-credentials-transact-sql'>sys.credentials</a>.</para>
		/// </summary>
		[Table(Schema="sys", Name="credentials", IsView=true)]
		public partial class Credential
		{
			/// <summary>
			/// ID of the credential. Is unique in the server.
			/// </summary>
			[Column("credential_id"),       NotNull    ] public int      CredentialID       { get; set; } // int
			/// <summary>
			/// Name of the credential. Is unique in the server.
			/// </summary>
			[Column("name"),                NotNull    ] public string   Name               { get; set; } = null!; // sysname
			/// <summary>
			/// Name of the identity to use. This will generally be a Windows user. It does not have to be unique.
			/// </summary>
			[Column("credential_identity"),    Nullable] public string?  CredentialIdentity { get; set; } // nvarchar(4000)
			/// <summary>
			/// Time at which the credential was created.
			/// </summary>
			[Column("create_date"),         NotNull    ] public DateTime CreateDate         { get; set; } // datetime
			/// <summary>
			/// Time at which the credential was last modified.
			/// </summary>
			[Column("modify_date"),         NotNull    ] public DateTime ModifyDate         { get; set; } // datetime
			/// <summary>
			/// Type of credential. Returns NULL for traditional credentials, CRYPTOGRAPHIC PROVIDER for credentials mapped to a cryptographic provider. For more information about external key management providers, see <a href='https://docs.microsoft.com/en-us/sql/relational-databases/security/encryption/extensible-key-management-ekm'>Extensible Key Management (EKM)</a>.
			/// </summary>
			[Column("target_type"),            Nullable] public string?  TargetType         { get; set; } // nvarchar(100)
			/// <summary>
			/// ID of the object that the credential is mapped to. Returns 0 for traditional credentials and non-0 for credentials mapped to a cryptographic provider. For more information about external key management providers, see <a href='https://docs.microsoft.com/en-us/sql/relational-databases/security/encryption/extensible-key-management-ekm'>Extensible Key Management (EKM)</a>.
			/// </summary>
			[Column("target_id"),              Nullable] public int?     TargetID           { get; set; } // int
		}

		/// <summary>
		/// <para><strong>sys.cryptographic_providers (Transact-SQL)</strong></para>
		/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)  √ Azure SQL Database</para>
		/// <para>Returns one row for each registered cryptographic provider.</para><br/>
		/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-cryptographic-providers-transact-sql'>sys.cryptographic_providers</a>.</para>
		/// </summary>
		[Table(Schema="sys", Name="cryptographic_providers", IsView=true)]
		public partial class CryptographicProvider
		{
			/// <summary>
			/// Identification number of the cryptographic provider.
			/// </summary>
			[Column("provider_id"), NotNull    ] public int     ProviderID { get; set; } // int
			/// <summary>
			/// Name of the cryptographic provider.
			/// </summary>
			[Column("name"),        NotNull    ] public string  Name       { get; set; } = null!; // sysname
			/// <summary>
			/// Unique provider GUID.
			/// </summary>
			[Column("guid"),           Nullable] public Guid?   Guid       { get; set; } // uniqueidentifier
			/// <summary>
			/// Version of the provider in the format '*aa.bb.cccc.dd*'.
			/// </summary>
			[Column("version"),        Nullable] public string? Version    { get; set; } // nvarchar(50)
			/// <summary>
			/// Path to DLL that implements the Extensible Key Management (EKM) Application Program Interface (API).
			/// </summary>
			[Column("dll_path"),       Nullable] public string? DllPath    { get; set; } // nvarchar(512)
			/// <summary>
			/// Whether the provider is enabled on the server or not.<br/><br/> 0 = not enabled  (default)<br/><br/> 1 = enabled
			/// </summary>
			[Column("is_enabled"),  NotNull    ] public bool    IsEnabled  { get; set; } // bit
		}

		/// <summary>
		/// <para><strong>sys.crypt_properties (Transact-SQL)</strong></para>
		/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)  √ Azure SQL Database</para>
		/// <para>Returns one row for each cryptographic property associated with a securable.</para><br/>
		/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-crypt-properties-transact-sql'>sys.crypt_properties</a>.</para>
		/// </summary>
		[Table(Schema="sys", Name="crypt_properties", IsView=true)]
		public partial class CryptProperty
		{
			/// <summary>
			/// Identifies class of thing on which property exists.<br/><br/> 1 = Object or column<br/> 5 = Assembly
			/// </summary>
			[Column("class"),           NotNull    ] public byte    Class               { get; set; } // tinyint
			/// <summary>
			/// Description of the class of thing on which property exists.<br/><br/> OBJECT_OR_COLUMN<br/> ASSEMBLY
			/// </summary>
			[Column("class_desc"),         Nullable] public string? ClassDesc           { get; set; } // nvarchar(60)
			/// <summary>
			/// ID of thing on which property exists, interpreted according to class
			/// </summary>
			[Column("major_id"),        NotNull    ] public int     MajorID             { get; set; } // int
			/// <summary>
			/// SHA-1 hash of the certificate or asymmetric key used.
			/// </summary>
			[Column("thumbprint"),      NotNull    ] public byte[]  Thumbprint          { get; set; } = null!; // varbinary(32)
			/// <summary>
			/// Encryption type.<br/><br/> SPVC = Signed by certificate private key<br/><br/> SPVA = Signed by asymmetric private key<br/><br/> CPVC = Counter signature by certificate private key<br/><br/> CPVA = Counter signature by asymmetric  key
			/// </summary>
			[Column("crypt_type"),      NotNull    ] public string  CryptType           { get; set; } = null!; // char(4)
			/// <summary>
			/// Description of encryption type.<br/><br/> SIGNATURE BY CERTIFICATE<br/><br/> SIGNATURE BY ASYMMETRIC KEY<br/><br/> COUNTER SIGNATURE BY CERTIFICATE<br/><br/> COUNTER SIGNATURE BY ASYMMETRIC KEY
			/// </summary>
			[Column("crypt_type_desc"),    Nullable] public string? CryptTypeDesc       { get; set; } // nvarchar(60)
			/// <summary>
			/// Signed or encrypted bits. For a signed module these are the signature bits of the module.
			/// </summary>
			[Column("crypt_property"),  NotNull    ] public byte[]  CryptPropertyColumn { get; set; } = null!; // varbinary(max)
		}

		/// <summary>
		/// <para><strong>sys.database_audit_specifications (Transact-SQL)</strong></para>
		/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)</para>
		/// <para>Contains information about the database audit specifications in a SQL Server audit on a server instance. For more information, see <a href='https://docs.microsoft.com/en-us/sql/relational-databases/security/auditing/sql-server-audit-database-engine'>SQL Server Audit (Database Engine)</a>.</para><br/>
		/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-database-audit-specifications-transact-sql'>sys.database_audit_specifications</a>.</para>
		/// </summary>
		[Table(Schema="sys", Name="database_audit_specifications", IsView=true)]
		public partial class DatabaseAuditSpecification
		{
			/// <summary>
			/// Name of the auditing specification.
			/// </summary>
			[Column("name"),                      NotNull    ] public string   Name                    { get; set; } = null!; // sysname
			/// <summary>
			/// ID of the database specification.
			/// </summary>
			[Column("database_specification_id"), NotNull    ] public int      DatabaseSpecificationID { get; set; } // int
			/// <summary>
			/// Date the audit specification was created.
			/// </summary>
			[Column("create_date"),               NotNull    ] public DateTime CreateDate              { get; set; } // datetime
			/// <summary>
			/// Date the audit specification was last modified.
			/// </summary>
			[Column("modified_date"),             NotNull    ] public DateTime ModifiedDate            { get; set; } // datetime
			/// <summary>
			/// Audit specification state:<br/><br/> 0 - DISABLED<br/><br/> 1 -ENABLED
			/// </summary>
			[Column("is_state_enabled"),             Nullable] public bool?    IsStateEnabled          { get; set; } // bit
			/// <summary>
			/// GUID for the audit that contains this specification. Used during enumeration of member database audit specifications during database attach/startup.
			/// </summary>
			[Column("audit_guid"),                   Nullable] public object?  AuditGuid               { get; set; } // uniqueidentifer
		}

		/// <summary>
		/// <para><strong>sys.database_audit_specification_details (Transact-SQL)</strong></para>
		/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)</para>
		/// <para>Contains information about the database audit specifications in a SQL Server audit on a server instance for all databases. For more information, see <a href='https://docs.microsoft.com/en-us/sql/relational-databases/security/auditing/sql-server-audit-database-engine'>SQL Server Audit (Database Engine)</a>. For a list of all audit_action_id's and their names, query <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-dynamic-management-views/sys-dm-audit-actions-transact-sql'>sys.dm_audit_actions (Transact-SQL)</a>.</para><br/>
		/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-database-audit-specification-details-transact-sql'>sys.database_audit_specification_details</a>.</para>
		/// </summary>
		[Table(Schema="sys", Name="database_audit_specification_details", IsView=true)]
		public partial class DatabaseAuditSpecificationDetail
		{
			/// <summary>
			/// ID of the audit specification.
			/// </summary>
			[Column("database_specification_id"), NotNull    ] public int     DatabaseSpecificationID { get; set; } // int
			/// <summary>
			/// ID of the audit action.
			/// </summary>
			[Column("audit_action_id"),           NotNull    ] public int     AuditActionID           { get; set; } // int
			/// <summary>
			/// Name of audit action or audit action group
			/// </summary>
			[Column("audit_action_name"),            Nullable] public object? AuditActionName         { get; set; } // Sysname
			/// <summary>
			/// Identifies class of object which is being audited.
			/// </summary>
			[Column("class"),                     NotNull    ] public int     Class                   { get; set; } // int
			/// <summary>
			/// Description of class of object which is being audited:<br/><br/> - SCHEMA<br/><br/> - TABLE
			/// </summary>
			[Column("class_ desc"),               NotNull    ] public object  ClassDesc               { get; set; } = null!; // Nvarchar(60)
			/// <summary>
			/// Major ID of object being audited, such as a Table ID of a Table Audit action.
			/// </summary>
			[Column("major_id"),                  NotNull    ] public int     MajorID                 { get; set; } // int
			/// <summary>
			/// Secondary ID of object that is being audited, interpreted according to class, such as the column ID of a Table Audit action.
			/// </summary>
			[Column("minor_id"),                  NotNull    ] public object  MinorID                 { get; set; } = null!; // Int
			/// <summary>
			/// Principal that is being audited.
			/// </summary>
			[Column("audited_principal_id"),      NotNull    ] public int     AuditedPrincipalID      { get; set; } // int
			/// <summary>
			/// Audit action results:<br/><br/> - SUCCESS AND FAILURE - SUCCESS<br/><br/> - FAILURE
			/// </summary>
			[Column("audited_result"),               Nullable] public object? AuditedResult           { get; set; } // Nvarchar(60)
			/// <summary>
			/// Shows whether the object is a group:<br/><br/> 0 - Not a group<br/><br/> 1 - Group
			/// </summary>
			[Column("is_group"),                     Nullable] public object? IsGroup                 { get; set; } // Bit
		}

		/// <summary>
		/// <para><strong>sys.database_credentials (Transact-SQL)</strong></para>
		/// <para><strong>Applies to:</strong> √ SQL Server 2016 (13.x) and later √ Azure SQL Database √ Azure SQL Managed Instance √ Azure Synapse Analytics</para>
		/// <para>Returns one row for each database scoped credential in the database.<br/>
		/// <note type='important'><br/>
		/// This feature will be removed in a future version of Microsoft SQL Server. Avoid using this feature in new development work, and plan to modify applications that currently use this feature. Use <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-database-scoped-credentials-transact-sql'>sys.database_scoped_credentials</a> instead.  <br/>
		/// </note></para><br/>
		/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-database-credentials-transact-sql'>sys.database_credentials</a>.</para>
		/// </summary>
		[Table(Schema="sys", Name="database_credentials", IsView=true)]
		public partial class DatabaseCredential
		{
			/// <summary>
			/// ID of the database scoped credential. Is unique in the database.
			/// </summary>
			[Column("credential_id"),       NotNull    ] public int      CredentialID       { get; set; } // int
			/// <summary>
			/// Name of the database scoped credential. Is unique in the database.
			/// </summary>
			[Column("name"),                NotNull    ] public string   Name               { get; set; } = null!; // sysname
			/// <summary>
			/// Name of the identity to use. This will generally be a Windows user. It does not have to be unique.
			/// </summary>
			[Column("credential_identity"),    Nullable] public string?  CredentialIdentity { get; set; } // nvarchar(4000)
			/// <summary>
			/// Time at which the database scoped credential was created.
			/// </summary>
			[Column("create_date"),         NotNull    ] public DateTime CreateDate         { get; set; } // datetime
			/// <summary>
			/// Time at which the database scoped credential was last modified.
			/// </summary>
			[Column("modify_date"),         NotNull    ] public DateTime ModifyDate         { get; set; } // datetime
			/// <summary>
			/// Type of database scoped credential. Returns NULL for database scoped credentials.
			/// </summary>
			[Column("target_type"),            Nullable] public string?  TargetType         { get; set; } // nvarchar(100)
			/// <summary>
			/// ID of the object that the database scoped credential is mapped to. Returns 0 for database scoped credentials
			/// </summary>
			[Column("target_id"),              Nullable] public int?     TargetID           { get; set; } // int
		}

		/// <summary>
		/// <para><strong>sys.database_ledger_blocks (Transact-SQL)</strong></para>
		/// <para><strong>Applies to:</strong> √ Azure SQL Database</para>
		/// <para>Captures the cryptographically chained blocks, each of which represents a block of transactions against ledger tables.<br/>
		/// For more information on database ledger, see <a href='https://docs.microsoft.com/en-us/azure/azure-sql/database/ledger-overview'>Azure SQL Database ledger</a></para><br/>
		/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-database-ledger-blocks-transact-sql'>sys.database_ledger_blocks</a>.</para>
		/// </summary>
		[Table(Schema="sys", Name="database_ledger_blocks", IsView=true)]
		public partial class DatabaseLedgerBlock
		{
			/// <summary>
			/// A sequence number identifying the row in this view.
			/// </summary>
			[Column("block_id"),              NotNull] public long   BlockID             { get; set; } // bigint
			/// <summary>
			/// The hash of the root of the Merkle tree, formed by transactions stored in the block.
			/// </summary>
			[Column("transaction_root_hash"), NotNull] public byte[] TransactionRootHash { get; set; } = null!; // binary(32)
			/// <summary>
			/// The number of transactions in the block.
			/// </summary>
			[Column("block_size"),            NotNull] public long   BlockSize           { get; set; } // bigint
			/// <summary>
			/// A SHA-256 hash of the previous row in the view.
			/// </summary>
			[Column("previous_block_hash"),   NotNull] public byte[] PreviousBlockHash   { get; set; } = null!; // binary(32)
		}

		/// <summary>
		/// <para><strong>sys.database_ledger_digest_locations (Transact-SQL)</strong></para>
		/// <para><strong>Applies to:</strong> √ Azure SQL Database</para>
		/// <para>Captures the current and the historical ledger digest storage endpoints for the ledger feature.<br/>
		/// For more information on database ledger, see <a href='https://docs.microsoft.com/en-us/azure/azure-sql/database/ledger-overview'>Azure SQL Database ledger</a>.</para><br/>
		/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-database-ledger-digest-locations-transact-sql'>sys.database_ledger_digest_locations</a>.</para>
		/// </summary>
		[Table(Schema="sys", Name="database_ledger_digest_locations", IsView=true)]
		public partial class DatabaseLedgerDigestLocation
		{
			/// <summary>
			/// The location of storage digests. For example, a path for a container in <a href='https://docs.microsoft.com/en-us/azure/storage/blobs/storage-blobs-introduction'>Azure Blob storage</a>.
			/// </summary>
			[Column("path"),                 NotNull] public string Path              { get; set; } = null!; // nvarchar(4000)
			/// <summary>
			/// The block ID for the last digest uploaded.
			/// </summary>
			[Column("last_digest_block_id"), NotNull] public long   LastDigestBlockID { get; set; } // bigint
			/// <summary>
			/// Indicates whether this is the current path or a path used in the past.
			/// </summary>
			[Column("is_current"),           NotNull] public bool   IsCurrent         { get; set; } // bit
		}

		/// <summary>
		/// <para><strong>sys.database_ledger_transactions (Transact-SQL)</strong></para>
		/// <para><strong>Applies to:</strong> √ Azure SQL Database</para>
		/// <para>Captures the cryptographically protected history of database transactions against ledger tables in the database. A row in this view represents a database transaction.<br/>
		/// For more information on database ledger, see <a href='https://docs.microsoft.com/en-us/azure/azure-sql/database/ledger-overview'>Azure SQL Database ledger</a>.</para><br/>
		/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-database-ledger-transactions-transact-sql'>sys.database_ledger_transactions</a>.</para>
		/// </summary>
		[Table(Schema="sys", Name="database_ledger_transactions", IsView=true)]
		public partial class DatabaseLedgerTransaction
		{
			/// <summary>
			/// A transaction ID that is unique for the database (it corresponds to a transaction ID in the database transaction log).
			/// </summary>
			[Column("transaction_id"),        NotNull] public long     TransactionID        { get; set; } // bigint
			/// <summary>
			/// A sequence number identifying a row.
			/// </summary>
			[Column("block_id"),              NotNull] public long     BlockID              { get; set; } // bigint
			/// <summary>
			/// Offset of the transaction in the block.
			/// </summary>
			[Column("transactional_ordinal"), NotNull] public int      TransactionalOrdinal { get; set; } // int
			/// <summary>
			/// The name of the user who started the transaction. Captured by calling <c>ORIGINAL_LOGIN()</c>.
			/// </summary>
			[Column("user_name()"),           NotNull] public string   UserName             { get; set; } = null!; // sysname
			/// <summary>
			/// The time of the committing transaction.
			/// </summary>
			[Column("commit_time"),           NotNull] public DateTime CommitTime           { get; set; } // datetime2(7)
			/// <summary>
			/// This is a set of key-values pairs, stored in a binary format. The keys are object IDs (from <strong>sys.objects</strong>) of ledger database tables, modified by the transaction. Each value is a SHA-256 hash of all row versions a transaction created or invalidated.<br/><br/> The binary format of data stored in this row is: <c>&lt;version&gt;&lt;length&gt;[&lt;key&gt;&lt;value&gt;]</c>, where<br/><br/> - <c>version</c> - indicates the encoding version. Length: 1 byte.<br/> - <c>length</c> - the number of entries in the key-value pair list. Length: 1 byte.<br/> - <c>key</c> - an object ID. Length: 4 bytes.<br/> - <c>value</c> - the hash of rows the transaction cached in the table with the object ID stored as the key. Length: 32 bytes.
			/// </summary>
			[Column("table_hashes"),          NotNull] public byte[]   TableHashes          { get; set; } = null!; // varbinary(max)
		}

		/// <summary>
		/// <para><strong>sys.database_permissions (Transact-SQL)</strong></para>
		/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions) √ Azure SQL Database √ Azure SQL Managed Instance √ Azure Synapse Analytics √ Analytics Platform System (PDW)</para>
		/// <para>Returns a row for every permission or column-exception permission in the database. For columns, there is a row for every permission that is different from the corresponding object-level permission. If the column permission is the same as the corresponding object permission, there is no row for it and the permission applied is that of the object.<br/>
		/// <note type='important'><br/>
		/// Column-level permissions override object-level permissions on the same entity.<br/>
		/// </note></para><br/>
		/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-database-permissions-transact-sql'>sys.database_permissions</a>.</para>
		/// </summary>
		[Table(Schema="sys", Name="database_permissions", IsView=true)]
		public partial class DatabasePermission
		{
			/// <summary>
			/// Identifies class on which permission exists. For more information, see <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-securable-classes-transact-sql'>sys.securable_classes (Transact-SQL)</a>.<br/><br/> 0 = Database<br/>1 = Object or Column<br/>3 = Schema<br/>4 = Database Principal<br/>5 = Assembly - <strong>Applies to</strong>: SQL Server 2008 and later.<br/>6 = Type<br/>10 = XML Schema Collection - <br/>                      <strong>Applies to</strong>: SQL Server 2008 and later.<br/>15 = Message Type - <strong>Applies to</strong>: SQL Server 2008 and later.<br/>16 = Service Contract - <strong>Applies to</strong>: SQL Server 2008 and later.<br/>17 = Service - <strong>Applies to</strong>: SQL Server 2008 and later.<br/>18 = Remote Service Binding - <strong>Applies to</strong>: SQL Server 2008 and later.<br/>19 = Route - <strong>Applies to</strong>: SQL Server 2008 and later.<br/>23 =Full-Text Catalog - <strong>Applies to</strong>: SQL Server 2008 and later.<br/>24 = Symmetric Key - <strong>Applies to</strong>: SQL Server 2008 and later.<br/>25 = Certificate - <strong>Applies to</strong>: SQL Server 2008 and later.<br/>26 = Asymmetric Key - <strong>Applies to</strong>: SQL Server 2008 and later.<br/>29 = Fulltext Stoplist - <strong>Applies to</strong>: SQL Server 2008 and later.<br/>31 = Search Property List - <strong>Applies to</strong>: SQL Server 2008 and later.<br/>32 = Database Scoped Credential - <strong>Applies to</strong>: SQL Server 2008 and later.<br/>34 = External Language - <strong>Applies to</strong>: SQL Server 2008 and later.
			/// </summary>
			[Column("class"),                NotNull    ] public byte    Class              { get; set; } // tinyint
			/// <summary>
			/// Description of class on which permission exists.<br/><br/> DATABASE<br/><br/> OBJECT_OR_COLUMN<br/><br/> SCHEMA<br/><br/> DATABASE_PRINCIPAL<br/><br/> ASSEMBLY<br/><br/> TYPE<br/><br/> XML_SCHEMA_COLLECTION<br/><br/> MESSAGE_TYPE<br/><br/> SERVICE_CONTRACT<br/><br/> SERVICE<br/><br/> REMOTE_SERVICE_BINDING<br/><br/> ROUTE<br/><br/> FULLTEXT_CATALOG<br/><br/> SYMMETRIC_KEYS<br/><br/> CERTIFICATE<br/><br/> ASYMMETRIC_KEY<br/><br/> FULLTEXT STOPLIST<br/><br/> SEARCH PROPERTY LIST<br/><br/> DATABASE SCOPED CREDENTIAL<br/><br/> EXTERNAL LANGUAGE
			/// </summary>
			[Column("class_desc"),              Nullable] public string? ClassDesc          { get; set; } // nvarchar(60)
			/// <summary>
			/// ID of thing on which permission exists, interpreted according to class. Usually, the <strong>major_id</strong> is simply the kind of ID that applies to what the class represents. <br/><br/> 0 = The database itself <br/><br/> &gt;0 = Object-IDs for user objects <br/><br/> &lt;0 = Object-IDs for system objects
			/// </summary>
			[Column("major_id"),             NotNull    ] public int     MajorID            { get; set; } // int
			/// <summary>
			/// Secondary-ID of thing on which permission exists, interpreted according to class. Often, the <strong>minor_id</strong> is zero, because there is no subcategory available for the class of object. Otherwise, it is the Column-ID of a table.
			/// </summary>
			[Column("minor_id"),             NotNull    ] public int     MinorID            { get; set; } // int
			/// <summary>
			/// Database principal ID to which the permissions are granted.
			/// </summary>
			[Column("grantee_principal_id"), NotNull    ] public int     GranteePrincipalID { get; set; } // int
			/// <summary>
			/// Database principal ID of the grantor of these permissions.
			/// </summary>
			[Column("grantor_principal_id"), NotNull    ] public int     GrantorPrincipalID { get; set; } // int
			/// <summary>
			/// Database permission type. For a list of permission types, see the next table.
			/// </summary>
			[Column("type"),                 NotNull    ] public string  TypeColumn         { get; set; } = null!; // char(4)
			/// <summary>
			/// Permission name.
			/// </summary>
			[Column("permission_name"),         Nullable] public string? PermissionName     { get; set; } // nvarchar(128)
			/// <summary>
			/// Permission state:<br/><br/> D = Deny<br/><br/> R = Revoke<br/><br/> G = Grant<br/><br/> W = Grant With Grant Option
			/// </summary>
			[Column("state"),                NotNull    ] public string  State              { get; set; } = null!; // char(1)
			/// <summary>
			/// Description of permission state:<br/><br/> DENY<br/><br/> REVOKE<br/><br/> GRANT<br/><br/> GRANT_WITH_GRANT_OPTION
			/// </summary>
			[Column("state_desc"),              Nullable] public string? StateDesc          { get; set; } // nvarchar(60)
		}

		/// <summary>
		/// <para><strong>sys.database_principals (Transact-SQL)</strong></para>
		/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions) √ Azure SQL Database √ Azure SQL Managed Instance √ Azure Synapse Analytics √ Analytics Platform System (PDW)</para>
		/// <para>Returns a row for each security principal in a SQL Server database.</para><br/>
		/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-database-principals-transact-sql'>sys.database_principals</a>.</para>
		/// </summary>
		[Table(Schema="sys", Name="database_principals", IsView=true)]
		public partial class DatabasePrincipal
		{
			/// <summary>
			/// Name of principal, unique within the database.
			/// </summary>
			[Column("name"),                                NotNull    ] public string   Name                             { get; set; } = null!; // sysname
			/// <summary>
			/// ID of principal, unique within the database.
			/// </summary>
			[Column("principal_id"),                        NotNull    ] public int      PrincipalID                      { get; set; } // int
			/// <summary>
			/// Principal type:<br/><br/> A = Application role<br/><br/> C = User mapped to a certificate<br/><br/> E = External user from Azure Active Directory<br/><br/> G = Windows group<br/><br/> K = User mapped to an asymmetric key<br/><br/> R = Database role<br/><br/> S = SQL user<br/><br/> U = Windows user<br/><br/> X = External group from Azure Active Directory group or applications
			/// </summary>
			[Column("type"),                                NotNull    ] public string   TypeColumn                       { get; set; } = null!; // char(1)
			/// <summary>
			/// Description of principal type.<br/><br/> APPLICATION_ROLE<br/><br/> CERTIFICATE_MAPPED_USER<br/><br/> EXTERNAL_USER<br/><br/> WINDOWS_GROUP<br/><br/> ASYMMETRIC_KEY_MAPPED_USER<br/><br/> DATABASE_ROLE<br/><br/> SQL_USER<br/><br/> WINDOWS_USER<br/><br/> EXTERNAL_GROUPS
			/// </summary>
			[Column("type_desc"),                              Nullable] public string?  TypeDesc                         { get; set; } // nvarchar(60)
			/// <summary>
			/// Name to be used when SQL name does not specify a schema. Null for principals not of type S, U, or A.
			/// </summary>
			[Column("default_schema_name"),                    Nullable] public string?  DefaultSchemaName                { get; set; } // sysname
			/// <summary>
			/// Time at which the principal was created.
			/// </summary>
			[Column("create_date"),                         NotNull    ] public DateTime CreateDate                       { get; set; } // datetime
			/// <summary>
			/// Time at which the principal was last modified.
			/// </summary>
			[Column("modify_date"),                         NotNull    ] public DateTime ModifyDate                       { get; set; } // datetime
			/// <summary>
			/// ID of the principal that owns this principal. All fixed Database Roles are owned by <strong>dbo</strong> by default.
			/// </summary>
			[Column("owning_principal_id"),                    Nullable] public int?     OwningPrincipalID                { get; set; } // int
			/// <summary>
			/// SID (Security Identifier) of the principal.  NULL for SYS and INFORMATION SCHEMAS.
			/// </summary>
			[Column("sid"),                                    Nullable] public byte[]?  SID                              { get; set; } // varbinary(85)
			/// <summary>
			/// If 1, this row represents an entry for one of the fixed database roles: db_owner, db_accessadmin, db_datareader, db_datawriter, db_ddladmin, db_securityadmin, db_backupoperator, db_denydatareader, db_denydatawriter.
			/// </summary>
			[Column("is_fixed_role"),                       NotNull    ] public bool     IsFixedRole                      { get; set; } // bit
			/// <summary>
			/// <strong>Applies to</strong>: SQL Server 2012 (11.x) and later.<br/><br/> Signifies authentication type. The following are the possible values and their descriptions.<br/><br/> 0 : No authentication<br/>1 : Instance authentication<br/>2 : Database authentication<br/>3 : Windows authentication<br/>4 : Azure Active Directory authentication
			/// </summary>
			[Column("authentication_type"),                 NotNull    ] public int      AuthenticationType               { get; set; } // int
			/// <summary>
			/// <strong>Applies to</strong>: SQL Server 2012 (11.x) and later.<br/><br/> Description of the authentication type. The following are the possible values and their descriptions.<br/><br/> <c>NONE</c> : No authentication<br/><c>INSTANCE</c> : Instance authentication<br/><c>DATABASE</c> : Database authentication<br/><c>WINDOWS</c> : Windows authentication<br/><c>EXTERNAL</c>: Azure Active Directory authentication
			/// </summary>
			[Column("authentication_type_desc"),               Nullable] public string?  AuthenticationTypeDesc           { get; set; } // nvarchar(60)
			/// <summary>
			/// <strong>Applies to</strong>: SQL Server 2012 (11.x) and later.<br/><br/> Signifies the default language for this principal.
			/// </summary>
			[Column("default_language_name"),                  Nullable] public string?  DefaultLanguageName              { get; set; } // sysname
			/// <summary>
			/// <strong>Applies to</strong>: SQL Server 2012 (11.x) and later.<br/><br/> Signifies the default LCID for this principal.
			/// </summary>
			[Column("default_language_lcid"),                  Nullable] public int?     DefaultLanguageLcid              { get; set; } // int
			/// <summary>
			/// <strong>Applies to</strong>: SQL Server 2016 (13.x) and later, SQL Database.<br/><br/> Suppresses cryptographic metadata checks on the server in bulk copy operations. This enables the user to bulk copy data encrypted using Always Encrypted, between tables or databases, without decrypting the data. The default is OFF.
			/// </summary>
			[Column("allow_encrypted_value_modifications"), NotNull    ] public bool     AllowEncryptedValueModifications { get; set; } // bit
		}

		/// <summary>
		/// <para><strong>sys.database_role_members (Transact-SQL)</strong></para>
		/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions) √ Azure SQL Database √ Azure SQL Managed Instance √ Azure Synapse Analytics √ Analytics Platform System (PDW)</para>
		/// <para>Returns one row for each member of each database role.  Database users, application roles, and other database roles can be members of a database role. To add members to a role, use the <a href='https://docs.microsoft.com/en-us/sql/t-sql/statements/alter-role-transact-sql'>ALTER ROLE</a> statement with the <c>ADD MEMBER</c> option. Join with <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-database-principals-transact-sql'>sys.database_principals</a> to return the names of the <c>principal_id</c> values.</para><br/>
		/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-database-role-members-transact-sql'>sys.database_role_members</a>.</para>
		/// </summary>
		[Table(Schema="sys", Name="database_role_members", IsView=true)]
		public partial class DatabaseRoleMember
		{
			/// <summary>
			/// Database principal ID of the role.
			/// </summary>
			[Column("role_principal_id"),   NotNull] public int RolePrincipalID   { get; set; } // int
			/// <summary>
			/// Database principal ID of the member.
			/// </summary>
			[Column("member_principal_id"), NotNull] public int MemberPrincipalID { get; set; } // int
		}

		/// <summary>
		/// <para><strong>sys.database_scoped_credentials (Transact-SQL)</strong></para>
		/// <para><strong>Applies to:</strong> √ SQL Server 2016 (13.x) and later √ Azure SQL Database √ Azure SQL Managed Instance √ Azure Synapse Analytics</para>
		/// <para>Returns one row for each database scoped credential in the database.<br/>
		/// ::: moniker range='=sql-server-2016'</para><br/>
		/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-database-scoped-credentials-transact-sql'>sys.database_scoped_credentials</a>.</para>
		/// </summary>
		[Table(Schema="sys", Name="database_scoped_credentials", IsView=true)]
		public partial class DatabaseScopedCredential
		{
			/// <summary>
			/// Name of the database scoped credential. Is unique in the database.
			/// </summary>
			[Column("name"),                NotNull    ] public string   Name               { get; set; } = null!; // sysname
			/// <summary>
			/// ID of the database scoped credential. Is unique in the database.
			/// </summary>
			[Column("credential_id"),       NotNull    ] public int      CredentialID       { get; set; } // int
			/// <summary>
			/// Name of the identity to use. This will generally be a Windows user. It does not have to be unique.
			/// </summary>
			[Column("credential_identity"),    Nullable] public string?  CredentialIdentity { get; set; } // nvarchar(4000)
			/// <summary>
			/// Time at which the database scoped credential was created.
			/// </summary>
			[Column("create_date"),         NotNull    ] public DateTime CreateDate         { get; set; } // datetime
			/// <summary>
			/// Time at which the database scoped credential was last modified.
			/// </summary>
			[Column("modify_date"),         NotNull    ] public DateTime ModifyDate         { get; set; } // datetime
			/// <summary>
			/// Type of database scoped credential. Returns <c>NULL</c> for database scoped credentials.
			/// </summary>
			[Column("target_type"),            Nullable] public string?  TargetType         { get; set; } // nvarchar(100)
			/// <summary>
			/// ID of the object that the database scoped credential is mapped to. Returns 0 for database scoped credentials
			/// </summary>
			[Column("target_id"),              Nullable] public int?     TargetID           { get; set; } // int
		}

		/// <summary>
		/// <para><strong>sys.key_encryptions (Transact-SQL)</strong></para>
		/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)  √ Azure SQL Database</para>
		/// <para>Returns a row for each symmetric key encryption specified by using the ENCRYPTION BY clause of the CREATE SYMMETRIC KEY statement.</para><br/>
		/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-key-encryptions-transact-sql'>sys.key_encryptions</a>.</para>
		/// </summary>
		[Table(Schema="sys", Name="key_encryptions", IsView=true)]
		public partial class KeyEncryption
		{
			/// <summary>
			/// ID of the encrypted key.
			/// </summary>
			[Column("key_id"),          NotNull    ] public int     KeyID         { get; set; } // int
			/// <summary>
			/// SHA-1 hash of the certificate with which the key is encrypted, or the GUID of the symmetric key with which the key is encrypted.
			/// </summary>
			[Column("thumbprint"),         Nullable] public byte[]? Thumbprint    { get; set; } // varbinary(32)
			/// <summary>
			/// Type of encryption:<br/><br/> ESKS = Encrypted by symmetric key<br/><br/> ESKP, ESP2, or ESP3 = Encrypted by password<br/><br/> EPUC = Encrypted by certificate<br/><br/> EPUA = Encrypted by asymmetric key<br/><br/> ESKM = Encrypted by master key
			/// </summary>
			[Column("crypt_type"),      NotNull    ] public string  CryptType     { get; set; } = null!; // char(4)
			/// <summary>
			/// Description of encryption type:<br/><br/> ENCRYPTION BY SYMMETRIC KEY<br/><br/> ENCRYPTION BY PASSWORD <br/>(Beginning with SQL Server 2017 (14.x), includes a version number for use by CSS.)<br/><br/> ENCRYPTION BY CERTIFICATE<br/><br/> ENCRYPTION BY ASYMMETRIC KEY<br/><br/> ENCRYPTION BY MASTER KEY<br/><br/> Note: Windows DPAPI is used to protect the service master key.
			/// </summary>
			[Column("crypt_type_desc"),    Nullable] public string? CryptTypeDesc { get; set; } // nvarchar(60)
			/// <summary>
			/// Signed or encrypted bits.
			/// </summary>
			[Column("crypt_property"),     Nullable] public byte[]? CryptProperty { get; set; } // varbinary(max)
		}

		/// <summary>
		/// <para><strong>sys.ledger_column_history (Transact-SQL)</strong></para>
		/// <para><strong>Applies to:</strong> √ Azure SQL Database</para>
		/// <para>Captures the cryptographically protected history of operations on columns of ledger tables: adding, renaming, and dropping columns.<br/>
		/// For more information on database ledger, see <a href='https://docs.microsoft.com/en-us/azure/azure-sql/database/ledger-overview'>Azure SQL Database ledger</a></para><br/>
		/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-ledger-column-history-transact-sql'>sys.ledger_column_history</a>.</para>
		/// </summary>
		[Table(Schema="sys", Name="ledger_column_history", IsView=true)]
		public partial class LedgerColumnHistory
		{
			/// <summary>
			/// The object ID of the ledger table.
			/// </summary>
			[Column("object_id"),           NotNull] public int    ObjectID          { get; set; } // int
			/// <summary>
			/// The column ID of the column in a ledger table.
			/// </summary>
			[Column("column_id"),           NotNull] public int    ColumnID          { get; set; } // int
			/// <summary>
			/// The name of the column in ledger table. If the operation has changed the column name, this column captures the new column name.
			/// </summary>
			[Column("column_name"),         NotNull] public string ColumnName        { get; set; } = null!; // sysname
			/// <summary>
			/// The numeric value indicating the type of the operation<br/><br/>0 = CREATE – creating a column as part of creating the table containing the column using CREATE TABLE.<br/>1 = ADD – adding a column in a ledger table, using ALTER TABLE/ADD COLUMN..
			/// </summary>
			[Column("operation_type"),      NotNull] public byte   OperationType     { get; set; } // tinyint
			/// <summary>
			/// Textual description of the value of operation_type.
			/// </summary>
			[Column("operation_type_desc"), NotNull] public string OperationTypeDesc { get; set; } = null!; // nvarchar(60)

			#region Associations

			/// <summary>
			/// objects (sys.objects)
			/// </summary>
			[Association(ThisKey="ObjectID", OtherKey="ObjectID", CanBeNull=false)]
			public ObjectSchema.Object Object { get; set; } = null!;

			#endregion
		}

		/// <summary>
		/// <para><strong>sys.ledger_table_history (Transact-SQL)</strong></para>
		/// <para><strong>Applies to:</strong> √ Azure SQL Database</para>
		/// <para>Captures the cryptographically protected history of operations on ledger tables: creating ledger tables, renaming ledger tables or ledger views, and dropping ledger tables.<br/>
		/// For more information on database ledger, see <a href='https://docs.microsoft.com/en-us/azure/azure-sql/database/ledger-overview'>Azure SQL Database ledger</a></para><br/>
		/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-ledger-table-history-transact-sql'>sys.ledger_table_history</a>.</para>
		/// </summary>
		[Table(Schema="sys", Name="ledger_table_history", IsView=true)]
		public partial class LedgerTableHistory
		{
			/// <summary>
			/// The object ID of the ledger table.
			/// </summary>
			[Column("object_id"),               NotNull] public int    ObjectID             { get; set; } // int
			/// <summary>
			/// The name of the schema containing the ledger table. If the operation has changed the schema name, this column captures the new schema name.
			/// </summary>
			[Column("schema_name"),             NotNull] public string SchemaName           { get; set; } = null!; // sysname
			/// <summary>
			/// The name of the ledger table. If the operation has changed the table name, this column captures the new table name.
			/// </summary>
			[Column("table_name"),              NotNull] public string TableName            { get; set; } = null!; // sysname
			/// <summary>
			/// The name of the schema containing the ledger view for the ledger table. If the operation has changed the schema name, this column captures the new schema name.
			/// </summary>
			[Column("ledger_view_schema_name"), NotNull] public string LedgerViewSchemaName { get; set; } = null!; // sysname
			/// <summary>
			/// The name of the ledger view for the ledger table. If the operation has changed the view name, this column captures the new view name.
			/// </summary>
			[Column("ledger_view_name"),        NotNull] public string LedgerViewName       { get; set; } = null!; // sysname
			/// <summary>
			/// The numeric value indicating the type of the operation<br/><br/>0 = CREATE – creating a ledger table.<br/>1 = DROP – dropping a ledger table.
			/// </summary>
			[Column("operation_type"),          NotNull] public byte   OperationType        { get; set; } // tinyint
			/// <summary>
			/// Textual description of the value of operation_type.
			/// </summary>
			[Column("operation_type_desc"),     NotNull] public string OperationTypeDesc    { get; set; } = null!; // nvarchar(60)
			/// <summary>
			/// The transaction of the ID that included the operation on the ledger table. It identifies a row in <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-database-ledger-transactions-transact-sql'>sys.database_ledger_transactions</a>.
			/// </summary>
			[Column("transaction_id"),          NotNull] public long   TransactionID        { get; set; } // bigint
			/// <summary>
			/// The sequence number of the operation within the transaction.
			/// </summary>
			[Column("sequence_number"),         NotNull] public long   SequenceNumber       { get; set; } // bigint

			#region Associations

			/// <summary>
			/// objects (sys.objects)
			/// </summary>
			[Association(ThisKey="ObjectID", OtherKey="ObjectID", CanBeNull=false)]
			public ObjectSchema.Object Object { get; set; } = null!;

			#endregion
		}

		/// <summary>
		/// <para><strong>sys.login_token (Transact-SQL)</strong></para>
		/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)</para>
		/// <para>Returns one row for every server principal that is part of the login token.</para><br/>
		/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-login-token-transact-sql'>sys.login_token</a>.</para>
		/// </summary>
		[Table(Schema="sys", Name="login_token", IsView=true)]
		public partial class LoginToken
		{
			/// <summary>
			/// ID of the principal. This value is unique within server.
			/// </summary>
			[Column("principal_id"), Nullable] public int?    PrincipalID { get; set; } // int
			/// <summary>
			/// Security identifier of the principal. If this is a Windows principal, <strong>sid</strong> = Windows SID. If the login is mapped to a certificate, <strong>sid</strong> = GUID from the certificate.
			/// </summary>
			[Column("sid"),          Nullable] public byte[]? SID         { get; set; } // varbinary(85)
			/// <summary>
			/// Name of the principal. This value is unique within server.
			/// </summary>
			[Column("name"),         Nullable] public string? Name        { get; set; } // nvarchar(128)
			/// <summary>
			/// Description of principal type. All types are mapped to <strong>sid</strong>. The value can be one of the following:<br/><br/> <c>SQL LOGIN</c> <br/><br/> <c>WINDOWS LOGIN</c> <br/><br/> <c>WINDOWS GROUP</c> <br/><br/> <c>SERVER ROLE</c> <br/><br/> <c>LOGIN MAPPED TO CERTIFICATE</c> <br/><br/> <c>LOGIN MAPPED TO ASYMMETRIC KEY</c> <br/><br/> <c>CERTIFICATE</c> <br/><br/> <c>ASYMMETRIC KEY</c>
			/// </summary>
			[Column("type"),         Nullable] public string? TypeColumn  { get; set; } // nvarchar(128)
			/// <summary>
			/// Indicates the principal participates in the evaluation of GRANT or DENY permissions, or serves as an authenticator.<br/><br/> This value can be one of the following:<br/><br/> <c>GRANT OR DENY</c> <br/><br/> <c>DENY ONLY</c> <br/><br/> <c>AUTHENTICATOR</c>
			/// </summary>
			[Column("usage"),        Nullable] public string? Usage       { get; set; } // nvarchar(128)
		}

		/// <summary>
		/// <para><strong>sys.master_key_passwords (Transact-SQL)</strong></para>
		/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions) √ Azure SQL Managed Instance</para>
		/// <para>Returns a row for each database master key password added by using the <strong>sp_control_dbmasterkey_password</strong> stored procedure. The passwords that are used to protect the master keys are stored in the credential store. The credential name follows this format: ##DBMKEY_&lt;database_family_guid&gt;_&lt;random_password_guid&gt;##. The password is stored as the credential secret. For each password added by using <strong>sp_control_dbmasterkey_password</strong>, there is a row in <strong>sys.credentials</strong>.<br/>
		///  Each row in this view shows a <strong>credential_id</strong> and the <strong>family_guid</strong> of a database the master key of which is protected by the password associated with that credential. A join with <strong>sys.credentials</strong> on the <strong>credential_id</strong> will return useful fields, such as the <strong>create_date</strong> and credential name.</para><br/>
		/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-master-key-passwords-transact-sql'>sys.master_key_passwords</a>.</para>
		/// </summary>
		[Table(Schema="sys", Name="master_key_passwords", IsView=true)]
		public partial class MasterKeyPassword
		{
			/// <summary>
			/// ID of the credential to which the password belongs. This ID is unique within the server instance.
			/// </summary>
			[Column("credential_id"), NotNull    ] public int   CredentialID { get; set; } // int
			/// <summary>
			/// Unique ID of the original database at creation. This GUID remains the same after the database is restored or attached, even if the database name is changed.<br/><br/> If automatic decryption by the service master key fails, SQL Server uses the <strong>family_guid</strong> to identify credentials that may contain the password used to protect the database master key.
			/// </summary>
			[Column("family_guid"),      Nullable] public Guid? FamilyGuid   { get; set; } // uniqueidentifier
		}

		/// <summary>
		/// <para><strong>sys.openkeys (Transact-SQL)</strong></para>
		/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)  √ Azure SQL Database</para>
		/// <para>This catalog view returns information about encryption keys that are open in the current session.</para><br/>
		/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-openkeys-transact-sql'>sys.openkeys</a>.</para>
		/// </summary>
		[Table(Schema="sys", Name="openkeys", IsView=true)]
		public partial class OpenKey
		{
			/// <summary>
			/// ID of the database that contains the key.
			/// </summary>
			[Column("database_id"),   Nullable] public int?      DatabaseID   { get; set; } // int
			/// <summary>
			/// Name of the database that contains the key.
			/// </summary>
			[Column("database_name"), Nullable] public string?   DatabaseName { get; set; } // sysname
			/// <summary>
			/// ID of the key. The ID is unique within the database.
			/// </summary>
			[Column("key_id"),        Nullable] public int?      KeyID        { get; set; } // int
			/// <summary>
			/// Name of the key. Unique within the database.
			/// </summary>
			[Column("key_name"),      Nullable] public string?   KeyName      { get; set; } // sysname
			/// <summary>
			/// GUID of the key. Unique within the database.
			/// </summary>
			[Column("key_guid"),      Nullable] public byte[]?   KeyGuid      { get; set; } // varbinary
			/// <summary>
			/// Date and time when the key was opened.
			/// </summary>
			[Column("opened_date"),   Nullable] public DateTime? OpenedDate   { get; set; } // datetime
			/// <summary>
			/// 1 if the key is valid in metadata. 0 if the key is not found in metadata.
			/// </summary>
			[Column("status"),        Nullable] public int?      Status       { get; set; } // int
		}

		/// <summary>
		/// <para><strong>sys.securable_classes (Transact-SQL)</strong></para>
		/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions) √ Azure SQL Database √ Azure SQL Managed Instance √ Azure Synapse Analytics √ Analytics Platform System (PDW)</para>
		/// <para>Returns a list of securable classes</para><br/>
		/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-securable-classes-transact-sql'>sys.securable_classes</a>.</para>
		/// </summary>
		[Table(Schema="sys", Name="securable_classes", IsView=true)]
		public partial class SecurableClass
		{
			/// <summary>
			/// Name of the class.
			/// </summary>
			[Column("class_desc"), Nullable] public string? ClassDesc { get; set; } // sysname
			/// <summary>
			/// Numerical designation of the class.
			/// </summary>
			[Column("class"),      Nullable] public int?    Class     { get; set; } // int
		}

		/// <summary>
		/// <para><strong>sys.security_policies (Transact-SQL)</strong></para>
		/// <para><strong>Applies to:</strong> √ SQL Server 2016 (13.x) and later √ Azure SQL Database √ Azure SQL Managed Instance √ Azure Synapse Analytics</para>
		/// <para>Returns a row for each security policy in the database.</para><br/>
		/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-security-policies-transact-sql'>sys.security_policies</a>.</para>
		/// </summary>
		[Table(Schema="sys", Name="security_policies", IsView=true)]
		public partial class SecurityPolicy
		{
			/// <summary>
			/// Name of the security policy, unique within the database.
			/// </summary>
			[Column("name"),                     NotNull    ] public string   Name                   { get; set; } = null!; // sysname
			/// <summary>
			/// ID of the security policy.
			/// </summary>
			[Column("object_id"),                NotNull    ] public int      ObjectID               { get; set; } // int
			/// <summary>
			/// ID of the owner of the security policy, as registered to the database. NULL if the owner is determined via the schema.
			/// </summary>
			[Column("principal_id"),                Nullable] public int?     PrincipalID            { get; set; } // int
			/// <summary>
			/// ID of the schema where the object resides.
			/// </summary>
			[Column("schema_id"),                NotNull    ] public int      SchemaID               { get; set; } // int
			/// <summary>
			/// ID of the object to which the policy belongs. Must be 0.
			/// </summary>
			[Column("parent_object_id"),         NotNull    ] public int      ParentObjectID         { get; set; } // int
			/// <summary>
			/// Must be <strong>SP</strong>.
			/// </summary>
			[Column("type"),                        Nullable] public object?  TypeColumn             { get; set; } // vachar(2)
			/// <summary>
			/// <strong>SECURITY_POLICY</strong>.
			/// </summary>
			[Column("type_desc"),                   Nullable] public string?  TypeDesc               { get; set; } // nvarchar(60)
			/// <summary>
			/// UTC date the security policy was created.
			/// </summary>
			[Column("create_date"),              NotNull    ] public DateTime CreateDate             { get; set; } // datetime
			/// <summary>
			/// UTC date the security policy was last modified.
			/// </summary>
			[Column("modify_date"),              NotNull    ] public DateTime ModifyDate             { get; set; } // datetime
			/// <summary>
			/// Always false.
			/// </summary>
			[Column("is_ms_shipped"),            NotNull    ] public bool     IsMSShipped            { get; set; } // bit
			/// <summary>
			/// Security policy specification state:<br/><br/> 0 = disabled<br/><br/> 1 = enabled
			/// </summary>
			[Column("is_enabled"),               NotNull    ] public bool     IsEnabled              { get; set; } // bit
			/// <summary>
			/// Policy was created with the NOT FOR REPLICATION option.
			/// </summary>
			[Column("is_not_for_replication"),   NotNull    ] public bool     IsNotForReplication    { get; set; } // bit
			/// <summary>
			/// Uses the same collation as the database.
			/// </summary>
			[Column("uses_database_collation"),     Nullable] public bool?    UsesDatabaseCollation  { get; set; } // bit
			/// <summary>
			/// Schemabinding state for the security policy:<br/><br/> 0 or NULL = enabled<br/><br/> 1 = disabled
			/// </summary>
			[Column("is_schemabinding_enabled"), NotNull    ] public bool     IsSchemabindingEnabled { get; set; } // bit

			#region Associations

			/// <summary>
			/// objects (sys.objects)
			/// </summary>
			[Association(ThisKey="ObjectID", OtherKey="ObjectID", CanBeNull=false)]
			public ObjectSchema.Object Object { get; set; } = null!;

			#endregion
		}

		/// <summary>
		/// <para><strong>sys.security_predicates (Transact-SQL)</strong></para>
		/// <para><strong>Applies to:</strong> √ SQL Server 2016 (13.x) and later √ Azure SQL Database √ Azure SQL Managed Instance √ Azure Synapse Analytics</para>
		/// <para>Returns a row for each security predicate in the database.</para><br/>
		/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-security-predicates-transact-sql'>sys.security_predicates</a>.</para>
		/// </summary>
		[Table(Schema="sys", Name="security_predicates", IsView=true)]
		public partial class SecurityPredicate
		{
			/// <summary>
			/// ID of the security policy that contains this predicate.
			/// </summary>
			[Column("object_id"),             NotNull    ] public int     ObjectID            { get; set; } // int
			/// <summary>
			/// Predicate ID within this security policy.
			/// </summary>
			[Column("security_predicate_id"), NotNull    ] public int     SecurityPredicateID { get; set; } // int
			/// <summary>
			/// ID of the object on which the security predicate is bound.
			/// </summary>
			[Column("target_object_id"),      NotNull    ] public int     TargetObjectID      { get; set; } // int
			/// <summary>
			/// Fully qualified name of the function that will be used as a security predicate, including the arguments. Note that the <c>schema.function</c> name may be normalized (i.e. escaped) as well as any other element in the text for consistency. For example:<br/><br/> <c>[dbo].[fn_securitypredicate]([wing], [startTime], [endTime])</c>
			/// </summary>
			[Column("predicate_definition"),     Nullable] public string? PredicateDefinition { get; set; } // nvarchar(max)
			/// <summary>
			/// The type of predicate used by the security policy:<br/><br/> 0 = FILTER PREDICATE<br/><br/> 1 = BLOCK PREDICATE
			/// </summary>
			[Column("predicate_type"),           Nullable] public int?    PredicateType       { get; set; } // int
			/// <summary>
			/// The type of predicate used by the security policy:<br/><br/> FILTER<br/><br/> BLOCK
			/// </summary>
			[Column("predicate_type_desc"),      Nullable] public string? PredicateTypeDesc   { get; set; } // nvarchar(60)
			/// <summary>
			/// The type of operation specified for the predicate:<br/><br/> NULL = all applicable operations<br/><br/> 1 = AFTER INSERT<br/><br/> 2 = AFTER UPDATE<br/><br/> 3 = BEFORE UPDATE<br/><br/> 4 = BEFORE DELETE
			/// </summary>
			[Column("operation"),                Nullable] public int?    Operation           { get; set; } // int
			/// <summary>
			/// The type of operation specified for the predicate:<br/><br/> NULL<br/><br/> AFTER INSERT<br/><br/> AFTER UPDATE<br/><br/> BEFORE UPDATE<br/><br/> BEFORE DELETE
			/// </summary>
			[Column("operation_desc"),           Nullable] public string? OperationDesc       { get; set; } // nvarchar(60)

			#region Associations

			/// <summary>
			/// objects (sys.objects)
			/// </summary>
			[Association(ThisKey="ObjectID", OtherKey="ObjectID", CanBeNull=false)]
			public ObjectSchema.Object Object { get; set; } = null!;

			#endregion
		}

		/// <summary>
		/// <para><strong>sys.sensitivity_classifications (Transact-SQL)</strong></para>
		/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)  √ Azure SQL Database √ Azure SQL Managed Instance √ Azure Synapse Analytics</para>
		/// <para>Returns a row for each classified item in the database.</para><br/>
		/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-sensitivity-classifications-transact-sql'>sys.sensitivity_classifications</a>.</para>
		/// </summary>
		[Table(Schema="sys", Name="sensitivity_classifications", IsView=true)]
		public partial class SensitivityClassification
		{
			/// <summary>
			/// Identifies the class of the item on which the classification exists. Will always have the value 1 (representing a column)
			/// </summary>
			[Column("class"),               NotNull    ] public int     Class             { get; set; } // int
			/// <summary>
			/// A description of the class of the item on which the classification exists. will always have the value *OBJECT_OR_COLUMN*
			/// </summary>
			[Column("class_desc"),          NotNull    ] public string  ClassDesc         { get; set; } = null!; // varchar(16)
			/// <summary>
			/// Represents the ID of the table containing the classified column, corresponding with sys.all_objects.object_id
			/// </summary>
			[Column("major_id"),            NotNull    ] public int     MajorID           { get; set; } // int
			/// <summary>
			/// Represents the ID of the column on which the classification exists, corresponding with sys.all_columns.column_id
			/// </summary>
			[Column("minor_id"),            NotNull    ] public int     MinorID           { get; set; } // int
			/// <summary>
			/// The label (human readable) assigned for the sensitivity classification
			/// </summary>
			[Column("label"),                  Nullable] public string? Label             { get; set; } // sysname
			/// <summary>
			/// An ID associated with the label, which can be used by an information protection system such as Azure Information Protection (AIP)
			/// </summary>
			[Column("label_id"),               Nullable] public string? LabelID           { get; set; } // sysname
			/// <summary>
			/// The information type (human readable) assigned for the sensitivity classification
			/// </summary>
			[Column("information_type"),       Nullable] public string? InformationType   { get; set; } // sysname
			/// <summary>
			/// An ID associated with the information type, which can be used by an information protection system such as Azure Information Protection (AIP)
			/// </summary>
			[Column("information_type_id"),    Nullable] public string? InformationTypeID { get; set; } // sysname
			/// <summary>
			/// A numerical value of the rank: <br/><br/>0 for NONE<br/>10 for LOW<br/>20 for MEDIUM<br/>30 for HIGH<br/>40 for CRITICAL
			/// </summary>
			[Column("rank"),                   Nullable] public int?    Rank              { get; set; } // int
			/// <summary>
			/// Textual representation of the rank:  <br/><br/>NONE, LOW, MEDIUM, HIGH, CRITICAL
			/// </summary>
			[Column("rank_desc"),              Nullable] public string? RankDesc          { get; set; } // sysname
		}

		/// <summary>
		/// <para><strong>sys.server_audits (Transact-SQL)</strong></para>
		/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)</para>
		/// <para>Contains one row for each SQL Server audit in a server instance. For more information, see <a href='https://docs.microsoft.com/en-us/sql/relational-databases/security/auditing/sql-server-audit-database-engine'>SQL Server Audit (Database Engine)</a>.</para><br/>
		/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-server-audits-transact-sql'>sys.server_audits</a>.</para>
		/// </summary>
		[Table(Schema="sys", Name="server_audits", IsView=true)]
		public partial class ServerAudit
		{
			/// <summary>
			/// ID of the audit.
			/// </summary>
			[Column("audit_id"),         NotNull    ] public int      AuditID        { get; set; } // int
			/// <summary>
			/// Name of the audit.
			/// </summary>
			[Column("name"),             NotNull    ] public string   Name           { get; set; } = null!; // sysname
			/// <summary>
			/// GUID for the audit that is used to enumerate audits with member Server&amp;#124;Database audit specifications during server start-up and database attach operations.
			/// </summary>
			[Column("audit_guid"),          Nullable] public Guid?    AuditGuid      { get; set; } // uniqueidentifier
			/// <summary>
			/// UTC date the audit was created.
			/// </summary>
			[Column("create_date"),      NotNull    ] public DateTime CreateDate     { get; set; } // datetime
			/// <summary>
			/// UTC date the audit was last modified.
			/// </summary>
			[Column("modify_date"),      NotNull    ] public DateTime ModifyDate     { get; set; } // datetime
			/// <summary>
			/// ID of the owner of the audit, as registered to the server.
			/// </summary>
			[Column("principal_id"),        Nullable] public int?     PrincipalID    { get; set; } // int
			/// <summary>
			/// Audit type:<br/><br/> SL - NT Security event log<br/><br/> AL - NT Application event log<br/><br/> FL - File on file system
			/// </summary>
			[Column("type"),             NotNull    ] public string   TypeColumn     { get; set; } = null!; // char(2)
			/// <summary>
			/// SECURITY LOG<br/><br/> APPICATION LOG<br/><br/> FILE
			/// </summary>
			[Column("type_desc"),           Nullable] public string?  TypeDesc       { get; set; } // nvarchar(60)
			/// <summary>
			/// On Failure to write an action entry:<br/><br/> 0 - Continue<br/><br/> 1 - Shutdown server instance<br/><br/> 2 - Fail operation
			/// </summary>
			[Column("on_failure"),          Nullable] public byte?    OnFailure      { get; set; } // tinyint
			/// <summary>
			/// On Failure to write an action entry:<br/><br/> CONTINUE<br/><br/> SHUTDOWN SERVER INSTANCE<br/><br/> FAIL_OPERATION
			/// </summary>
			[Column("on_failure_desc"),     Nullable] public string?  OnFailureDesc  { get; set; } // nvarchar(60)
			/// <summary>
			/// 0 - Disabled<br/><br/> 1 - Enabled
			/// </summary>
			[Column("is_state_enabled"),    Nullable] public byte?    IsStateEnabled { get; set; } // tinyint
			/// <summary>
			/// Maximum time, in milliseconds, to wait before writing to disk. If 0, the audit will guarantee a write before an event can continue.
			/// </summary>
			[Column("queue_delay"),         Nullable] public int?     QueueDelay     { get; set; } // int
			/// <summary>
			/// The predicate expression that is applied to the event.
			/// </summary>
			[Column("predicate"),           Nullable] public string?  Predicate      { get; set; } // nvarchar(3000)
		}

		/// <summary>
		/// <para><strong>sys.server_audit_specifications (Transact-SQL)</strong></para>
		/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)</para>
		/// <para>Contains information about the server audit specifications in a SQL Server audit on a server instance. For more information on SQL Server Audit, see <a href='https://docs.microsoft.com/en-us/sql/relational-databases/security/auditing/sql-server-audit-database-engine'>SQL Server Audit (Database Engine)</a>.</para><br/>
		/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-server-audit-specifications-transact-sql'>sys.server_audit_specifications</a>.</para>
		/// </summary>
		[Table(Schema="sys", Name="server_audit_specifications", IsView=true)]
		public partial class ServerAuditSpecification
		{
			/// <summary>
			/// Name of the server specification.
			/// </summary>
			[Column("name"),                    NotNull    ] public object Name                  { get; set; } = null!; // Sysname
			/// <summary>
			/// ID of the <strong>server_specification</strong>.
			/// </summary>
			[Column("server_specification_id"), NotNull    ] public object ServerSpecificationID { get; set; } = null!; // Int
			/// <summary>
			/// Date the audit server specification was created.
			/// </summary>
			[Column("create_date"),             NotNull    ] public object CreateDate            { get; set; } = null!; // Datetime
			/// <summary>
			/// Date the audit server specification was last modified.
			/// </summary>
			[Column("modified_date"),           NotNull    ] public object ModifiedDate          { get; set; } = null!; // Datetime
			/// <summary>
			/// Audit specification state:<br/><br/> 0 - DISABLED<br/><br/> 1 -ENABLED
			/// </summary>
			[Column("is_state_enabled"),           Nullable] public byte?  IsStateEnabled        { get; set; } // tinyint
			/// <summary>
			/// GUID for the audit that contains this specification. Used during enumeration of member server audit specifications during server startup.
			/// </summary>
			[Column("audit_guid"),                 Nullable] public Guid?  AuditGuid             { get; set; } // uniqueidentifier
		}

		/// <summary>
		/// <para><strong>sys.server_audit_specification_details (Transact-SQL)</strong></para>
		/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)</para>
		/// <para>Contains information about the server audit specification details (actions) in a SQL Server audit on a server instance. For more information, see <a href='https://docs.microsoft.com/en-us/sql/relational-databases/security/auditing/sql-server-audit-database-engine'>SQL Server Audit (Database Engine)</a>. For a list of all audit_action_id's and their names, query <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-dynamic-management-views/sys-dm-audit-actions-transact-sql'>sys.dm_audit_actions (Transact-SQL)</a>.</para><br/>
		/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-server-audit-specification-details-transact-sql'>sys.server_audit_specification_details</a>.</para>
		/// </summary>
		[Table(Schema="sys", Name="server_audit_specification_details", IsView=true)]
		public partial class ServerAuditSpecificationDetail
		{
			/// <summary>
			/// ID of the audit server specification
			/// </summary>
			[Column("server_specification_id"), NotNull    ] public int     ServerSpecificationID { get; set; } // int
			/// <summary>
			/// ID of the audit action
			/// </summary>
			[Column("audit_action_id"),         NotNull    ] public int     AuditActionID         { get; set; } // int
			/// <summary>
			/// Name of group or name of audit action
			/// </summary>
			[Column("audit_action_name"),          Nullable] public string? AuditActionName       { get; set; } // sysname
			/// <summary>
			/// Reserved
			/// </summary>
			[Column("class"),                   NotNull    ] public byte    Class                 { get; set; } // tinyint
			/// <summary>
			/// Reserved
			/// </summary>
			[Column("class_desc"),                 Nullable] public string? ClassDesc             { get; set; } // nvarchar(60)
			/// <summary>
			/// Reserved
			/// </summary>
			[Column("major_id"),                NotNull    ] public int     MajorID               { get; set; } // int
			/// <summary>
			/// Reserved
			/// </summary>
			[Column("minor_id"),                NotNull    ] public int     MinorID               { get; set; } // int
			/// <summary>
			/// Reserved
			/// </summary>
			[Column("audited_principal_id"),    NotNull    ] public int     AuditedPrincipalID    { get; set; } // int
			/// <summary>
			/// Audited result:<br/><br/> - SUCCESS AND FAILURE<br/><br/> - SUCCESS<br/><br/> - FAILURE
			/// </summary>
			[Column("audited_result"),             Nullable] public string? AuditedResult         { get; set; } // nvarchar(60)
			/// <summary>
			/// Whether the audited object is a group:<br/><br/> 0 - Not a group<br/><br/> 1 - Group
			/// </summary>
			[Column("is_group"),                   Nullable] public bool?   IsGroup               { get; set; } // bit
		}

		/// <summary>
		/// <para><strong>sys.server_file_audits (Transact-SQL)</strong></para>
		/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)</para>
		/// <para>Contains extended information about the file audit type in a SQL Server audit on a server instance. For more information, see <a href='https://docs.microsoft.com/en-us/sql/relational-databases/security/auditing/sql-server-audit-database-engine'>SQL Server Audit (Database Engine)</a>.</para><br/>
		/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-server-file-audits-transact-sql'>sys.server_file_audits</a>.</para>
		/// </summary>
		[Table(Schema="sys", Name="server_file_audits", IsView=true)]
		public partial class ServerFileAudit
		{
			/// <summary>
			/// ID of the audit.
			/// </summary>
			[Column("audit_id"),            NotNull    ] public int      AuditID           { get; set; } // int
			/// <summary>
			/// Name of the audit.
			/// </summary>
			[Column("name"),                NotNull    ] public string   Name              { get; set; } = null!; // sysname
			/// <summary>
			/// GUID of the audit.
			/// </summary>
			[Column("audit_guid"),             Nullable] public Guid?    AuditGuid         { get; set; } // uniqueidentifier
			/// <summary>
			/// UTC date when the file audit was created.
			/// </summary>
			[Column("create_date"),         NotNull    ] public DateTime CreateDate        { get; set; } // datetime
			/// <summary>
			/// UTC date when the file audit was last modified.
			/// </summary>
			[Column("modify_date"),         NotNull    ] public object   ModifyDate        { get; set; } = null!; // datatime
			/// <summary>
			/// ID of the owner of the audit as registered on the server.
			/// </summary>
			[Column("principal_id"),           Nullable] public int?     PrincipalID       { get; set; } // int
			/// <summary>
			/// Audit type:<br/><br/> SL = NT Security event log<br/><br/> AL = NT Application event log<br/><br/> FL = File on file system
			/// </summary>
			[Column("type"),                NotNull    ] public string   TypeColumn        { get; set; } = null!; // char(2)
			/// <summary>
			/// Audit type description.
			/// </summary>
			[Column("type_desc"),              Nullable] public string?  TypeDesc          { get; set; } // nvarchar(60)
			/// <summary>
			/// On Failure condition:<br/><br/> 0 = Continue<br/><br/> 1 = Shut down server instance<br/><br/> 2 = Fail operation
			/// </summary>
			[Column("on_failure"),             Nullable] public byte?    OnFailure         { get; set; } // tinyint
			/// <summary>
			/// On Failure to write an action entry:<br/><br/> CONTINUE<br/><br/> SHUTDOWN SERVER INSTANCE<br/><br/> FAIL OPERATION
			/// </summary>
			[Column("on_failure_desc"),        Nullable] public string?  OnFailureDesc     { get; set; } // nvarchar(60)
			/// <summary>
			/// 0 = Disabled<br/><br/> 1 = Enabled
			/// </summary>
			[Column("is_state_enabled"),       Nullable] public byte?    IsStateEnabled    { get; set; } // tinyint
			/// <summary>
			/// Suggested maximum time, in milliseconds, to wait before writing to disk. If 0, the audit will guarantee a write before the event can continue.
			/// </summary>
			[Column("queue_delay"),            Nullable] public int?     QueueDelay        { get; set; } // int
			/// <summary>
			/// Predicate expression that is applied to the event.
			/// </summary>
			[Column("predicate"),              Nullable] public string?  Predicate         { get; set; } // nvarchar(8000)
			/// <summary>
			/// Maximum size, in megabytes, of the audit:<br/><br/> 0 = Unlimited/Not applicable to the type of audit selected.
			/// </summary>
			[Column("max_file_size"),          Nullable] public long?    MaxFileSize       { get; set; } // bigint
			/// <summary>
			/// Maximum number of files to use with the rollover option.
			/// </summary>
			[Column("max_rollover_files"),     Nullable] public int?     MaxRolloverFiles  { get; set; } // int
			/// <summary>
			/// Maximum number of files to use without the rollover option.
			/// </summary>
			[Column("max_files"),              Nullable] public int?     MaxFiles          { get; set; } // int
			/// <summary>
			/// Amount of disk space to reserve per file.
			/// </summary>
			[Column("reserved_disk_space"), NotNull    ] public int      ReservedDiskSpace { get; set; } // int
			/// <summary>
			/// Path to where audit is located. File path for file audit, application log path for application log audit.
			/// </summary>
			[Column("log_file_path"),          Nullable] public string?  LogFilePath       { get; set; } // nvarchar(260)
			/// <summary>
			/// Base name for the log file supplied in the CREATE AUDIT DDL. An incremental number is added to the base_log_name file as a suffix to create the log file name.
			/// </summary>
			[Column("log_file_name"),          Nullable] public string?  LogFileName       { get; set; } // nvarchar(260)
		}

		/// <summary>
		/// <para><strong>sys.server_permissions (Transact-SQL)</strong></para>
		/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions) √ Azure SQL Managed Instance √ Analytics Platform System (PDW)</para>
		/// <para>Returns one row for each server-level permission.</para><br/>
		/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-server-permissions-transact-sql'>sys.server_permissions</a>.</para>
		/// </summary>
		[Table(Schema="sys", Name="server_permissions", IsView=true)]
		public partial class ServerPermission
		{
			/// <summary>
			/// Identifies class of thing on which permission exists.<br/><br/> 100 = Server<br/><br/> 101 = Server-principal<br/><br/> 105 = Endpoint<br/><br/> 108 = Availability Group
			/// </summary>
			[Column("class"),                NotNull    ] public byte    Class              { get; set; } // tinyint
			/// <summary>
			/// Description of class on which permission exists. One of the following values:<br/><br/> <strong>SERVER</strong><br/><br/> <strong>SERVER_PRINCIPAL</strong><br/><br/> <strong>ENDPOINT</strong><br/><br/> <strong>AVAILABILITY GROUP</strong>
			/// </summary>
			[Column("class_desc"),              Nullable] public string? ClassDesc          { get; set; } // nvarchar(60)
			/// <summary>
			/// ID of the securable on which permission exists, interpreted according to class. For most, this is just the kind of ID that applies to what the class represents. Interpretation for non-standard is as follows:<br/><br/> 100 = Always 0
			/// </summary>
			[Column("major_id"),             NotNull    ] public int     MajorID            { get; set; } // int
			/// <summary>
			/// Secondary ID of thing on which permission exists, interpreted according to class.
			/// </summary>
			[Column("minor_id"),             NotNull    ] public int     MinorID            { get; set; } // int
			/// <summary>
			/// Server-principal-ID to which the permissions are granted.
			/// </summary>
			[Column("grantee_principal_id"), NotNull    ] public int     GranteePrincipalID { get; set; } // int
			/// <summary>
			/// Server-principal-ID of the grantor of these permissions.
			/// </summary>
			[Column("grantor_principal_id"), NotNull    ] public int     GrantorPrincipalID { get; set; } // int
			/// <summary>
			/// Server permission type. For a list of permission types, see the next table.
			/// </summary>
			[Column("type"),                 NotNull    ] public string  TypeColumn         { get; set; } = null!; // char(4)
			/// <summary>
			/// Permission name.
			/// </summary>
			[Column("permission_name"),         Nullable] public string? PermissionName     { get; set; } // nvarchar(128)
			/// <summary>
			/// Permission state:<br/><br/> D = Deny<br/><br/> R = Revoke<br/><br/> G = Grant<br/><br/> W = Grant With Grant option
			/// </summary>
			[Column("state"),                NotNull    ] public string  State              { get; set; } = null!; // char(1)
			/// <summary>
			/// Description of permission state:<br/><br/> DENY<br/><br/> REVOKE<br/><br/> GRANT<br/><br/> GRANT_WITH_GRANT_OPTION
			/// </summary>
			[Column("state_desc"),              Nullable] public string? StateDesc          { get; set; } // nvarchar(60)
		}

		/// <summary>
		/// <para><strong>sys.server_principals (Transact-SQL)</strong></para>
		/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions) √ Azure SQL Managed Instance √ Analytics Platform System (PDW)</para>
		/// <para>Contains a row for every server-level principal.</para><br/>
		/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-server-principals-transact-sql'>sys.server_principals</a>.</para>
		/// </summary>
		[Table(Schema="sys", Name="server_principals", IsView=true)]
		public partial class ServerPrincipal
		{
			/// <summary>
			/// Name of the principal. Is unique within a server.
			/// </summary>
			[Column("name"),                  NotNull    ] public string   Name                { get; set; } = null!; // sysname
			/// <summary>
			/// ID number of the Principal. Is unique within a server.
			/// </summary>
			[Column("principal_id"),          NotNull    ] public int      PrincipalID         { get; set; } // int
			/// <summary>
			/// SID (Security-IDentifier) of the principal. If Windows principal, then it matches Windows SID.
			/// </summary>
			[Column("sid"),                      Nullable] public byte[]?  SID                 { get; set; } // varbinary(85)
			/// <summary>
			/// Principal type:<br/><br/> S = SQL login<br/><br/> U = Windows login<br/><br/> G = Windows group<br/><br/> R = Server role<br/><br/> C = Login mapped to a certificate<br/><br/> E = External Login from Azure Active Directory<br/><br/> X = External group from Azure Active Directory group or applications<br/><br/> K = Login mapped to an asymmetric key
			/// </summary>
			[Column("type"),                  NotNull    ] public string   TypeColumn          { get; set; } = null!; // char(1)
			/// <summary>
			/// Description of the principal type:<br/><br/> SQL_LOGIN<br/><br/> WINDOWS_LOGIN<br/><br/> WINDOWS_GROUP<br/><br/> SERVER_ROLE<br/><br/> CERTIFICATE_MAPPED_LOGIN<br/><br/> EXTERNAL_LOGIN<br/><br/> EXTERNAL_GROUP<br/><br/> ASYMMETRIC_KEY_MAPPED_LOGIN
			/// </summary>
			[Column("type_desc"),                Nullable] public string?  TypeDesc            { get; set; } // nvarchar(60)
			/// <summary>
			/// 1 = Login is disabled.
			/// </summary>
			[Column("is_disabled"),              Nullable] public int?     IsDisabled          { get; set; } // int
			/// <summary>
			/// Time at which the principal was created.
			/// </summary>
			[Column("create_date"),           NotNull    ] public DateTime CreateDate          { get; set; } // datetime
			/// <summary>
			/// Time at which the principal definition was last modified.
			/// </summary>
			[Column("modify_date"),           NotNull    ] public DateTime ModifyDate          { get; set; } // datetime
			/// <summary>
			/// Default database for this principal.
			/// </summary>
			[Column("default_database_name"),    Nullable] public string?  DefaultDatabaseName { get; set; } // sysname
			/// <summary>
			/// Default language for this principal.
			/// </summary>
			[Column("default_language_name"),    Nullable] public string?  DefaultLanguageName { get; set; } // sysname
			/// <summary>
			/// ID of a credential associated with this principal. If no credential is associated with this principal, credential_id will be NULL.
			/// </summary>
			[Column("credential_id"),            Nullable] public int?     CredentialID        { get; set; } // int
			/// <summary>
			/// The <strong>principal_id</strong> of the owner of a server role. NULL if the principal is not a server role.
			/// </summary>
			[Column("owning_principal_id"),      Nullable] public int?     OwningPrincipalID   { get; set; } // int
			/// <summary>
			/// Returns 1 if the principal is one of the built-in server roles with fixed permissions. For more information, see <a href='https://docs.microsoft.com/en-us/sql/relational-databases/security/authentication-access/server-level-roles'>Server-Level Roles</a>.
			/// </summary>
			[Column("is_fixed_role"),         NotNull    ] public bool     IsFixedRole         { get; set; } // bit
		}

		/// <summary>
		/// <para><strong>sys.server_role_members (Transact-SQL)</strong></para>
		/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions) √ Azure SQL Managed Instance √ Analytics Platform System (PDW)</para>
		/// <para>Returns one row for each member of each fixed and user-defined server role.</para><br/>
		/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-server-role-members-transact-sql'>sys.server_role_members</a>.</para>
		/// </summary>
		[Table(Schema="sys", Name="server_role_members", IsView=true)]
		public partial class ServerRoleMember
		{
			/// <summary>
			/// Server-Principal ID of the role.
			/// </summary>
			[Column("role_principal_id"),   NotNull] public int RolePrincipalID   { get; set; } // int
			/// <summary>
			/// Server-Principal ID of the member.
			/// </summary>
			[Column("member_principal_id"), NotNull] public int MemberPrincipalID { get; set; } // int
		}

		/// <summary>
		/// <para><strong>sys.sql_logins (Transact-SQL)</strong></para>
		/// <para><strong>APPLIES TO:</strong> (Yes) SQL Server (Yes) Azure SQL Database (No) Azure Synapse Analytics (Yes) Parallel Data Warehouse</para>
		/// <para>Returns one row for every SQL Server authentication login.</para><br/>
		/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-sql-logins-transact-sql'>sys.sql_logins</a>.</para>
		/// </summary>
		[Table(Schema="sys", Name="sql_logins", IsView=true)]
		public partial class SqlLogin
		{
			/// <summary>
			/// Name of the principal. Is unique within a server.
			/// </summary>
			[Column("name"),                  NotNull    ] public string   Name                { get; set; } = null!; // sysname
			/// <summary>
			/// ID number of the Principal. Is unique within a server.
			/// </summary>
			[Column("principal_id"),          NotNull    ] public int      PrincipalID         { get; set; } // int
			/// <summary>
			/// SID (Security-IDentifier) of the principal. If Windows principal, then it matches Windows SID.
			/// </summary>
			[Column("sid"),                      Nullable] public byte[]?  SID                 { get; set; } // varbinary(85)
			/// <summary>
			/// Principal type:<br/><br/> S = SQL login<br/><br/> U = Windows login<br/><br/> G = Windows group<br/><br/> R = Server role<br/><br/> C = Login mapped to a certificate<br/><br/> E = External Login from Azure Active Directory<br/><br/> X = External group from Azure Active Directory group or applications<br/><br/> K = Login mapped to an asymmetric key
			/// </summary>
			[Column("type"),                  NotNull    ] public string   TypeColumn          { get; set; } = null!; // char(1)
			/// <summary>
			/// Description of the principal type:<br/><br/> SQL_LOGIN<br/><br/> WINDOWS_LOGIN<br/><br/> WINDOWS_GROUP<br/><br/> SERVER_ROLE<br/><br/> CERTIFICATE_MAPPED_LOGIN<br/><br/> EXTERNAL_LOGIN<br/><br/> EXTERNAL_GROUP<br/><br/> ASYMMETRIC_KEY_MAPPED_LOGIN
			/// </summary>
			[Column("type_desc"),                Nullable] public string?  TypeDesc            { get; set; } // nvarchar(60)
			/// <summary>
			/// 1 = Login is disabled.
			/// </summary>
			[Column("is_disabled"),              Nullable] public int?     IsDisabled          { get; set; } // int
			/// <summary>
			/// Time at which the principal was created.
			/// </summary>
			[Column("create_date"),           NotNull    ] public DateTime CreateDate          { get; set; } // datetime
			/// <summary>
			/// Time at which the principal definition was last modified.
			/// </summary>
			[Column("modify_date"),           NotNull    ] public DateTime ModifyDate          { get; set; } // datetime
			/// <summary>
			/// Default database for this principal.
			/// </summary>
			[Column("default_database_name"),    Nullable] public string?  DefaultDatabaseName { get; set; } // sysname
			/// <summary>
			/// Default language for this principal.
			/// </summary>
			[Column("default_language_name"),    Nullable] public string?  DefaultLanguageName { get; set; } // sysname
			/// <summary>
			/// ID of a credential associated with this principal. If no credential is associated with this principal, credential_id will be NULL.
			/// </summary>
			[Column("credential_id"),            Nullable] public int?     CredentialID        { get; set; } // int
			/// <summary>
			/// The <strong>principal_id</strong> of the owner of a server role. NULL if the principal is not a server role.
			/// </summary>
			[Column("owning_principal_id"),   NotNull    ] public int      OwningPrincipalID   { get; set; } // int
			/// <summary>
			/// Returns 1 if the principal is one of the built-in server roles with fixed permissions. For more information, see <a href='https://docs.microsoft.com/en-us/sql/relational-databases/security/authentication-access/server-level-roles'>Server-Level Roles</a>.
			/// </summary>
			[Column("is_fixed_role"),         NotNull    ] public bool     IsFixedRole         { get; set; } // bit
			/// <summary>
			/// Password policy is checked.
			/// </summary>
			[Column("is_policy_checked"),        Nullable] public bool?    IsPolicyChecked     { get; set; } // bit
			/// <summary>
			/// Password expiration is checked.
			/// </summary>
			[Column("is_expiration_checked"),    Nullable] public bool?    IsExpirationChecked { get; set; } // bit
			/// <summary>
			/// Hash of SQL login password. Beginning with SQL Server 2012 (11.x), stored password information is calculated using SHA-512 of the salted password.
			/// </summary>
			[Column("password_hash"),            Nullable] public byte[]?  PasswordHash        { get; set; } // varbinary(256)
		}

		/// <summary>
		/// <para><strong>sys.symmetric_keys (Transact-SQL)</strong></para>
		/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions) √ Azure SQL Database √ Azure SQL Managed Instance √ Azure Synapse Analytics √ Analytics Platform System (PDW)</para>
		/// <para>Returns one row for every symmetric key created with the CREATE SYMMETRIC KEY statement.</para><br/>
		/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-symmetric-keys-transact-sql'>sys.symmetric_keys</a>.</para>
		/// </summary>
		[Table(Schema="sys", Name="symmetric_keys", IsView=true)]
		public partial class SymmetricKey
		{
			/// <summary>
			/// Name of the key. Unique within the database.
			/// </summary>
			[Column("name"),                         NotNull    ] public string   Name                       { get; set; } = null!; // sysname
			/// <summary>
			/// ID of the database principal who owns the key.
			/// </summary>
			[Column("principal_id"),                    Nullable] public int?     PrincipalID                { get; set; } // int
			/// <summary>
			/// ID of the key. Unique within the database.
			/// </summary>
			[Column("symmetric_key_id"),             NotNull    ] public int      SymmetricKeyID             { get; set; } // int
			/// <summary>
			/// Length of the key in bits.
			/// </summary>
			[Column("key_length"),                   NotNull    ] public int      KeyLength                  { get; set; } // int
			/// <summary>
			/// Algorithm used with the key:<br/><br/> R2 = RC2<br/><br/> R4 = RC4<br/><br/> D = DES<br/><br/> D3 = Triple DES<br/><br/> DT = TRIPLE_DES_3KEY<br/><br/> DX = DESX<br/><br/> A1 = AES 128<br/><br/> A2 = AES 192<br/><br/> A3 = AES 256<br/><br/> NA = EKM Key
			/// </summary>
			[Column("key_algorithm"),                NotNull    ] public string   KeyAlgorithm               { get; set; } = null!; // char(2)
			/// <summary>
			/// Description of the algorithm used with the key:<br/><br/> RC2<br/><br/> RC4<br/><br/> DES<br/><br/> Triple_DES<br/><br/> TRIPLE_DES_3KEY<br/><br/> DESX<br/><br/> AES_128<br/><br/> AES_192<br/><br/> AES_256<br/><br/> NULL (Extensible Key Management algorithms only)
			/// </summary>
			[Column("algorithm_desc"),                  Nullable] public string?  AlgorithmDesc              { get; set; } // nvarchar(60)
			/// <summary>
			/// Date the key was created.
			/// </summary>
			[Column("create_date"),                  NotNull    ] public DateTime CreateDate                 { get; set; } // datetime
			/// <summary>
			/// Date the key was modified.
			/// </summary>
			[Column("modify_date"),                  NotNull    ] public DateTime ModifyDate                 { get; set; } // datetime
			/// <summary>
			/// Globally unique identifier (GUID) associated with the key. It is auto-generated for persisted keys. GUIDs for temporary keys are derived from the user-supplied pass phrase.
			/// </summary>
			[Column("key_guid"),                        Nullable] public Guid?    KeyGuid                    { get; set; } // uniqueidentifier
			/// <summary>
			/// SHA-1 hash of the key. The hash is globally unique. For non-Extensible Key Management keys this value will be NULL.
			/// </summary>
			[Column("key_thumbprint"),                  Nullable] public object?  KeyThumbprint              { get; set; } // sql_variant
			/// <summary>
			/// Type of cryptographic provider:<br/><br/> CRYPTOGRAPHIC PROVIDER = Extensible Key Management keys<br/><br/> NULL = Non-Extensible Key Management keys
			/// </summary>
			[Column("provider_type"),                   Nullable] public string?  ProviderType               { get; set; } // nvarchar(120)
			/// <summary>
			/// GUID for the cryptographic provider. For non-Extensible Key Management keys this value will be NULL.
			/// </summary>
			[Column("cryptographic_provider_guid"),     Nullable] public Guid?    CryptographicProviderGuid  { get; set; } // uniqueidentifier
			/// <summary>
			/// Algorithm ID for the cryptographic provider. For non-Extensible Key Management keys this value will be NULL.
			/// </summary>
			[Column("cryptographic_provider_algid"),    Nullable] public object?  CryptographicProviderAlgid { get; set; } // sql_variant
		}

		/// <summary>
		/// <para><strong>sys.system_components_surface_area_configuration (Transact-SQL)</strong></para>
		/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)</para>
		/// <para>Returns one row for each executable system object that can be enabled or disabled by a surface area configuration component. For more information, see <a href='https://docs.microsoft.com/en-us/sql/relational-databases/security/surface-area-configuration'>Surface Area Configuration</a>.</para><br/>
		/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-system-components-surface-area-configuration-transact-sql'>sys.system_components_surface_area_configuration</a>.</para>
		/// </summary>
		[Table(Schema="sys", Name="system_components_surface_area_configuration", IsView=true)]
		public partial class SystemComponentsSurfaceAreaConfiguration
		{
			/// <summary>
			/// Component name. This will have the keyword collation, Latin1_General_CI_AS_KS_WS. Cannot be NULL.
			/// </summary>
			[Column("component_name"),    Nullable] public string? ComponentName { get; set; } // sysname
			/// <summary>
			/// Database that contains the object. This will have the keyword collation, Latin1_General_CI_AS_KS_WS. Must be one of the following:<br/><br/> <strong>master</strong><br/><br/> <strong>msdb</strong><br/><br/> <strong>mssqlsystemresource</strong>
			/// </summary>
			[Column("database_name"),     Nullable] public string? DatabaseName  { get; set; } // sysname
			/// <summary>
			/// Schema that contains the object. This will have the keyword collation, Latin1_General_CI_AS_KS_WS. Cannot be NULL.
			/// </summary>
			[Column("schema_name"),       Nullable] public string? SchemaName    { get; set; } // sysname
			/// <summary>
			/// Name of the object. This will have the keyword collation, Latin1_General_CI_AS_KS_WS. Cannot be NULL.
			/// </summary>
			[Column("object_name"),    NotNull    ] public string  ObjectName    { get; set; } = null!; // sysname
			/// <summary>
			/// 0 = Disabled<br/><br/> 1 = Enabled
			/// </summary>
			[Column("state"),             Nullable] public byte?   State         { get; set; } // tinyint
			/// <summary>
			/// Object type. Can be one of the following:<br/><br/> P = SQL_STORED_PROCEDURE<br/><br/> PC = CLR_STORED_PROCEDURE<br/><br/> FN = SQL_SCALAR_FUNCTION<br/><br/> FS = CLR_SCALAR_FUNCTION<br/><br/> FT = CLR_TABLE_VALUED_FUNCTION<br/><br/> IF = SQL_INLINE_TABLE_VALUED_FUNCTION<br/><br/> TF = SQL_TABLE_VALUED_FUNCTION<br/><br/> X = EXTENDED_STORED_PROCEDURE
			/// </summary>
			[Column("type"),           NotNull    ] public string  TypeColumn    { get; set; } = null!; // char(2)
			/// <summary>
			/// Friendly name description of the object type.
			/// </summary>
			[Column("type_desc"),         Nullable] public string? TypeDesc      { get; set; } // nvarchar(60)
		}

		/// <summary>
		/// <para><strong>sys.user_token (Transact-SQL)</strong></para>
		/// <para><strong>APPLIES TO:</strong> (Yes) SQL Server (Yes) Azure SQL Database (Yes) Azure Synapse Analytics (No) Parallel Data Warehouse</para>
		/// <para>Returns one row for every database principal that is part of the user token in SQL Server.</para><br/>
		/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-user-token-transact-sql'>sys.user_token</a>.</para>
		/// </summary>
		[Table(Schema="sys", Name="user_token", IsView=true)]
		public partial class UserToken
		{
			/// <summary>
			/// ID of the principal. The value is unique within database.
			/// </summary>
			[Column("principal_id"), Nullable] public int?    PrincipalID { get; set; } // int
			/// <summary>
			/// Security identifier of the principal if the principal is defined external to the database. For example, this can be a SQL Server login, Windows login, Windows Group login, or a login mapped to a certificate, otherwise, this value is NULL.
			/// </summary>
			[Column("sid"),          Nullable] public byte[]? SID         { get; set; } // varbinary(85)
			/// <summary>
			/// Name of the principal. The value is unique within database.
			/// </summary>
			[Column("name"),         Nullable] public object? Name        { get; set; } // nvarchar (128)
			/// <summary>
			/// Description of principal type. All types are mapped to <strong>sid</strong>. The value can be one of the following:<br/><br/> <c>SQL USER</c> <br/><br/> <c>WINDOWS LOGIN</c> <br/><br/> <c>WINDOWS GROUP</c> <br/><br/> <c>ROLE</c> <br/><br/> <c>APPLICATION ROLE</c> <br/><br/> <c>DATABASE ROLE</c> <br/><br/> <c>USER MAPPED TO CERTIFICATE</c> <br/><br/> <c>USER MAPPED TO ASYMMETRIC KEY</c> <br/><br/> <c>CERTIFICATE</c> <br/><br/> <c>ASYMMETRIC KEY</c>
			/// </summary>
			[Column("type"),         Nullable] public object? TypeColumn  { get; set; } // nvarchar (128)
			/// <summary>
			/// Indicates the principal participates in the evaluation of GRANT or DENY permissions, or serves as an authenticator.<br/><br/> This value can be one of the following:<br/><br/> <c>GRANT OR DENY</c> <br/><br/> <c>DENY ONLY</c> <br/><br/> <c>AUTHENTICATOR</c>
			/// </summary>
			[Column("usage"),        Nullable] public object? Usage       { get; set; } // nvarchar (128)
		}
	}

	public static partial class ServerWideConfigurationSchema
	{
		public partial class DataContext
		{
			/// <summary>
			/// <para><strong>sys.configurations (Transact-SQL)</strong></para>
			/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)</para>
			/// <para>Contains a row for each server-wide configuration option value in the system.</para><br/>
			/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-configurations-transact-sql'>sys.configurations</a>.</para>
			/// </summary>
			public ITable<Configuration>      Configurations      { get { return _dataContext.GetTable<Configuration>(); } }
			/// <summary>
			/// <para><strong>sys.time_zone_info (Transact-SQL)</strong></para>
			/// <para><strong>Applies to:</strong> √ SQL Server 2016 (13.x) and later √ Azure SQL Database √ Azure SQL Managed Instance √ Azure Synapse Analytics</para>
			/// <para>Returns information about supported time zones. All time zones installed on the computer are stored in the following registry hive:<br/>
			/// <c>KEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Time Zones</c>.</para><br/>
			/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-time-zone-info-transact-sql'>sys.time_zone_info</a>.</para>
			/// </summary>
			public ITable<TimeZoneInfo>       TimeZoneInfo        { get { return _dataContext.GetTable<TimeZoneInfo>(); } }
			/// <summary>
			/// <para><strong>sys.traces (Transact-SQL)</strong></para>
			/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)</para>
			/// <para>The <strong>sys.traces</strong> catalog view contains the current running traces on the system. This view is intended as a replacement for the <strong>fn_trace_getinfo</strong> function.<br/>
			///  For a complete list of supported trace events, see <a href='https://docs.microsoft.com/en-us/sql/relational-databases/event-classes/sql-server-event-class-reference'>SQL Server Event Class Reference</a>.<br/>
			/// <note type='important'><br/>
			/// This feature will be removed in a future version of Microsoft SQL Server. Avoid using this feature in new development work, and plan to modify applications that currently use this feature. Use Extended Event catalog views instead.<br/>
			/// </note></para><br/>
			/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-traces-transact-sql'>sys.traces</a>.</para>
			/// </summary>
			public ITable<Trace>              Traces              { get { return _dataContext.GetTable<Trace>(); } }
			/// <summary>
			/// <para><strong>sys.trace_categories (Transact-SQL)</strong></para>
			/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)</para>
			/// <para>Similar event classes are grouped by a category. Each row in the <strong>sys.trace_categories</strong> catalog view identifies a category that is unique across the server. These categories do not change for a given version of the SQL Server Database Engine.<br/>
			///  For a complete list of supported trace events, see <a href='https://docs.microsoft.com/en-us/sql/relational-databases/event-classes/sql-server-event-class-reference'>SQL Server Event Class Reference</a>.<br/>
			/// > <strong>IMPORTANT!</strong> This feature will be removed in a future version of Microsoft SQL Server. Avoid using this feature in new development work, and plan to modify applications that currently use this feature. Use Extended Event catalog views instead.</para><br/>
			/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-trace-categories-transact-sql'>sys.trace_categories</a>.</para>
			/// </summary>
			public ITable<TraceCategory>      TraceCategories     { get { return _dataContext.GetTable<TraceCategory>(); } }
			/// <summary>
			/// <para><strong>sys.trace_columns (Transact-SQL)</strong></para>
			/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)</para>
			/// <para>The <strong>sys.trace_columns</strong> catalog view contains a list of all trace event columns. These columns do not change for a given version of the SQL Server Database Engine.<br/>
			///  For a complete list of supported trace events, see <a href='https://docs.microsoft.com/en-us/sql/relational-databases/event-classes/sql-server-event-class-reference'>SQL Server Event Class Reference</a>.<br/>
			/// <note type='important'><br/>
			/// This feature will be removed in a future version of Microsoft SQL Server. Avoid using this feature in new development work, and plan to modify applications that currently use this feature. Use Extended Event catalog views instead.<br/>
			/// </note></para><br/>
			/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-trace-columns-transact-sql'>sys.trace_columns</a>.</para>
			/// </summary>
			public ITable<TraceColumn>        TraceColumns        { get { return _dataContext.GetTable<TraceColumn>(); } }
			/// <summary>
			/// <para><strong>sys.trace_events (Transact-SQL)</strong></para>
			/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)</para>
			/// <para>The <strong>sys.trace_events</strong> catalog view contains a list of all SQL trace events. These trace events do not change for a given version of the SQL Server Database Engine.<br/>
			/// > <strong>IMPORTANT!</strong> This feature will be removed in a future version of Microsoft SQL Server. Avoid using this feature in new development work, and plan to modify applications that currently use this feature. Use Extended Event catalog views instead.<br/>
			///  For more information about these trace events, see <a href='https://docs.microsoft.com/en-us/sql/relational-databases/event-classes/sql-server-event-class-reference'>SQL Server Event Class Reference</a>.</para><br/>
			/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-trace-events-transact-sql'>sys.trace_events</a>.</para>
			/// </summary>
			public ITable<TraceEvent>         TraceEvents         { get { return _dataContext.GetTable<TraceEvent>(); } }
			/// <summary>
			/// <para><strong>sys.trace_event_bindings (Transact-SQL)</strong></para>
			/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)</para>
			/// <para>The <strong>sys.trace_event_bindings</strong> catalog view contains a list of all possible usage combinations of events and columns. For each event listed in the <strong>trace_event_id</strong> column, all available columns are listed in the <strong>trace_column_id</strong> column. Not all available columns are populated each time a given event occurs. These values do not change for a given version of the SQL Server Database Engine.<br/>
			///  For a complete list of supported trace events, see <a href='https://docs.microsoft.com/en-us/sql/relational-databases/event-classes/sql-server-event-class-reference'>SQL Server Event Class Reference</a>.<br/>
			/// <note type='important'><br/>
			/// This feature will be removed in a future version of Microsoft SQL Server. Avoid using this feature in new development work, and plan to modify applications that currently use this feature. Use Extended Event catalog views instead.<br/>
			/// </note></para><br/>
			/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-trace-event-bindings-transact-sql'>sys.trace_event_bindings</a>.</para>
			/// </summary>
			public ITable<TraceEventBinding>  TraceEventBindings  { get { return _dataContext.GetTable<TraceEventBinding>(); } }
			/// <summary>
			/// <para><strong>sys.trace_subclass_values (Transact-SQL)</strong></para>
			/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)</para>
			/// <para>The <strong>sys.trace_subclass_values</strong> catalog view contains a list of named column values. These subclass values do not change for a given version of the SQL Server Database Engine.<br/>
			///  For a complete list of supported trace events, see <a href='https://docs.microsoft.com/en-us/sql/relational-databases/event-classes/sql-server-event-class-reference'>SQL Server Event Class Reference</a>.<br/>
			/// <note type='important'><br/>
			/// This feature will be removed in a future version of Microsoft SQL Server. Avoid using this feature in new development work, and plan to modify applications that currently use this feature. Use Extended Event catalog views instead.<br/>
			/// </note></para><br/>
			/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-trace-subclass-values-transact-sql'>sys.trace_subclass_values</a>.</para>
			/// </summary>
			public ITable<TraceSubclassValue> TraceSubclassValues { get { return _dataContext.GetTable<TraceSubclassValue>(); } }

			private readonly IDataContext _dataContext;

			public DataContext(IDataContext dataContext)
			{
				_dataContext = dataContext;
			}
		}

		/// <summary>
		/// <para><strong>sys.configurations (Transact-SQL)</strong></para>
		/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)</para>
		/// <para>Contains a row for each server-wide configuration option value in the system.</para><br/>
		/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-configurations-transact-sql'>sys.configurations</a>.</para>
		/// </summary>
		[Table(Schema="sys", Name="configurations", IsView=true)]
		public partial class Configuration
		{
			/// <summary>
			/// Unique ID for the configuration value.
			/// </summary>
			[Column("configuration_id"), NotNull    ] public int     ConfigurationID { get; set; } // int
			/// <summary>
			/// Name of the configuration option.
			/// </summary>
			[Column("name"),             NotNull    ] public string  Name            { get; set; } = null!; // nvarchar(35)
			/// <summary>
			/// Configured value for this option.
			/// </summary>
			[Column("value"),               Nullable] public object? Value           { get; set; } // sql_variant
			/// <summary>
			/// Minimum value for the configuration option.
			/// </summary>
			[Column("minimum"),             Nullable] public object? Minimum         { get; set; } // sql_variant
			/// <summary>
			/// Maximum value for the configuration option.
			/// </summary>
			[Column("maximum"),             Nullable] public object? Maximum         { get; set; } // sql_variant
			/// <summary>
			/// Running value currently in effect for this option.
			/// </summary>
			[Column("value_in_use"),        Nullable] public object? ValueInUse      { get; set; } // sql_variant
			/// <summary>
			/// Description of the configuration option.
			/// </summary>
			[Column("description"),      NotNull    ] public string  Description     { get; set; } = null!; // nvarchar(255)
			/// <summary>
			/// 1 = The variable that takes effect when the RECONFIGURE statement is executed.
			/// </summary>
			[Column("is_dynamic"),       NotNull    ] public bool    IsDynamic       { get; set; } // bit
			/// <summary>
			/// 1 = The variable is displayed only when the <strong>show advancedoption</strong> is set.
			/// </summary>
			[Column("is_advanced"),      NotNull    ] public bool    IsAdvanced      { get; set; } // bit
		}

		/// <summary>
		/// <para><strong>sys.time_zone_info (Transact-SQL)</strong></para>
		/// <para><strong>Applies to:</strong> √ SQL Server 2016 (13.x) and later √ Azure SQL Database √ Azure SQL Managed Instance √ Azure Synapse Analytics</para>
		/// <para>Returns information about supported time zones. All time zones installed on the computer are stored in the following registry hive:<br/>
		/// <c>KEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Time Zones</c>.</para><br/>
		/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-time-zone-info-transact-sql'>sys.time_zone_info</a>.</para>
		/// </summary>
		[Table(Schema="sys", Name="time_zone_info", IsView=true)]
		public partial class TimeZoneInfo
		{
			/// <summary>
			/// Name of the time zone in Windows standard format. For example, <strong>Cen. Australia Standard Time</strong> or <strong>Central European Standard Time</strong>.
			/// </summary>
			[Column("name"),               NotNull] public string Name             { get; set; } = null!; // sysname
			/// <summary>
			/// Current offset to UTC. For example, <strong>+01:00</strong> or <strong>-07:00</strong>.
			/// </summary>
			[Column("current_utc_offset"), NotNull] public string CurrentUtcOffset { get; set; } = null!; // nvarchar(12)
			/// <summary>
			/// True if currently observing daylight savings time.
			/// </summary>
			[Column("is_currently_dst"),   NotNull] public bool   IsCurrentlyDst   { get; set; } // bit
		}

		/// <summary>
		/// <para><strong>sys.traces (Transact-SQL)</strong></para>
		/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)</para>
		/// <para>The <strong>sys.traces</strong> catalog view contains the current running traces on the system. This view is intended as a replacement for the <strong>fn_trace_getinfo</strong> function.<br/>
		///  For a complete list of supported trace events, see <a href='https://docs.microsoft.com/en-us/sql/relational-databases/event-classes/sql-server-event-class-reference'>SQL Server Event Class Reference</a>.<br/>
		/// <note type='important'><br/>
		/// This feature will be removed in a future version of Microsoft SQL Server. Avoid using this feature in new development work, and plan to modify applications that currently use this feature. Use Extended Event catalog views instead.<br/>
		/// </note></para><br/>
		/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-traces-transact-sql'>sys.traces</a>.</para>
		/// </summary>
		[Table(Schema="sys", Name="traces", IsView=true)]
		public partial class Trace
		{
			/// <summary>
			/// Trace ID.
			/// </summary>
			[Column("id"),                  NotNull    ] public int       ID                { get; set; } // int
			/// <summary>
			/// Trace status:<br/><br/> 0 = stopped<br/><br/> 1 = running
			/// </summary>
			[Column("status"),              NotNull    ] public int       Status            { get; set; } // int
			/// <summary>
			/// Path of the trace file. This value is null when the trace is a rowset trace.
			/// </summary>
			[Column("path"),                   Nullable] public string?   Path              { get; set; } // nvarchar(260)
			/// <summary>
			/// Maximum trace file size limit in megabytes (MB). This value is null when the trace is a rowset trace.
			/// </summary>
			[Column("max_size"),               Nullable] public long?     MaxSize           { get; set; } // bigint
			/// <summary>
			/// Time to stop the running trace.
			/// </summary>
			[Column("stop_time"),              Nullable] public DateTime? StopTime          { get; set; } // datetime
			/// <summary>
			/// Maximum number of rollover files. This value is null if the Max number is not set.
			/// </summary>
			[Column("max_files"),              Nullable] public int?      MaxFiles          { get; set; } // int
			/// <summary>
			/// 1 = rowset trace.
			/// </summary>
			[Column("is_rowset"),              Nullable] public bool?     IsRowset          { get; set; } // bit
			/// <summary>
			/// 1 = rollover option is enabled.
			/// </summary>
			[Column("is_rollover"),            Nullable] public bool?     IsRollover        { get; set; } // bit
			/// <summary>
			/// 1 = shutdown option is enabled.
			/// </summary>
			[Column("is_shutdown"),            Nullable] public bool?     IsShutdown        { get; set; } // bit
			/// <summary>
			/// 1 = default trace.
			/// </summary>
			[Column("is_default"),             Nullable] public bool?     IsDefault         { get; set; } // bit
			/// <summary>
			/// Number of in-memory buffers used by the trace.
			/// </summary>
			[Column("buffer_count"),           Nullable] public int?      BufferCount       { get; set; } // int
			/// <summary>
			/// Size of each buffer (KB).
			/// </summary>
			[Column("buffer_size"),            Nullable] public int?      BufferSize        { get; set; } // int
			/// <summary>
			/// Last trace file position. This value is null when the trace is a rowset trace.
			/// </summary>
			[Column("file_position"),          Nullable] public long?     FilePosition      { get; set; } // bigint
			/// <summary>
			/// Rowset trace reader session ID. This value is null when the trace is a file trace.
			/// </summary>
			[Column("reader_spid"),            Nullable] public int?      ReaderSpid        { get; set; } // int
			/// <summary>
			/// Trace start time.
			/// </summary>
			[Column("start_time"),             Nullable] public DateTime? StartTime         { get; set; } // datetime
			/// <summary>
			/// Time the last event fired.
			/// </summary>
			[Column("last_event_time"),        Nullable] public DateTime? LastEventTime     { get; set; } // datetime
			/// <summary>
			/// Total number of events that occurred.
			/// </summary>
			[Column("event_count"),            Nullable] public long?     EventCount        { get; set; } // bigint
			/// <summary>
			/// Total number of events dropped.
			/// </summary>
			[Column("dropped_event_count"),    Nullable] public int?      DroppedEventCount { get; set; } // int
		}

		/// <summary>
		/// <para><strong>sys.trace_categories (Transact-SQL)</strong></para>
		/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)</para>
		/// <para>Similar event classes are grouped by a category. Each row in the <strong>sys.trace_categories</strong> catalog view identifies a category that is unique across the server. These categories do not change for a given version of the SQL Server Database Engine.<br/>
		///  For a complete list of supported trace events, see <a href='https://docs.microsoft.com/en-us/sql/relational-databases/event-classes/sql-server-event-class-reference'>SQL Server Event Class Reference</a>.<br/>
		/// > <strong>IMPORTANT!</strong> This feature will be removed in a future version of Microsoft SQL Server. Avoid using this feature in new development work, and plan to modify applications that currently use this feature. Use Extended Event catalog views instead.</para><br/>
		/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-trace-categories-transact-sql'>sys.trace_categories</a>.</para>
		/// </summary>
		[Table(Schema="sys", Name="trace_categories", IsView=true)]
		public partial class TraceCategory
		{
			/// <summary>
			/// Unique ID of this category. This column is also in the <strong>sys.trace_events</strong> catalog view.
			/// </summary>
			[Column("category_id"), NotNull    ] public short   CategoryID { get; set; } // smallint
			/// <summary>
			/// Unique name of this category. This parameter is not localized.
			/// </summary>
			[Column("name"),           Nullable] public string? Name       { get; set; } // nvarchar(128)
			/// <summary>
			/// Category type:<br/><br/> 0 = Normal<br/><br/> 1 = Connection<br/><br/> 2 = Error
			/// </summary>
			[Column("type"),        NotNull    ] public byte    TypeColumn { get; set; } // tinyint
		}

		/// <summary>
		/// <para><strong>sys.trace_columns (Transact-SQL)</strong></para>
		/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)</para>
		/// <para>The <strong>sys.trace_columns</strong> catalog view contains a list of all trace event columns. These columns do not change for a given version of the SQL Server Database Engine.<br/>
		///  For a complete list of supported trace events, see <a href='https://docs.microsoft.com/en-us/sql/relational-databases/event-classes/sql-server-event-class-reference'>SQL Server Event Class Reference</a>.<br/>
		/// <note type='important'><br/>
		/// This feature will be removed in a future version of Microsoft SQL Server. Avoid using this feature in new development work, and plan to modify applications that currently use this feature. Use Extended Event catalog views instead.<br/>
		/// </note></para><br/>
		/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-trace-columns-transact-sql'>sys.trace_columns</a>.</para>
		/// </summary>
		[Table(Schema="sys", Name="trace_columns", IsView=true)]
		public partial class TraceColumn
		{
			/// <summary>
			/// Unique ID of this column.
			/// </summary>
			[Column("trace_column_id"),  NotNull    ] public short   TraceColumnID  { get; set; } // smallint
			/// <summary>
			/// Unique name of this column. This parameter is not localized.
			/// </summary>
			[Column("name"),                Nullable] public string? Name           { get; set; } // nvarchar(128)
			/// <summary>
			/// Data type name of this column.
			/// </summary>
			[Column("type_name"),           Nullable] public string? TypeName       { get; set; } // nvarchar(128)
			/// <summary>
			/// Maximum data size of this column in bytes.
			/// </summary>
			[Column("max_size"),            Nullable] public int?    MaxSize        { get; set; } // int
			/// <summary>
			/// Indicates whether the column can be used in filter specification.<br/><br/> 0 = false<br/><br/> 1 = true
			/// </summary>
			[Column("is_filterable"),    NotNull    ] public bool    IsFilterable   { get; set; } // bit
			/// <summary>
			/// Indicates whether the column can be referenced in the 'repeated column' data.<br/><br/> 0 = false<br/><br/> 1 = true
			/// </summary>
			[Column("is_repeatable"),    NotNull    ] public bool    IsRepeatable   { get; set; } // bit
			/// <summary>
			/// Indicates whether this column is used as a unique key for referencing repeated data.<br/><br/> 0 = false<br/><br/> 1 = true
			/// </summary>
			[Column("is_repeated_base"), NotNull    ] public bool    IsRepeatedBase { get; set; } // bit
		}

		/// <summary>
		/// <para><strong>sys.trace_events (Transact-SQL)</strong></para>
		/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)</para>
		/// <para>The <strong>sys.trace_events</strong> catalog view contains a list of all SQL trace events. These trace events do not change for a given version of the SQL Server Database Engine.<br/>
		/// > <strong>IMPORTANT!</strong> This feature will be removed in a future version of Microsoft SQL Server. Avoid using this feature in new development work, and plan to modify applications that currently use this feature. Use Extended Event catalog views instead.<br/>
		///  For more information about these trace events, see <a href='https://docs.microsoft.com/en-us/sql/relational-databases/event-classes/sql-server-event-class-reference'>SQL Server Event Class Reference</a>.</para><br/>
		/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-trace-events-transact-sql'>sys.trace_events</a>.</para>
		/// </summary>
		[Table(Schema="sys", Name="trace_events", IsView=true)]
		public partial class TraceEvent
		{
			/// <summary>
			/// Unique ID of the event. This column is also in the <strong>sys.trace_event_bindings</strong> and <strong>sys.trace_subclass_values</strong> catalog views.
			/// </summary>
			[Column("trace_event_id"), NotNull    ] public short   TraceEventID { get; set; } // smallint
			/// <summary>
			/// Category ID of the event. This column is also in the <strong>sys.trace_categories</strong> catalog view.
			/// </summary>
			[Column("category_id"),    NotNull    ] public short   CategoryID   { get; set; } // smallint
			/// <summary>
			/// Unique name of this event. This parameter is not localized.
			/// </summary>
			[Column("name"),              Nullable] public string? Name         { get; set; } // nvarchar(128)
		}

		/// <summary>
		/// <para><strong>sys.trace_event_bindings (Transact-SQL)</strong></para>
		/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)</para>
		/// <para>The <strong>sys.trace_event_bindings</strong> catalog view contains a list of all possible usage combinations of events and columns. For each event listed in the <strong>trace_event_id</strong> column, all available columns are listed in the <strong>trace_column_id</strong> column. Not all available columns are populated each time a given event occurs. These values do not change for a given version of the SQL Server Database Engine.<br/>
		///  For a complete list of supported trace events, see <a href='https://docs.microsoft.com/en-us/sql/relational-databases/event-classes/sql-server-event-class-reference'>SQL Server Event Class Reference</a>.<br/>
		/// <note type='important'><br/>
		/// This feature will be removed in a future version of Microsoft SQL Server. Avoid using this feature in new development work, and plan to modify applications that currently use this feature. Use Extended Event catalog views instead.<br/>
		/// </note></para><br/>
		/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-trace-event-bindings-transact-sql'>sys.trace_event_bindings</a>.</para>
		/// </summary>
		[Table(Schema="sys", Name="trace_event_bindings", IsView=true)]
		public partial class TraceEventBinding
		{
			/// <summary>
			/// ID of the trace event. This column is also in the <strong>sys.trace_events</strong> catalog view.
			/// </summary>
			[Column("trace_event_id"),  NotNull] public short TraceEventID  { get; set; } // smallint
			/// <summary>
			/// ID of the trace column. This column is also in the <strong>sys.trace_columns</strong> catalog view.
			/// </summary>
			[Column("trace_column_id"), NotNull] public short TraceColumnID { get; set; } // smallint
		}

		/// <summary>
		/// <para><strong>sys.trace_subclass_values (Transact-SQL)</strong></para>
		/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)</para>
		/// <para>The <strong>sys.trace_subclass_values</strong> catalog view contains a list of named column values. These subclass values do not change for a given version of the SQL Server Database Engine.<br/>
		///  For a complete list of supported trace events, see <a href='https://docs.microsoft.com/en-us/sql/relational-databases/event-classes/sql-server-event-class-reference'>SQL Server Event Class Reference</a>.<br/>
		/// <note type='important'><br/>
		/// This feature will be removed in a future version of Microsoft SQL Server. Avoid using this feature in new development work, and plan to modify applications that currently use this feature. Use Extended Event catalog views instead.<br/>
		/// </note></para><br/>
		/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-trace-subclass-values-transact-sql'>sys.trace_subclass_values</a>.</para>
		/// </summary>
		[Table(Schema="sys", Name="trace_subclass_values", IsView=true)]
		public partial class TraceSubclassValue
		{
			/// <summary>
			/// ID of the trace event. This parameter is also in the <strong>sys.trace_events</strong> catalog view.
			/// </summary>
			[Column("trace_event_id"),  NotNull    ] public short   TraceEventID  { get; set; } // smallint
			/// <summary>
			/// ID of the trace column used for enumeration. This parameter is also in the <strong>sys.trace_columns</strong> catalog view.
			/// </summary>
			[Column("trace_column_id"), NotNull    ] public short   TraceColumnID { get; set; } // smallint
			/// <summary>
			/// Meaning of the column value.
			/// </summary>
			[Column("subclass_name"),      Nullable] public string? SubclassName  { get; set; } // nvarchar(128)
			/// <summary>
			/// Column value.
			/// </summary>
			[Column("subclass_value"),     Nullable] public short?  SubclassValue { get; set; } // smallint
		}
	}

	public static partial class ServiceBrokerSchema
	{
		public partial class DataContext
		{
			/// <summary>
			/// <para><strong>sys.conversation_endpoints (Transact-SQL)</strong></para>
			/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)</para>
			/// <para>Each side of a Service Broker conversation is represented by a conversation endpoint. This catalog view contains a row per conversation endpoint in the database.</para><br/>
			/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-conversation-endpoints-transact-sql'>sys.conversation_endpoints</a>.</para>
			/// </summary>
			public ITable<ConversationEndpoint>                ConversationEndpoints                { get { return _dataContext.GetTable<ConversationEndpoint>(); } }
			/// <summary>
			/// <para><strong>sys.conversation_groups (Transact-SQL)</strong></para>
			/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)</para>
			/// <para>This catalog view contains a row for each conversation group.</para><br/>
			/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-conversation-groups-transact-sql'>sys.conversation_groups</a>.</para>
			/// </summary>
			public ITable<ConversationGroup>                   ConversationGroups                   { get { return _dataContext.GetTable<ConversationGroup>(); } }
			/// <summary>
			/// <para><strong>sys.conversation_priorities (Transact-SQL)</strong></para>
			/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)</para>
			/// <para>Contains a row for each conversation priority created in the current database, as shown in the following table:</para><br/>
			/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-conversation-priorities-transact-sql'>sys.conversation_priorities</a>.</para>
			/// </summary>
			public ITable<ConversationPriority>                ConversationPriorities               { get { return _dataContext.GetTable<ConversationPriority>(); } }
			/// <summary>
			/// <para><strong>sys.message_type_xml_schema_collection_usages (Transact-SQL)</strong></para>
			/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)</para>
			/// <para>This catalog view returns a row for each service message type that is validated by an XML schema collection.</para><br/>
			/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-message-type-xml-schema-collection-usages-transact-sql'>sys.message_type_xml_schema_collection_usages</a>.</para>
			/// </summary>
			public ITable<MessageTypeXmlSchemaCollectionUsage> MessageTypeXmlSchemaCollectionUsages { get { return _dataContext.GetTable<MessageTypeXmlSchemaCollectionUsage>(); } }
			/// <summary>
			/// <para><strong>sys.remote_service_bindings (Transact-SQL)</strong></para>
			/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)</para>
			/// <para>This catalog view contains a row per remote service binding.</para><br/>
			/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-remote-service-bindings-transact-sql'>sys.remote_service_bindings</a>.</para>
			/// </summary>
			public ITable<RemoteServiceBinding>                RemoteServiceBindings                { get { return _dataContext.GetTable<RemoteServiceBinding>(); } }
			/// <summary>
			/// <para><strong>sys.routes (Transact-SQL)</strong></para>
			/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions) √ Azure SQL Managed Instance</para>
			/// <para>This catalog views contains one row per route. Service Broker uses routes to locate the network address for a service.</para><br/>
			/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-routes-transact-sql'>sys.routes</a>.</para>
			/// </summary>
			public ITable<Route>                               Routes                               { get { return _dataContext.GetTable<Route>(); } }
			/// <summary>
			/// <para><strong>sys.services (Transact-SQL)</strong></para>
			/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)</para>
			/// <para>This catalog view contains a row for each service in the database.</para><br/>
			/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-services-transact-sql'>sys.services</a>.</para>
			/// </summary>
			public ITable<Service>                             Services                             { get { return _dataContext.GetTable<Service>(); } }
			/// <summary>
			/// <para><strong>sys.service_contracts (Transact-SQL)</strong></para>
			/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)</para>
			/// <para>This catalog view contains a row for each contract in the database.</para><br/>
			/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-service-contracts-transact-sql'>sys.service_contracts</a>.</para>
			/// </summary>
			public ITable<ServiceContract>                     ServiceContracts                     { get { return _dataContext.GetTable<ServiceContract>(); } }
			/// <summary>
			/// <para><strong>sys.service_contract_message_usages (Transact-SQL)</strong></para>
			/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)</para>
			/// <para>This catalog view contains a row per (contract, message type) pair.</para><br/>
			/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-service-contract-message-usages-transact-sql'>sys.service_contract_message_usages</a>.</para>
			/// </summary>
			public ITable<ServiceContractMessageUsage>         ServiceContractMessageUsages         { get { return _dataContext.GetTable<ServiceContractMessageUsage>(); } }
			/// <summary>
			/// <para><strong>sys.service_contract_usages (Transact-SQL)</strong></para>
			/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)</para>
			/// <para>This catalog view contains a row per (service, contract) pair.</para><br/>
			/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-service-contract-usages-transact-sql'>sys.service_contract_usages</a>.</para>
			/// </summary>
			public ITable<ServiceContractUsage>                ServiceContractUsages                { get { return _dataContext.GetTable<ServiceContractUsage>(); } }
			/// <summary>
			/// <para><strong>sys.service_message_types (Transact-SQL)</strong></para>
			/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)</para>
			/// <para>This catalog view contains a row per message type registered in the service broker.</para><br/>
			/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-service-message-types-transact-sql'>sys.service_message_types</a>.</para>
			/// </summary>
			public ITable<ServiceMessageType>                  ServiceMessageTypes                  { get { return _dataContext.GetTable<ServiceMessageType>(); } }
			/// <summary>
			/// <para><strong>sys.service_queues (Transact-SQL)</strong></para>
			/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)</para>
			/// <para>Contains a row for each object in the database that is a service queue, with <strong>sys.objects.type</strong> = SQ.</para><br/>
			/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-service-queues-transact-sql'>sys.service_queues</a>.</para>
			/// </summary>
			public ITable<ServiceQueue>                        ServiceQueues                        { get { return _dataContext.GetTable<ServiceQueue>(); } }
			/// <summary>
			/// <para><strong>sys.service_queue_usages (Transact-SQL)</strong></para>
			/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)</para>
			/// <para>This catalog view returns a row for each reference between service and service queue. A service can only be associated with one queue. A queue can be associated with multiple services.</para><br/>
			/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-service-queue-usages-transact-sql'>sys.service_queue_usages</a>.</para>
			/// </summary>
			public ITable<ServiceQueueUsage>                   ServiceQueueUsages                   { get { return _dataContext.GetTable<ServiceQueueUsage>(); } }
			/// <summary>
			/// <para><strong>sys.transmission_queue (Transact-SQL)</strong></para>
			/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)</para>
			/// <para>This catalog view contains a row for each message in the transmission queue, as shown in the following table:</para><br/>
			/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-transmission-queue-transact-sql'>sys.transmission_queue</a>.</para>
			/// </summary>
			public ITable<TransmissionQueue>                   TransmissionQueues                   { get { return _dataContext.GetTable<TransmissionQueue>(); } }

			private readonly IDataContext _dataContext;

			public DataContext(IDataContext dataContext)
			{
				_dataContext = dataContext;
			}
		}

		/// <summary>
		/// <para><strong>sys.conversation_endpoints (Transact-SQL)</strong></para>
		/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)</para>
		/// <para>Each side of a Service Broker conversation is represented by a conversation endpoint. This catalog view contains a row per conversation endpoint in the database.</para><br/>
		/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-conversation-endpoints-transact-sql'>sys.conversation_endpoints</a>.</para>
		/// </summary>
		[Table(Schema="sys", Name="conversation_endpoints", IsView=true)]
		public partial class ConversationEndpoint
		{
			/// <summary>
			/// Identifier for this conversation endpoint. Not NULLABLE.
			/// </summary>
			[Column("conversation_handle"),             NotNull    ] public Guid     ConversationHandle           { get; set; } // uniqueidentifier
			/// <summary>
			/// Identifier for the conversation. This identifier is shared by both participants in the conversation. This together with the is_initiator column is unique within the database. Not NULLABLE.
			/// </summary>
			[Column("conversation_id"),                 NotNull    ] public Guid     ConversationID               { get; set; } // uniqueidentifier
			/// <summary>
			/// Whether this endpoint is the initiator or the target of the conversation.  Not NULLABLE.<br/><br/> 1 = Initiator<br/><br/> 0 = Target
			/// </summary>
			[Column("is_initiator"),                    NotNull    ] public byte     IsInitiator                  { get; set; } // tinyint
			/// <summary>
			/// Identifier of the contract for this conversation. Not NULLABLE.
			/// </summary>
			[Column("service_contract_id"),             NotNull    ] public int      ServiceContractID            { get; set; } // int
			/// <summary>
			/// Identifier for the conversation group this conversation belongs to. Not NULLABLE.
			/// </summary>
			[Column("conversation_group_id"),           NotNull    ] public Guid     ConversationGroupID          { get; set; } // uniqueidentifier
			/// <summary>
			/// Identifier for the service for this side of the conversation. Not NULLABLE.
			/// </summary>
			[Column("service_id"),                      NotNull    ] public int      ServiceID                    { get; set; } // int
			/// <summary>
			/// Expiration date/time for this conversation. Not NULLABLE.
			/// </summary>
			[Column("lifetime"),                        NotNull    ] public DateTime Lifetime                     { get; set; } // datetime
			/// <summary>
			/// The current state of the conversation. Not NULLABLE. One of:<br/><br/> SO   Started outbound. SQL Server processed a BEGIN CONVERSATION for this conversation, but no messages have yet been sent.<br/><br/> SI   Started inbound. Another instance started a new conversation with SQL Server, but SQL Server has not yet completely received the first message. SQL Server may create the conversation in this state if the first message is fragmented or SQL Server receives messages out of order. However, SQL Server might create the conversation in the CO (conversing) state if the first transmission received for the conversation contains the entire first message.<br/><br/> CO   Conversing. The conversation is established, and both sides of the conversation may send messages. Most of the communication for a typical service takes place when the conversation is in this state.<br/><br/> DI   Disconnected inbound. The remote side of the conversation has issued an END CONVERSATION. The conversation remains in this state until the local side of the conversation issues an END CONVERSATION. An application might still receive messages for the conversation. Because the remote side of the conversation has ended the conversation, an application cannot send messages on this conversation. When an application issues an END CONVERSATION, the conversation moves to the CD (Closed) state.<br/><br/> DO   Disconnected outbound. The local side of the conversation has issued an END CONVERSATION. The conversation remains in this state until the remote side of the conversation acknowledges the END CONVERSATION. An application cannot send or receive messages for the conversation. When the remote side of the conversation acknowledges the END CONVERSATION, the conversation moves to the CD (Closed) state.<br/><br/> ER   Error. An error has occurred on this endpoint. The error message is placed in the application queue. If the application queue is empty, this indicates that the application already consumed the error message.<br/><br/> CD   Closed. The conversation endpoint is no longer in use.
			/// </summary>
			[Column("state"),                           NotNull    ] public string   State                        { get; set; } = null!; // char(2)
			/// <summary>
			/// Description of endpoint conversation state. This column is NULLABLE. One of:<br/><br/> <strong>STARTED_OUTBOUND</strong><br/><br/> <strong>STARTED_INBOUND</strong><br/><br/> <strong>CONVERSING</strong><br/><br/> <strong>DISCONNECTED_INBOUND</strong><br/><br/> <strong>DISCONNECTED_OUTBOUND</strong><br/><br/> <strong>CLOSED</strong><br/><br/> <strong>ERROR</strong>
			/// </summary>
			[Column("state_desc"),                         Nullable] public string?  StateDesc                    { get; set; } // nvarchar(60)
			/// <summary>
			/// Name of the service on the remote side of conversation. Not NULLABLE.
			/// </summary>
			[Column("far_service"),                     NotNull    ] public string   FarService                   { get; set; } = null!; // nvarchar(256)
			/// <summary>
			/// The broker instance for the remote side of the conversation. NULLABLE.
			/// </summary>
			[Column("far_broker_instance"),                Nullable] public string?  FarBrokerInstance            { get; set; } // nvarchar(128)
			/// <summary>
			/// Identifier of the principal whose certificate is used by the local side of the dialog. Not NULLABLE.
			/// </summary>
			[Column("principal_id"),                    NotNull    ] public int      PrincipalID                  { get; set; } // int
			/// <summary>
			/// Identifier of the user whose certificate is used by the remote side of the dialog. Not NULLABLE.
			/// </summary>
			[Column("far_principal_id"),                NotNull    ] public int      FarPrincipalID               { get; set; } // int
			/// <summary>
			/// Identifier for outbound encryption key for this dialog. Not NULLABLE.
			/// </summary>
			[Column("outbound_session_key_identifier"), NotNull    ] public Guid     OutboundSessionKeyIdentifier { get; set; } // uniqueidentifier
			/// <summary>
			/// Identifier for inbound encryption key for this dialog. Not NULLABLE.
			/// </summary>
			[Column("inbound_session_key_identifier"),  NotNull    ] public Guid     InboundSessionKeyIdentifier  { get; set; } // uniqueidentifier
			/// <summary>
			/// Time at the local session key was created. Not NULLABLE.
			/// </summary>
			[Column("security_timestamp"),              NotNull    ] public DateTime SecurityTimestamp            { get; set; } // datetime
			/// <summary>
			/// The time at which the conversation timer for this dialog sends a DialogTimer message. Not NULLABLE.
			/// </summary>
			[Column("dialog_timer"),                    NotNull    ] public DateTime DialogTimer                  { get; set; } // datetime
			/// <summary>
			/// Next message number in the send sequence. Not NULLABLE.
			/// </summary>
			[Column("send_sequence"),                   NotNull    ] public long     SendSequence                 { get; set; } // bigint
			/// <summary>
			/// Internal transaction ID of last transaction to send a message. Not NULLABLE.
			/// </summary>
			[Column("last_send_tran_id"),               NotNull    ] public byte[]   LastSendTranID               { get; set; } = null!; // binary(6)
			/// <summary>
			/// The sequence number of the End Dialog message. Not NULLABLE.
			/// </summary>
			[Column("end_dialog_sequence"),             NotNull    ] public long     EndDialogSequence            { get; set; } // bigint
			/// <summary>
			/// Next message number expected in message receive sequence. Not NULLABLE.
			/// </summary>
			[Column("receive_sequence"),                NotNull    ] public long     ReceiveSequence              { get; set; } // bigint
			/// <summary>
			/// Next message fragment number expected in message receive sequence. Not NULLABLE.
			/// </summary>
			[Column("receive_sequence_frag"),           NotNull    ] public int      ReceiveSequenceFrag          { get; set; } // int
			/// <summary>
			/// The sequence number of the last system message for this dialog. Not NULLABLE.
			/// </summary>
			[Column("system_sequence"),                 NotNull    ] public long     SystemSequence               { get; set; } // bigint
			/// <summary>
			/// The sequence number of the first message in the out of order messages for this dialog. Not NULLABLE.
			/// </summary>
			[Column("first_out_of_order_sequence"),     NotNull    ] public long     FirstOutOfOrderSequence      { get; set; } // bigint
			/// <summary>
			/// The sequence number of the last message in the out of order messages for this dialog. Not NULLABLE.
			/// </summary>
			[Column("last_out_of_order_sequence"),      NotNull    ] public long     LastOutOfOrderSequence       { get; set; } // bigint
			/// <summary>
			/// Sequence number of the last message in the out of order fragments for this dialog. Not NULLABLE.
			/// </summary>
			[Column("last_out_of_order_frag"),          NotNull    ] public int      LastOutOfOrderFrag           { get; set; } // int
			/// <summary>
			/// 1 if this is a system dialog. Not NULLABLE.
			/// </summary>
			[Column("is_system"),                       NotNull    ] public bool     IsSystem                     { get; set; } // bit
			/// <summary>
			/// The conversation priority that is assigned to this conversation endpoint. Not NULLABLE.
			/// </summary>
			[Column("priority"),                        NotNull    ] public byte     Priority                     { get; set; } // tinyint
		}

		/// <summary>
		/// <para><strong>sys.conversation_groups (Transact-SQL)</strong></para>
		/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)</para>
		/// <para>This catalog view contains a row for each conversation group.</para><br/>
		/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-conversation-groups-transact-sql'>sys.conversation_groups</a>.</para>
		/// </summary>
		[Table(Schema="sys", Name="conversation_groups", IsView=true)]
		public partial class ConversationGroup
		{
			/// <summary>
			/// Identifier for the conversation group. Not NULLABLE.
			/// </summary>
			[Column("conversation_group_id"), NotNull    ] public Guid  ConversationGroupID { get; set; } // uniqueidentifier
			/// <summary>
			/// Identifier of the service for conversations in this group. Not NULLABLE.
			/// </summary>
			[Column("service_id"),            NotNull    ] public int   ServiceID           { get; set; } // int
			/// <summary>
			/// Indicates whether this is a system instance or not. NULLABLE.
			/// </summary>
			[Column("is_system"),                Nullable] public bool? IsSystem            { get; set; } // bit
		}

		/// <summary>
		/// <para><strong>sys.conversation_priorities (Transact-SQL)</strong></para>
		/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)</para>
		/// <para>Contains a row for each conversation priority created in the current database, as shown in the following table:</para><br/>
		/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-conversation-priorities-transact-sql'>sys.conversation_priorities</a>.</para>
		/// </summary>
		[Table(Schema="sys", Name="conversation_priorities", IsView=true)]
		public partial class ConversationPriority
		{
			/// <summary>
			/// A number that uniquely identifies the conversation priority. Not NULLABLE.
			/// </summary>
			[Column("priority_id"),         NotNull    ] public int     PriorityID        { get; set; } // int
			/// <summary>
			/// Name of the conversation priority. Not NULLABLE.
			/// </summary>
			[Column("name"),                NotNull    ] public string  Name              { get; set; } = null!; // sysname
			/// <summary>
			/// The identifier of the contract that is specified for the conversation priority. This can be joined on the service_contract_id column in sys.service_contracts. NULLABLE.
			/// </summary>
			[Column("service_contract_id"),    Nullable] public int?    ServiceContractID { get; set; } // int
			/// <summary>
			/// The identifier of the service that is specified as the local service for the conversation priority. This column can be joined on the service_id column in sys.services. NULLABLE.
			/// </summary>
			[Column("local_service_id"),       Nullable] public int?    LocalServiceID    { get; set; } // int
			/// <summary>
			/// The name of the service that is specified as the remote service for the conversation priority. NULLABLE.
			/// </summary>
			[Column("remote_service_name"),    Nullable] public string? RemoteServiceName { get; set; } // nvarchar(256)
			/// <summary>
			/// The priority level that is specified in this conversation priority. Not NULLABLE.
			/// </summary>
			[Column("priority"),            NotNull    ] public byte    Priority          { get; set; } // tinyint
		}

		/// <summary>
		/// <para><strong>sys.message_type_xml_schema_collection_usages (Transact-SQL)</strong></para>
		/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)</para>
		/// <para>This catalog view returns a row for each service message type that is validated by an XML schema collection.</para><br/>
		/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-message-type-xml-schema-collection-usages-transact-sql'>sys.message_type_xml_schema_collection_usages</a>.</para>
		/// </summary>
		[Table(Schema="sys", Name="message_type_xml_schema_collection_usages", IsView=true)]
		public partial class MessageTypeXmlSchemaCollectionUsage
		{
			/// <summary>
			/// The ID of the service message type. Not NULLABLE.
			/// </summary>
			[Column("message_type_id"),   NotNull] public int MessageTypeID   { get; set; } // int
			/// <summary>
			/// The ID of the collection containing the validating XML schema namespace. Not NULLABLE.
			/// </summary>
			[Column("xml_collection_id"), NotNull] public int XmlCollectionID { get; set; } // int
		}

		/// <summary>
		/// <para><strong>sys.remote_service_bindings (Transact-SQL)</strong></para>
		/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)</para>
		/// <para>This catalog view contains a row per remote service binding.</para><br/>
		/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-remote-service-bindings-transact-sql'>sys.remote_service_bindings</a>.</para>
		/// </summary>
		[Table(Schema="sys", Name="remote_service_bindings", IsView=true)]
		public partial class RemoteServiceBinding
		{
			/// <summary>
			/// Name of this remote service binding. Not NULLABLE.
			/// </summary>
			[Column("name"),                      NotNull    ] public string  Name                   { get; set; } = null!; // sysname
			/// <summary>
			/// ID of this remote service binding. Not NULLABLE.
			/// </summary>
			[Column("remote_service_binding_id"), NotNull    ] public int     RemoteServiceBindingID { get; set; } // int
			/// <summary>
			/// ID of the database principal that owns this remote service binding. NULLABLE.
			/// </summary>
			[Column("principal_id"),                 Nullable] public int?    PrincipalID            { get; set; } // int
			/// <summary>
			/// Name of the remote service that this binding applies to. NULLABLE.
			/// </summary>
			[Column("remote_service_name"),          Nullable] public string? RemoteServiceName      { get; set; } // nvarchar(256)
			/// <summary>
			/// ID of the contract that this binding applies to. A value of 0 is a wildcard that means this binding applies to all contracts for the service. Not NULLABLE.
			/// </summary>
			[Column("service_contract_id"),       NotNull    ] public int     ServiceContractID      { get; set; } // int
			/// <summary>
			/// ID for the user specified in the remote service binding. Service Broker uses a certificate owned by this user for communicating with the specified service on the specified contracts. NULLABLE.
			/// </summary>
			[Column("remote_principal_id"),          Nullable] public int?    RemotePrincipalID      { get; set; } // int
			/// <summary>
			/// This remote service binding uses ANONYMOUS security. The identity of the user that begins the conversation is not provided to the target service. Not NULLABLE.
			/// </summary>
			[Column("is_anonymous_on"),           NotNull    ] public bool    IsAnonymousOn          { get; set; } // bit
		}

		/// <summary>
		/// <para><strong>sys.routes (Transact-SQL)</strong></para>
		/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions) √ Azure SQL Managed Instance</para>
		/// <para>This catalog views contains one row per route. Service Broker uses routes to locate the network address for a service.</para><br/>
		/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-routes-transact-sql'>sys.routes</a>.</para>
		/// </summary>
		[Table(Schema="sys", Name="routes", IsView=true)]
		public partial class Route
		{
			/// <summary>
			/// Name of the route, unique within the database. Not NULLABLE.
			/// </summary>
			[Column("name"),                NotNull    ] public string    Name              { get; set; } = null!; // sysname
			/// <summary>
			/// Identifier for the route. Not NULLABLE.
			/// </summary>
			[Column("route_id"),            NotNull    ] public int       RouteID           { get; set; } // int
			/// <summary>
			/// Identifier for the database principal that owns the route. NULLABLE.
			/// </summary>
			[Column("principal_id"),           Nullable] public int?      PrincipalID       { get; set; } // int
			/// <summary>
			/// Name of the remote service. NULLABLE.
			/// </summary>
			[Column("remote_service_name"),    Nullable] public string?   RemoteServiceName { get; set; } // nvarchar(256)
			/// <summary>
			/// Identifier of the broker that hosts the remote service. NULLABLE.
			/// </summary>
			[Column("broker_instance"),        Nullable] public string?   BrokerInstance    { get; set; } // nvarchar(128)
			/// <summary>
			/// The date and time when the route expires. Notice that this value does not use the local time zone. Instead, the value shows the expiration time for UTC. NULLABLE.
			/// </summary>
			[Column("lifetime"),               Nullable] public DateTime? Lifetime          { get; set; } // datetime
			/// <summary>
			/// Network address to which Service Broker sends messages for the remote service. NULLABLE. For SQL Managed Instance, address must be local.
			/// </summary>
			[Column("address"),                Nullable] public string?   Address           { get; set; } // nvarchar(256)
			/// <summary>
			/// Network address of the mirroring partner for the server specified in the address. NULLABLE.
			/// </summary>
			[Column("mirror_address"),         Nullable] public string?   MirrorAddress     { get; set; } // nvarchar(256)
		}

		/// <summary>
		/// <para><strong>sys.services (Transact-SQL)</strong></para>
		/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)</para>
		/// <para>This catalog view contains a row for each service in the database.</para><br/>
		/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-services-transact-sql'>sys.services</a>.</para>
		/// </summary>
		[Table(Schema="sys", Name="services", IsView=true)]
		public partial class Service
		{
			/// <summary>
			/// Case-sensitive name of service, unique within the database. Not NULLABLE.
			/// </summary>
			[Column("name"),             NotNull    ] public string Name           { get; set; } = null!; // sysname
			/// <summary>
			/// Identifier of the service. Not NULLABLE.
			/// </summary>
			[Column("service_id"),       NotNull    ] public int    ServiceID      { get; set; } // int
			/// <summary>
			/// Identifier for the database principal that owns this service. NULLABLE.
			/// </summary>
			[Column("principal_id"),        Nullable] public int?   PrincipalID    { get; set; } // int
			/// <summary>
			/// Object id for the queue that this service uses. Not NULLABLE.
			/// </summary>
			[Column("service_queue_id"), NotNull    ] public int    ServiceQueueID { get; set; } // int
		}

		/// <summary>
		/// <para><strong>sys.service_contracts (Transact-SQL)</strong></para>
		/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)</para>
		/// <para>This catalog view contains a row for each contract in the database.</para><br/>
		/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-service-contracts-transact-sql'>sys.service_contracts</a>.</para>
		/// </summary>
		[Table(Schema="sys", Name="service_contracts", IsView=true)]
		public partial class ServiceContract
		{
			/// <summary>
			/// Name of the contract, unique within the database. Not NULLABLE.
			/// </summary>
			[Column("name"),                NotNull    ] public string Name              { get; set; } = null!; // sysname
			/// <summary>
			/// Identifier of the contract. Not NULLABLE.
			/// </summary>
			[Column("service_contract_id"), NotNull    ] public int    ServiceContractID { get; set; } // int
			/// <summary>
			/// Identifier for the database principal that owns this contract. NULLABLE.
			/// </summary>
			[Column("principal_id"),           Nullable] public int?   PrincipalID       { get; set; } // int
		}

		/// <summary>
		/// <para><strong>sys.service_contract_message_usages (Transact-SQL)</strong></para>
		/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)</para>
		/// <para>This catalog view contains a row per (contract, message type) pair.</para><br/>
		/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-service-contract-message-usages-transact-sql'>sys.service_contract_message_usages</a>.</para>
		/// </summary>
		[Table(Schema="sys", Name="service_contract_message_usages", IsView=true)]
		public partial class ServiceContractMessageUsage
		{
			/// <summary>
			/// Identifier of the contract using the message type. Not NULLABLE.
			/// </summary>
			[Column("service_contract_id"),  NotNull] public int  ServiceContractID { get; set; } // int
			/// <summary>
			/// Identifier of the message type used by the contract. Not NULLABLE.
			/// </summary>
			[Column("message_type_id"),      NotNull] public int  MessageTypeID     { get; set; } // int
			/// <summary>
			/// Message type can be sent by the conversation initiator. Not NULLABLE.
			/// </summary>
			[Column("is_sent_by_initiator"), NotNull] public bool IsSentByInitiator { get; set; } // bit
			/// <summary>
			/// Message type can be sent by the conversation target. Not NULLABLE.
			/// </summary>
			[Column("is_sent_by_target"),    NotNull] public bool IsSentByTarget    { get; set; } // bit
		}

		/// <summary>
		/// <para><strong>sys.service_contract_usages (Transact-SQL)</strong></para>
		/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)</para>
		/// <para>This catalog view contains a row per (service, contract) pair.</para><br/>
		/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-service-contract-usages-transact-sql'>sys.service_contract_usages</a>.</para>
		/// </summary>
		[Table(Schema="sys", Name="service_contract_usages", IsView=true)]
		public partial class ServiceContractUsage
		{
			/// <summary>
			/// Identifier of the service using the contract. Not NULLABLE.
			/// </summary>
			[Column("service_id"),          NotNull] public int ServiceID         { get; set; } // int
			/// <summary>
			/// Identifier of the contract used by the service. Not NULLABLE.
			/// </summary>
			[Column("service_contract_id"), NotNull] public int ServiceContractID { get; set; } // int
		}

		/// <summary>
		/// <para><strong>sys.service_message_types (Transact-SQL)</strong></para>
		/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)</para>
		/// <para>This catalog view contains a row per message type registered in the service broker.</para><br/>
		/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-service-message-types-transact-sql'>sys.service_message_types</a>.</para>
		/// </summary>
		[Table(Schema="sys", Name="service_message_types", IsView=true)]
		public partial class ServiceMessageType
		{
			/// <summary>
			/// Name of message type, unique within the database. Not NULLABLE.
			/// </summary>
			[Column("name"),              NotNull    ] public string  Name            { get; set; } = null!; // sysname
			/// <summary>
			/// Identifier of the message type, unique within the database. Not NULLABLE.
			/// </summary>
			[Column("message_type_id"),   NotNull    ] public int     MessageTypeID   { get; set; } // int
			/// <summary>
			/// Identifier for the database principal that owns this message type. NULLABLE.
			/// </summary>
			[Column("principal_id"),         Nullable] public int?    PrincipalID     { get; set; } // int
			/// <summary>
			/// Validation done by Broker prior to sending messages of this type. Not NULLABLE. One of:<br/><br/> N = None<br/><br/> X = XML<br/><br/> E = Empty
			/// </summary>
			[Column("validation"),        NotNull    ] public string  Validation      { get; set; } = null!; // char(2)
			/// <summary>
			/// Description of the validation done by Broker prior to sending messages of this type. NULLABLE. One of:<br/><br/> NONE<br/><br/> XML<br/><br/> EMPTY
			/// </summary>
			[Column("validation_desc"),      Nullable] public string? ValidationDesc  { get; set; } // nvarchar(60)
			/// <summary>
			/// For validation that uses an XML schema, the identifier for the schema collection used.<br/><br/> Otherwise, NULL.
			/// </summary>
			[Column("xml_collection_id"),    Nullable] public int?    XmlCollectionID { get; set; } // int
		}

		/// <summary>
		/// <para><strong>sys.service_queues (Transact-SQL)</strong></para>
		/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)</para>
		/// <para>Contains a row for each object in the database that is a service queue, with <strong>sys.objects.type</strong> = SQ.</para><br/>
		/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-service-queues-transact-sql'>sys.service_queues</a>.</para>
		/// </summary>
		[Table(Schema="sys", Name="service_queues", IsView=true)]
		public partial class ServiceQueue
		{
			/// <summary>
			/// Object name.
			/// </summary>
			[Column("name"),                               NotNull    ] public string   Name                           { get; set; } = null!; // sysname
			/// <summary>
			/// Object identification number. Is unique within a database.
			/// </summary>
			[Column("object_id"),                          NotNull    ] public int      ObjectID                       { get; set; } // int
			/// <summary>
			/// ID of the individual owner, if different from the schema owner. By default, schema-contained objects are owned by the schema owner. However, an alternate owner can be specified by using the ALTER AUTHORIZATION statement to change ownership.<br/><br/> Is NULL if there is no alternate individual owner.<br/><br/> Is NULL if the object type is one of the following:<br/><br/> C = CHECK constraint<br/><br/> D = DEFAULT (constraint or stand-alone)<br/><br/> F = FOREIGN KEY constraint<br/><br/> PK = PRIMARY KEY constraint<br/><br/> R = Rule (old-style, stand-alone)<br/><br/> TA = Assembly (CLR-integration) trigger<br/><br/> TR = SQL trigger<br/><br/> UQ = UNIQUE constraint<br/><br/> EC = Edge constraint
			/// </summary>
			[Column("principal_id"),                          Nullable] public int?     PrincipalID                    { get; set; } // int
			/// <summary>
			/// ID of the schema that the object is contained in.<br/><br/> Schema-scoped system objects are always contained in the sys or INFORMATION_SCHEMA schemas.
			/// </summary>
			[Column("schema_id"),                          NotNull    ] public int      SchemaID                       { get; set; } // int
			/// <summary>
			/// ID of the object to which this object belongs.<br/><br/> 0 = Not a child object.
			/// </summary>
			[Column("parent_object_id"),                   NotNull    ] public int      ParentObjectID                 { get; set; } // int
			/// <summary>
			/// Object type:<br/><br/> AF = Aggregate function (CLR)<br/><br/> C = CHECK constraint<br/><br/> D = DEFAULT (constraint or stand-alone)<br/><br/> F = FOREIGN KEY constraint<br/><br/> FN = SQL scalar function<br/><br/> FS = Assembly (CLR) scalar-function<br/><br/> FT = Assembly (CLR) table-valued function<br/><br/> IF = SQL inline table-valued function<br/><br/> IT = Internal table<br/><br/> P = SQL Stored Procedure<br/><br/> PC = Assembly (CLR) stored-procedure<br/><br/> PG = Plan guide<br/><br/> PK = PRIMARY KEY constraint<br/><br/> R = Rule (old-style, stand-alone)<br/><br/> RF = Replication-filter-procedure<br/><br/> S = System base table<br/><br/> SN = Synonym<br/><br/> SO = Sequence object<br/><br/> U = Table (user-defined)<br/><br/> V = View<br/><br/> EC = Edge constraint <br/><br/> <br/><br/> <strong>Applies to</strong>: SQL Server 2012 (11.x) and later.<br/><br/> SQ = Service queue<br/><br/> TA = Assembly (CLR) DML trigger<br/><br/> TF = SQL table-valued-function<br/><br/> TR = SQL DML trigger<br/><br/> TT = Table type<br/><br/> UQ = UNIQUE constraint<br/><br/> X = Extended stored procedure<br/><br/> <br/><br/> <strong>Applies to</strong>: SQL Server 2014 (12.x) and later, Azure SQL Database, Azure Synapse Analytics, Analytics Platform System (PDW).<br/><br/> ST = STATS_TREE<br/><br/> <br/><br/> <strong>Applies to</strong>: SQL Server 2016 (13.x) and later, Azure SQL Database, Azure Synapse Analytics, Analytics Platform System (PDW).<br/><br/> ET = External Table
			/// </summary>
			[Column("type"),                                  Nullable] public string?  TypeColumn                     { get; set; } // char(2)
			/// <summary>
			/// Description of the object type:<br/><br/> AGGREGATE_FUNCTION<br/><br/> CHECK_CONSTRAINT<br/><br/> CLR_SCALAR_FUNCTION<br/><br/> CLR_STORED_PROCEDURE<br/><br/> CLR_TABLE_VALUED_FUNCTION<br/><br/> CLR_TRIGGER<br/><br/> DEFAULT_CONSTRAINT<br/><br/> EXTENDED_STORED_PROCEDURE<br/><br/> FOREIGN_KEY_CONSTRAINT<br/><br/> INTERNAL_TABLE<br/><br/> PLAN_GUIDE<br/><br/> PRIMARY_KEY_CONSTRAINT<br/><br/> REPLICATION_FILTER_PROCEDURE<br/><br/> RULE<br/><br/> SEQUENCE_OBJECT<br/><br/> <br/><br/> <strong>Applies to</strong>: SQL Server 2012 (11.x) and later.<br/><br/>  SERVICE_QUEUE<br/><br/> SQL_INLINE_TABLE_VALUED_FUNCTION<br/><br/> SQL_SCALAR_FUNCTION<br/><br/> SQL_STORED_PROCEDURE<br/><br/> SQL_TABLE_VALUED_FUNCTION<br/><br/> SQL_TRIGGER<br/><br/> SYNONYM<br/><br/> SYSTEM_TABLE<br/><br/> TABLE_TYPE<br/><br/> UNIQUE_CONSTRAINT<br/><br/> USER_TABLE<br/><br/> VIEW
			/// </summary>
			[Column("type_desc"),                             Nullable] public string?  TypeDesc                       { get; set; } // nvarchar(60)
			/// <summary>
			/// Date the object was created.
			/// </summary>
			[Column("create_date"),                        NotNull    ] public DateTime CreateDate                     { get; set; } // datetime
			/// <summary>
			/// Date the object was last modified by using an ALTER statement. If the object is a table or a view, modify_date also changes when an index on the table or view is created or altered.
			/// </summary>
			[Column("modify_date"),                        NotNull    ] public DateTime ModifyDate                     { get; set; } // datetime
			/// <summary>
			/// Object is created by an internal SQL Server component.
			/// </summary>
			[Column("is_ms_shipped"),                      NotNull    ] public bool     IsMSShipped                    { get; set; } // bit
			/// <summary>
			/// Object is published.
			/// </summary>
			[Column("is_published"),                       NotNull    ] public bool     IsPublished                    { get; set; } // bit
			/// <summary>
			/// Only the schema of the object is published.
			/// </summary>
			[Column("is_schema_published"),                NotNull    ] public bool     IsSchemaPublished              { get; set; } // bit
			/// <summary>
			/// Maximum number of the concurrent readers allowed in the queue.
			/// </summary>
			[Column("max_readers"),                           Nullable] public short?   MaxReaders                     { get; set; } // smallint
			/// <summary>
			/// Three-part name of the activation procedure.
			/// </summary>
			[Column("activation_procedure"),                  Nullable] public string?  ActivationProcedure            { get; set; } // nvarchar(776)
			/// <summary>
			/// ID of the EXECUTE AS database principal.<br/><br/> NULL by default or if EXECUTE AS CALLER.<br/><br/> ID of the specified principal if EXECUTE AS SELF EXECUTE AS &lt;principal&gt;.<br/><br/> -2 = EXECUTE AS OWNER.
			/// </summary>
			[Column("execute_as_principal_id"),               Nullable] public int?     ExecuteAsPrincipalID           { get; set; } // int
			/// <summary>
			/// 1 = Activation is enabled.
			/// </summary>
			[Column("is_activation_enabled"),              NotNull    ] public bool     IsActivationEnabled            { get; set; } // bit
			/// <summary>
			/// 1 = Receive is enabled.
			/// </summary>
			[Column("is_receive_enabled"),                 NotNull    ] public bool     IsReceiveEnabled               { get; set; } // bit
			/// <summary>
			/// 1 = Enqueue is enabled.
			/// </summary>
			[Column("is_enqueue_enabled"),                 NotNull    ] public bool     IsEnqueueEnabled               { get; set; } // bit
			/// <summary>
			/// 1 = Messages are retained until dialog end.
			/// </summary>
			[Column("is_retention_enabled"),               NotNull    ] public bool     IsRetentionEnabled             { get; set; } // bit
			/// <summary>
			/// <strong>Applies to</strong>: SQL Server 2012 (11.x) and later.<br/><br/> 1 = Poison message handling is enabled.
			/// </summary>
			[Column("is_poison_message_handling_enabled"),    Nullable] public bool?    IsPoisonMessageHandlingEnabled { get; set; } // bit

			#region Associations

			/// <summary>
			/// objects (sys.objects)
			/// </summary>
			[Association(ThisKey="ObjectID", OtherKey="ObjectID", CanBeNull=false)]
			public ObjectSchema.Object Object { get; set; } = null!;

			#endregion
		}

		/// <summary>
		/// <para><strong>sys.service_queue_usages (Transact-SQL)</strong></para>
		/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)</para>
		/// <para>This catalog view returns a row for each reference between service and service queue. A service can only be associated with one queue. A queue can be associated with multiple services.</para><br/>
		/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-service-queue-usages-transact-sql'>sys.service_queue_usages</a>.</para>
		/// </summary>
		[Table(Schema="sys", Name="service_queue_usages", IsView=true)]
		public partial class ServiceQueueUsage
		{
			/// <summary>
			/// Identifier of the service. Unique within the database. Not NULLABLE.
			/// </summary>
			[Column("service_id"),       NotNull] public int ServiceID      { get; set; } // int
			/// <summary>
			/// Identifier of the service queue used by the service. Not NULLABLE.
			/// </summary>
			[Column("service_queue_id"), NotNull] public int ServiceQueueID { get; set; } // int
		}

		/// <summary>
		/// <para><strong>sys.transmission_queue (Transact-SQL)</strong></para>
		/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)</para>
		/// <para>This catalog view contains a row for each message in the transmission queue, as shown in the following table:</para><br/>
		/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-transmission-queue-transact-sql'>sys.transmission_queue</a>.</para>
		/// </summary>
		[Table(Schema="sys", Name="transmission_queue", IsView=true)]
		public partial class TransmissionQueue
		{
			/// <summary>
			/// Identifier for the conversation that this message belongs to. Not NULLABLE.
			/// </summary>
			[Column("conversation_handle"),     NotNull    ] public Guid     ConversationHandle    { get; set; } // uniqueidentifier
			/// <summary>
			/// Name of the service that this message is to. NULLABLE.
			/// </summary>
			[Column("to_service_name"),            Nullable] public string?  ToServiceName         { get; set; } // nvarchar(256)
			/// <summary>
			/// Identifier of the broker that hosts the service that this message is to. NULLABLE.
			/// </summary>
			[Column("to_broker_instance"),         Nullable] public string?  ToBrokerInstance      { get; set; } // nvarchar(128)
			/// <summary>
			/// Name of the service that this message is from. NULLABLE.
			/// </summary>
			[Column("from_service_name"),          Nullable] public string?  FromServiceName       { get; set; } // nvarchar(256)
			/// <summary>
			/// Name of the contract that the conversation for this message follows. NULLABLE.
			/// </summary>
			[Column("service_contract_name"),      Nullable] public string?  ServiceContractName   { get; set; } // nvarchar(256)
			/// <summary>
			/// Time at which the message entered the queue. This value uses UTC regardless of the local time zone for the instance. Not NULLABLE.
			/// </summary>
			[Column("enqueue_time"),            NotNull    ] public DateTime EnqueueTime           { get; set; } // datetime
			/// <summary>
			/// Sequence number of the message. Not NULLABLE.
			/// </summary>
			[Column("message_sequence_number"), NotNull    ] public long     MessageSequenceNumber { get; set; } // bigint
			/// <summary>
			/// Message type name for the message. NULLABLE.
			/// </summary>
			[Column("message_type_name"),          Nullable] public string?  MessageTypeName       { get; set; } // nvarchar(256)
			/// <summary>
			/// Whether this message is an error message.<br/><br/> 0 = Not an error message.<br/><br/> 1 = Error message.<br/><br/> Not NULLABLE.
			/// </summary>
			[Column("is_conversation_error"),   NotNull    ] public bool     IsConversationError   { get; set; } // bit
			/// <summary>
			/// Whether this message is an end of conversation message. Not NULLABLE.<br/><br/> 0 = Not an end of conversation message.<br/><br/> 1 = End of conversation message.<br/><br/> Not NULLABLE.
			/// </summary>
			[Column("is_end_of_dialog"),        NotNull    ] public bool     IsEndOfDialog         { get; set; } // bit
			/// <summary>
			/// The body of this message. NULLABLE.
			/// </summary>
			[Column("message_body"),               Nullable] public byte[]?  MessageBody           { get; set; } // varbinary(max)
			/// <summary>
			/// The reason this message is on the queue. This is generally an error message explaining why sending the message failed. If this is blank, the message has not been sent yet. NULLABLE.
			/// </summary>
			[Column("transmission_status"),        Nullable] public string?  TransmissionStatus    { get; set; } // nvarchar(4000)
			/// <summary>
			/// The priority level that is assigned to this message. Not NULLABLE.
			/// </summary>
			[Column("priority"),                NotNull    ] public byte     Priority              { get; set; } // tinyint
		}
	}

	public static partial class SpatialDataSchema
	{
		public partial class DataContext
		{
			/// <summary>
			/// <para><strong>sys.spatial_indexes (Transact-SQL)</strong></para>
			/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)</para>
			/// <para>Represents the main index information of the spatial indexes.</para><br/>
			/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-spatial-indexes-transact-sql'>sys.spatial_indexes</a>.</para>
			/// </summary>
			public ITable<SpatialIndex>             SpatialIndexes            { get { return _dataContext.GetTable<SpatialIndex>(); } }
			/// <summary>
			/// <para><strong>sys.spatial_index_tessellations (Transact-SQL)</strong></para>
			/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)</para>
			/// <para> Represents the information about the tessellation scheme and parameters of each of the spatial indexes.<br/>
			/// <note type='note'><br/>
			/// For information about tessellation, see <a href='https://docs.microsoft.com/en-us/sql/relational-databases/spatial/spatial-indexes-overview'>Spatial Indexes Overview</a>.<br/>
			/// </note></para><br/>
			/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-spatial-index-tessellations-transact-sql'>sys.spatial_index_tessellations</a>.</para>
			/// </summary>
			public ITable<SpatialIndexTessellation> SpatialIndexTessellations { get { return _dataContext.GetTable<SpatialIndexTessellation>(); } }
			/// <summary>
			/// <para><strong>sys.spatial_reference_systems (Transact-SQL)</strong></para>
			/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)  √ Azure SQL Database</para>
			/// <para>Lists the spatial reference systems (SRIDs) supported by SQL Server.</para><br/>
			/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-spatial-reference-systems-transact-sql'>sys.spatial_reference_systems</a>.</para>
			/// </summary>
			public ITable<SpatialReferenceSystem>   SpatialReferenceSystems   { get { return _dataContext.GetTable<SpatialReferenceSystem>(); } }

			private readonly IDataContext _dataContext;

			public DataContext(IDataContext dataContext)
			{
				_dataContext = dataContext;
			}
		}

		/// <summary>
		/// <para><strong>sys.spatial_indexes (Transact-SQL)</strong></para>
		/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)</para>
		/// <para>Represents the main index information of the spatial indexes.</para><br/>
		/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-spatial-indexes-transact-sql'>sys.spatial_indexes</a>.</para>
		/// </summary>
		[Table(Schema="sys", Name="spatial_indexes", IsView=true)]
		public partial class SpatialIndex
		{
			/// <summary>
			/// ID of the object to which this index belongs.
			/// </summary>
			[Column("object_id"),                   NotNull    ] public int     ObjectID                 { get; set; } // int
			/// <summary>
			/// Name of the index. <strong>name</strong> is unique only within the object.<br/><br/> NULL = Heap
			/// </summary>
			[Column("name"),                           Nullable] public string? Name                     { get; set; } // sysname
			/// <summary>
			/// ID of the index. <strong>index_id</strong> is unique only within the object.<br/><br/> 0 = Heap<br/><br/> 1 = Clustered index<br/><br/> > 1 = Nonclustered index
			/// </summary>
			[Column("index_id"),                    NotNull    ] public int     IndexID                  { get; set; } // int
			/// <summary>
			/// Type of index:<br/><br/> 0 = Heap<br/><br/> 1 = Clustered rowstore (b-tree)<br/><br/> 2 = Nonclustered rowstore (b-tree)<br/><br/> 3 = XML<br/><br/> 4 = Spatial<br/><br/> 5 = Clustered columnstore index. <strong>Applies to</strong>: SQL Server 2014 (12.x) and later.<br/><br/> 6 = Nonclustered columnstore index. <strong>Applies to</strong>: SQL Server 2012 (11.x) and later.<br/><br/> 7 = Nonclustered hash index. <strong>Applies to</strong>: SQL Server 2014 (12.x) and later.
			/// </summary>
			[Column("type"),                        NotNull    ] public byte    TypeColumn               { get; set; } // tinyint
			/// <summary>
			/// Description of index type:<br/><br/> HEAP<br/><br/> CLUSTERED<br/><br/> NONCLUSTERED<br/><br/> XML<br/><br/> SPATIAL<br/><br/> CLUSTERED COLUMNSTORE - <strong>Applies to</strong>: SQL Server 2014 (12.x) and later.<br/><br/> NONCLUSTERED COLUMNSTORE - <strong>Applies to</strong>: SQL Server 2012 (11.x) and later.<br/><br/> NONCLUSTERED HASH : NONCLUSTERED HASH indexes are supported only on memory-optimized tables. The sys.hash_indexes view shows the current hash indexes and the hash properties. For more information, see <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-hash-indexes-transact-sql'>sys.hash_indexes (Transact-SQL)</a>. <strong>Applies to</strong>: SQL Server 2014 (12.x) and later.
			/// </summary>
			[Column("type_desc"),                      Nullable] public string? TypeDesc                 { get; set; } // nvarchar(60)
			/// <summary>
			/// 1 = Index is unique.<br/><br/> 0 = Index is not unique.<br/><br/> Always 0 for clustered columnstore indexes.
			/// </summary>
			[Column("is_unique"),                      Nullable] public bool?   IsUnique                 { get; set; } // bit
			/// <summary>
			/// ID of the data space for this index. Data space is either a filegroup or partition scheme.<br/><br/> 0 = <strong>object_id</strong> is a table-valued function or in-memory index.
			/// </summary>
			[Column("data_space_id"),               NotNull    ] public int     DataSpaceID              { get; set; } // int
			/// <summary>
			/// 1 = IGNORE_DUP_KEY is ON.<br/><br/> 0 = IGNORE_DUP_KEY is OFF.
			/// </summary>
			[Column("ignore_dup_key"),                 Nullable] public bool?   IgnoreDupKey             { get; set; } // bit
			/// <summary>
			/// 1 = Index is part of a PRIMARY KEY constraint.<br/><br/> Always 0 for clustered columnstore indexes.
			/// </summary>
			[Column("is_primary_key"),                 Nullable] public bool?   IsPrimaryKey             { get; set; } // bit
			/// <summary>
			/// 1 = Index is part of a UNIQUE constraint.<br/><br/> Always 0 for clustered columnstore indexes.
			/// </summary>
			[Column("is_unique_constraint"),           Nullable] public bool?   IsUniqueConstraint       { get; set; } // bit
			/// <summary>
			/// > 0 = FILLFACTOR percentage used when the index was created or rebuilt.<br/><br/> 0 = Default value<br/><br/> Always 0 for clustered columnstore indexes.
			/// </summary>
			[Column("fill_factor"),                 NotNull    ] public byte    FillFactor               { get; set; } // tinyint
			/// <summary>
			/// 1 = PADINDEX is ON.<br/><br/> 0 = PADINDEX is OFF.<br/><br/> Always 0 for clustered columnstore indexes.
			/// </summary>
			[Column("is_padded"),                      Nullable] public bool?   IsPadded                 { get; set; } // bit
			/// <summary>
			/// 1 = Index is disabled.<br/><br/> 0 = Index is not disabled.
			/// </summary>
			[Column("is_disabled"),                    Nullable] public bool?   IsDisabled               { get; set; } // bit
			/// <summary>
			/// 1 = Index is hypothetical and cannot be used directly as a data access path. Hypothetical indexes hold column-level statistics.<br/><br/> 0 = Index is not hypothetical.
			/// </summary>
			[Column("is_hypothetical"),                Nullable] public bool?   IsHypothetical           { get; set; } // bit
			/// <summary>
			/// 1 = Index allows row locks.<br/><br/> 0 = Index does not allow row locks.<br/><br/> Always 0 for clustered columnstore indexes.
			/// </summary>
			[Column("allow_row_locks"),                Nullable] public bool?   AllowRowLocks            { get; set; } // bit
			/// <summary>
			/// 1 = Index allows page locks.<br/><br/> 0 = Index does not allow page locks.<br/><br/> Always 0 for clustered columnstore indexes.
			/// </summary>
			[Column("allow_page_locks"),               Nullable] public bool?   AllowPageLocks           { get; set; } // bit
			/// <summary>
			/// 1 = Index has a filter and only contains rows that satisfy the filter definition.<br/><br/> 0 = Index does not have a filter.
			/// </summary>
			[Column("has_filter"),                  NotNull    ] public bool    HasFilter                { get; set; } // bit
			/// <summary>
			/// Expression for the subset of rows included in the filtered index.<br/><br/> NULL for heap, non-filtered index, or insufficient permissions on the table.
			/// </summary>
			[Column("filter_definition"),              Nullable] public string? FilterDefinition         { get; set; } // nvarchar(max)
			/// <summary>
			/// > 0 = Columnstore index compression delay specified in minutes.<br/><br/> NULL = Columnstore index rowgroup compression delay is managed automatically.
			/// </summary>
			[Column("compression_delay"),           NotNull    ] public int     CompressionDelay         { get; set; } // int
			/// <summary>
			/// 1 = Index is configured to suppress duplicate key messages during an index rebuild operation.<br/><br/> <strong>0</strong> = Index is not configured to suppress duplicate key messages during an index rebuild operation.<br/><br/><strong>Applies to:</strong> SQL Server (Starting with SQL Server 2017 (14.x)), Azure SQL Database, and Azure SQL Managed Instance
			/// </summary>
			[Column("suppress_dup_key_messages"),   NotNull    ] public bool    SuppressDupKeyMessages   { get; set; } // bit
			/// <summary>
			/// 1 = Index was created by the automatic tuning.<br/><br/>0 = Index was created by the user.<br/><br/><strong>Applies to:</strong> Azure SQL Database
			/// </summary>
			[Column("auto_created"),                   Nullable] public bool?   AutoCreated              { get; set; } // bit
			/// <summary>
			/// 1 = Index has last-page insert optimization enabled.<br/><br/>0 = Default value. Index has last-page insert optimization disabled.<br/><br/><strong>Applies to:</strong> SQL Server (Starting with SQL Server 2019 (15.x)), Azure SQL Database, and Azure SQL Managed Instance
			/// </summary>
			[Column("optimize_for_sequential_key"), NotNull    ] public bool    OptimizeForSequentialKey { get; set; } // bit
			/// <summary>
			/// Type of spatial index:<br/><br/> 1 = Geometric spatial index<br/><br/> 2 = Geographic spatial index
			/// </summary>
			[Column("spatial_index_type"),          NotNull    ] public byte    SpatialIndeXType         { get; set; } // tinyint
			/// <summary>
			/// Type description of spatial index:<br/><br/> GEOMETRY = geometric spatial index<br/><br/> GEOGRAPHY = geographic spatial index
			/// </summary>
			[Column("spatial_index_type_desc"),        Nullable] public string? SpatialIndexTypeDesc     { get; set; } // nvarchar(60)
			/// <summary>
			/// Name of tessellation scheme:<br/><br/> GEOMETRY_GRID, GEOMETRY_AUTO_GRID,<br/><br/> GEOGRAPHY_GRID, GEOGRAPHY_AUTO_GRID<br/><br/> Note: For information about tessellation schemes, see <a href='https://docs.microsoft.com/en-us/sql/relational-databases/spatial/spatial-indexes-overview'>Spatial Indexes Overview</a>.
			/// </summary>
			[Column("tessellation_scheme"),            Nullable] public string? TessellationScheme       { get; set; } // sysname

			#region Associations

			/// <summary>
			/// objects (sys.objects)
			/// </summary>
			[Association(ThisKey="ObjectID", OtherKey="ObjectID", CanBeNull=false)]
			public ObjectSchema.Object Object { get; set; } = null!;

			#endregion
		}

		/// <summary>
		/// <para><strong>sys.spatial_index_tessellations (Transact-SQL)</strong></para>
		/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)</para>
		/// <para> Represents the information about the tessellation scheme and parameters of each of the spatial indexes.<br/>
		/// <note type='note'><br/>
		/// For information about tessellation, see <a href='https://docs.microsoft.com/en-us/sql/relational-databases/spatial/spatial-indexes-overview'>Spatial Indexes Overview</a>.<br/>
		/// </note></para><br/>
		/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-spatial-index-tessellations-transact-sql'>sys.spatial_index_tessellations</a>.</para>
		/// </summary>
		[Table(Schema="sys", Name="spatial_index_tessellations", IsView=true)]
		public partial class SpatialIndexTessellation
		{
			/// <summary>
			/// ID of the object on which the index is defined. Each (object_id, index_id) pair has a corresponding entry in <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-spatial-indexes-transact-sql'>sys.spatial_indexes</a>.
			/// </summary>
			[Column("object_id"),           NotNull    ] public int     ObjectID           { get; set; } // int
			/// <summary>
			/// ID of the spatial index in which the indexed column is defined
			/// </summary>
			[Column("index_id"),            NotNull    ] public int     IndexID            { get; set; } // int
			/// <summary>
			/// Name of the tessellation scheme, one of: GEOMETRY_GRID,  GEOGRAPHY_GRID
			/// </summary>
			[Column("tessellation_scheme"),    Nullable] public string? TessellationScheme { get; set; } // sysname
			/// <summary>
			/// X-coordinate of the lower-left corner of the bounding box, one of: NULL = Not applicable for a given tessellation scheme (such as GEOGRAPHY_GRID) *n* = If tessellation_scheme is GEOMETRY_GRID, the x-min coordinate value.                     <strong>Note:</strong> The coordinates defined by the bounding box parameters are interpreted for each object according to its <a href='https://docs.microsoft.com/en-us/sql/relational-databases/spatial/spatial-reference-identifiers-srids'>Spatial Reference Identifier (SRID)</a>.
			/// </summary>
			[Column("bounding_box_xmin"),      Nullable] public double? BoundingBoxXmin    { get; set; } // float(53)
			/// <summary>
			/// Y-coordinate of the lower-left corner of the bounding box, one of: NULL = Not applicable for a given tessellation scheme (such as GEOGRAPHY_GRID) *n* = If tessellation_scheme is GEOMETRY_GRID, the y-min coordinate value
			/// </summary>
			[Column("bounding_box_ymin"),      Nullable] public double? BoundingBoxYmin    { get; set; } // float(53)
			/// <summary>
			/// X-coordinate of the upper-right corner of the bounding box, one of: NULL = Not applicable for a given tessellation scheme (such as GEOGRAPHY_GRID) *n* = If tessellation_scheme is GEOMETRY_GRID, the x-max coordinate value
			/// </summary>
			[Column("bounding_box_xmax"),      Nullable] public double? BoundingBoxXmax    { get; set; } // float(53)
			/// <summary>
			/// Y-coordinate of upper-right corner of the bounding box, one of: NULL = Not applicable for a given tessellation scheme (such as GEOGRAPHY_GRID) *n* = If tessellation_scheme is GEOMETRY_GRID, the y-max coordinate value
			/// </summary>
			[Column("bounding_box_ymax"),      Nullable] public double? BoundingBoxYmax    { get; set; } // float(53)
			/// <summary>
			/// Grid density for the top-level grid. If tessellation_scheme is GEOMETRY_GRID or GEOGRAPHY_GRID, one of:          16 = 4 by 4 grid (LOW) 64 = 8 by 8 grid (MEDIUM) 256 = 16 by 16 grid (HIGH) NULL = Not applicable for given spatial index type or tessellation scheme.  NULL is returned when new SQL Server 11 tessellation is used.
			/// </summary>
			[Column("level_1_grid"),           Nullable] public short?  Level1Grid         { get; set; } // smallint
			/// <summary>
			/// Grid density for the top-level grid, one of: LOW MEDIUM HIGH NULL = Not applicable for given spatial index type or tessellation scheme.  NULL is returned when new SQL Server 11 tessellation is used.
			/// </summary>
			[Column("level_1_grid_desc"),      Nullable] public string? Level1GridDesc     { get; set; } // nvarchar(60)
			/// <summary>
			/// Grid density for the 2nd-level grid. If tessellation_scheme is GEOMETRY_GRID or GEOGRAPHY_GRID, one of: 16 = 4 by 4 grid (LOW) 64 = 8 by 8 grid (MEDIUM) 256 = 16 by 16 grid (HIGH) NULL = Not applicable for given spatial index type or tessellation scheme.  NULL is returned when new SQL Server 11 tessellation is used.
			/// </summary>
			[Column("level_2_grid"),           Nullable] public short?  Level2Grid         { get; set; } // smallint
			/// <summary>
			/// Grid density for the 2nd-level grid, one of: LOW MEDIUM HIGH NULL = Not applicable for given spatial index type or tessellation scheme.  NULL is returned when new SQL Server 11 tessellation is used.
			/// </summary>
			[Column("level_2_grid_desc"),      Nullable] public string? Level2GridDesc     { get; set; } // nvarchar(60)
			/// <summary>
			/// Grid density for the 3rd-level grid.   If tessellation_scheme is GEOMETRY_GRID or GEOGRAPHY_GRID, one of: 16 = 4 by 4 grid (LOW) 64 = 8 by 8 grid (MEDIUM) 256 = 16 by 16 grid (HIGH) NULL = Not applicable for given spatial index type or tessellation scheme.  NULL is returned when new SQL Server 11 tessellation is used.
			/// </summary>
			[Column("level_3_grid"),           Nullable] public short?  Level3Grid         { get; set; } // smallint
			/// <summary>
			/// Grid density for the 3rd-level grid, one of:LOW MEDIUM HIGH NULL = Not applicable for given spatial index type or tessellation scheme.  NULL is returned when new SQL Server 11 tessellation is used.
			/// </summary>
			[Column("level_3_grid_desc"),      Nullable] public string? Level3GridDesc     { get; set; } // nvarchar(60)
			/// <summary>
			/// Grid density for the 4th-level grid. If tessellation_scheme is GEOMETRY_GRID or GEOGRAPHY_GRID, one of: 16 = 4 by 4 grid (LOW)64 = 8 by 8 grid (MEDIUM) 256 = 16 by 16 grid (HIGH) NULL = Not applicable for given spatial index type or tessellation scheme.  NULL is returned when new SQL Server 11 tessellation is used.
			/// </summary>
			[Column("level_4_grid"),           Nullable] public short?  Level4Grid         { get; set; } // smallint
			/// <summary>
			/// Grid density for the 4th-level grid, one of: LOW MEDIUM HIGH NULL = Not applicable for given spatial index type or tessellation scheme.  NULL is returned when new SQL Server 11 tessellation is used.
			/// </summary>
			[Column("level_4_grid_desc"),      Nullable] public string? Level4GridDesc     { get; set; } // nvarchar(60)
			/// <summary>
			/// Number of cells per spatial object, one of: If tessellation_scheme is GEOMETRY_GRID or GEOGRAPHY_GRID, *n* = number of cells per object NULL = Not applicable for given  spatial index type or tessellation scheme
			/// </summary>
			[Column("cells_per_object"),       Nullable] public int?    CellsPerObject     { get; set; } // int

			#region Associations

			/// <summary>
			/// objects (sys.objects)
			/// </summary>
			[Association(ThisKey="ObjectID", OtherKey="ObjectID", CanBeNull=false)]
			public ObjectSchema.Object Object { get; set; } = null!;

			#endregion
		}

		/// <summary>
		/// <para><strong>sys.spatial_reference_systems (Transact-SQL)</strong></para>
		/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)  √ Azure SQL Database</para>
		/// <para>Lists the spatial reference systems (SRIDs) supported by SQL Server.</para><br/>
		/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-spatial-reference-systems-transact-sql'>sys.spatial_reference_systems</a>.</para>
		/// </summary>
		[Table(Schema="sys", Name="spatial_reference_systems", IsView=true)]
		public partial class SpatialReferenceSystem
		{
			/// <summary>
			/// The SRID supported by SQL Server.
			/// </summary>
			[Column("spatial_reference_id"),            Nullable] public int?    SpatialReferenceID           { get; set; } // int
			/// <summary>
			/// The authority of the SRID.
			/// </summary>
			[Column("authority_name"),                  Nullable] public string? AuthorityName                { get; set; } // nvarchar(128)
			/// <summary>
			/// The SRID given by the authority named in <strong>authority_name</strong>.
			/// </summary>
			[Column("authorized_spatial_reference_id"), Nullable] public int?    AuthorizedSpatialReferenceID { get; set; } // int
			/// <summary>
			/// The WKT representation of the SRID.
			/// </summary>
			[Column("well_known_text"),                 Nullable] public string? WellKnownText                { get; set; } // nvarchar(4000)
			/// <summary>
			/// The name of the unit of measure.
			/// </summary>
			[Column("unit_of_measure"),                 Nullable] public string? UnitOfMeasure                { get; set; } // nvarchar(128)
			/// <summary>
			/// The length of the unit of measure in meters.
			/// </summary>
			[Column("unit_conversion_factor"),          Nullable] public double? UnitConversionFactor         { get; set; } // float
		}
	}

	public static partial class StretchDatabaseSchema
	{
		public partial class DataContext
		{
			/// <summary>
			/// <para><strong>Stretch Database Catalog Views - sys.remote_data_archive_databases</strong></para>
			/// <para><strong>Applies to:</strong> √ SQL Server 2016 (13.x) and later</para>
			/// <para>Contains one row for each remote database that stores data from a Stretch-enabled local database.</para><br/>
			/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/stretch-database-catalog-views-sys-remote-data-archive-databases'>sys.remote_data_archive_databases</a>.</para>
			/// </summary>
			public ITable<RemoteDataArchiveDatabase> RemoteDataArchiveDatabases { get { return _dataContext.GetTable<RemoteDataArchiveDatabase>(); } }
			/// <summary>
			/// <para><strong>Stretch Database Catalog Views - sys.remote_data_archive_tables</strong></para>
			/// <para><strong>Applies to:</strong> √ SQL Server 2016 (13.x) and later</para>
			/// <para>Contains one row for each remote table that stores data from a Stretch-enabled local table.</para><br/>
			/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/stretch-database-catalog-views-sys-remote-data-archive-tables'>sys.remote_data_archive_tables</a>.</para>
			/// </summary>
			public ITable<RemoteDataArchiveTable>    RemoteDataArchiveTables    { get { return _dataContext.GetTable<RemoteDataArchiveTable>(); } }

			private readonly IDataContext _dataContext;

			public DataContext(IDataContext dataContext)
			{
				_dataContext = dataContext;
			}
		}

		/// <summary>
		/// <para><strong>Stretch Database Catalog Views - sys.remote_data_archive_databases</strong></para>
		/// <para><strong>Applies to:</strong> √ SQL Server 2016 (13.x) and later</para>
		/// <para>Contains one row for each remote database that stores data from a Stretch-enabled local database.</para><br/>
		/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/stretch-database-catalog-views-sys-remote-data-archive-databases'>sys.remote_data_archive_databases</a>.</para>
		/// </summary>
		[Table(Schema="sys", Name="remote_data_archive_databases", IsView=true)]
		public partial class RemoteDataArchiveDatabase
		{
			/// <summary>
			/// The auto-generated local identifier of the remote database.
			/// </summary>
			[Column("remote_database_id"),   NotNull] public int    RemoteDatabaseID   { get; set; } // int
			/// <summary>
			/// The name of the remote database.
			/// </summary>
			[Column("remote_database_name"), NotNull] public string RemoteDatabaseName { get; set; } = null!; // sysname
			/// <summary>
			/// The data source used to connect to the remote server
			/// </summary>
			[Column("data_source_id"),       NotNull] public int    DataSourceID       { get; set; } // int
		}

		/// <summary>
		/// <para><strong>Stretch Database Catalog Views - sys.remote_data_archive_tables</strong></para>
		/// <para><strong>Applies to:</strong> √ SQL Server 2016 (13.x) and later</para>
		/// <para>Contains one row for each remote table that stores data from a Stretch-enabled local table.</para><br/>
		/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/stretch-database-catalog-views-sys-remote-data-archive-tables'>sys.remote_data_archive_tables</a>.</para>
		/// </summary>
		[Table(Schema="sys", Name="remote_data_archive_tables", IsView=true)]
		public partial class RemoteDataArchiveTable
		{
			/// <summary>
			/// The object ID of the Stretch-enabled local table.
			/// </summary>
			[Column("object_id"),                NotNull    ] public int     ObjectID               { get; set; } // int
			/// <summary>
			/// The auto-generated local identifier of the remote database.
			/// </summary>
			[Column("remote_database_id"),       NotNull    ] public int     RemoteDatabaseID       { get; set; } // int
			/// <summary>
			/// The name of the table in the remote database that corresponds to the Stretch-enabled local table.
			/// </summary>
			[Column("remote_table_name"),           Nullable] public string? RemoteTableName        { get; set; } // sysname
			/// <summary>
			/// The filter predicate, if any, that identifies rows in the table to be migrated. If the value is null, the entire table is eligible to be migrated.<br/><br/> For more info, see <a href='https://docs.microsoft.com/en-us/sql/sql-server/stretch-database/enable-stretch-database-for-a-table'>Enable Stretch Database for a table</a> and <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/~/sql-server/stretch-database/select-rows-to-migrate-by-using-a-filter-function-stretch-database'>Select rows to migrate by using a filter predicate</a>.
			/// </summary>
			[Column("filter_predicate"),            Nullable] public string? FilterPredicate        { get; set; } // nvarchar(max)
			/// <summary>
			/// The direction in which data is currently being migrated. The available values are the following.<br/>1 (outbound)<br/>2 (inbound)
			/// </summary>
			[Column("migration_direction"),         Nullable] public byte?   MigrationDirection     { get; set; } // tinyint
			/// <summary>
			/// The description of the direction in which data is currently being migrated. The available values are the following.<br/>outbound (1)<br/>inbound (2)
			/// </summary>
			[Column("migration_direction_desc"),    Nullable] public string? MigrationDirectionDesc { get; set; } // nvarchar(60)
			/// <summary>
			/// Indicates whether migration is currently paused.
			/// </summary>
			[Column("is_migration_paused"),         Nullable] public bool?   IsMigrationPaused      { get; set; } // bit
			/// <summary>
			/// Indicates whether the remote table and the SQL Server table are in sync.<br/><br/>When the value of <strong>is_reconciled</strong> is 1 (true), the remote table and the SQL Server table are in sync, and you can run queries that include the remote data.<br/><br/>When the value of <strong>is_reconciled</strong> is 0 (false), the remote table and the SQL Server table are not in sync. Recently migrated rows have to be migrated again. This occurs when you restore the remote Azure database, or when you delete rows manually from the remote table. Until you reconcile the tables, you can't run queries that include the remote data. To reconcile the tables, run <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-stored-procedures/sys-sp-rda-reconcile-batch-transact-sql'>sys.sp_rda_reconcile_batch</a>.
			/// </summary>
			[Column("is_reconciled"),               Nullable] public bool?   IsReconciled           { get; set; } // bit

			#region Associations

			/// <summary>
			/// objects (sys.objects)
			/// </summary>
			[Association(ThisKey="ObjectID", OtherKey="ObjectID", CanBeNull=false)]
			public ObjectSchema.Object Object { get; set; } = null!;

			#endregion
		}
	}

	public static partial class XmlSchema
	{
		public partial class DataContext
		{
			/// <summary>
			/// <para><strong>sys.column_xml_schema_collection_usages (Transact-SQL)</strong></para>
			/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)</para>
			/// <para>Returns a row for each column that is validated by an XML schema.</para><br/>
			/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-column-xml-schema-collection-usages-transact-sql'>sys.column_xml_schema_collection_usages</a>.</para>
			/// </summary>
			public ITable<ColumnXmlSchemaCollectionUsage>    ColumnXmlSchemaCollectionUsages    { get { return _dataContext.GetTable<ColumnXmlSchemaCollectionUsage>(); } }
			/// <summary>
			/// <para><strong>sys.parameter_xml_schema_collection_usages (Transact-SQL)</strong></para>
			/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)  √ Azure SQL Database</para>
			/// <para>Returns a row for each parameter that is validated by an XML schema.</para><br/>
			/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-parameter-xml-schema-collection-usages-transact-sql'>sys.parameter_xml_schema_collection_usages</a>.</para>
			/// </summary>
			public ITable<ParameterXmlSchemaCollectionUsage> ParameterXmlSchemaCollectionUsages { get { return _dataContext.GetTable<ParameterXmlSchemaCollectionUsage>(); } }
			/// <summary>
			/// <para><strong>sys.selective_xml_index_paths (Transact-SQL)</strong></para>
			/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)</para>
			/// <para>Available beginning in SQL Server 2012 (11.x) Service Pack 1, each row in sys.selective_xml_index_paths represents one promoted path for particular selective xml index.<br/>
			/// If you create a selective xml index on xmlcol of table T using following statement,<br/>
			/// <code><br/>
			/// CREATE SELECTIVE XML INDEX sxi1 ON T(xmlcol) <br/>
			/// FOR ( path1 = '/a/b/c' AS XQUERY 'xs:string',<br/>
			///     path2 = '/a/b/d' AS XQUERY 'xs:double'<br/>
			///   )<br/>
			/// </code><br/>
			///  There will be two new rows in sys.selective_xml_index_paths corresponding to the index sxi1.</para><br/>
			/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-selective-xml-index-paths-transact-sql'>sys.selective_xml_index_paths</a>.</para>
			/// </summary>
			public ITable<SelectiveXmlIndexPath>             SelectiveXmlIndexPaths             { get { return _dataContext.GetTable<SelectiveXmlIndexPath>(); } }
			/// <summary>
			/// <para><strong>sys.xml_indexes (Transact-SQL)</strong></para>
			/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)</para>
			/// <para>Returns one row per XML index.</para><br/>
			/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-xml-indexes-transact-sql'>sys.xml_indexes</a>.</para>
			/// </summary>
			public ITable<XmlIndex>                          XmlIndexes                         { get { return _dataContext.GetTable<XmlIndex>(); } }
			/// <summary>
			/// <para><strong>sys.xml_schema_attributes (Transact-SQL)</strong></para>
			/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)</para>
			/// <para>Returns a row per XML schema component that is an attribute, <strong>symbol_space</strong> of <strong>A</strong>.</para><br/>
			/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-xml-schema-attributes-transact-sql'>sys.xml_schema_attributes</a>.</para>
			/// </summary>
			public ITable<XmlSchemaAttribute>                XmlSchemaAttributes                { get { return _dataContext.GetTable<XmlSchemaAttribute>(); } }
			/// <summary>
			/// <para><strong>sys.xml_schema_collections (Transact-SQL)</strong></para>
			/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)  √ Azure SQL Database</para>
			/// <para>Returns a row per XML schema collection. An XML schema collection is a named set of XSD definitions. The XML schema collection itself is contained in a relational schema, and it is identified by a schema-scoped Transact\-SQL name. The following tuples are unique: xml_collection_id, and schema_id and name.</para><br/>
			/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-xml-schema-collections-transact-sql'>sys.xml_schema_collections</a>.</para>
			/// </summary>
			public ITable<XmlSchemaCollection>               XmlSchemaCollections               { get { return _dataContext.GetTable<XmlSchemaCollection>(); } }
			/// <summary>
			/// <para><strong>sys.xml_schema_components (Transact-SQL)</strong></para>
			/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)</para>
			/// <para>Returns a row per component of an XML schema. The pair (<strong>collection_id</strong>, <strong>namespace_id</strong>) is a compound foreign key to the containing namespace. For named components, the values for <strong>symbol_space</strong>, <strong>name</strong>, <strong>scoping_xml_component_id</strong>, <strong>is_qualified</strong>, <strong>xml_namespace_id</strong>, <strong>xml_collection_id</strong> are unique.</para><br/>
			/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-xml-schema-components-transact-sql'>sys.xml_schema_components</a>.</para>
			/// </summary>
			public ITable<XmlSchemaComponent>                XmlSchemaComponents                { get { return _dataContext.GetTable<XmlSchemaComponent>(); } }
			/// <summary>
			/// <para><strong>sys.xml_schema_component_placements (Transact-SQL)</strong></para>
			/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)</para>
			/// <para>Returns a row per placement for XML schema components.</para><br/>
			/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-xml-schema-component-placements-transact-sql'>sys.xml_schema_component_placements</a>.</para>
			/// </summary>
			public ITable<XmlSchemaComponentPlacement>       XmlSchemaComponentPlacements       { get { return _dataContext.GetTable<XmlSchemaComponentPlacement>(); } }
			/// <summary>
			/// <para><strong>sys.xml_schema_elements (Transact-SQL)</strong></para>
			/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)</para>
			/// <para>Returns a row per XML schema component that is a Type, <strong>symbol_space</strong> of <strong>E</strong>.</para><br/>
			/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-xml-schema-elements-transact-sql'>sys.xml_schema_elements</a>.</para>
			/// </summary>
			public ITable<XmlSchemaElement>                  XmlSchemaElements                  { get { return _dataContext.GetTable<XmlSchemaElement>(); } }
			/// <summary>
			/// <para><strong>sys.xml_schema_facets (Transact-SQL)</strong></para>
			/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)</para>
			/// <para>Returns a row per facet (restriction) of an xml-type definition (corresponds to <strong>sys.xml_types</strong>).</para><br/>
			/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-xml-schema-facets-transact-sql'>sys.xml_schema_facets</a>.</para>
			/// </summary>
			public ITable<XmlSchemaFacet>                    XmlSchemaFacets                    { get { return _dataContext.GetTable<XmlSchemaFacet>(); } }
			/// <summary>
			/// <para><strong>sys.xml_schema_model_groups (Transact-SQL)</strong></para>
			/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)</para>
			/// <para>Returns a row per XML schema component that is a Model-Group, <strong>symbol_space</strong> of <strong>M</strong>..</para><br/>
			/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-xml-schema-model-groups-transact-sql'>sys.xml_schema_model_groups</a>.</para>
			/// </summary>
			public ITable<XmlSchemaModelGroup>               XmlSchemaModelGroups               { get { return _dataContext.GetTable<XmlSchemaModelGroup>(); } }
			/// <summary>
			/// <para><strong>sys.xml_schema_namespaces (Transact-SQL)</strong></para>
			/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)</para>
			/// <para>Returns a row per XSD-defined XML namespace. The following tuples are unique: <strong>collection_id</strong>, <strong>namespace_id</strong>, and <strong>collection_id</strong>, and <strong>name</strong>.</para><br/>
			/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-xml-schema-namespaces-transact-sql'>sys.xml_schema_namespaces</a>.</para>
			/// </summary>
			public ITable<XmlSchemaNamespace>                XmlSchemaNamespaces                { get { return _dataContext.GetTable<XmlSchemaNamespace>(); } }
			/// <summary>
			/// <para><strong>sys.xml_schema_types (Transact-SQL)</strong></para>
			/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)</para>
			/// <para>Returns a row per XML schema component that is a Type, <strong>symbol_space</strong> of <strong>T</strong>.</para><br/>
			/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-xml-schema-types-transact-sql'>sys.xml_schema_types</a>.</para>
			/// </summary>
			public ITable<XmlSchemaType>                     XmlSchemaTypes                     { get { return _dataContext.GetTable<XmlSchemaType>(); } }
			/// <summary>
			/// <para><strong>sys.xml_schema_wildcards (Transact-SQL)</strong></para>
			/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)</para>
			/// <para>Returns a row per XML schema component that is an Attribute-Wildcard (<strong>kind</strong> of <strong>V</strong>) or Element-Wildcard (<strong>kind</strong> of <strong>W</strong>), both with <strong>symbol_space</strong> of <strong>N</strong>.</para><br/>
			/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-xml-schema-wildcards-transact-sql'>sys.xml_schema_wildcards</a>.</para>
			/// </summary>
			public ITable<XmlSchemaWildcard>                 XmlSchemaWildcards                 { get { return _dataContext.GetTable<XmlSchemaWildcard>(); } }
			/// <summary>
			/// <para><strong>sys.xml_schema_wildcard_namespaces (Transact-SQL)</strong></para>
			/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)</para>
			/// <para>Returns a row per enumerated namespace for an XML schema wildcard.</para><br/>
			/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-xml-schema-wildcard-namespaces-transact-sql'>sys.xml_schema_wildcard_namespaces</a>.</para>
			/// </summary>
			public ITable<XmlSchemaWildcardNamespace>        XmlSchemaWildcardNamespaces        { get { return _dataContext.GetTable<XmlSchemaWildcardNamespace>(); } }

			private readonly IDataContext _dataContext;

			public DataContext(IDataContext dataContext)
			{
				_dataContext = dataContext;
			}
		}

		/// <summary>
		/// <para><strong>sys.column_xml_schema_collection_usages (Transact-SQL)</strong></para>
		/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)</para>
		/// <para>Returns a row for each column that is validated by an XML schema.</para><br/>
		/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-column-xml-schema-collection-usages-transact-sql'>sys.column_xml_schema_collection_usages</a>.</para>
		/// </summary>
		[Table(Schema="sys", Name="column_xml_schema_collection_usages", IsView=true)]
		public partial class ColumnXmlSchemaCollectionUsage
		{
			/// <summary>
			/// The ID of the object to which this column belongs.
			/// </summary>
			[Column("object_id"),         NotNull] public int ObjectID        { get; set; } // int
			/// <summary>
			/// The ID of the column. Is unique within the object.
			/// </summary>
			[Column("column_id"),         NotNull] public int ColumnID        { get; set; } // int
			/// <summary>
			/// The ID of the collection that contains the validating XML schema namespace of the column.
			/// </summary>
			[Column("xml_collection_id"), NotNull] public int XmlCollectionID { get; set; } // int

			#region Associations

			/// <summary>
			/// objects (sys.objects)
			/// </summary>
			[Association(ThisKey="ObjectID", OtherKey="ObjectID", CanBeNull=false)]
			public ObjectSchema.Object Object { get; set; } = null!;

			#endregion
		}

		/// <summary>
		/// <para><strong>sys.parameter_xml_schema_collection_usages (Transact-SQL)</strong></para>
		/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)  √ Azure SQL Database</para>
		/// <para>Returns a row for each parameter that is validated by an XML schema.</para><br/>
		/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-parameter-xml-schema-collection-usages-transact-sql'>sys.parameter_xml_schema_collection_usages</a>.</para>
		/// </summary>
		[Table(Schema="sys", Name="parameter_xml_schema_collection_usages", IsView=true)]
		public partial class ParameterXmlSchemaCollectionUsage
		{
			/// <summary>
			/// The ID of the object to which this parameter belongs.
			/// </summary>
			[Column("object_id"),         NotNull] public int ObjectID        { get; set; } // int
			/// <summary>
			/// The ID of the parameter.  Is unique within the object.
			/// </summary>
			[Column("parameter_id"),      NotNull] public int ParameterID     { get; set; } // int
			/// <summary>
			/// The ID of the XML schema collection that contains the validating XML schema namespace of the parameter.
			/// </summary>
			[Column("xml_collection_id"), NotNull] public int XmlCollectionID { get; set; } // int

			#region Associations

			/// <summary>
			/// objects (sys.objects)
			/// </summary>
			[Association(ThisKey="ObjectID", OtherKey="ObjectID", CanBeNull=false)]
			public ObjectSchema.Object Object { get; set; } = null!;

			#endregion
		}

		/// <summary>
		/// <para><strong>sys.selective_xml_index_paths (Transact-SQL)</strong></para>
		/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)</para>
		/// <para>Available beginning in SQL Server 2012 (11.x) Service Pack 1, each row in sys.selective_xml_index_paths represents one promoted path for particular selective xml index.<br/>
		/// If you create a selective xml index on xmlcol of table T using following statement,<br/>
		/// <code><br/>
		/// CREATE SELECTIVE XML INDEX sxi1 ON T(xmlcol) <br/>
		/// FOR ( path1 = '/a/b/c' AS XQUERY 'xs:string',<br/>
		///     path2 = '/a/b/d' AS XQUERY 'xs:double'<br/>
		///   )<br/>
		/// </code><br/>
		///  There will be two new rows in sys.selective_xml_index_paths corresponding to the index sxi1.</para><br/>
		/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-selective-xml-index-paths-transact-sql'>sys.selective_xml_index_paths</a>.</para>
		/// </summary>
		[Table(Schema="sys", Name="selective_xml_index_paths", IsView=true)]
		public partial class SelectiveXmlIndexPath
		{
			/// <summary>
			/// ID of table with XML column.
			/// </summary>
			[Column("object_id"),                     NotNull    ] public int     ObjectID                  { get; set; } // int
			/// <summary>
			/// Unique id of the selective xml index.
			/// </summary>
			[Column("index_id"),                      NotNull    ] public int     IndexID                   { get; set; } // int
			/// <summary>
			/// Promoted XML path id.
			/// </summary>
			[Column("path_id"),                          Nullable] public int?    PathID                    { get; set; } // int
			/// <summary>
			/// Promoted path. For example, '/a/b/c/d/e'.
			/// </summary>
			[Column("path"),                             Nullable] public string? Path                      { get; set; } // nvarchar(4000)
			/// <summary>
			/// Path name.
			/// </summary>
			[Column("name"),                             Nullable] public string? Name                      { get; set; } // sysname
			/// <summary>
			/// 0 = XQUERY<br/><br/> 1 = SQL
			/// </summary>
			[Column("path_type"),                        Nullable] public byte?   PathType                  { get; set; } // tinyint
			/// <summary>
			/// Based on <strong>path_type</strong> value 'XQUERY' or 'SQL'.
			/// </summary>
			[Column("path_type_desc"),                   Nullable] public string? PathTypeDesc              { get; set; } // sysname
			/// <summary>
			/// Unique ID of the XML schema component in the database.
			/// </summary>
			[Column("xml_component_id"),                 Nullable] public int?    XmlComponentID            { get; set; } // int
			/// <summary>
			/// Name of the specified xsd type.
			/// </summary>
			[Column("xquery_type_description"),          Nullable] public string? XqueryTypeDescription     { get; set; } // nvarchar(4000)
			/// <summary>
			/// 1 = type is inferred.
			/// </summary>
			[Column("is_xquery_type_inferred"),          Nullable] public bool?   IsXqueryTypeInferred      { get; set; } // bit
			/// <summary>
			/// Max length (in character of xsd type).
			/// </summary>
			[Column("xquery_max_length"),                Nullable] public short?  XqueryMaxLength           { get; set; } // smallint
			/// <summary>
			/// 1 = maximum length is inferred.
			/// </summary>
			[Column("is_xquery_max_length_inferred"),    Nullable] public bool?   IsXqueryMaxLengthInferred { get; set; } // bit
			/// <summary>
			/// 0 = node() hint not present.<br/><br/> 1 = node() optimization hint applied.
			/// </summary>
			[Column("is_node"),                          Nullable] public bool?   IsNode                    { get; set; } // bit
			/// <summary>
			/// ID of the system type of the column.
			/// </summary>
			[Column("system_type_id"),                   Nullable] public byte?   SystemTypeID              { get; set; } // tinyint
			/// <summary>
			/// ID of the user type of the column.
			/// </summary>
			[Column("user_type_id"),                     Nullable] public byte?   UserTypeID                { get; set; } // tinyint
			/// <summary>
			/// Max Length (in bytes) of the type.<br/><br/> -1 = Column data type is varchar(max), nvarchar(max), varbinary(max), or xml.
			/// </summary>
			[Column("max_length"),                       Nullable] public short?  MaxLength                 { get; set; } // smallint
			/// <summary>
			/// Maximum precision of the type if it is numeric-based. Otherwise 0.
			/// </summary>
			[Column("precision"),                        Nullable] public byte?   Precision                 { get; set; } // tinyint
			/// <summary>
			/// Maximum scale of the type if it is numeric-based. Otherwise, 0.
			/// </summary>
			[Column("scale"),                            Nullable] public byte?   Scale                     { get; set; } // tinyint
			/// <summary>
			/// Name of the collation of the type if it is character-based. Otherwise, NULL.
			/// </summary>
			[Column("collation_name"),                   Nullable] public string? CollationName             { get; set; } // sysname
			/// <summary>
			/// 0 = SINGLETON hint not present.<br/><br/> 1 = SINGLETON optimization hint applied.
			/// </summary>
			[Column("is_singleton"),                     Nullable] public bool?   IsSingleton               { get; set; } // bit

			#region Associations

			/// <summary>
			/// objects (sys.objects)
			/// </summary>
			[Association(ThisKey="ObjectID", OtherKey="ObjectID", CanBeNull=false)]
			public ObjectSchema.Object Object { get; set; } = null!;

			#endregion
		}

		/// <summary>
		/// <para><strong>sys.xml_indexes (Transact-SQL)</strong></para>
		/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)</para>
		/// <para>Returns one row per XML index.</para><br/>
		/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-xml-indexes-transact-sql'>sys.xml_indexes</a>.</para>
		/// </summary>
		[Table(Schema="sys", Name="xml_indexes", IsView=true)]
		public partial class XmlIndex
		{
			/// <summary>
			/// ID of the object to which this index belongs.
			/// </summary>
			[Column("object_id"),                   NotNull    ] public int     ObjectID                 { get; set; } // int
			/// <summary>
			/// Name of the index. <strong>name</strong> is unique only within the object.<br/><br/> NULL = Heap
			/// </summary>
			[Column("name"),                           Nullable] public string? Name                     { get; set; } // sysname
			/// <summary>
			/// ID of the index. <strong>index_id</strong> is unique only within the object.<br/><br/> 0 = Heap<br/><br/> 1 = Clustered index<br/><br/> > 1 = Nonclustered index
			/// </summary>
			[Column("index_id"),                    NotNull    ] public int     IndexID                  { get; set; } // int
			/// <summary>
			/// Type of index:<br/><br/> 0 = Heap<br/><br/> 1 = Clustered rowstore (b-tree)<br/><br/> 2 = Nonclustered rowstore (b-tree)<br/><br/> 3 = XML<br/><br/> 4 = Spatial<br/><br/> 5 = Clustered columnstore index. <strong>Applies to</strong>: SQL Server 2014 (12.x) and later.<br/><br/> 6 = Nonclustered columnstore index. <strong>Applies to</strong>: SQL Server 2012 (11.x) and later.<br/><br/> 7 = Nonclustered hash index. <strong>Applies to</strong>: SQL Server 2014 (12.x) and later.
			/// </summary>
			[Column("type"),                        NotNull    ] public byte    TypeColumn               { get; set; } // tinyint
			/// <summary>
			/// Description of index type:<br/><br/> HEAP<br/><br/> CLUSTERED<br/><br/> NONCLUSTERED<br/><br/> XML<br/><br/> SPATIAL<br/><br/> CLUSTERED COLUMNSTORE - <strong>Applies to</strong>: SQL Server 2014 (12.x) and later.<br/><br/> NONCLUSTERED COLUMNSTORE - <strong>Applies to</strong>: SQL Server 2012 (11.x) and later.<br/><br/> NONCLUSTERED HASH : NONCLUSTERED HASH indexes are supported only on memory-optimized tables. The sys.hash_indexes view shows the current hash indexes and the hash properties. For more information, see <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-hash-indexes-transact-sql'>sys.hash_indexes (Transact-SQL)</a>. <strong>Applies to</strong>: SQL Server 2014 (12.x) and later.
			/// </summary>
			[Column("type_desc"),                      Nullable] public string? TypeDesc                 { get; set; } // nvarchar(60)
			/// <summary>
			/// 1 = Index is unique.<br/><br/> 0 = Index is not unique.<br/><br/> Always 0 for clustered columnstore indexes.
			/// </summary>
			[Column("is_unique"),                      Nullable] public bool?   IsUnique                 { get; set; } // bit
			/// <summary>
			/// ID of the data space for this index. Data space is either a filegroup or partition scheme.<br/><br/> 0 = <strong>object_id</strong> is a table-valued function or in-memory index.
			/// </summary>
			[Column("data_space_id"),               NotNull    ] public int     DataSpaceID              { get; set; } // int
			/// <summary>
			/// 1 = IGNORE_DUP_KEY is ON.<br/><br/> 0 = IGNORE_DUP_KEY is OFF.
			/// </summary>
			[Column("ignore_dup_key"),                 Nullable] public bool?   IgnoreDupKey             { get; set; } // bit
			/// <summary>
			/// 1 = Index is part of a PRIMARY KEY constraint.<br/><br/> Always 0 for clustered columnstore indexes.
			/// </summary>
			[Column("is_primary_key"),                 Nullable] public bool?   IsPrimaryKey             { get; set; } // bit
			/// <summary>
			/// 1 = Index is part of a UNIQUE constraint.<br/><br/> Always 0 for clustered columnstore indexes.
			/// </summary>
			[Column("is_unique_constraint"),           Nullable] public bool?   IsUniqueConstraint       { get; set; } // bit
			/// <summary>
			/// > 0 = FILLFACTOR percentage used when the index was created or rebuilt.<br/><br/> 0 = Default value<br/><br/> Always 0 for clustered columnstore indexes.
			/// </summary>
			[Column("fill_factor"),                 NotNull    ] public byte    FillFactor               { get; set; } // tinyint
			/// <summary>
			/// 1 = PADINDEX is ON.<br/><br/> 0 = PADINDEX is OFF.<br/><br/> Always 0 for clustered columnstore indexes.
			/// </summary>
			[Column("is_padded"),                      Nullable] public bool?   IsPadded                 { get; set; } // bit
			/// <summary>
			/// 1 = Index is disabled.<br/><br/> 0 = Index is not disabled.
			/// </summary>
			[Column("is_disabled"),                    Nullable] public bool?   IsDisabled               { get; set; } // bit
			/// <summary>
			/// 1 = Index is hypothetical and cannot be used directly as a data access path. Hypothetical indexes hold column-level statistics.<br/><br/> 0 = Index is not hypothetical.
			/// </summary>
			[Column("is_hypothetical"),                Nullable] public bool?   IsHypothetical           { get; set; } // bit
			/// <summary>
			/// 1 = Index allows row locks.<br/><br/> 0 = Index does not allow row locks.<br/><br/> Always 0 for clustered columnstore indexes.
			/// </summary>
			[Column("allow_row_locks"),                Nullable] public bool?   AllowRowLocks            { get; set; } // bit
			/// <summary>
			/// 1 = Index allows page locks.<br/><br/> 0 = Index does not allow page locks.<br/><br/> Always 0 for clustered columnstore indexes.
			/// </summary>
			[Column("allow_page_locks"),               Nullable] public bool?   AllowPageLocks           { get; set; } // bit
			/// <summary>
			/// 1 = Index has a filter and only contains rows that satisfy the filter definition.<br/><br/> 0 = Index does not have a filter.
			/// </summary>
			[Column("has_filter"),                  NotNull    ] public bool    HasFilter                { get; set; } // bit
			/// <summary>
			/// Expression for the subset of rows included in the filtered index.<br/><br/> NULL for heap, non-filtered index, or insufficient permissions on the table.
			/// </summary>
			[Column("filter_definition"),              Nullable] public string? FilterDefinition         { get; set; } // nvarchar(max)
			/// <summary>
			/// > 0 = Columnstore index compression delay specified in minutes.<br/><br/> NULL = Columnstore index rowgroup compression delay is managed automatically.
			/// </summary>
			[Column("compression_delay"),           NotNull    ] public int     CompressionDelay         { get; set; } // int
			/// <summary>
			/// 1 = Index is configured to suppress duplicate key messages during an index rebuild operation.<br/><br/> <strong>0</strong> = Index is not configured to suppress duplicate key messages during an index rebuild operation.<br/><br/><strong>Applies to:</strong> SQL Server (Starting with SQL Server 2017 (14.x)), Azure SQL Database, and Azure SQL Managed Instance
			/// </summary>
			[Column("suppress_dup_key_messages"),   NotNull    ] public bool    SuppressDupKeyMessages   { get; set; } // bit
			/// <summary>
			/// 1 = Index was created by the automatic tuning.<br/><br/>0 = Index was created by the user.<br/><br/><strong>Applies to:</strong> Azure SQL Database
			/// </summary>
			[Column("auto_created"),                   Nullable] public bool?   AutoCreated              { get; set; } // bit
			/// <summary>
			/// 1 = Index has last-page insert optimization enabled.<br/><br/>0 = Default value. Index has last-page insert optimization disabled.<br/><br/><strong>Applies to:</strong> SQL Server (Starting with SQL Server 2019 (15.x)), Azure SQL Database, and Azure SQL Managed Instance
			/// </summary>
			[Column("optimize_for_sequential_key"), NotNull    ] public bool    OptimizeForSequentialKey { get; set; } // bit
			/// <summary>
			/// NULL = Primary XML index.<br/><br/> Nonnull = Secondary XML index.<br/><br/> Nonnull is a self-join reference to the primary XML index.
			/// </summary>
			[Column("using_xml_index_id"),             Nullable] public int?    UsingXmlIndexID          { get; set; } // int
			/// <summary>
			/// Type description of secondary index:<br/><br/> P = PATH secondary XML index<br/><br/> V = VALUE secondary XML index<br/><br/> R = PROPERTY secondary XML index<br/><br/> NULL = Primary XML index
			/// </summary>
			[Column("secondary_type"),                 Nullable] public string? SecondaryType            { get; set; } // char(1)
			/// <summary>
			/// Type description of secondary index:<br/><br/> PATH = PATH secondary XML index<br/><br/> VALUE = VALUE secondary XML index<br/><br/> PROPERTY = PROPERTY secondary xml indexes.<br/><br/> NULL = Primary XML index
			/// </summary>
			[Column("secondary_type_desc"),            Nullable] public string? SecondaryTypeDesc        { get; set; } // nvarchar(60)
			/// <summary>
			/// Index type:<br/><br/> 0 = Primary XML index<br/><br/> 1 = Secondary XML index<br/><br/> 2 = Selective XML index<br/><br/> 3 = Secondary selective  XML index
			/// </summary>
			[Column("xml_index_type"),                 Nullable] public byte?   XmlIndeXType             { get; set; } // tinyint
			/// <summary>
			/// Description of index type:<br/><br/> PRIMARY_XML<br/><br/> Secondary XML Index<br/><br/> Selective XML Index<br/><br/> Secondary Selective  XML index
			/// </summary>
			[Column("xml_index_type_description"),     Nullable] public string? XmlIndexTypeDescription  { get; set; } // nvarchar(60)
			/// <summary>
			/// NULL for all XML indexes except secondary selective XML index.<br/><br/> Else, the ID of the promoted path over which the secondary selective XML index is built. This value is the same value as path_id from sys.selective_xml_index_paths system view.
			/// </summary>
			[Column("path_id"),                        Nullable] public int?    PathID                   { get; set; } // int

			#region Associations

			/// <summary>
			/// objects (sys.objects)
			/// </summary>
			[Association(ThisKey="ObjectID", OtherKey="ObjectID", CanBeNull=false)]
			public ObjectSchema.Object Object { get; set; } = null!;

			#endregion
		}

		/// <summary>
		/// <para><strong>sys.xml_schema_attributes (Transact-SQL)</strong></para>
		/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)</para>
		/// <para>Returns a row per XML schema component that is an attribute, <strong>symbol_space</strong> of <strong>A</strong>.</para><br/>
		/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-xml-schema-attributes-transact-sql'>sys.xml_schema_attributes</a>.</para>
		/// </summary>
		[Table(Schema="sys", Name="xml_schema_attributes", IsView=true)]
		public partial class XmlSchemaAttribute
		{
			/// <summary>
			/// Unique ID of the XML schema component in the database.
			/// </summary>
			[Column("xml_component_id"),         NotNull    ] public int     XmlComponentID        { get; set; } // int
			/// <summary>
			/// ID of the XML schema collection that contains the namespace of this component.
			/// </summary>
			[Column("xml_collection_id"),        NotNull    ] public int     XmlCollectionID       { get; set; } // int
			/// <summary>
			/// ID of the XML namespace within the collection.
			/// </summary>
			[Column("xml_namespace_id"),         NotNull    ] public int     XmlNamespaceID        { get; set; } // int
			/// <summary>
			/// 1 = This component has an explicit namespace qualifier.<br/><br/> 0 = This is a locally scoped component. In this case, the pair, <strong>namespace_id</strong>, <strong>collection_id</strong>, refers to the 'no namespace' <strong>targetNamespace</strong>.<br/><br/> For wildcard components this value will be equal to 1.
			/// </summary>
			[Column("is_qualified"),             NotNull    ] public bool    IsQualified           { get; set; } // bit
			/// <summary>
			/// Unique name of the XML schema component. Is NULL if the component is unnamed.
			/// </summary>
			[Column("name"),                        Nullable] public string? Name                  { get; set; } // nvarchar
			/// <summary>
			/// Space in which this symbol name is unique, based on <strong>kind</strong>:<br/><br/> N = None<br/><br/> T = Type<br/><br/> E = Element<br/><br/> M = Model-Group<br/><br/> A = Attribute<br/><br/> G = Attribute-Group
			/// </summary>
			[Column("symbol_space"),             NotNull    ] public string  SymbolSpace           { get; set; } = null!; // char(1)
			/// <summary>
			/// Description of space in which this symbol name is unique, based on <strong>kind</strong>:<br/><br/> NONE<br/><br/> TYPE<br/><br/> ELEMENT<br/><br/> MODEL_GROUP<br/><br/> ATTRIBUTE<br/><br/> ATTRIBUTE_GROUP
			/// </summary>
			[Column("symbol_space_desc"),           Nullable] public string? SymbolSpaceDesc       { get; set; } // nvarchar
			/// <summary>
			/// Kind of XML schema component.<br/><br/> N = Any Type (special intrinsic component)<br/><br/> Z = Any Simple Type (special intrinsic component)<br/><br/> P = Primitive Type (intrinsic types)<br/><br/> S = Simple Type<br/><br/> L = List Type<br/><br/> U = Union Type<br/><br/> C = Complex Simple Type (derived from Simple)<br/><br/> K = Complex Type<br/><br/> E = Element<br/><br/> M = Model-Group<br/><br/> W = Element-Wildcard<br/><br/> A = Attribute<br/><br/> G = Attribute-Group<br/><br/> V = Attribute-Wildcard
			/// </summary>
			[Column("kind"),                     NotNull    ] public string  Kind                  { get; set; } = null!; // char(1)
			/// <summary>
			/// Description of the kind of XML schema component:<br/><br/> ANY_TYPE<br/><br/> ANY_SIMPLE_TYPE<br/><br/> PRIMITIVE_TYPE<br/><br/> SIMPLE_TYPE<br/><br/> LIST_TYPE<br/><br/> UNION_TYPE<br/><br/> COMPLEX_SIMPLE_TYPE<br/><br/> COMPLEX_TYPE<br/><br/> ELEMENT<br/><br/> MODEL_GROUP<br/><br/> ELEMENT_WILDCARD<br/><br/> ATTRIBUTE<br/><br/> ATTRIBUTE_GROUP<br/><br/> ATTRIBUTE_WILDCARD
			/// </summary>
			[Column("kind_desc"),                   Nullable] public string? KindDesc              { get; set; } // nvarchar
			/// <summary>
			/// Derivation method for derived types:<br/><br/> N = None (not derived)<br/><br/> X = Extension<br/><br/> R = Restriction<br/><br/> S = Substitution
			/// </summary>
			[Column("derivation"),               NotNull    ] public string  Derivation            { get; set; } = null!; // char(1)
			/// <summary>
			/// Description of derivation method for derived types:<br/><br/> NONE<br/><br/> EXTENSION<br/><br/> RESTRICTION<br/><br/> SUBSTITUTION
			/// </summary>
			[Column("derivation_desc"),             Nullable] public string? DerivationDesc        { get; set; } // nvarchar
			/// <summary>
			/// ID of the component from which this component is derived. NULL if there is none.
			/// </summary>
			[Column("base_xml_component_id"),       Nullable] public int?    BaseXmlComponentID    { get; set; } // int
			/// <summary>
			/// Unique ID of the scoping component. NULL if there is none (global scope).
			/// </summary>
			[Column("scoping_xml_component_id"),    Nullable] public int?    ScopingXmlComponentID { get; set; } // int
			/// <summary>
			/// 1 = The default value is a fixed value. This value cannot be overridden in an XML instance.<br/><br/> 0 = The default value is not a fixed value for the attribute. (default)
			/// </summary>
			[Column("is_default_fixed"),         NotNull    ] public bool    IsDefaultFixed        { get; set; } // bit
			/// <summary>
			/// 1 = The attribute must be explicitly namespace qualified.<br/><br/> 0 = The attribute may be implicitly namespace qualified. (default)
			/// </summary>
			[Column("must_be_qualified"),        NotNull    ] public bool    MustBeQualified       { get; set; } // bit
			/// <summary>
			/// Default value of the attribute. Is NULL if a default value is not supplied.
			/// </summary>
			[Column("default_value"),               Nullable] public string? DefaultValue          { get; set; } // nvarchar
		}

		/// <summary>
		/// <para><strong>sys.xml_schema_collections (Transact-SQL)</strong></para>
		/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)  √ Azure SQL Database</para>
		/// <para>Returns a row per XML schema collection. An XML schema collection is a named set of XSD definitions. The XML schema collection itself is contained in a relational schema, and it is identified by a schema-scoped Transact\-SQL name. The following tuples are unique: xml_collection_id, and schema_id and name.</para><br/>
		/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-xml-schema-collections-transact-sql'>sys.xml_schema_collections</a>.</para>
		/// </summary>
		[Table(Schema="sys", Name="xml_schema_collections", IsView=true)]
		public partial class XmlSchemaCollection
		{
			/// <summary>
			/// ID of the XML schema collection. Unique within the database.
			/// </summary>
			[Column("xml_collection_id"), NotNull    ] public int      XmlCollectionID { get; set; } // int
			/// <summary>
			/// ID of the relational schema that contains this XML schema collection.
			/// </summary>
			[Column("schema_id"),         NotNull    ] public int      SchemaID        { get; set; } // int
			/// <summary>
			/// ID of the individual owner if different from the schema owner. By default, schema-contained objects are owned by the schema owner. However, an alternate owner may be specified by using the ALTER AUTHORIZATION statement to change ownership.<br/><br/> NULL = No alternate individual owner.
			/// </summary>
			[Column("principal_id"),         Nullable] public int?     PrincipalID     { get; set; } // int
			/// <summary>
			/// Name of the XML schema collection.
			/// </summary>
			[Column("name"),              NotNull    ] public string   Name            { get; set; } = null!; // sysname
			/// <summary>
			/// Date the XML schema collection was created.
			/// </summary>
			[Column("create_date"),       NotNull    ] public DateTime CreateDate      { get; set; } // datetime
			/// <summary>
			/// Date the XML schema collection was last altered.
			/// </summary>
			[Column("modify_date"),       NotNull    ] public DateTime ModifyDate      { get; set; } // datetime
		}

		/// <summary>
		/// <para><strong>sys.xml_schema_components (Transact-SQL)</strong></para>
		/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)</para>
		/// <para>Returns a row per component of an XML schema. The pair (<strong>collection_id</strong>, <strong>namespace_id</strong>) is a compound foreign key to the containing namespace. For named components, the values for <strong>symbol_space</strong>, <strong>name</strong>, <strong>scoping_xml_component_id</strong>, <strong>is_qualified</strong>, <strong>xml_namespace_id</strong>, <strong>xml_collection_id</strong> are unique.</para><br/>
		/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-xml-schema-components-transact-sql'>sys.xml_schema_components</a>.</para>
		/// </summary>
		[Table(Schema="sys", Name="xml_schema_components", IsView=true)]
		public partial class XmlSchemaComponent
		{
			/// <summary>
			/// Unique ID of the XML schema component in the database.
			/// </summary>
			[Column("xml_component_id"),         NotNull    ] public int     XmlComponentID        { get; set; } // int
			/// <summary>
			/// ID of the XML schema collection that contains the namespace of this component.
			/// </summary>
			[Column("xml_collection_id"),        NotNull    ] public int     XmlCollectionID       { get; set; } // int
			/// <summary>
			/// ID of the XML namespace within the collection.
			/// </summary>
			[Column("xml_namespace_id"),         NotNull    ] public int     XmlNamespaceID        { get; set; } // int
			/// <summary>
			/// 1 = This component has an explicit namespace qualifier.<br/><br/> 0 = This is a locally scoped component. In this case, the pair, <strong>namespace_id</strong>, <strong>collection_id</strong>, refers to the 'no namespace' <strong>targetNamespace</strong>.<br/><br/> For wildcard components this value will be equal to 1.
			/// </summary>
			[Column("is_qualified"),             NotNull    ] public bool    IsQualified           { get; set; } // bit
			/// <summary>
			/// Unique name of the XML schema component. Is NULL if the component is unnamed.
			/// </summary>
			[Column("name"),                        Nullable] public string? Name                  { get; set; } // nvarchar
			/// <summary>
			/// Space in which this symbol name is unique, based on <strong>kind</strong>:<br/><br/> N = None<br/><br/> T = Type<br/><br/> E = Element<br/><br/> M = Model-Group<br/><br/> A = Attribute<br/><br/> G = Attribute-Group
			/// </summary>
			[Column("symbol_space"),             NotNull    ] public string  SymbolSpace           { get; set; } = null!; // char(1)
			/// <summary>
			/// Description of space in which this symbol name is unique, based on <strong>kind</strong>:<br/><br/> NONE<br/><br/> TYPE<br/><br/> ELEMENT<br/><br/> MODEL_GROUP<br/><br/> ATTRIBUTE<br/><br/> ATTRIBUTE_GROUP
			/// </summary>
			[Column("symbol_space_desc"),           Nullable] public string? SymbolSpaceDesc       { get; set; } // nvarchar
			/// <summary>
			/// Kind of XML schema component.<br/><br/> N = Any Type (special intrinsic component)<br/><br/> Z = Any Simple Type (special intrinsic component)<br/><br/> P = Primitive Type (intrinsic types)<br/><br/> S = Simple Type<br/><br/> L = List Type<br/><br/> U = Union Type<br/><br/> C = Complex Simple Type (derived from Simple)<br/><br/> K = Complex Type<br/><br/> E = Element<br/><br/> M = Model-Group<br/><br/> W = Element-Wildcard<br/><br/> A = Attribute<br/><br/> G = Attribute-Group<br/><br/> V = Attribute-Wildcard
			/// </summary>
			[Column("kind"),                     NotNull    ] public string  Kind                  { get; set; } = null!; // char(1)
			/// <summary>
			/// Description of the kind of XML schema component:<br/><br/> ANY_TYPE<br/><br/> ANY_SIMPLE_TYPE<br/><br/> PRIMITIVE_TYPE<br/><br/> SIMPLE_TYPE<br/><br/> LIST_TYPE<br/><br/> UNION_TYPE<br/><br/> COMPLEX_SIMPLE_TYPE<br/><br/> COMPLEX_TYPE<br/><br/> ELEMENT<br/><br/> MODEL_GROUP<br/><br/> ELEMENT_WILDCARD<br/><br/> ATTRIBUTE<br/><br/> ATTRIBUTE_GROUP<br/><br/> ATTRIBUTE_WILDCARD
			/// </summary>
			[Column("kind_desc"),                   Nullable] public string? KindDesc              { get; set; } // nvarchar
			/// <summary>
			/// Derivation method for derived types:<br/><br/> N = None (not derived)<br/><br/> X = Extension<br/><br/> R = Restriction<br/><br/> S = Substitution
			/// </summary>
			[Column("derivation"),               NotNull    ] public string  Derivation            { get; set; } = null!; // char(1)
			/// <summary>
			/// Description of derivation method for derived types:<br/><br/> NONE<br/><br/> EXTENSION<br/><br/> RESTRICTION<br/><br/> SUBSTITUTION
			/// </summary>
			[Column("derivation_desc"),             Nullable] public string? DerivationDesc        { get; set; } // nvarchar
			/// <summary>
			/// ID of the component from which this component is derived. NULL if there is none.
			/// </summary>
			[Column("base_xml_component_id"),       Nullable] public int?    BaseXmlComponentID    { get; set; } // int
			/// <summary>
			/// Unique ID of the scoping component. NULL if there is none (global scope).
			/// </summary>
			[Column("scoping_xml_component_id"),    Nullable] public int?    ScopingXmlComponentID { get; set; } // int
		}

		/// <summary>
		/// <para><strong>sys.xml_schema_component_placements (Transact-SQL)</strong></para>
		/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)</para>
		/// <para>Returns a row per placement for XML schema components.</para><br/>
		/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-xml-schema-component-placements-transact-sql'>sys.xml_schema_component_placements</a>.</para>
		/// </summary>
		[Table(Schema="sys", Name="xml_schema_component_placements", IsView=true)]
		public partial class XmlSchemaComponentPlacement
		{
			/// <summary>
			/// ID of the XML schema component that owns this placement.
			/// </summary>
			[Column("xml_component_id"),        NotNull    ] public int     XmlComponentID       { get; set; } // int
			/// <summary>
			/// ID of the placement. This is unique within the owning XML schema component.
			/// </summary>
			[Column("placement_id"),            NotNull    ] public int     PlacementID          { get; set; } // int
			/// <summary>
			/// ID of the placed XML schema component.
			/// </summary>
			[Column("placed_xml_component_id"), NotNull    ] public int     PlacedXmlComponentID { get; set; } // int
			/// <summary>
			/// 1 = The default value is a fixed value. This value cannot be overridden in an XML instance.<br/><br/> 0 = The value can be overridden.(default)
			/// </summary>
			[Column("is_default_fixed"),        NotNull    ] public bool    IsDefaultFixed       { get; set; } // bit
			/// <summary>
			/// Minimum number of placed component occurs.
			/// </summary>
			[Column("min_occurrences"),         NotNull    ] public int     MinOccurrences       { get; set; } // int
			/// <summary>
			/// Maximum number of placed component occurs.
			/// </summary>
			[Column("max_occurrences"),         NotNull    ] public int     MaxOccurrences       { get; set; } // int
			/// <summary>
			/// Default value if one is supplied. Is NULL if a default value is not supplied.
			/// </summary>
			[Column("default_value"),              Nullable] public object? DefaultValue         { get; set; } // nvarchar (4000)
		}

		/// <summary>
		/// <para><strong>sys.xml_schema_elements (Transact-SQL)</strong></para>
		/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)</para>
		/// <para>Returns a row per XML schema component that is a Type, <strong>symbol_space</strong> of <strong>E</strong>.</para><br/>
		/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-xml-schema-elements-transact-sql'>sys.xml_schema_elements</a>.</para>
		/// </summary>
		[Table(Schema="sys", Name="xml_schema_elements", IsView=true)]
		public partial class XmlSchemaElement
		{
			/// <summary>
			/// Unique ID of the XML schema component in the database.
			/// </summary>
			[Column("xml_component_id"),         NotNull    ] public int     XmlComponentID        { get; set; } // int
			/// <summary>
			/// ID of the XML schema collection that contains the namespace of this component.
			/// </summary>
			[Column("xml_collection_id"),        NotNull    ] public int     XmlCollectionID       { get; set; } // int
			/// <summary>
			/// ID of the XML namespace within the collection.
			/// </summary>
			[Column("xml_namespace_id"),         NotNull    ] public int     XmlNamespaceID        { get; set; } // int
			/// <summary>
			/// 1 = This component has an explicit namespace qualifier.<br/><br/> 0 = This is a locally scoped component. In this case, the pair, <strong>namespace_id</strong>, <strong>collection_id</strong>, refers to the 'no namespace' <strong>targetNamespace</strong>.<br/><br/> For wildcard components this value will be equal to 1.
			/// </summary>
			[Column("is_qualified"),             NotNull    ] public bool    IsQualified           { get; set; } // bit
			/// <summary>
			/// Unique name of the XML schema component. Is NULL if the component is unnamed.
			/// </summary>
			[Column("name"),                        Nullable] public string? Name                  { get; set; } // nvarchar
			/// <summary>
			/// Space in which this symbol name is unique, based on <strong>kind</strong>:<br/><br/> N = None<br/><br/> T = Type<br/><br/> E = Element<br/><br/> M = Model-Group<br/><br/> A = Attribute<br/><br/> G = Attribute-Group
			/// </summary>
			[Column("symbol_space"),             NotNull    ] public string  SymbolSpace           { get; set; } = null!; // char(1)
			/// <summary>
			/// Description of space in which this symbol name is unique, based on <strong>kind</strong>:<br/><br/> NONE<br/><br/> TYPE<br/><br/> ELEMENT<br/><br/> MODEL_GROUP<br/><br/> ATTRIBUTE<br/><br/> ATTRIBUTE_GROUP
			/// </summary>
			[Column("symbol_space_desc"),           Nullable] public string? SymbolSpaceDesc       { get; set; } // nvarchar
			/// <summary>
			/// Kind of XML schema component.<br/><br/> N = Any Type (special intrinsic component)<br/><br/> Z = Any Simple Type (special intrinsic component)<br/><br/> P = Primitive Type (intrinsic types)<br/><br/> S = Simple Type<br/><br/> L = List Type<br/><br/> U = Union Type<br/><br/> C = Complex Simple Type (derived from Simple)<br/><br/> K = Complex Type<br/><br/> E = Element<br/><br/> M = Model-Group<br/><br/> W = Element-Wildcard<br/><br/> A = Attribute<br/><br/> G = Attribute-Group<br/><br/> V = Attribute-Wildcard
			/// </summary>
			[Column("kind"),                     NotNull    ] public string  Kind                  { get; set; } = null!; // char(1)
			/// <summary>
			/// Description of the kind of XML schema component:<br/><br/> ANY_TYPE<br/><br/> ANY_SIMPLE_TYPE<br/><br/> PRIMITIVE_TYPE<br/><br/> SIMPLE_TYPE<br/><br/> LIST_TYPE<br/><br/> UNION_TYPE<br/><br/> COMPLEX_SIMPLE_TYPE<br/><br/> COMPLEX_TYPE<br/><br/> ELEMENT<br/><br/> MODEL_GROUP<br/><br/> ELEMENT_WILDCARD<br/><br/> ATTRIBUTE<br/><br/> ATTRIBUTE_GROUP<br/><br/> ATTRIBUTE_WILDCARD
			/// </summary>
			[Column("kind_desc"),                   Nullable] public string? KindDesc              { get; set; } // nvarchar
			/// <summary>
			/// Derivation method for derived types:<br/><br/> N = None (not derived)<br/><br/> X = Extension<br/><br/> R = Restriction<br/><br/> S = Substitution
			/// </summary>
			[Column("derivation"),               NotNull    ] public string  Derivation            { get; set; } = null!; // char(1)
			/// <summary>
			/// Description of derivation method for derived types:<br/><br/> NONE<br/><br/> EXTENSION<br/><br/> RESTRICTION<br/><br/> SUBSTITUTION
			/// </summary>
			[Column("derivation_desc"),             Nullable] public string? DerivationDesc        { get; set; } // nvarchar
			/// <summary>
			/// ID of the component from which this component is derived. NULL if there is none.
			/// </summary>
			[Column("base_xml_component_id"),       Nullable] public int?    BaseXmlComponentID    { get; set; } // int
			/// <summary>
			/// Unique ID of the scoping component. NULL if there is none (global scope).
			/// </summary>
			[Column("scoping_xml_component_id"),    Nullable] public int?    ScopingXmlComponentID { get; set; } // int
			/// <summary>
			/// 1 = Default value is a fixed value. This value cannot be overridden in XML instance.<br/><br/> 0 = Default value is not a fixed value for the element. (default).
			/// </summary>
			[Column("is_default_fixed"),         NotNull    ] public bool    IsDefaultFixed        { get; set; } // bit
			/// <summary>
			/// 1 = Element is abstract and cannot be used in an instance document. A member of the substitution group of the element must appear in the instance document.<br/><br/> 0 = Element is not abstract. (default).
			/// </summary>
			[Column("is_abstract"),              NotNull    ] public bool    IsAbstract            { get; set; } // bit
			/// <summary>
			/// 1 = Element is nillable.<br/><br/> 0 = Element is not nillable. (default)
			/// </summary>
			[Column("is_nillable"),              NotNull    ] public bool    IsNillable            { get; set; } // bit
			/// <summary>
			/// 1 = Element must be explicitly namespace qualified.<br/><br/> 0 = Element may be implicitly namespace qualified. (default)
			/// </summary>
			[Column("must_be_qualified"),        NotNull    ] public bool    MustBeQualified       { get; set; } // bit
			/// <summary>
			/// 1 = Replacement with an instance of an extension type is blocked.<br/><br/> 0 = Replacement with extension type is allowed. (default)
			/// </summary>
			[Column("is_extension_blocked"),     NotNull    ] public bool    IsExtensionBlocked    { get; set; } // bit
			/// <summary>
			/// 1 = Replacement with an instance of a restriction type is blocked.<br/><br/> 0 = Replacement with restriction type is allowed. (default)
			/// </summary>
			[Column("is_restriction_blocked"),   NotNull    ] public bool    IsRestrictionBlocked  { get; set; } // bit
			/// <summary>
			/// 1 = Instance of a substitution group cannot be used.<br/><br/> 0 = Replacement with substitution group is permitted. (default)
			/// </summary>
			[Column("is_substitution_blocked"),  NotNull    ] public bool    IsSubstitutionBlocked { get; set; } // bit
			/// <summary>
			/// 1 = Replacement with an instance of an extension type is disallowed.<br/><br/> 0 = Replacement in an instance of an extension type is allowed. (default)
			/// </summary>
			[Column("is_final_extension"),       NotNull    ] public bool    IsFinalExtension      { get; set; } // bit
			/// <summary>
			/// 1 = Replacement with an instance of a restriction type is disallowed.<br/><br/> 0 = Replacement in an instance of a restriction type is allowed. (default)
			/// </summary>
			[Column("is_final_restriction"),     NotNull    ] public bool    IsFinalRestriction    { get; set; } // bit
			/// <summary>
			/// Default value of the element. NULL if a default value is not supplied.
			/// </summary>
			[Column("default_value"),               Nullable] public object? DefaultValue          { get; set; } // nvarchar (4000)
		}

		/// <summary>
		/// <para><strong>sys.xml_schema_facets (Transact-SQL)</strong></para>
		/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)</para>
		/// <para>Returns a row per facet (restriction) of an xml-type definition (corresponds to <strong>sys.xml_types</strong>).</para><br/>
		/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-xml-schema-facets-transact-sql'>sys.xml_schema_facets</a>.</para>
		/// </summary>
		[Table(Schema="sys", Name="xml_schema_facets", IsView=true)]
		public partial class XmlSchemaFacet
		{
			/// <summary>
			/// ID of XML component (type) to which this facet belongs.
			/// </summary>
			[Column("xml_component_id"), NotNull    ] public int     XmlComponentID { get; set; } // int
			/// <summary>
			/// ID (1-based ordinal) of facet, unique within component-id.
			/// </summary>
			[Column("facet_id"),         NotNull    ] public int     FacetID        { get; set; } // int
			/// <summary>
			/// Kind of facet:<br/><br/> LG = Length<br/><br/> LN = Minimum Length<br/><br/> LX = Maximum Length<br/><br/> PT = Pattern (regular expression)<br/><br/> EU = Enumeration<br/><br/> IN = Minimum Inclusive value<br/><br/> IX = Maximum Inclusive value<br/><br/> EN = Minimum Exclusive value<br/><br/> EX = Maximum Exclusive value<br/><br/> DT = Total Digits<br/><br/> DF = Fraction Digits<br/><br/> WS = White Space normalization
			/// </summary>
			[Column("kind"),             NotNull    ] public string  Kind           { get; set; } = null!; // char(2)
			/// <summary>
			/// Description of kind of facet:<br/><br/> LENGTH<br/><br/> MINIMUM_LENGTH<br/><br/> MAXIMUM_LENGTH<br/><br/> PATTERN<br/><br/> ENUMERATION<br/><br/> MINIMUM_INCLUSIVE_VALUE<br/><br/> MAXIMUM_INCLUSIVE_VALUE<br/><br/> MINIMUM_EXCLUSIVE_VALUE<br/><br/> MAXIMUM_EXCLUSIVE_VALUE<br/><br/> TOTAL_DIGITS<br/><br/> FRACTION_DIGITS<br/><br/> WHITESPACE_NORMALIZATION
			/// </summary>
			[Column("kind_desc"),           Nullable] public object? KindDesc       { get; set; } // nvarchar (60)
			/// <summary>
			/// 1 = Facet has a fixed, prespecified value.<br/><br/> 0 = No fixed value. (default)
			/// </summary>
			[Column("is_fixed"),         NotNull    ] public bool    IsFixed        { get; set; } // bit
			/// <summary>
			/// Fixed, pre-specified value of the facet.
			/// </summary>
			[Column("value"),               Nullable] public object? Value          { get; set; } // nvarchar (4000)
		}

		/// <summary>
		/// <para><strong>sys.xml_schema_model_groups (Transact-SQL)</strong></para>
		/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)</para>
		/// <para>Returns a row per XML schema component that is a Model-Group, <strong>symbol_space</strong> of <strong>M</strong>..</para><br/>
		/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-xml-schema-model-groups-transact-sql'>sys.xml_schema_model_groups</a>.</para>
		/// </summary>
		[Table(Schema="sys", Name="xml_schema_model_groups", IsView=true)]
		public partial class XmlSchemaModelGroup
		{
			/// <summary>
			/// Unique ID of the XML schema component in the database.
			/// </summary>
			[Column("xml_component_id"),         NotNull    ] public int     XmlComponentID        { get; set; } // int
			/// <summary>
			/// ID of the XML schema collection that contains the namespace of this component.
			/// </summary>
			[Column("xml_collection_id"),        NotNull    ] public int     XmlCollectionID       { get; set; } // int
			/// <summary>
			/// ID of the XML namespace within the collection.
			/// </summary>
			[Column("xml_namespace_id"),         NotNull    ] public int     XmlNamespaceID        { get; set; } // int
			/// <summary>
			/// 1 = This component has an explicit namespace qualifier.<br/><br/> 0 = This is a locally scoped component. In this case, the pair, <strong>namespace_id</strong>, <strong>collection_id</strong>, refers to the 'no namespace' <strong>targetNamespace</strong>.<br/><br/> For wildcard components this value will be equal to 1.
			/// </summary>
			[Column("is_qualified"),             NotNull    ] public bool    IsQualified           { get; set; } // bit
			/// <summary>
			/// Unique name of the XML schema component. Is NULL if the component is unnamed.
			/// </summary>
			[Column("name"),                        Nullable] public string? Name                  { get; set; } // nvarchar
			/// <summary>
			/// Space in which this symbol name is unique, based on <strong>kind</strong>:<br/><br/> N = None<br/><br/> T = Type<br/><br/> E = Element<br/><br/> M = Model-Group<br/><br/> A = Attribute<br/><br/> G = Attribute-Group
			/// </summary>
			[Column("symbol_space"),             NotNull    ] public string  SymbolSpace           { get; set; } = null!; // char(1)
			/// <summary>
			/// Description of space in which this symbol name is unique, based on <strong>kind</strong>:<br/><br/> NONE<br/><br/> TYPE<br/><br/> ELEMENT<br/><br/> MODEL_GROUP<br/><br/> ATTRIBUTE<br/><br/> ATTRIBUTE_GROUP
			/// </summary>
			[Column("symbol_space_desc"),           Nullable] public string? SymbolSpaceDesc       { get; set; } // nvarchar
			/// <summary>
			/// Kind of XML schema component.<br/><br/> N = Any Type (special intrinsic component)<br/><br/> Z = Any Simple Type (special intrinsic component)<br/><br/> P = Primitive Type (intrinsic types)<br/><br/> S = Simple Type<br/><br/> L = List Type<br/><br/> U = Union Type<br/><br/> C = Complex Simple Type (derived from Simple)<br/><br/> K = Complex Type<br/><br/> E = Element<br/><br/> M = Model-Group<br/><br/> W = Element-Wildcard<br/><br/> A = Attribute<br/><br/> G = Attribute-Group<br/><br/> V = Attribute-Wildcard
			/// </summary>
			[Column("kind"),                     NotNull    ] public string  Kind                  { get; set; } = null!; // char(1)
			/// <summary>
			/// Description of the kind of XML schema component:<br/><br/> ANY_TYPE<br/><br/> ANY_SIMPLE_TYPE<br/><br/> PRIMITIVE_TYPE<br/><br/> SIMPLE_TYPE<br/><br/> LIST_TYPE<br/><br/> UNION_TYPE<br/><br/> COMPLEX_SIMPLE_TYPE<br/><br/> COMPLEX_TYPE<br/><br/> ELEMENT<br/><br/> MODEL_GROUP<br/><br/> ELEMENT_WILDCARD<br/><br/> ATTRIBUTE<br/><br/> ATTRIBUTE_GROUP<br/><br/> ATTRIBUTE_WILDCARD
			/// </summary>
			[Column("kind_desc"),                   Nullable] public string? KindDesc              { get; set; } // nvarchar
			/// <summary>
			/// Derivation method for derived types:<br/><br/> N = None (not derived)<br/><br/> X = Extension<br/><br/> R = Restriction<br/><br/> S = Substitution
			/// </summary>
			[Column("derivation"),               NotNull    ] public string  Derivation            { get; set; } = null!; // char(1)
			/// <summary>
			/// Description of derivation method for derived types:<br/><br/> NONE<br/><br/> EXTENSION<br/><br/> RESTRICTION<br/><br/> SUBSTITUTION
			/// </summary>
			[Column("derivation_desc"),             Nullable] public string? DerivationDesc        { get; set; } // nvarchar
			/// <summary>
			/// ID of the component from which this component is derived. NULL if there is none.
			/// </summary>
			[Column("base_xml_component_id"),       Nullable] public int?    BaseXmlComponentID    { get; set; } // int
			/// <summary>
			/// Unique ID of the scoping component. NULL if there is none (global scope).
			/// </summary>
			[Column("scoping_xml_component_id"),    Nullable] public int?    ScopingXmlComponentID { get; set; } // int
			/// <summary>
			/// Compositor kind of group:<br/><br/> A = XSD &lt;all&gt; Group<br/><br/> C = XSD &lt;choice&gt; Group<br/><br/> S = XSD &lt;sequence&gt; Group
			/// </summary>
			[Column("compositor"),               NotNull    ] public string  Compositor            { get; set; } = null!; // char(1)
			/// <summary>
			/// Description of compositor kind of group:<br/><br/> XSD_ALL_GROUP<br/><br/> XSD_CHOICE_GROUP<br/><br/> XSD_SEQUENCE_GROUP
			/// </summary>
			[Column("compositor_desc"),             Nullable] public object? CompositorDesc        { get; set; } // nvarchar (60)
		}

		/// <summary>
		/// <para><strong>sys.xml_schema_namespaces (Transact-SQL)</strong></para>
		/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)</para>
		/// <para>Returns a row per XSD-defined XML namespace. The following tuples are unique: <strong>collection_id</strong>, <strong>namespace_id</strong>, and <strong>collection_id</strong>, and <strong>name</strong>.</para><br/>
		/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-xml-schema-namespaces-transact-sql'>sys.xml_schema_namespaces</a>.</para>
		/// </summary>
		[Table(Schema="sys", Name="xml_schema_namespaces", IsView=true)]
		public partial class XmlSchemaNamespace
		{
			/// <summary>
			/// ID of the XML schema collection that contains this namespace.
			/// </summary>
			[Column("xml_collection_id"), NotNull    ] public int     XmlCollectionID { get; set; } // int
			/// <summary>
			/// Name of XML namespace. Blank <strong>name</strong> indicates no target namespace.
			/// </summary>
			[Column("name"),                 Nullable] public string? Name            { get; set; } // nvarchar(4000)
			/// <summary>
			/// 1-based ordinal that uniquely identifies the XML namespace in the database.
			/// </summary>
			[Column("xml_namespace_id"),  NotNull    ] public int     XmlNamespaceID  { get; set; } // int
		}

		/// <summary>
		/// <para><strong>sys.xml_schema_types (Transact-SQL)</strong></para>
		/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)</para>
		/// <para>Returns a row per XML schema component that is a Type, <strong>symbol_space</strong> of <strong>T</strong>.</para><br/>
		/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-xml-schema-types-transact-sql'>sys.xml_schema_types</a>.</para>
		/// </summary>
		[Table(Schema="sys", Name="xml_schema_types", IsView=true)]
		public partial class XmlSchemaType
		{
			/// <summary>
			/// Unique ID of the XML schema component in the database.
			/// </summary>
			[Column("xml_component_id"),         NotNull    ] public int     XmlComponentID        { get; set; } // int
			/// <summary>
			/// ID of the XML schema collection that contains the namespace of this component.
			/// </summary>
			[Column("xml_collection_id"),        NotNull    ] public int     XmlCollectionID       { get; set; } // int
			/// <summary>
			/// ID of the XML namespace within the collection.
			/// </summary>
			[Column("xml_namespace_id"),         NotNull    ] public int     XmlNamespaceID        { get; set; } // int
			/// <summary>
			/// 1 = This component has an explicit namespace qualifier.<br/><br/> 0 = This is a locally scoped component. In this case, the pair, <strong>namespace_id</strong>, <strong>collection_id</strong>, refers to the 'no namespace' <strong>targetNamespace</strong>.<br/><br/> For wildcard components this value will be equal to 1.
			/// </summary>
			[Column("is_qualified"),             NotNull    ] public bool    IsQualified           { get; set; } // bit
			/// <summary>
			/// Unique name of the XML schema component. Is NULL if the component is unnamed.
			/// </summary>
			[Column("name"),                        Nullable] public string? Name                  { get; set; } // nvarchar
			/// <summary>
			/// Space in which this symbol name is unique, based on <strong>kind</strong>:<br/><br/> N = None<br/><br/> T = Type<br/><br/> E = Element<br/><br/> M = Model-Group<br/><br/> A = Attribute<br/><br/> G = Attribute-Group
			/// </summary>
			[Column("symbol_space"),             NotNull    ] public string  SymbolSpace           { get; set; } = null!; // char(1)
			/// <summary>
			/// Description of space in which this symbol name is unique, based on <strong>kind</strong>:<br/><br/> NONE<br/><br/> TYPE<br/><br/> ELEMENT<br/><br/> MODEL_GROUP<br/><br/> ATTRIBUTE<br/><br/> ATTRIBUTE_GROUP
			/// </summary>
			[Column("symbol_space_desc"),           Nullable] public string? SymbolSpaceDesc       { get; set; } // nvarchar
			/// <summary>
			/// Kind of XML schema component.<br/><br/> N = Any Type (special intrinsic component)<br/><br/> Z = Any Simple Type (special intrinsic component)<br/><br/> P = Primitive Type (intrinsic types)<br/><br/> S = Simple Type<br/><br/> L = List Type<br/><br/> U = Union Type<br/><br/> C = Complex Simple Type (derived from Simple)<br/><br/> K = Complex Type<br/><br/> E = Element<br/><br/> M = Model-Group<br/><br/> W = Element-Wildcard<br/><br/> A = Attribute<br/><br/> G = Attribute-Group<br/><br/> V = Attribute-Wildcard
			/// </summary>
			[Column("kind"),                     NotNull    ] public string  Kind                  { get; set; } = null!; // char(1)
			/// <summary>
			/// Description of the kind of XML schema component:<br/><br/> ANY_TYPE<br/><br/> ANY_SIMPLE_TYPE<br/><br/> PRIMITIVE_TYPE<br/><br/> SIMPLE_TYPE<br/><br/> LIST_TYPE<br/><br/> UNION_TYPE<br/><br/> COMPLEX_SIMPLE_TYPE<br/><br/> COMPLEX_TYPE<br/><br/> ELEMENT<br/><br/> MODEL_GROUP<br/><br/> ELEMENT_WILDCARD<br/><br/> ATTRIBUTE<br/><br/> ATTRIBUTE_GROUP<br/><br/> ATTRIBUTE_WILDCARD
			/// </summary>
			[Column("kind_desc"),                   Nullable] public string? KindDesc              { get; set; } // nvarchar
			/// <summary>
			/// Derivation method for derived types:<br/><br/> N = None (not derived)<br/><br/> X = Extension<br/><br/> R = Restriction<br/><br/> S = Substitution
			/// </summary>
			[Column("derivation"),               NotNull    ] public string  Derivation            { get; set; } = null!; // char(1)
			/// <summary>
			/// Description of derivation method for derived types:<br/><br/> NONE<br/><br/> EXTENSION<br/><br/> RESTRICTION<br/><br/> SUBSTITUTION
			/// </summary>
			[Column("derivation_desc"),             Nullable] public string? DerivationDesc        { get; set; } // nvarchar
			/// <summary>
			/// ID of the component from which this component is derived. NULL if there is none.
			/// </summary>
			[Column("base_xml_component_id"),       Nullable] public int?    BaseXmlComponentID    { get; set; } // int
			/// <summary>
			/// Unique ID of the scoping component. NULL if there is none (global scope).
			/// </summary>
			[Column("scoping_xml_component_id"),    Nullable] public int?    ScopingXmlComponentID { get; set; } // int
			/// <summary>
			/// 1 = Type is an abstract type. All instances of an element of this type must use <strong>xsi:type</strong> to indicate a derived type that is not abstract.<br/><br/> 0 = Type is not abstract. (default)
			/// </summary>
			[Column("is_abstract"),              NotNull    ] public bool    IsAbstract            { get; set; } // bit
			/// <summary>
			/// 1 = Mixed content is allowed<br/><br/> 0 = Mixed content is not allowed. (default)
			/// </summary>
			[Column("allows_mixed_content"),     NotNull    ] public bool    AllowsMixedContent    { get; set; } // bit
			/// <summary>
			/// 1 = Replacement with an extension of the type is blocked in instances when the block attribute on the <strong>complexType</strong> definition or the <strong>blockDefault</strong> attribute of the ancestor &lt;schema&gt; element information item is set to 'extension' or '#all'.<br/><br/> 0 =Replacement with extension is not blocked.
			/// </summary>
			[Column("is_extension_blocked"),     NotNull    ] public bool    IsExtensionBlocked    { get; set; } // bit
			/// <summary>
			/// 1 = Replacement with a restriction of the type is blocked in instances when the block attribute on the <strong>complexType</strong> definition or the <strong>blockDefault</strong> attribute of the ancestor &lt;schema&gt; element information item is set to 'restriction' or '#all'.<br/><br/> 0 = Replacement with restriction is not blocked. (default)
			/// </summary>
			[Column("is_restriction_blocked"),   NotNull    ] public bool    IsRestrictionBlocked  { get; set; } // bit
			/// <summary>
			/// 1 = Derivation by extension of the type is blocked when the final attribute on the <strong>complexType</strong> definition or the <strong>finalDefault</strong> attribute of the ancestor &lt;schema&gt; element information item is set to 'extension' or '#all'.<br/><br/> 0 = Extension is allowed. (default)
			/// </summary>
			[Column("is_final_extension"),       NotNull    ] public bool    IsFinalExtension      { get; set; } // bit
			/// <summary>
			/// 1 = Derivation by restriction of the type is blocked when the final attribute on the simple or <strong>complexType</strong> definition or the <strong>finalDefault</strong> attribute of the ancestor &lt;schema&gt; element information item is set to 'restriction' or '#all'.<br/><br/> 0 = Restriction is allowed. (default)
			/// </summary>
			[Column("is_final_restriction"),     NotNull    ] public bool    IsFinalRestriction    { get; set; } // bit
			/// <summary>
			/// 1 = This simple type cannot be used as the item type in a list.<br/><br/> 0 = This type is a complex type, or it can be used as list item type. (default)
			/// </summary>
			[Column("is_final_list_member"),     NotNull    ] public bool    IsFinalListMember     { get; set; } // bit
			/// <summary>
			/// 1 = This simple type cannot be used as the member type of a union type.<br/><br/> 0 = This type is a complex type. or it can be used as union member type. (default)
			/// </summary>
			[Column("is_final_union_member"),    NotNull    ] public bool    IsFinalUnionMember    { get; set; } // bit
		}

		/// <summary>
		/// <para><strong>sys.xml_schema_wildcards (Transact-SQL)</strong></para>
		/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)</para>
		/// <para>Returns a row per XML schema component that is an Attribute-Wildcard (<strong>kind</strong> of <strong>V</strong>) or Element-Wildcard (<strong>kind</strong> of <strong>W</strong>), both with <strong>symbol_space</strong> of <strong>N</strong>.</para><br/>
		/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-xml-schema-wildcards-transact-sql'>sys.xml_schema_wildcards</a>.</para>
		/// </summary>
		[Table(Schema="sys", Name="xml_schema_wildcards", IsView=true)]
		public partial class XmlSchemaWildcard
		{
			/// <summary>
			/// Unique ID of the XML schema component in the database.
			/// </summary>
			[Column("xml_component_id"),         NotNull    ] public int     XmlComponentID        { get; set; } // int
			/// <summary>
			/// ID of the XML schema collection that contains the namespace of this component.
			/// </summary>
			[Column("xml_collection_id"),        NotNull    ] public int     XmlCollectionID       { get; set; } // int
			/// <summary>
			/// ID of the XML namespace within the collection.
			/// </summary>
			[Column("xml_namespace_id"),         NotNull    ] public int     XmlNamespaceID        { get; set; } // int
			/// <summary>
			/// 1 = This component has an explicit namespace qualifier.<br/><br/> 0 = This is a locally scoped component. In this case, the pair, <strong>namespace_id</strong>, <strong>collection_id</strong>, refers to the 'no namespace' <strong>targetNamespace</strong>.<br/><br/> For wildcard components this value will be equal to 1.
			/// </summary>
			[Column("is_qualified"),             NotNull    ] public bool    IsQualified           { get; set; } // bit
			/// <summary>
			/// Unique name of the XML schema component. Is NULL if the component is unnamed.
			/// </summary>
			[Column("name"),                        Nullable] public string? Name                  { get; set; } // nvarchar
			/// <summary>
			/// Space in which this symbol name is unique, based on <strong>kind</strong>:<br/><br/> N = None<br/><br/> T = Type<br/><br/> E = Element<br/><br/> M = Model-Group<br/><br/> A = Attribute<br/><br/> G = Attribute-Group
			/// </summary>
			[Column("symbol_space"),             NotNull    ] public string  SymbolSpace           { get; set; } = null!; // char(1)
			/// <summary>
			/// Description of space in which this symbol name is unique, based on <strong>kind</strong>:<br/><br/> NONE<br/><br/> TYPE<br/><br/> ELEMENT<br/><br/> MODEL_GROUP<br/><br/> ATTRIBUTE<br/><br/> ATTRIBUTE_GROUP
			/// </summary>
			[Column("symbol_space_desc"),           Nullable] public string? SymbolSpaceDesc       { get; set; } // nvarchar
			/// <summary>
			/// Kind of XML schema component.<br/><br/> N = Any Type (special intrinsic component)<br/><br/> Z = Any Simple Type (special intrinsic component)<br/><br/> P = Primitive Type (intrinsic types)<br/><br/> S = Simple Type<br/><br/> L = List Type<br/><br/> U = Union Type<br/><br/> C = Complex Simple Type (derived from Simple)<br/><br/> K = Complex Type<br/><br/> E = Element<br/><br/> M = Model-Group<br/><br/> W = Element-Wildcard<br/><br/> A = Attribute<br/><br/> G = Attribute-Group<br/><br/> V = Attribute-Wildcard
			/// </summary>
			[Column("kind"),                     NotNull    ] public string  Kind                  { get; set; } = null!; // char(1)
			/// <summary>
			/// Description of the kind of XML schema component:<br/><br/> ANY_TYPE<br/><br/> ANY_SIMPLE_TYPE<br/><br/> PRIMITIVE_TYPE<br/><br/> SIMPLE_TYPE<br/><br/> LIST_TYPE<br/><br/> UNION_TYPE<br/><br/> COMPLEX_SIMPLE_TYPE<br/><br/> COMPLEX_TYPE<br/><br/> ELEMENT<br/><br/> MODEL_GROUP<br/><br/> ELEMENT_WILDCARD<br/><br/> ATTRIBUTE<br/><br/> ATTRIBUTE_GROUP<br/><br/> ATTRIBUTE_WILDCARD
			/// </summary>
			[Column("kind_desc"),                   Nullable] public string? KindDesc              { get; set; } // nvarchar
			/// <summary>
			/// Derivation method for derived types:<br/><br/> N = None (not derived)<br/><br/> X = Extension<br/><br/> R = Restriction<br/><br/> S = Substitution
			/// </summary>
			[Column("derivation"),               NotNull    ] public string  Derivation            { get; set; } = null!; // char(1)
			/// <summary>
			/// Description of derivation method for derived types:<br/><br/> NONE<br/><br/> EXTENSION<br/><br/> RESTRICTION<br/><br/> SUBSTITUTION
			/// </summary>
			[Column("derivation_desc"),             Nullable] public string? DerivationDesc        { get; set; } // nvarchar
			/// <summary>
			/// ID of the component from which this component is derived. NULL if there is none.
			/// </summary>
			[Column("base_xml_component_id"),       Nullable] public int?    BaseXmlComponentID    { get; set; } // int
			/// <summary>
			/// Unique ID of the scoping component. NULL if there is none (global scope).
			/// </summary>
			[Column("scoping_xml_component_id"),    Nullable] public int?    ScopingXmlComponentID { get; set; } // int
			/// <summary>
			/// Indicates how contents are processed.<br/><br/> S = Strict validation (must validate)<br/><br/> L = Lax validation (validate if possible)<br/><br/> P = Skip validation
			/// </summary>
			[Column("process_content"),          NotNull    ] public string  ProcessContent        { get; set; } = null!; // char(1)
			/// <summary>
			/// Description of how contents are processed:<br/><br/> <strong>STRICT_VALIDATION</strong><br/><br/> <strong>LAX_VALIDATION</strong><br/><br/> <strong>SKIP_VALIDATION</strong>
			/// </summary>
			[Column("process_content_desc"),        Nullable] public string? ProcessContentDesc    { get; set; } // nvarchar(60)
			/// <summary>
			/// 0 = Namespaces enumerated in <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-xml-schema-wildcard-namespaces-transact-sql'>sys.xml_schema_wildcard_namespaces</a> are the only ones allowed.<br/><br/> 1 = Namespaces are the only ones disallowed.
			/// </summary>
			[Column("disallow_namespaces"),      NotNull    ] public bool    DisallowNamespaces    { get; set; } // bit
		}

		/// <summary>
		/// <para><strong>sys.xml_schema_wildcard_namespaces (Transact-SQL)</strong></para>
		/// <para><strong>Applies to:</strong> √ SQL Server (all supported versions)</para>
		/// <para>Returns a row per enumerated namespace for an XML schema wildcard.</para><br/>
		/// <para>See <a href='https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-xml-schema-wildcard-namespaces-transact-sql'>sys.xml_schema_wildcard_namespaces</a>.</para>
		/// </summary>
		[Table(Schema="sys", Name="xml_schema_wildcard_namespaces", IsView=true)]
		public partial class XmlSchemaWildcardNamespace
		{
			/// <summary>
			/// ID of the XML schema component (wildcard) to which this applies.
			/// </summary>
			[Column("xml_component_id"), NotNull] public int    XmlComponentID { get; set; } // int
			/// <summary>
			/// Name or URI of the namespace that is used by the XML wildcard.
			/// </summary>
			[Column("namespace"),        NotNull] public string Namespace      { get; set; } = null!; // nvarchar(4000)
		}
	}
}
