diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 00000000..42fa231b --- /dev/null +++ b/.editorconfig @@ -0,0 +1,156 @@ +# top-most EditorConfig file +root = true + +# Don't use tabs for indentation. +[*] +indent_style = space +# (Please don't specify an indent_size here; that has too many unintended consequences.) + +# IDE0073: File header +file_header_template = Copyright (c) Microsoft.\nLicensed under the MIT license. + +# Code files +[*.{cs, sql}] +indent_size = 4 + +# JSON and XML files +[*.{json,xml} ] +indent_size = 2 + + + +[*.cs] +### Dotnet code style settings ### + +# Organize usings +dotnet_separate_import_directive_groups = false +dotnet_sort_system_directives_first = true + +# Avoid "this." if not necessary +dotnet_style_qualification_for_field = false:silent +dotnet_style_qualification_for_property = false:silent +dotnet_style_qualification_for_method = false:silent +dotnet_style_qualification_for_event = false:silent + +# Use language keywords instead of framework type names for type references +dotnet_style_predefined_type_for_locals_parameters_members = true:suggestion +dotnet_style_predefined_type_for_member_access = true:suggestion + +# Parentheses preferences +dotnet_style_parentheses_in_arithmetic_binary_operators = always_for_clarity:silent +dotnet_style_parentheses_in_other_binary_operators = always_for_clarity:silent +dotnet_style_parentheses_in_other_operators = never_if_unnecessary:silent +dotnet_style_parentheses_in_relational_binary_operators = always_for_clarity:silent + +# Modifier preferences +dotnet_style_require_accessibility_modifiers = for_non_interface_members:suggestion + +# Field preferences +dotnet_style_readonly_field = true:suggestion + +# Parameter preferences +dotnet_code_quality_unused_parameters = all:suggestion + +# Expression-level preferences +dotnet_style_coalesce_expression = true:suggestion +dotnet_style_collection_initializer = true:suggestion +dotnet_style_explicit_tuple_names = true:suggestion +dotnet_style_null_propagation = true:suggestion +dotnet_style_object_initializer = true:suggestion +dotnet_style_prefer_auto_properties = true:silent +dotnet_style_prefer_compound_assignment = true:suggestion +dotnet_style_prefer_conditional_expression_over_assignment = true:silent +dotnet_style_prefer_conditional_expression_over_return = true:silent +dotnet_style_prefer_inferred_anonymous_type_member_names = true:suggestion +dotnet_style_prefer_inferred_tuple_names = true:suggestion +dotnet_style_prefer_is_null_check_over_reference_equality_method = true:suggestion +dotnet_style_prefer_simplified_interpolation = true:suggestion + +#### C# Coding Conventions #### + +# Prefer "var" everywhere +csharp_style_var_for_built_in_types = true:silent +csharp_style_var_when_type_is_apparent = true:silent +csharp_style_var_elsewhere = true:silent + +# Prefer method-like constructs to have a block body, except for lambdas +csharp_style_expression_bodied_methods = false:none +csharp_style_expression_bodied_constructors = false:none +csharp_style_expression_bodied_operators = false:none +csharp_style_expression_bodied_local_functions = false:none +csharp_style_expression_bodied_lambdas = true:none + + +# Pattern matching preferences +csharp_style_pattern_matching_over_as_with_null_check = true:suggestion +csharp_style_pattern_matching_over_is_with_cast_check = true:suggestion +csharp_style_prefer_switch_expression = true:suggestion + +# Null-checking preferences +csharp_style_conditional_delegate_call = true:suggestion + +# Modifier preferences +csharp_prefer_static_local_function = true:suggestion +csharp_preferred_modifier_order = public,private,protected,internal,static,extern,new,virtual,abstract,sealed,override,readonly,unsafe,volatile,async:silent + +# Code-block preferences +csharp_prefer_braces = when_multiline:suggestion +csharp_prefer_simple_using_statement = true:suggestion + +# Expression-level preferences +csharp_style_unused_value_assignment_preference = discard_variable:suggestion +csharp_prefer_simple_default_expression = true:suggestion +csharp_style_deconstructed_variable_declaration = true:suggestion +csharp_style_inlined_variable_declaration = true:suggestion +csharp_style_pattern_local_over_anonymous_function = true:suggestion +csharp_style_prefer_index_operator = true:suggestion +csharp_style_prefer_range_operator = true:suggestion +csharp_style_throw_expression = true:suggestion +csharp_style_unused_value_expression_statement_preference = discard_variable:silent + +# 'using' directive preferences +csharp_using_directive_placement = outside_namespace:silent + +#### C# Formatting Rules #### + +# New line preferences +csharp_new_line_before_open_brace = all +csharp_new_line_before_else = true +csharp_new_line_before_catch = true +csharp_new_line_before_finally = true +csharp_new_line_before_members_in_object_initializers = true +csharp_new_line_before_members_in_anonymous_types = true +csharp_new_line_between_query_expression_clauses = true + +# Indentation preferences +csharp_indent_block_contents = true +csharp_indent_braces = false +csharp_indent_case_contents = true +csharp_indent_case_contents_when_block = true +csharp_indent_labels = no_change +csharp_indent_switch_labels = true + +# Space preferences +csharp_space_after_cast = false +csharp_space_after_colon_in_inheritance_clause = true +csharp_space_after_comma = true +csharp_space_after_dot = false +csharp_space_after_keywords_in_control_flow_statements = true +csharp_space_after_semicolon_in_for_statement = true +csharp_space_around_binary_operators = before_and_after +csharp_space_around_declaration_statements = false +csharp_space_before_colon_in_inheritance_clause = true +csharp_space_before_comma = false +csharp_space_before_dot = false +csharp_space_before_open_square_brackets = false +csharp_space_before_semicolon_in_for_statement = false +csharp_space_between_empty_square_brackets = false +csharp_space_between_method_call_empty_parameter_list_parentheses = false +csharp_space_between_method_call_name_and_opening_parenthesis = false +csharp_space_between_method_call_parameter_list_parentheses = false +csharp_space_between_method_declaration_empty_parameter_list_parentheses = false +csharp_space_between_method_declaration_name_and_open_parenthesis = false +csharp_space_between_method_declaration_parameter_list_parentheses = false +csharp_space_between_parentheses = false +csharp_space_between_square_brackets = false + diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 00000000..96dfaa26 --- /dev/null +++ b/.gitattributes @@ -0,0 +1,22 @@ +# Set the default behavior, in case people don't have core.autocrlf set. +* text=auto + +# Use text conventions for commonly used text extensions. +*.csv text +*.ini text +*.json text +*.txt text +*.xml text + +# Denote all files that are truly binary and should not be modified. +*.dll binary +*.exe binary +*.gz binary +*.ico binary +*.jpg binary +*.lib binary +*.pdb binary +*.pdf binary +*.png binary +*.wim binary +*.zip binary diff --git a/.gitignore b/.gitignore index dfcfd56f..e810d394 100644 --- a/.gitignore +++ b/.gitignore @@ -4,18 +4,17 @@ ## Get latest from https://github.com/github/gitignore/blob/master/VisualStudio.gitignore # User-specific files -*.rsuser *.suo *.user *.userosscache *.sln.docstates +*.out +.vscode/ +*.binlog # User-specific files (MonoDevelop/Xamarin Studio) *.userprefs -# Mono auto generated files -mono_crash.* - # Build results [Dd]ebug/ [Dd]ebugPublic/ @@ -23,58 +22,51 @@ mono_crash.* [Rr]eleases/ x64/ x86/ -[Aa][Rr][Mm]/ -[Aa][Rr][Mm]64/ bld/ [Bb]in/ [Oo]bj/ +[Oo]bjd/ [Ll]og/ +target/ + +# QuickBuild +[Qq][Ll]ocal/ +[Qq][Ll]ogs/ +__cache[Oo]utput/ [Ll]ogs/ -# Visual Studio 2015/2017 cache/options directory +# Visual Studio 2015 cache/options directory .vs/ # Uncomment if you have tasks that create the project's static files in wwwroot #wwwroot/ -# Visual Studio 2017 auto generated files -Generated\ Files/ - # MSTest test Results [Tt]est[Rr]esult*/ [Bb]uild[Ll]og.* -# NUnit +# NUNIT *.VisualState.xml TestResult.xml -nunit-*.xml # Build Results of an ATL Project [Dd]ebugPS/ [Rr]eleasePS/ dlldata.c -# Benchmark Results -BenchmarkDotNet.Artifacts/ - # .NET Core project.lock.json project.fragment.lock.json artifacts/ +**/Properties/launchSettings.json -# StyleCop -StyleCopReport.xml - -# Files built by Visual Studio *_i.c *_p.c -*_h.h +*_i.h *.ilk *.meta *.obj -*.iobj *.pch *.pdb -*.ipdb *.pgc *.pgd *.rsp @@ -84,7 +76,6 @@ StyleCopReport.xml *.tlh *.tmp *.tmp_proj -*_wpftmp.csproj *.log *.vspscc *.vssscc @@ -106,6 +97,8 @@ ipch/ *.cachefile *.VC.db *.VC.VC.opendb +ndstatus.rc +ndstatus_*.bin # Visual Studio profiler *.psess @@ -113,9 +106,6 @@ ipch/ *.vspx *.sap -# Visual Studio Trace Files -*.e2e - # TFS 2012 Local Workspace $tf/ @@ -127,16 +117,15 @@ _ReSharper*/ *.[Rr]e[Ss]harper *.DotSettings.user +# JustCode is a .NET coding add-in +.JustCode + # TeamCity is a build add-in _TeamCity* # DotCover is a Code Coverage Tool *.dotCover -# AxoCover is a Code Coverage Tool -.axoCover/* -!.axoCover/settings.json - # Visual Studio code coverage results *.coverage *.coveragexml @@ -172,7 +161,7 @@ publish/ # Publish Web Output *.[Pp]ublish.xml *.azurePubxml -# Note: Comment the next line if you want to checkin your web deploy settings, +# TODO: Comment the next line if you want to checkin your web deploy settings # but database connection strings (with potential passwords) will be unencrypted *.pubxml *.publishproj @@ -184,17 +173,20 @@ PublishScripts/ # NuGet Packages *.nupkg -# NuGet Symbol Packages -*.snupkg # The packages folder can be ignored because of Package Restore -**/[Pp]ackages/* +**/packages/* # except build/, which is used as an MSBuild target. -!**/[Pp]ackages/build/ +!**/packages/build/ # Uncomment if necessary however generally it will be regenerated when needed -#!**/[Pp]ackages/repositories.config +#!**/packages/repositories.config # NuGet v3's project.json files produces more ignorable files +*.nuget.cache +*.nuget.dgspec.json *.nuget.props *.nuget.targets +*.nuget.g.props +*.nuget.g.targets +project.assets.json # Microsoft Azure Build Output csx/ @@ -209,15 +201,12 @@ AppPackages/ BundleArtifacts/ Package.StoreAssociation.xml _pkginfo.txt -*.appx -*.appxbundle -*.appxupload # Visual Studio cache files # files ending in .cache can be ignored *.[Cc]ache # but keep track of directories ending in .cache -!?*.[Cc]ache/ +!*.[Cc]ache/ # Others ClientBin/ @@ -230,10 +219,6 @@ ClientBin/ *.publishsettings orleans.codegen.cs -# Including strong name files can present a security risk -# (https://github.com/github/gitignore/pull/2483#issue-259490424) -#*.snk - # Since there are multiple workflows, uncomment next line to ignore bower_components # (https://github.com/github/gitignore/pull/1529#issuecomment-104372622) #bower_components/ @@ -245,11 +230,8 @@ Generated_Code/ # to a newer Visual Studio version. Backup files are not needed, # because we have git ;-) _UpgradeReport_Files/ -Backup*/ UpgradeLog*.XML UpgradeLog*.htm -ServiceFabricBackup/ -*.rptproj.bak # SQL Server files *.mdf @@ -260,10 +242,6 @@ ServiceFabricBackup/ *.rdl.data *.bim.layout *.bim_*.settings -*.rptproj.rsuser -*- [Bb]ackup.rdl -*- [Bb]ackup ([0-9]).rdl -*- [Bb]ackup ([0-9][0-9]).rdl # Microsoft Fakes FakesAssemblies/ @@ -275,6 +253,9 @@ FakesAssemblies/ .ntvs_analysis.dat node_modules/ +# Typescript v1 declaration files +typings/ + # Visual Studio 6 build log *.plg @@ -299,8 +280,12 @@ paket-files/ # FAKE - F# Make .fake/ -# CodeRush personal settings -.cr/personal +# JetBrains Rider +.idea/ +*.sln.iml + +# CodeRush +.cr/ # Python Tools for Visual Studio (PTVS) __pycache__/ @@ -310,9 +295,6 @@ __pycache__/ # tools/** # !tools/packages.config -# Tabs Studio -*.tss - # Telerik's JustMock configuration file *.jmconfig @@ -322,29 +304,10 @@ __pycache__/ *.odx.cs *.xsd.cs -# OpenCover UI analysis results -OpenCover/ - -# Azure Stream Analytics local run output -ASALocalRun/ - -# MSBuild Binary and Structured Log -*.binlog - -# NVidia Nsight GPU debugger configuration file -*.nvuser - -# MFractors (Xamarin productivity tool) working folder -.mfractor/ - -# Local History for Visual Studio -.localhistory/ - -# BeatPulse healthcheck temp database -healthchecksdb +#installed tools +tool/ -# Backup folder for Package Reference Convert tool in Visual Studio 2017 -MigrationBackup/ +# no SLN files, use slngen +*.sln +*.dgspec.json -# Ionide (cross platform F# VS Code tools) working folder -.ionide/ diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 00000000..e69de29b diff --git a/Directory.Build.props b/Directory.Build.props new file mode 100644 index 00000000..724508bc --- /dev/null +++ b/Directory.Build.props @@ -0,0 +1,22 @@ + + + + + + $(MSBuildAllProjects);$(MSBuildThisFileFullPath) + + + $(MSBuildThisFileDirectory.TrimEnd('\\')) + net462 + + + + diff --git a/Directory.Build.rsp b/Directory.Build.rsp new file mode 100644 index 00000000..0c41acac --- /dev/null +++ b/Directory.Build.rsp @@ -0,0 +1,8 @@ +/Restore +/ConsoleLoggerParameters:Verbosity=Minimal;Summary +/FileLoggerParameters:LogFile=msbuild.log;Verbosity=Diagnostic +/MaxCPUCount +/NodeReuse:false +/Property:NuGetInteractive=true +/BinaryLogger + diff --git a/Packages.props b/Packages.props new file mode 100644 index 00000000..6f77836e --- /dev/null +++ b/Packages.props @@ -0,0 +1,45 @@ + + + + 4.7.0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/SmoBuild/AssemblyInfo.props b/SmoBuild/AssemblyInfo.props new file mode 100644 index 00000000..0de812e8 --- /dev/null +++ b/SmoBuild/AssemblyInfo.props @@ -0,0 +1,12 @@ + + + + + The SQL Server Management Objects (SMO) Framework is a set of objects designed for programmatic management of Microsoft SQL Server and Microsoft Azure SQL Database. + + Microsoft + Microsoft Corporation + Microsoft Sql Server + © Microsoft Corporation. All rights reserved. + + diff --git a/SmoBuild/CSharp.NetCore.props b/SmoBuild/CSharp.NetCore.props new file mode 100644 index 00000000..54016da4 --- /dev/null +++ b/SmoBuild/CSharp.NetCore.props @@ -0,0 +1,4 @@ + + + + diff --git a/SmoBuild/CSharp.NetFx.props b/SmoBuild/CSharp.NetFx.props new file mode 100644 index 00000000..54016da4 --- /dev/null +++ b/SmoBuild/CSharp.NetFx.props @@ -0,0 +1,4 @@ + + + + diff --git a/SmoBuild/CSharp.NetStandard.props b/SmoBuild/CSharp.NetStandard.props new file mode 100644 index 00000000..5a0b7f70 --- /dev/null +++ b/SmoBuild/CSharp.NetStandard.props @@ -0,0 +1,5 @@ + + + $(DefineConstants);NETSTANDARD2_0 + + diff --git a/SmoBuild/DdlEvents.targets b/SmoBuild/DdlEvents.targets new file mode 100644 index 00000000..4102b19a --- /dev/null +++ b/SmoBuild/DdlEvents.targets @@ -0,0 +1,39 @@ + + + $(MSBuildAllProjects);$(MSBuildThisFileFullPath) + $(BaseIntermediateOutputPath)$(Configuration)\$(TargetFramework) + + + + + + $(PkgStrawberryPerl)\bin\perl.exe + + + + + SQLSERVER + enum + classenum_template + evtenum_template + %(filename) + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/SmoBuild/DdlEvents/class_template.cs b/SmoBuild/DdlEvents/class_template.cs new file mode 100644 index 00000000..c562eb59 --- /dev/null +++ b/SmoBuild/DdlEvents/class_template.cs @@ -0,0 +1,209 @@ + + + // + // CLASSNAME + // + public sealed class CLASSNAME + { + private CLASSNAMEValues m_value; + + internal CLASSNAME(CLASSNAMEValues eventValue) + { + m_value = eventValue; + } + + internal CLASSNAMEValues Value + { + get {{ return m_value; }} + } + + static public implicit operator CLASSNAMESet(CLASSNAME eventValue) + { + return new CLASSNAMESet(eventValue); + } + + static public CLASSNAMESet operator +(CLASSNAME eventLeft, CLASSNAME eventRight) + { + CLASSNAMESet eventSet = new CLASSNAMESet(eventLeft); + eventSet.SetBit(eventRight); + return eventSet; + } + + static public CLASSNAMESet Add(CLASSNAME eventLeft, CLASSNAME eventRight) + { + return eventLeft + eventRight; + } + + static public CLASSNAMESet operator |(CLASSNAME eventLeft, CLASSNAME eventRight) + { + CLASSNAMESet eventSet = new CLASSNAMESet(eventLeft); + eventSet.SetBit(eventRight); + return eventSet; + } + + static public CLASSNAMESet BitwiseOr(CLASSNAME eventLeft, CLASSNAME eventRight) + { + return eventLeft | eventRight; + } + + public override string ToString() + { + return m_value.ToString(); + } + + // Satisfies FxCop rule: AddAndSubtractOverrideShouldHaveOperatorEqualsOverride. + public static bool operator ==(CLASSNAME a, CLASSNAME b) + { + if( null == (a as object) && null == (b as object)) + return true; + else if( null == (a as object) || null == (b as object)) + return false; + else + return a.m_value == b.m_value; + } + + // If you implement ==, you must implement !=. + public static bool operator !=(CLASSNAME a, CLASSNAME b) + { + return !(a==b); + } + + // Equals should be consistent with operator ==. + public override bool Equals(Object obj) + { + if (obj == null) + return false; + + return this == (obj as CLASSNAME); + } + + public override int GetHashCode() + { + return m_value.GetHashCode (); + } + + + // Generated code +@@@CLASSNAME_static_props + // End of generated code + + } + + public sealed class CLASSNAMESet : EventSetBase + { + + public CLASSNAMESet() + { + } + + public CLASSNAMESet(CLASSNAMESet eventSet) : base(eventSet) + { + } + + public CLASSNAMESet(CLASSNAME anEvent) + { + SetBit(anEvent); + } + + public CLASSNAMESet(params CLASSNAME[] events) + { + Storage = new BitArray(this.NumberOfElements); + foreach(CLASSNAME evt in events) + { + SetBit(evt); + } + } + + public override EventSetBase Copy() + { + return new CLASSNAMESet(this.Storage); + } + + internal CLASSNAMESet(BitArray storage) + { + Storage = (BitArray) storage.Clone(); + } + + internal void SetBit(CLASSNAME anEvent) + { + Storage[(int)anEvent.Value] = true; + } + + internal void ResetBit(CLASSNAME anEvent) + { + Storage[(int)anEvent.Value] = false; + } + + public CLASSNAMESet Add(CLASSNAME anEvent) + { + SetBit(anEvent); + return this; + } + + public CLASSNAMESet Remove(CLASSNAME anEvent) + { + ResetBit(anEvent); + return this; + } + + static public CLASSNAMESet operator +(CLASSNAMESet eventSet, CLASSNAME anEvent) + { + CLASSNAMESet newEventSet = new CLASSNAMESet(eventSet); + newEventSet.SetBit(anEvent); + return newEventSet; + } + + static public CLASSNAMESet Add(CLASSNAMESet eventSet, CLASSNAME anEvent) + { + return eventSet + anEvent; + } + + static public CLASSNAMESet operator -(CLASSNAMESet eventSet, CLASSNAME anEvent) + { + CLASSNAMESet newEventSet = new CLASSNAMESet(eventSet); + newEventSet.ResetBit(anEvent); + return newEventSet; + } + + static public CLASSNAMESet Subtract(CLASSNAMESet eventSet, CLASSNAME anEvent) + { + return eventSet - anEvent; + } + + public override int NumberOfElements + { +@@@CLASSNAME_count + } + + public override string ToString() + { + StringBuilder sb = new StringBuilder(); + + sb.Append(this.GetType().Name + ": "); + + int i = 0; + bool first = true; + foreach (bool isSet in Storage) + { + if (isSet) + { + if (first) + { + first = false; + } + else + { + sb.Append(", "); + } + sb.Append(((CLASSNAMEValues) i).ToString()); + } + i++; + } + return sb.ToString(); + } + + // Generated code +@@@CLASSNAME_props + // End of generated code + } + diff --git a/SmoBuild/DdlEvents/classenum_template.cs b/SmoBuild/DdlEvents/classenum_template.cs new file mode 100644 index 00000000..4b39617c --- /dev/null +++ b/SmoBuild/DdlEvents/classenum_template.cs @@ -0,0 +1,223 @@ + ///enum for CLASSNAME + internal enum CLASSNAMEValues + { + // Generated code +@@@CLASSNAME_enum + // End of generated code + } + + /// CLASSNAME + public sealed class CLASSNAME + { + private CLASSNAMEValues m_value; + + ///constructor + internal CLASSNAME(CLASSNAMEValues eventValue) + { + m_value = eventValue; + } + + ///get value + internal CLASSNAMEValues Value + { + get { return m_value; } + } + + ///cast operator + static public implicit operator CLASSNAMESet(CLASSNAME eventValue) + { + return new CLASSNAMESet(eventValue); + } + + ///add to events resulting an event set + static public CLASSNAMESet operator +(CLASSNAME eventLeft, CLASSNAME eventRight) + { + CLASSNAMESet eventSet = new CLASSNAMESet(eventLeft); + eventSet.SetBit(eventRight); + return eventSet; + } + + ///add to events resulting an event set + static public CLASSNAMESet Add(CLASSNAME eventLeft, CLASSNAME eventRight) + { + return eventLeft + eventRight; + } + + ///'or' to events resulting an event set + static public CLASSNAMESet operator |(CLASSNAME eventLeft, CLASSNAME eventRight) + { + CLASSNAMESet eventSet = new CLASSNAMESet(eventLeft); + eventSet.SetBit(eventRight); + return eventSet; + } + + ///'or' to events resulting an event set + static public CLASSNAMESet BitwiseOr(CLASSNAME eventLeft, CLASSNAME eventRight) + { + return eventLeft | eventRight; + } + + ///event string representation + public override string ToString() + { + return m_value.ToString(); + } + // Generated code +@@@CLASSNAME_static_props + // End of generated code + + } + ///class CLASSNAMESet + public sealed class CLASSNAMESet : EventSetBase + { + + ///default constructor + public CLASSNAMESet() + { + } + + ///copy constructor + public CLASSNAMESet(CLASSNAMESet eventSet) : base(eventSet) + { + } + + ///constructor initialize with an event + public CLASSNAMESet(CLASSNAME anEvent) + { + SetBit(anEvent); + } + + ///constructor initialize with a list of events + public CLASSNAMESet(params CLASSNAME[] events) + { + Storage = new BitArray(this.NumberOfElements); + foreach(CLASSNAME evt in events) + { + SetBit(evt); + } + } + + ///initialize from BitArray + internal CLASSNAMESet(BitArray storage) + { + Storage = (BitArray) storage.Clone(); + } + + ///copy + public override EventSetBase Copy() + { + return new CLASSNAMESet(this.Storage); + } + + ///set bit for an event + internal void SetBit(CLASSNAME anEvent) + { + Storage[(int)anEvent.Value] = true; + } + + ///reset bit for an event + internal void ResetBit(CLASSNAME anEvent) + { + Storage[(int)anEvent.Value] = false; + } + + ///set bit for an event + public CLASSNAMESet Add(CLASSNAME anEvent) + { + SetBit(anEvent); + return this; + } + + ///reset bit for an event + public CLASSNAMESet Remove(CLASSNAME anEvent) + { + ResetBit(anEvent); + return this; + } + + ///add an event + static public CLASSNAMESet operator +(CLASSNAMESet eventSet, CLASSNAME anEvent) + { + CLASSNAMESet newEventSet = new CLASSNAMESet(eventSet); + newEventSet.SetBit(anEvent); + return newEventSet; + } + + ///add an event + static public CLASSNAMESet Add(CLASSNAMESet eventSet, CLASSNAME anEvent) + { + return eventSet + anEvent; + } + + ///remove an event + static public CLASSNAMESet operator -(CLASSNAMESet eventSet, CLASSNAME anEvent) + { + CLASSNAMESet newEventSet = new CLASSNAMESet(eventSet); + newEventSet.ResetBit(anEvent); + return newEventSet; + } + + ///remove an event + static public CLASSNAMESet Subtract(CLASSNAMESet eventSet, CLASSNAME anEvent) + { + return eventSet - anEvent; + } + + ///return number of elements + public override int NumberOfElements + { +@@@CLASSNAME_elements_count + } + + ///return string representation + public override string ToString() + { + StringBuilder sb = new StringBuilder(); + + sb.Append(this.GetType().Name + ": "); + + int i = 0; + bool first = true; + foreach (bool isSet in Storage) + { + if (isSet) + { + if (first) + { + first = false; + } + else + { + sb.Append(", "); + } + sb.Append(((CLASSNAMEValues) i).ToString()); + } + i++; + } + return sb.ToString(); + } + private bool dirty = false; + ///true if the event set has been modified + public bool Dirty + { + get { return dirty; } + set { dirty = value; } + } + // Generated code +@@@CLASSNAME_props + // End of generated code + + + ///static constructor + /// init here all the static composite bitflags, because we do not want + /// to recreate it every time we will do an operation with it. + static CLASSNAMESet() + { + // Generated code +@@@CLASSNAME_group_static_props_init + // End of generated code + + } + +@@@CLASSNAME_group_static_props + } diff --git a/SmoBuild/DdlEvents/eventsdef.cpp b/SmoBuild/DdlEvents/eventsdef.cpp new file mode 100644 index 00000000..57b5d040 --- /dev/null +++ b/SmoBuild/DdlEvents/eventsdef.cpp @@ -0,0 +1,3503 @@ +//**************************************************************************** +// Copyright (c) Microsoft Corporation. +// +// @File: eventsdef.cpp +// @Owner: ivanpe, ketandu +// @Test: antonk, sshekar +// +// Purpose: This file contains all event type definitions. It's main purpose is +// to be included in eventsshema.cpp. Several perl scripts are parsing +// this file in order to get to the event type definitions. +// +// Note: If you are updating this file then you must also update the events.xsd +// schema, in Sql\Common\xsd\sqlserver\2006\events\events.xsd and +// published at http://schemas.microsoft.com/sqlserver/2006/11/eventdata/events.xsd +// with RTM releases of SQL Server. +// +// A stub for events.xsd can be generated using perl scripts, but must be tweaked +// to ensure ensure backwards compatibility. +// +// Building from sql\ntdbms\sqlwep\dllsrc (from an x86fre razzle) will generate +// the stub events.xsd in %OBJECT_ROOT%\sql\ntdbms\sqlwep\dllsrc\objfre\i386. +// +// Please refer to http://sqlserver/SQLBU/sqlxsd/default.aspx for instructions on +// publishing the events.xsd. +// +// @EndHeader@ +//**************************************************************************** + +#define BitCount1(x)\ + (((x&0xAAAAAAAAAAAAAAAA)>>1) + (x&0x5555555555555555)) +#define BitCount2(x)\ + (((x&0xCCCCCCCCCCCCCCCC)>>2) + (x&0x3333333333333333)) +#define BitCount4(x)\ + (((x&0xF0F0F0F0F0F0F0F0)>>4) + (x&0x0F0F0F0F0F0F0F0F)) +#define BitCount8(x)\ + (((x&0xFF00FF00FF00FF00)>>8) + (x&0x00FF00FF00FF00FF)) +#define BitCount16(x)\ + (((x&0xFFFF0000FFFF0000)>>16) + (x&0x0000FFFF0000FFFF)) +#define BitCount32(x)\ + (((x&0xFFFFFFFF00000000)>>32) + (x&0x00000000FFFFFFFF)) + +#define BitCount64(x)\ + (BitCount32(BitCount16(BitCount8(BitCount4(BitCount2(BitCount1((x)))))))) + + +// The Envelope properties are divided into 3 groups +// The 1st 3 are common for all event types. +// The next 2 are only for non-trace event types. +// The next one is only for event types that are not server level only. +// +//---------------------------------------------------------------- +// Event Envelope Instance Schema (instance parameters schema) +//---------------------------------------------------------------- + +STATIC EVENT_PARAM_INFO_DEF s_rgParamInfoEnvelope[] = +{ + { EnvelopeTag_EventType, L"EventType", 0,0,NULL,XVT_VARWSTR, PrecDefault(XVT_VARWSTR),ScaleDefault(XVT_VARWSTR),x_cbMAXSSWNAME,0}, + { EnvelopeTag_PostTime, L"PostTime", 0,0,NULL,XVT_SSDATE, PrecDefault(XVT_SSDATE), ScaleDefault(XVT_SSDATE), LenDefault(XVT_SSDATE),0}, + { EnvelopeTag_SPID, L"SPID", 0,0,NULL,XVT_I4, PrecDefault(XVT_I4), ScaleDefault(XVT_I4), LenDefault(XVT_I4), 0}, + + //---------------------------------------------------------------- + // Additional Event Envelope Instance Schema for non-trace events (instance parameters schema) + //---------------------------------------------------------------- + + // The server name is of the form "ComputerName\InstanceName" + { EnvelopeTag_ServerName, L"ServerName", 0,0,NULL,XVT_VARWSTR,PrecDefault(XVT_VARWSTR),ScaleDefault(XVT_VARWSTR),(x_cwchMAXSSWNAME*2 + 1)*sizeof(WCHAR),EVENT_PARAM_NULLABLE}, + { EnvelopeTag_LoginName, L"LoginName", 0,0,NULL,XVT_VARWSTR, PrecDefault(XVT_VARWSTR),ScaleDefault(XVT_VARWSTR),x_cbMAXSSWNAME,0}, + + //---------------------------------------------------------------- + // Additional Event Envelope Instance Schema for non-server level events (instance parameters schema) + //---------------------------------------------------------------- + + { EnvelopeTag_UserName, L"UserName", 0,0,NULL,XVT_VARWSTR,PrecDefault(XVT_VARWSTR),ScaleDefault(XVT_VARWSTR),x_cbMAXSSWNAME,0}, +}; + +STATIC ULONG s_cParamInfoEnvelope = NUMELEM(s_rgParamInfoEnvelope); + +//================================================= +// Param info for SQLTrace +#include "parinfo.inc" + +// The new param info array. We dont need a param info array per event type. We will just +// have a global one that can be shared by the various event types. +// +STATIC EVENT_PARAM_INFO_DEF s_rgParamInfoDDL[] = +{ + { EventTag_DatabaseName, L"DatabaseName", 0,0,NULL,XVT_VARWSTR,PrecDefault(XVT_VARWSTR), ScaleDefault(XVT_VARWSTR), x_cbMAXSSWNAME, EVENT_PARAM_NULLABLE}, + { EventTag_SchemaName, L"SchemaName", 0,0,NULL,XVT_VARWSTR,PrecDefault(XVT_VARWSTR), ScaleDefault(XVT_VARWSTR), x_cbMAXSSWNAME, EVENT_PARAM_NULLABLE}, + { EventTag_ObjectName, L"ObjectName", 0,0,NULL,XVT_VARWSTR,PrecDefault(XVT_VARWSTR), ScaleDefault(XVT_VARWSTR), x_cbMAXSSWNAME, EVENT_PARAM_NULLABLE}, + { EventTag_ObjectType, L"ObjectType", 0,0,NULL,XVT_VARWSTR,PrecDefault(XVT_VARWSTR), ScaleDefault(XVT_VARWSTR), x_cbMAXSSWNAME, EVENT_PARAM_NULLABLE}, + { EventTag_RoleName, L"RoleName", 0,0,NULL,XVT_VARWSTR,PrecDefault(XVT_VARWSTR), ScaleDefault(XVT_VARWSTR), x_cbMAXSSWNAME, EVENT_PARAM_NULLABLE}, + { EventTag_TSQLCommand, L"TSQLCommand", 0,0,NULL,XVT_VARWSTR,PrecDefault(XVT_VARWSTR), ScaleDefault(XVT_VARWSTR), VARTYPE_UNLIMITED_LENGTH, 0}, + { EventTag_TargetServerName, L"TargetServerName",0,0,NULL,XVT_VARWSTR,PrecDefault(XVT_VARWSTR),ScaleDefault(XVT_VARWSTR),x_cbMAXSSWNAME,EVENT_PARAM_NULLABLE}, + { EventTag_TargetDatabaseName, L"TargetDatabaseName", 0,0,NULL,XVT_VARWSTR,PrecDefault(XVT_VARWSTR), ScaleDefault(XVT_VARWSTR), x_cbMAXSSWNAME, EVENT_PARAM_NULLABLE}, + { EventTag_TargetSchemaName, L"TargetSchemaName", 0,0,NULL,XVT_VARWSTR,PrecDefault(XVT_VARWSTR), ScaleDefault(XVT_VARWSTR), x_cbMAXSSWNAME, EVENT_PARAM_NULLABLE}, + { EventTag_TargetObjectName, L"TargetObjectName", 0,0,NULL,XVT_VARWSTR,PrecDefault(XVT_VARWSTR), ScaleDefault(XVT_VARWSTR), x_cbMAXSSWNAME, EVENT_PARAM_NULLABLE}, + { EventTag_TargetObjectType, L"TargetObjectType", 0,0,NULL,XVT_VARWSTR,PrecDefault(XVT_VARWSTR), ScaleDefault(XVT_VARWSTR), x_cbMAXSSWNAME, EVENT_PARAM_NULLABLE}, + { EventTag_OwnerName, L"OwnerName", 0,0,NULL,XVT_VARWSTR,PrecDefault(XVT_VARWSTR), ScaleDefault(XVT_VARWSTR), x_cbMAXSSWNAME, 0}, + { EventTag_DefaultLanguage, L"DefaultLanguage", 0,0,NULL,XVT_VARWSTR,PrecDefault( XVT_VARWSTR ), ScaleDefault( XVT_VARWSTR ), x_cbMAXSSWNAME, EVENT_PARAM_NULLABLE}, + { EventTag_DefaultDatabase, L"DefaultDatabase", 0,0,NULL,XVT_VARWSTR,PrecDefault( XVT_VARWSTR ), ScaleDefault( XVT_VARWSTR ), x_cbMAXSSWNAME, EVENT_PARAM_NULLABLE}, + { EventTag_LoginType, L"LoginType", 0,0,NULL,XVT_VARWSTR,PrecDefault( XVT_VARWSTR ), ScaleDefault( XVT_VARWSTR ), x_cbMAXSSWNAME, 0}, + { EventTag_SID, L"SID", 0,0,NULL,CTypeInfo::tiSID.XvtType(), PrecDefault(CTypeInfo::tiSID.XvtType()),ScaleDefault(CTypeInfo::tiSID.XvtType()),x_cbMaxSID,EVENT_PARAM_NULLABLE}, + { EventTag_RoleSID, L"RoleSID", 0,0,NULL,CTypeInfo::tiSID.XvtType(), PrecDefault(CTypeInfo::tiSID.XvtType()),ScaleDefault(CTypeInfo::tiSID.XvtType()),x_cbMaxSID, EVENT_PARAM_NULLABLE}, + { EventTag_Grantor, L"Grantor", 0,0,NULL,XVT_VARWSTR,PrecDefault(XVT_VARWSTR), ScaleDefault(XVT_VARWSTR), x_cbMAXSSWNAME, 0}, + { EventTag_Permissions, L"Permissions", 0,0,NULL,XVT_VARWSTR,PrecDefault(XVT_VARWSTR), ScaleDefault(XVT_VARWSTR), VARTYPE_UNLIMITED_LENGTH, 0}, + { EventTag_Grantees, L"Grantees", 0,0,NULL,XVT_VARWSTR,PrecDefault(XVT_VARWSTR), ScaleDefault(XVT_VARWSTR), VARTYPE_UNLIMITED_LENGTH, 0}, + { EventTag_AsGrantor, L"AsGrantor", 0,0,NULL,XVT_VARWSTR,PrecDefault(XVT_VARWSTR), ScaleDefault(XVT_VARWSTR), x_cbMAXSSWNAME, EVENT_PARAM_NULLABLE}, + { EventTag_GrantOption, L"GrantOption", 0,0,NULL,XVT_BIT, PrecDefault(XVT_BIT), ScaleDefault(XVT_BIT), LenDefault(XVT_BIT),0}, + { EventTag_CascadeOption, L"CascadeOption", 0,0,NULL,XVT_BIT, PrecDefault(XVT_BIT), ScaleDefault(XVT_BIT), LenDefault(XVT_BIT),0}, + { EventTag_PrimaryXMLIndexName, L"PrimaryXMLIndexName", 0,0,NULL,XVT_VARWSTR,PrecDefault(XVT_VARWSTR), ScaleDefault(XVT_VARWSTR), x_cbMAXSSWNAME, EVENT_PARAM_NULLABLE}, + { EventTag_SecondaryXMLIndexType, L"SecondaryXMLIndexType", 0,0,NULL,XVT_SSWSTR,PrecDefault(XVT_SSWSTR), ScaleDefault(XVT_SSWSTR), 2, EVENT_PARAM_NULLABLE}, + { EventTag_CertificatePath, L"CertificatePath",0,0,NULL,CTypeInfo::tiMaxPathName.XvtType(),PrecDefault(CTypeInfo::tiMaxPathName.XvtType()), + ScaleDefault(CTypeInfo::tiMaxPathName.XvtType()),sizeof(WCHAR)*MAX_PATH, EVENT_PARAM_NULLABLE}, + { EventTag_PrivateKeyPath, L"PrivateKeyPath",0,0,NULL,CTypeInfo::tiMaxPathName.XvtType(),PrecDefault(CTypeInfo::tiMaxPathName.XvtType()), + ScaleDefault(CTypeInfo::tiMaxPathName.XvtType()),sizeof(WCHAR)*MAX_PATH,EVENT_PARAM_NULLABLE}, + { EventTag_CertificateSubject, L"CertificateSubject", 0,0,NULL,XVT_VARWSTR,PrecDefault(XVT_VARWSTR), ScaleDefault(XVT_VARWSTR), x_cbMAXSSWNAME, EVENT_PARAM_NULLABLE}, + { EventTag_Function, L"Function", 0,0,NULL,XVT_VARWSTR,PrecDefault(XVT_VARWSTR), ScaleDefault(XVT_VARWSTR), x_cbMAXSSWNAME, 0}, + { EventTag_DefaultSchema, L"DefaultSchema",0,0,NULL,XVT_VARWSTR,PrecDefault(XVT_VARWSTR),ScaleDefault(XVT_VARWSTR),x_cbMAXSSWNAME, EVENT_PARAM_NULLABLE}, + { EventTag_ClientHost, L"ClientHost", 0,0,NULL,XVT_VARWSTR,PrecDefault(XVT_VARWSTR), ScaleDefault(XVT_VARWSTR), x_cbMAXSSWNAME, 0}, + { EventTag_IsPooled, L"IsPooled", 0,0,NULL,XVT_BIT, PrecDefault(XVT_BIT), ScaleDefault(XVT_BIT), LenDefault(XVT_BIT),0}, + { EventTag_Parameters, L"Parameters", 0,0,NULL,XVT_VARWSTR,PrecDefault(XVT_VARWSTR), ScaleDefault(XVT_VARWSTR), VARTYPE_UNLIMITED_LENGTH, 0}, + { EventTag_PropertyName, L"PropertyName", 0,0,NULL,XVT_VARWSTR,PrecDefault(XVT_VARWSTR), ScaleDefault(XVT_VARWSTR), x_cbMAXSSWNAME, 0}, + { EventTag_PropertyValue, L"PropertyValue", 0,0,NULL,XVT_SSVARIANT,PrecDefault(XVT_SSVARIANT), ScaleDefault(XVT_SSVARIANT), SIZEOFSSVARIANT, EVENT_PARAM_NULLABLE}, + { EventTag_NewObjectName, L"NewObjectName", 0,0,NULL,XVT_VARWSTR,PrecDefault(XVT_VARWSTR), ScaleDefault(XVT_VARWSTR), x_cbMAXSSWNAME, 0}, + { EventTag_KeyPath, L"KeyPath",0,0,NULL,CTypeInfo::tiMaxPathName.XvtType(),PrecDefault(CTypeInfo::tiMaxPathName.XvtType()), + ScaleDefault(CTypeInfo::tiMaxPathName.XvtType()),sizeof(WCHAR)*MAX_PATH, EVENT_PARAM_NULLABLE}, + { EventTag_CounterSignature, L"CounterSignature", 0,0,NULL,XVT_BIT, PrecDefault(XVT_BIT), ScaleDefault(XVT_BIT), LenDefault(XVT_BIT),0}, + { EventTag_AlterTableActionList, L"AlterTableActionList", 0,0,NULL,XVT_VARWSTR,PrecDefault(XVT_VARWSTR), ScaleDefault(XVT_VARWSTR), VARTYPE_UNLIMITED_LENGTH, 0}, + { EventTag_AlterDatabaseActionList, L"AlterDatabaseActionList", 0,0,NULL,XVT_VARWSTR,PrecDefault(XVT_VARWSTR), ScaleDefault(XVT_VARWSTR), VARTYPE_UNLIMITED_LENGTH, 0}, +}; +STATIC ULONG s_cParamInfoDDL = NUMELEM(s_rgParamInfoDDL); + +// Extended GROUP enum for SQLTrace +#include "grpenum.inc" +//================================================= + +// This array defines groups for all supported synchronous events. The array order should follow +// the order of the EEventGroup enum defined in events.h. +// +EVENT_GROUP g_rgEventGroup[] = +{ + //------------------------------------------------------------------------------------------ + // GROUP ID GROUP PARENT ID Group name For optimization + //------------------------------------------------------------------------------------------ + { EGROUP_ALL, EGROUP_INVALID, L"ALL_EVENTS", x_eet_Group_All, ETYP_ON_INVALID, 0, 0, 0 }, + { EGROUP_DDL, EGROUP_ALL, L"DDL_EVENTS", x_eet_Group_Ddl, ETYP_ON_INVALID, 0, 0, 0 }, + { EGROUP_DDL_SERVER_LEVEL, EGROUP_DDL, L"DDL_SERVER_LEVEL_EVENTS", x_eet_Group_Ddl_Server_Level, ETYP_ON_INVALID, 0, 0, 0 }, + { EGROUP_DDL_ENDPOINT, EGROUP_DDL_SERVER_LEVEL, L"DDL_ENDPOINT_EVENTS", x_eet_Group_Ddl_Endpoint, ETYP_ON_INVALID, 0, 0, 0 }, + { EGROUP_DDL_DATABASE, EGROUP_DDL_SERVER_LEVEL, L"DDL_DATABASE_EVENTS", x_eet_Group_Ddl_Database, ETYP_ON_INVALID, 0, 0, 0 }, + { EGROUP_DDL_SERVER_SECURITY, EGROUP_DDL_SERVER_LEVEL, L"DDL_SERVER_SECURITY_EVENTS", x_eet_Group_Ddl_Server_Security, ETYP_ON_INVALID, 0, 0, 0 }, + { EGROUP_DDL_LOGIN, EGROUP_DDL_SERVER_SECURITY, L"DDL_LOGIN_EVENTS", x_eet_Group_Ddl_Login, ETYP_ON_INVALID, 0, 0, 0 }, + { EGROUP_DDL_GDR_SERVER, EGROUP_DDL_SERVER_SECURITY, L"DDL_GDR_SERVER_EVENTS", x_eet_Group_Ddl_Gdr_Server, ETYP_ON_INVALID, 0, 0, 0 }, + { EGROUP_DDL_AUTH_SERVER, EGROUP_DDL_SERVER_SECURITY, L"DDL_AUTHORIZATION_SERVER_EVENTS", x_eet_Group_Ddl_Auth_Server, ETYP_ON_INVALID, 0, 0, 0 }, + { EGROUP_DDL_CREDENTIAL, EGROUP_DDL_SERVER_SECURITY, L"DDL_CREDENTIAL_EVENTS", x_eet_Group_Ddl_Credential, ETYP_ON_INVALID, 0, 0, 0 }, + { EGROUP_DDL_CRYPTOPROV, EGROUP_DDL_SERVER_SECURITY, L"DDL_CRYPTOGRAPHIC_PROVIDER_EVENTS", x_eet_Group_Ddl_CryptoProv, ETYP_ON_INVALID, 0, 0, 0 }, + { EGROUP_DDL_SRVMASTERKEY, EGROUP_DDL_SERVER_SECURITY, L"DDL_SERVICE_MASTER_KEY_EVENTS", x_eet_Group_Ddl_Service_Master_Key, ETYP_ON_INVALID, 0, 0, 0 }, + { EGROUP_DDL_SERVERAUDIT, EGROUP_DDL_SERVER_SECURITY, L"DDL_SERVER_AUDIT_EVENTS", x_eet_Group_Ddl_ServerAudit, ETYP_ON_INVALID, 0, 0, 0 }, + { EGROUP_DDL_SERVERAUDITSPEC, EGROUP_DDL_SERVER_SECURITY, L"DDL_SERVER_AUDIT_SPECIFICATION_EVENTS", x_eet_Group_Ddl_ServerAuditSpec, ETYP_ON_INVALID, 0, 0, 0 }, + { EGROUP_DDL_EXTENDED_PROCEDURE, EGROUP_DDL_SERVER_LEVEL, L"DDL_EXTENDED_PROCEDURE_EVENTS", x_eet_Group_Ddl_Extended_Procedure, ETYP_ON_INVALID, 0, 0, 0 }, + { EGROUP_DDL_LINKED_SERVER, EGROUP_DDL_SERVER_LEVEL, L"DDL_LINKED_SERVER_EVENTS", x_eet_Group_Ddl_Linked_Server, ETYP_ON_INVALID, 0, 0, 0 }, + { EGROUP_DDL_LINKED_SERVER_LOGIN, EGROUP_DDL_LINKED_SERVER, L"DDL_LINKED_SERVER_LOGIN_EVENTS", x_eet_Group_Ddl_Linked_Server_Login, ETYP_ON_INVALID, 0, 0, 0 }, + { EGROUP_DDL_MESSAGE, EGROUP_DDL_SERVER_LEVEL, L"DDL_MESSAGE_EVENTS", x_eet_Group_Ddl_Message, ETYP_ON_INVALID, 0, 0, 0 }, + { EGROUP_DDL_REMOTE_SERVER, EGROUP_DDL_SERVER_LEVEL, L"DDL_REMOTE_SERVER_EVENTS", x_eet_Group_Ddl_Remote_Server, ETYP_ON_INVALID, 0, 0, 0 }, + { EGROUP_DDL_EVENT_SESSION, EGROUP_DDL_SERVER_LEVEL, L"DDL_EVENT_SESSION_EVENTS", x_eet_Group_Ddl_Event_Session, ETYP_ON_INVALID, 0, 0, 0 }, + { EGROUP_DDL_RESOURCE_GOVERNOR, EGROUP_DDL_SERVER_LEVEL, L"DDL_RESOURCE_GOVERNOR_EVENTS",x_eet_Group_Ddl_Resource_Governor, ETYP_ON_INVALID, 0, 0, 0 }, + { EGROUP_DDL_RESOURCE_POOL, EGROUP_DDL_RESOURCE_GOVERNOR,L"DDL_RESOURCE_POOL", x_eet_Group_Ddl_Resource_Pool, ETYP_ON_INVALID, 0, 0, 0 }, + { EGROUP_DDL_EXTERNAL_RESOURCE_POOL, EGROUP_DDL_RESOURCE_GOVERNOR,L"DDL_EXTERNAL_RESOURCE_POOL_EVENTS", x_eet_Group_Ddl_External_Resource_Pool, ETYP_ON_INVALID, 0, 0, 0 }, + { EGROUP_DDL_RESOURCE_GROUP, EGROUP_DDL_RESOURCE_GOVERNOR,L"DDL_WORKLOAD_GROUP", x_eet_Group_Ddl_Resource_Group, ETYP_ON_INVALID, 0, 0, 0 }, + { EGROUP_DDL_DATABASE_LEVEL, EGROUP_DDL, L"DDL_DATABASE_LEVEL_EVENTS", x_eet_Group_Ddl_Database_Level, ETYP_ON_INVALID, 0, 0, 0 }, + { EGROUP_DDL_TABLEVIEW, EGROUP_DDL_DATABASE_LEVEL, L"DDL_TABLE_VIEW_EVENTS", x_eet_Group_Ddl_Tableview, ETYP_ON_INVALID, 0, 0, 0 }, + { EGROUP_DDL_TABLE, EGROUP_DDL_TABLEVIEW, L"DDL_TABLE_EVENTS", x_eet_Group_Ddl_Table, ETYP_ON_INVALID, 0, 0, 0 }, + { EGROUP_DDL_VIEW, EGROUP_DDL_TABLEVIEW, L"DDL_VIEW_EVENTS", x_eet_Group_Ddl_View, ETYP_ON_INVALID, 0, 0, 0 }, + { EGROUP_DDL_INDEX, EGROUP_DDL_TABLEVIEW, L"DDL_INDEX_EVENTS", x_eet_Group_Ddl_Index, ETYP_ON_INVALID, 0, 0, 0 }, + { EGROUP_DDL_STATS, EGROUP_DDL_TABLEVIEW, L"DDL_STATISTICS_EVENTS", x_eet_Group_Ddl_Stats, ETYP_ON_INVALID, 0, 0, 0 }, + { EGROUP_DDL_SYNONYM, EGROUP_DDL_DATABASE_LEVEL, L"DDL_SYNONYM_EVENTS", x_eet_Group_Ddl_Synonym, ETYP_ON_INVALID, 0, 0, 0 }, + { EGROUP_DDL_FUNCTION, EGROUP_DDL_DATABASE_LEVEL, L"DDL_FUNCTION_EVENTS", x_eet_Group_Ddl_Function, ETYP_ON_INVALID, 0, 0, 0 }, + { EGROUP_DDL_STOREDPROC, EGROUP_DDL_DATABASE_LEVEL, L"DDL_PROCEDURE_EVENTS", x_eet_Group_Ddl_Storedproc, ETYP_ON_INVALID, 0, 0, 0 }, + { EGROUP_DDL_TRIGGER, EGROUP_DDL_DATABASE_LEVEL, L"DDL_TRIGGER_EVENTS", x_eet_Group_Ddl_Trigger, ETYP_ON_INVALID, 0, 0, 0 }, + { EGROUP_DDL_EVTNOTIF, EGROUP_DDL_DATABASE_LEVEL, L"DDL_EVENT_NOTIFICATION_EVENTS", x_eet_Group_Ddl_Evtnotif, ETYP_ON_INVALID, 0, 0, 0 }, + { EGROUP_DDL_ASSEMBLY, EGROUP_DDL_DATABASE_LEVEL, L"DDL_ASSEMBLY_EVENTS", x_eet_Group_Ddl_Assembly, ETYP_ON_INVALID, 0, 0, 0 }, + { EGROUP_DDL_UDT, EGROUP_DDL_DATABASE_LEVEL, L"DDL_TYPE_EVENTS", x_eet_Group_Ddl_Udt, ETYP_ON_INVALID, 0, 0, 0 }, + { EGROUP_DDL_SEQUENCE, EGROUP_DDL_DATABASE_LEVEL, L"DDL_SEQUENCE_EVENTS", x_eet_Group_Ddl_Sequence, ETYP_ON_INVALID, 0, 0, 0 }, + { EGROUP_DDL_LIBRARY, EGROUP_DDL_DATABASE_LEVEL, L"DDL_LIBRARY_EVENTS", x_eet_Group_Ddl_Library, ETYP_ON_INVALID, 0, 0, 0 }, + { EGROUP_DDL_SENSITIVITY, EGROUP_DDL_DATABASE_LEVEL, L"DDL_SENSITIVITY_EVENTS", x_eet_Group_Ddl_Sensitivity, ETYP_ON_INVALID, 0, 0, 0 }, + { EGROUP_DDL_EXTERNAL_LANGUAGE, EGROUP_DDL_DATABASE_LEVEL, L"DDL_EXTERNAL_LANGUAGE_EVENTS", x_eet_Group_Ddl_External_Language, ETYP_ON_INVALID, 0, 0, 0 }, + { EGROUP_DDL_DB_SECURITY, EGROUP_DDL_DATABASE_LEVEL, L"DDL_DATABASE_SECURITY_EVENTS", x_eet_Group_Ddl_DB_Security, ETYP_ON_INVALID, 0, 0, 0 }, + { EGROUP_DDL_CERTIFICATE, EGROUP_DDL_DB_SECURITY, L"DDL_CERTIFICATE_EVENTS", x_eet_Group_Ddl_Certificate, ETYP_ON_INVALID, 0, 0, 0 }, + { EGROUP_DDL_USER, EGROUP_DDL_DB_SECURITY, L"DDL_USER_EVENTS", x_eet_Group_Ddl_User, ETYP_ON_INVALID, 0, 0, 0 }, + { EGROUP_DDL_ROLE, EGROUP_DDL_DB_SECURITY, L"DDL_ROLE_EVENTS", x_eet_Group_Ddl_Role, ETYP_ON_INVALID, 0, 0, 0 }, + { EGROUP_DDL_APPROLE, EGROUP_DDL_DB_SECURITY, L"DDL_APPLICATION_ROLE_EVENTS", x_eet_Group_Ddl_Approle, ETYP_ON_INVALID, 0, 0, 0 }, + { EGROUP_DDL_SCHEMA, EGROUP_DDL_DB_SECURITY, L"DDL_SCHEMA_EVENTS", x_eet_Group_Ddl_Schema, ETYP_ON_INVALID, 0, 0, 0 }, + { EGROUP_DDL_GDR_DATABASE, EGROUP_DDL_DB_SECURITY, L"DDL_GDR_DATABASE_EVENTS", x_eet_Group_Ddl_Gdr_Database, ETYP_ON_INVALID, 0, 0, 0 }, + { EGROUP_DDL_AUTH_DATABASE, EGROUP_DDL_DB_SECURITY, L"DDL_AUTHORIZATION_DATABASE_EVENTS", x_eet_Group_Ddl_Auth_Database, ETYP_ON_INVALID, 0, 0, 0 }, + { EGROUP_DDL_OBFUSKEY, EGROUP_DDL_DB_SECURITY, L"DDL_SYMMETRIC_KEY_EVENTS", x_eet_Group_Ddl_Symmetric, ETYP_ON_INVALID, 0, 0, 0 }, + { EGROUP_DDL_ASYMKEY, EGROUP_DDL_DB_SECURITY, L"DDL_ASYMMETRIC_KEY_EVENTS", x_eet_Group_Ddl_Asymmetric, ETYP_ON_INVALID, 0, 0, 0 }, + { EGROUP_DDL_CRYPTOSIGN, EGROUP_DDL_DB_SECURITY, L"DDL_CRYPTO_SIGNATURE_EVENTS", x_eet_Group_Ddl_Crypto_Signature, ETYP_ON_INVALID, 0, 0, 0 }, + { EGROUP_DDL_DBMASTERKEY, EGROUP_DDL_DB_SECURITY, L"DDL_MASTER_KEY_EVENTS", x_eet_Group_Ddl_Master_Key, ETYP_ON_INVALID, 0, 0, 0 }, + { EGROUP_DDL_DEK, EGROUP_DDL_DB_SECURITY, L"DDL_DATABASE_ENCRYPTION_KEY_EVENTS", x_eet_Group_Ddl_DEK, ETYP_ON_INVALID, 0, 0, 0 }, + { EGROUP_DDL_DBAUDITSPEC, EGROUP_DDL_DB_SECURITY, L"DDL_DATABASE_AUDIT_SPECIFICATION_EVENTS", x_eet_Group_Ddl_DbAuditSpec, ETYP_ON_INVALID, 0, 0, 0 }, + { EGROUP_DDL_DBAUDIT, EGROUP_DDL_DB_SECURITY, L"DDL_DATABASE_AUDIT_EVENTS", x_eet_Group_Ddl_DatabaseAudit_Group, ETYP_ON_INVALID, 0, 0, 0 }, + { EGROUP_DDL_SSB, EGROUP_DDL_DATABASE_LEVEL, L"DDL_SSB_EVENTS", x_eet_Group_Ddl_Ssb, ETYP_ON_INVALID, 0, 0, 0 }, + { EGROUP_DDL_MSGTYPE, EGROUP_DDL_SSB, L"DDL_MESSAGE_TYPE_EVENTS", x_eet_Group_Ddl_Msgtype, ETYP_ON_INVALID, 0, 0, 0 }, + { EGROUP_DDL_CONTRACT, EGROUP_DDL_SSB, L"DDL_CONTRACT_EVENTS", x_eet_Group_Ddl_Contract, ETYP_ON_INVALID, 0, 0, 0 }, + { EGROUP_DDL_QUEUE, EGROUP_DDL_SSB, L"DDL_QUEUE_EVENTS", x_eet_Group_Ddl_Queue, ETYP_ON_INVALID, 0, 0, 0 }, + { EGROUP_DDL_SERVICE, EGROUP_DDL_SSB, L"DDL_SERVICE_EVENTS", x_eet_Group_Ddl_Service, ETYP_ON_INVALID, 0, 0, 0 }, + { EGROUP_DDL_ROUTE, EGROUP_DDL_SSB, L"DDL_ROUTE_EVENTS", x_eet_Group_Ddl_Route, ETYP_ON_INVALID, 0, 0, 0 }, + { EGROUP_DDL_BINDING, EGROUP_DDL_SSB, L"DDL_REMOTE_SERVICE_BINDING_EVENTS", x_eet_Group_Ddl_Binding, ETYP_ON_INVALID, 0, 0, 0 }, + { EGROUP_DDL_PRIORITY, EGROUP_DDL_SSB, L"DDL_BROKER_PRIORITY_EVENTS", x_eet_Group_Ddl_Priority, ETYP_ON_INVALID, 0, 0, 0 }, + { EGROUP_DDL_XML_SCHEMA_COLLECTION, EGROUP_DDL_DATABASE_LEVEL, L"DDL_XML_SCHEMA_COLLECTION_EVENTS", x_eet_Group_Ddl_Xml_Schema_Collection, ETYP_ON_INVALID, 0, 0, 0 }, + { EGROUP_DDL_PARTITION, EGROUP_DDL_DATABASE_LEVEL, L"DDL_PARTITION_EVENTS", x_eet_Group_Ddl_Partition, ETYP_ON_INVALID, 0, 0, 0 }, + { EGROUP_DDL_PRTFUNCTION, EGROUP_DDL_PARTITION, L"DDL_PARTITION_FUNCTION_EVENTS", x_eet_Group_Ddl_Prtfunction, ETYP_ON_INVALID, 0, 0, 0 }, + { EGROUP_DDL_PRTSCHEME, EGROUP_DDL_PARTITION, L"DDL_PARTITION_SCHEME_EVENTS", x_eet_Group_Ddl_Prtscheme, ETYP_ON_INVALID, 0, 0, 0 }, + { EGROUP_DDL_DEFAULT, EGROUP_DDL_DATABASE_LEVEL, L"DDL_DEFAULT_EVENTS", x_eet_Group_Ddl_Default, ETYP_ON_INVALID, 0, 0, 0 }, + { EGROUP_DDL_EXTENDED_PROPERTY, EGROUP_DDL_DATABASE_LEVEL, L"DDL_EXTENDED_PROPERTY_EVENTS", x_eet_Group_Ddl_Extended_Property, ETYP_ON_INVALID, 0, 0, 0 }, + { EGROUP_DDL_FULLTEXT_CATALOG, EGROUP_DDL_DATABASE_LEVEL, L"DDL_FULLTEXT_CATALOG_EVENTS", x_eet_Group_Ddl_Fulltext_Catalog, ETYP_ON_INVALID, 0, 0, 0 }, + { EGROUP_DDL_PLAN_GUIDE, EGROUP_DDL_DATABASE_LEVEL, L"DDL_PLAN_GUIDE_EVENTS", x_eet_Group_Ddl_Plan_Guide, ETYP_ON_INVALID, 0, 0, 0 }, + { EGROUP_DDL_RULE, EGROUP_DDL_DATABASE_LEVEL, L"DDL_RULE_EVENTS", x_eet_Group_Ddl_Rule, ETYP_ON_INVALID, 0, 0, 0 }, + { EGROUP_DDL_FULLTEXT_STOPLIST, EGROUP_DDL_DATABASE_LEVEL, L"DDL_FULLTEXT_STOPLIST_EVENTS", x_eet_Group_Ddl_Fulltext_StopList, ETYP_ON_INVALID, 0, 0, 0 }, + { EGROUP_DDL_PROPERTYLIST, EGROUP_DDL_DATABASE_LEVEL, L"DDL_SEARCH_PROPERTY_LIST_EVENTS", x_eet_Group_Ddl_PropertyList, ETYP_ON_INVALID, 0, 0, 0 }, + { EGROUP_DDL_AVAILABILITY_GROUP, EGROUP_DDL_SERVER_LEVEL, L"DDL_AVAILABILITY_GROUP_EVENTS", x_eet_Group_Ddl_Availability_Group, ETYP_ON_INVALID, 0, 0, 0 }, + { EGROUP_DDL_SECURITY_POLICY, EGROUP_DDL_DATABASE_LEVEL, L"DDL_SECURITY_POLICY_EVENTS", x_eet_Group_Ddl_SecurityPolicy_Group, ETYP_ON_INVALID, 0, 0, 0 }, + { EGROUP_DDL_COL_MASTER_KEY, EGROUP_DDL_DATABASE_LEVEL, L"DDL_COLUMN_MASTER_KEY_EVENTS", x_eet_Group_Ddl_Col_Master_Key_Group , ETYP_ON_INVALID, 0, 0, 0 }, + { EGROUP_DDL_COL_ENCRYPTION_KEY, EGROUP_DDL_DATABASE_LEVEL, L"DDL_COLUMN_ENCRYPTION_KEY_EVENTS", x_eet_Group_Ddl_Col_Encryption_Key_Group, ETYP_ON_INVALID, 0, 0, 0 }, + +// ========= SQLTrace additions. Do not put anything below!!!================================== + { EGROUP_TRCAT_ALL, EGROUP_ALL, L"TRC_ALL_EVENTS", x_eet_Group_Traceat_All, ETYP_ON_INVALID, 0, 0, 0 }, +#include "grpdefs.inc" +//============================================================================= +}; + +STATIC const ULONG s_cEventGroup = ARRAYSIZE(g_rgEventGroup); + +// This array defines schema for all supported synchronous events. The array order should follow +// the order of the EEventType enum defined in events.h. +// +STATIC EVENT_SCHEMA s_rgEventSchema[] = +{ + +//////////////////////////////////////////////////////////////////////////////////////// +// DDL EVENTS +//////////////////////////////////////////////////////////////////////////////////////// + + //----------------------------------------------- + // CREATE TABLE Event Schema + //----------------------------------------------- + { ETYP_ON_CREATETABLE, + x_eet_Create_Table, + EOBJTYP_DATABASE | EOBJTYP_SERVER, + EFLAG_SAME_TRANS, + L"CREATE_TABLE", + EventTag_SchemaDDL, + NULL, + 5, + EGROUP_DDL_TABLE, + 0 + }, + + //----------------------------------------------- + // ALTER TABLE Event Schema + //----------------------------------------------- + { ETYP_ON_ALTERTABLE, + x_eet_Alter_Table, + EOBJTYP_DATABASE | EOBJTYP_SERVER, + EFLAG_SAME_TRANS, + L"ALTER_TABLE", + EventTag_SchemaDDL | EventTag_Parameters | EventTag_AlterTableActionList, + NULL, + BitCount64(EventTag_SchemaDDL | EventTag_Parameters | EventTag_AlterTableActionList), + EGROUP_DDL_TABLE, + 0 + }, + + //----------------------------------------------- + // DROP TABLE Event Schema + //----------------------------------------------- + { ETYP_ON_DROPTABLE, + x_eet_Drop_Table, + EOBJTYP_DATABASE | EOBJTYP_SERVER, + EFLAG_SAME_TRANS, + L"DROP_TABLE", + EventTag_SchemaDDL, + NULL, + 5, + EGROUP_DDL_TABLE, + 0 + }, + + //----------------------------------------------- + // CREATE VIEW Event Schema + //----------------------------------------------- + { ETYP_ON_CREATEVIEW, + x_eet_Create_View, + EOBJTYP_DATABASE | EOBJTYP_SERVER, + EFLAG_SAME_TRANS, + L"CREATE_VIEW", + EventTag_SchemaDDL, + NULL, + 5, + EGROUP_DDL_VIEW, + 0 + }, + + //----------------------------------------------- + // ALTER VIEW Event Schema + //----------------------------------------------- + { ETYP_ON_ALTERVIEW, + x_eet_Alter_View, + EOBJTYP_DATABASE | EOBJTYP_SERVER, + EFLAG_SAME_TRANS, + L"ALTER_VIEW", + EventTag_SchemaDDL, + NULL, + 5, + EGROUP_DDL_VIEW, + 0 + }, + + //----------------------------------------------- + // DROP VIEW Event Schema + //----------------------------------------------- + { ETYP_ON_DROPVIEW, + x_eet_Drop_View, + EOBJTYP_DATABASE | EOBJTYP_SERVER, + EFLAG_SAME_TRANS, + L"DROP_VIEW", + EventTag_SchemaDDL, + NULL, + 5, + EGROUP_DDL_VIEW, + 0 + }, + + //----------------------------------------------- + // CREATE SYNONYM Event Schema + //----------------------------------------------- + { ETYP_ON_CREATESYNONYM, + x_eet_Create_Synonym, + EOBJTYP_DATABASE | EOBJTYP_SERVER, + EFLAG_SAME_TRANS, + L"CREATE_SYNONYM", + EventTag_SchemaDDL | EventTag_TargetNames, + NULL, + 9, + EGROUP_DDL_SYNONYM, + 0 + }, + + //----------------------------------------------- + // DROP SYNONYM Event Schema + //----------------------------------------------- + { ETYP_ON_DROPSYNONYM, + x_eet_Drop_Synonym, + EOBJTYP_DATABASE | EOBJTYP_SERVER, + EFLAG_SAME_TRANS, + L"DROP_SYNONYM", + EventTag_SchemaDDL | EventTag_TargetNames, + NULL, + 9, + EGROUP_DDL_SYNONYM, + 0 + }, + + //----------------------------------------------- + // CREATE FUNCTION Event Schema + //----------------------------------------------- + { ETYP_ON_CREATEFUNCTION, + x_eet_Create_Function, + EOBJTYP_DATABASE | EOBJTYP_SERVER, + EFLAG_SAME_TRANS, + L"CREATE_FUNCTION", + EventTag_SchemaDDL, + NULL, + 5, + EGROUP_DDL_FUNCTION, + 0 + }, + + //----------------------------------------------- + // ALTER FUNCTION Event Schema + //----------------------------------------------- + { ETYP_ON_ALTERFUNCTION, + x_eet_Alter_Function, + EOBJTYP_DATABASE | EOBJTYP_SERVER, + EFLAG_SAME_TRANS, + L"ALTER_FUNCTION", + EventTag_SchemaDDL, + NULL, + 5, + EGROUP_DDL_FUNCTION, + 0 + }, + + //----------------------------------------------- + // DROP FUNCTION Event Schema + //----------------------------------------------- + { ETYP_ON_DROPFUNCTION, + x_eet_Drop_Function, + EOBJTYP_DATABASE | EOBJTYP_SERVER, + EFLAG_SAME_TRANS, + L"DROP_FUNCTION", + EventTag_SchemaDDL, + NULL, + 5, + EGROUP_DDL_FUNCTION, + 0 + }, + + //----------------------------------------------- + // CREATE PROCEDURE Event Schema + //----------------------------------------------- + { ETYP_ON_CREATEPROC, + x_eet_Create_Procedure, + EOBJTYP_DATABASE | EOBJTYP_SERVER, + EFLAG_SAME_TRANS, + L"CREATE_PROCEDURE", + EventTag_SchemaDDL, + NULL, + 5, + EGROUP_DDL_STOREDPROC, + 0 + }, + + //----------------------------------------------- + // ALTER PROCEDURE Event Schema + //----------------------------------------------- + { ETYP_ON_ALTERPROC, + x_eet_Alter_Procedure, + EOBJTYP_DATABASE | EOBJTYP_SERVER, + EFLAG_SAME_TRANS, + L"ALTER_PROCEDURE", + EventTag_SchemaDDL | EventTag_Parameters, + NULL, + 6, + EGROUP_DDL_STOREDPROC, + 0 + }, + + //----------------------------------------------- + // DROP PROCEDURE Event Schema + //----------------------------------------------- + { ETYP_ON_DROPPROC, + x_eet_Drop_Procedure, + EOBJTYP_DATABASE | EOBJTYP_SERVER, + EFLAG_SAME_TRANS, + L"DROP_PROCEDURE", + EventTag_SchemaDDL, + NULL, + 5, + EGROUP_DDL_STOREDPROC, + 0 + }, + + //----------------------------------------------- + // CREATE TRIGGER Event Schema + //----------------------------------------------- + { ETYP_ON_CREATETRIGGER, + x_eet_Create_Trigger, + EOBJTYP_DATABASE | EOBJTYP_SERVER, + EFLAG_SAME_TRANS, + L"CREATE_TRIGGER", + EventTag_SchemaTargetDDL, + NULL, + 7, + EGROUP_DDL_TRIGGER, + 0 + }, + + //----------------------------------------------- + // ALTER TRIGGER Event Schema + //----------------------------------------------- + { ETYP_ON_ALTERTRIGGER, + x_eet_Alter_Trigger, + EOBJTYP_DATABASE | EOBJTYP_SERVER, + EFLAG_SAME_TRANS, + L"ALTER_TRIGGER", + EventTag_SchemaTargetDDL | EventTag_Parameters, + NULL, + 8, + EGROUP_DDL_TRIGGER, + 0 + }, + + //----------------------------------------------- + // DROP TRIGGER Event Schema + //----------------------------------------------- + { ETYP_ON_DROPTRIGGER, + x_eet_Drop_Trigger, + EOBJTYP_DATABASE | EOBJTYP_SERVER, + EFLAG_SAME_TRANS, + L"DROP_TRIGGER", + EventTag_SchemaTargetDDL, + NULL, + 7, + EGROUP_DDL_TRIGGER, + 0 + }, + + //----------------------------------------------- + // CREATE EVENT NOTIFICATION Event Schema + //----------------------------------------------- + { ETYP_ON_CREATEEVTNOTIF, + x_eet_Create_Event_Notification, + EOBJTYP_DATABASE | EOBJTYP_SERVER, + EFLAG_SAME_TRANS, + L"CREATE_EVENT_NOTIFICATION", + EventTag_SchemaLessFullTargetDDL, + NULL, + 7, + EGROUP_DDL_EVTNOTIF, + 0 + }, + + //----------------------------------------------- + // DROP EVENT NOTIFICATION Event Schema + //----------------------------------------------- + { ETYP_ON_DROPEVTNOTIF, + x_eet_Drop_Event_Notification, + EOBJTYP_DATABASE | EOBJTYP_SERVER, + EFLAG_SAME_TRANS, + L"DROP_EVENT_NOTIFICATION", + EventTag_SchemaLessFullTargetDDL, + NULL, + 7, + EGROUP_DDL_EVTNOTIF, + 0 + }, + + //----------------------------------------------- + // CREATE INDEX Event Schema + //----------------------------------------------- + { ETYP_ON_CREATEINDEX, + x_eet_Create_Index, + EOBJTYP_DATABASE | EOBJTYP_SERVER, + EFLAG_SAME_TRANS, + L"CREATE_INDEX", + EventTag_SchemaTargetDDL, + NULL, + 7, + EGROUP_DDL_INDEX, + 0 + }, + + //----------------------------------------------- + // ALTER INDEX Event Schema + //----------------------------------------------- + { ETYP_ON_ALTERINDEX, + x_eet_Alter_Index, + EOBJTYP_DATABASE | EOBJTYP_SERVER, + EFLAG_SAME_TRANS, + L"ALTER_INDEX", + EventTag_SchemaTargetDDL | EventTag_Parameters, + NULL, + 8, + EGROUP_DDL_INDEX, + 0 + }, + + //----------------------------------------------- + // DROP INDEX Event Schema + //----------------------------------------------- + { ETYP_ON_DROPINDEX, + x_eet_Drop_Index, + EOBJTYP_DATABASE | EOBJTYP_SERVER, + EFLAG_SAME_TRANS, + L"DROP_INDEX", + EventTag_SchemaTargetDDL, + NULL, + 7, + EGROUP_DDL_INDEX, + 0 + }, + + //----------------------------------------------- + // CREATE STATS Event Schema + //----------------------------------------------- + { ETYP_ON_CREATESTATS, + x_eet_Create_Stats, + EOBJTYP_DATABASE | EOBJTYP_SERVER, + EFLAG_SAME_TRANS, + L"CREATE_STATISTICS", + EventTag_SchemaTargetDDL, + NULL, + 7, + EGROUP_DDL_STATS, + 0 + }, + + //----------------------------------------------- + // UPDATE STATS Event Schema + //----------------------------------------------- + { ETYP_ON_UPDATESTATS, + x_eet_Update_Stats, + EOBJTYP_DATABASE | EOBJTYP_SERVER, + EFLAG_SAME_TRANS, + L"UPDATE_STATISTICS", + EventTag_DatabaseEvent | EventTag_SchemaName | EventTag_ObjectType | EventTag_TargetObjectName | EventTag_TargetObjectType, + NULL, + 6, + EGROUP_DDL_STATS, + 0 + }, + + //----------------------------------------------- + // DROP STATS Event Schema + //----------------------------------------------- + { ETYP_ON_DROPSTATS, + x_eet_Drop_Stats, + EOBJTYP_DATABASE | EOBJTYP_SERVER, + EFLAG_SAME_TRANS, + L"DROP_STATISTICS", + EventTag_SchemaTargetDDL, + NULL, + 7, + EGROUP_DDL_STATS, + 0 + }, + + //----------------------------------------------- + // CREATE DATABASE Event Schema + //----------------------------------------------- + { ETYP_ON_CREATEDATABASE, + x_eet_Create_Database, + EOBJTYP_SERVER, + EFLAG_NEW_TRANS, + L"CREATE_DATABASE", + EventTag_DatabaseEvent, + NULL, + 2, + EGROUP_DDL_DATABASE, + 0 + }, + + //----------------------------------------------- + // ALTER DATABASE Event Schema + //----------------------------------------------- + { ETYP_ON_ALTERDATABASE, + x_eet_Alter_Database, + EOBJTYP_SERVER, + EFLAG_NEW_TRANS, + L"ALTER_DATABASE", + EventTag_DatabaseEvent | EventTag_Parameters | EventTag_AlterDatabaseActionList, + NULL, + BitCount64(EventTag_DatabaseEvent | EventTag_Parameters | EventTag_AlterDatabaseActionList), // 4, + EGROUP_DDL_DATABASE, + 0 + }, + + //----------------------------------------------- + // DROP DATABASE Event Schema + //----------------------------------------------- + { ETYP_ON_DROPDATABASE, + x_eet_Drop_Database, + EOBJTYP_SERVER, + EFLAG_NEW_TRANS, + L"DROP_DATABASE", + EventTag_DatabaseEvent, + NULL, + 2, + EGROUP_DDL_DATABASE, + 0 + }, + + //----------------------------------------------- + // CREATE ASSEMBLY Event Schema + //----------------------------------------------- + { ETYP_ON_CREATEASSEMBLY, + x_eet_Create_Assembly, + EOBJTYP_DATABASE | EOBJTYP_SERVER, + EFLAG_SAME_TRANS, + L"CREATE_ASSEMBLY", + EventTag_SchemaLessDDL, + NULL, + 4, + EGROUP_DDL_ASSEMBLY, + 0 + }, + + //----------------------------------------------- + // ALTER ASSEMBLY Event Schema + //----------------------------------------------- + { ETYP_ON_ALTERASSEMBLY, + x_eet_Alter_Assembly, + EOBJTYP_DATABASE | EOBJTYP_SERVER, + EFLAG_SAME_TRANS, + L"ALTER_ASSEMBLY", + EventTag_SchemaLessDDL, + NULL, + 4, + EGROUP_DDL_ASSEMBLY, + 0 + }, + + //----------------------------------------------- + // DROP ASSEMBLY Event Schema + //----------------------------------------------- + { ETYP_ON_DROPASSEMBLY, + x_eet_Drop_Assembly, + EOBJTYP_DATABASE | EOBJTYP_SERVER, + EFLAG_SAME_TRANS, + L"DROP_ASSEMBLY", + EventTag_SchemaLessDDL, + NULL, + 4, + EGROUP_DDL_ASSEMBLY, + 0 + }, + + //----------------------------------------------- + // CREATE TYPE Event Schema + //----------------------------------------------- + { ETYP_ON_CREATETYPE, + x_eet_Create_Type, + EOBJTYP_DATABASE | EOBJTYP_SERVER, + EFLAG_SAME_TRANS, + L"CREATE_TYPE", + EventTag_SchemaDDL, + NULL, + 5, + EGROUP_DDL_UDT, + 0 + }, + + //----------------------------------------------- + // DROP TYPE Event Schema + //----------------------------------------------- + { ETYP_ON_DROPTYPE, + x_eet_Drop_Type, + EOBJTYP_DATABASE | EOBJTYP_SERVER, + EFLAG_SAME_TRANS, + L"DROP_TYPE", + EventTag_SchemaDDL, + NULL, + 5, + EGROUP_DDL_UDT, + 0 + }, + + //----------------------------------------------- + // CREATE USER Event Schema + //----------------------------------------------- + { ETYP_ON_CREATEUSER, + x_eet_Create_User, + EOBJTYP_DATABASE | EOBJTYP_SERVER, + EFLAG_SAME_TRANS, + L"CREATE_USER", + EventTag_SchemaLessDDL | EventTag_DefaultSchema | EventTag_SID | EventTag_DefaultLanguage, + NULL, + 7, + EGROUP_DDL_USER, + 0 + }, + + //----------------------------------------------- + // ALTER USER Event Schema + //----------------------------------------------- + { ETYP_ON_ALTERUSER, + x_eet_Alter_User, + EOBJTYP_DATABASE | EOBJTYP_SERVER, + EFLAG_SAME_TRANS, + L"ALTER_USER", + EventTag_SchemaLessDDL | EventTag_DefaultSchema | EventTag_SID | EventTag_Parameters | EventTag_DefaultLanguage, + NULL, + 8, + EGROUP_DDL_USER, + 0 + }, + + //----------------------------------------------- + // DROP USER Event Schema + //----------------------------------------------- + { ETYP_ON_DROPUSER, + x_eet_Drop_User, + EOBJTYP_DATABASE | EOBJTYP_SERVER, + EFLAG_SAME_TRANS, + L"DROP_USER", + EventTag_SchemaLessDDL | EventTag_DefaultSchema | EventTag_SID | EventTag_DefaultLanguage, + NULL, + 7, + EGROUP_DDL_USER, + 0 + }, + + + //----------------------------------------------- + // ADD ROLE MEMBER (sp_AddRoleMember) Event Schema + //----------------------------------------------- + { ETYP_ON_ADDROLEMEMBER, + x_eet_Add_Role_Member, + EOBJTYP_DATABASE | EOBJTYP_SERVER, + EFLAG_SAME_TRANS, + L"ADD_ROLE_MEMBER", + EventTag_DatabaseName | EventTag_ObjectEvent | EventTag_DefaultSchema | EventTag_SID | EventTag_RoleName | EventTag_TSQLCommand, + NULL, + BitCount64(EventTag_DatabaseName | EventTag_ObjectEvent | EventTag_DefaultSchema | EventTag_SID | EventTag_RoleName | EventTag_TSQLCommand), + EGROUP_DDL_ROLE, + 0 + }, + + //----------------------------------------------- + // DROP ROLE MEMBER (sp_DropRoleMember) Event Schema + //----------------------------------------------- + { ETYP_ON_DROPROLEMEMBER, + x_eet_Drop_Role_Member, + EOBJTYP_DATABASE | EOBJTYP_SERVER, + EFLAG_SAME_TRANS, + L"DROP_ROLE_MEMBER", + EventTag_DatabaseName | EventTag_ObjectEvent | EventTag_DefaultSchema | EventTag_SID | EventTag_RoleName | EventTag_TSQLCommand, + NULL, + BitCount64(EventTag_DatabaseName | EventTag_ObjectEvent | EventTag_DefaultSchema | EventTag_SID | EventTag_RoleName | EventTag_TSQLCommand), + EGROUP_DDL_ROLE, + 0 + }, + + + //----------------------------------------------- + // CREATE ROLE Event Schema + //----------------------------------------------- + { ETYP_ON_CREATEROLE, + x_eet_Create_Role, + EOBJTYP_DATABASE | EOBJTYP_SERVER, + EFLAG_SAME_TRANS, + L"CREATE_ROLE", + EventTag_SchemaLessDDL | EventTag_SID, + NULL, + 5, + EGROUP_DDL_ROLE, + 0 + }, + + //----------------------------------------------- + // ALTER ROLE Event Schema + //----------------------------------------------- + { ETYP_ON_ALTERROLE, + x_eet_Alter_Role, + EOBJTYP_DATABASE | EOBJTYP_SERVER, + EFLAG_SAME_TRANS, + L"ALTER_ROLE", + EventTag_SchemaLessDDL | EventTag_SID, + NULL, + 5, + EGROUP_DDL_ROLE, + 0 + }, + + //----------------------------------------------- + // DROP ROLE Event Schema + //----------------------------------------------- + { ETYP_ON_DROPROLE, + x_eet_Drop_Role, + EOBJTYP_DATABASE | EOBJTYP_SERVER, + EFLAG_SAME_TRANS, + L"DROP_ROLE", + EventTag_SchemaLessDDL | EventTag_SID, + NULL, + 5, + EGROUP_DDL_ROLE, + 0 + }, + + + //----------------------------------------------- + // CREATE APPROLE Event Schema + //----------------------------------------------- + { ETYP_ON_CREATEAPPROLE, + x_eet_Create_AppRole, + EOBJTYP_DATABASE | EOBJTYP_SERVER, + EFLAG_SAME_TRANS, + L"CREATE_APPLICATION_ROLE", + EventTag_SchemaLessDDL | EventTag_DefaultSchema | EventTag_SID, + NULL, + 6, + EGROUP_DDL_APPROLE, + 0 + }, + + //----------------------------------------------- + // ALTER APPROLE Event Schema + //----------------------------------------------- + { ETYP_ON_ALTERAPPROLE, + x_eet_Alter_AppRole, + EOBJTYP_DATABASE | EOBJTYP_SERVER, + EFLAG_SAME_TRANS, + L"ALTER_APPLICATION_ROLE", + EventTag_SchemaLessDDL | EventTag_DefaultSchema | EventTag_SID, + NULL, + 6, + EGROUP_DDL_APPROLE, + 0 + }, + + //----------------------------------------------- + // DROP APPROLE Event Schema + //----------------------------------------------- + { ETYP_ON_DROPAPPROLE, + x_eet_Drop_AppRole, + EOBJTYP_DATABASE | EOBJTYP_SERVER, + EFLAG_SAME_TRANS, + L"DROP_APPLICATION_ROLE", + EventTag_SchemaLessDDL | EventTag_DefaultSchema | EventTag_SID, + NULL, + 6, + EGROUP_DDL_APPROLE, + 0 + }, + + + //----------------------------------------------- + // CREATE SCHEMA Event Schema + //----------------------------------------------- + { ETYP_ON_CREATESCHEMA, + x_eet_Create_Schema, + EOBJTYP_DATABASE | EOBJTYP_SERVER, + EFLAG_SAME_TRANS, + L"CREATE_SCHEMA", + EventTag_DatabaseEvent | EventTag_SchemaName | EventTag_OwnerName | EventTag_ObjectEvent, + NULL, + 6, + EGROUP_DDL_SCHEMA, + 0 + }, + + //----------------------------------------------- + // ALTER SCHEMA Event Schema + //----------------------------------------------- + { ETYP_ON_ALTERSCHEMA, + x_eet_Alter_Schema, + EOBJTYP_DATABASE | EOBJTYP_SERVER, + EFLAG_SAME_TRANS, + L"ALTER_SCHEMA", + EventTag_SchemaDDL, + NULL, + BitCount64(EventTag_SchemaDDL), + EGROUP_DDL_SCHEMA, + 0 + }, + + //----------------------------------------------- + // DROP SCHEMA Event Schema + //----------------------------------------------- + { ETYP_ON_DROPSCHEMA, + x_eet_Drop_Schema, + EOBJTYP_DATABASE | EOBJTYP_SERVER, + EFLAG_SAME_TRANS, + L"DROP_SCHEMA", + EventTag_DatabaseEvent | EventTag_SchemaName | EventTag_OwnerName | EventTag_ObjectEvent, + NULL, + 6, + EGROUP_DDL_SCHEMA, + 0 + }, + + + //----------------------------------------------- + // CREATE LOGIN Event Schema + //----------------------------------------------- + { ETYP_ON_CREATELOGIN, + x_eet_Create_Login, + EOBJTYP_SERVER, + EFLAG_SAME_TRANS, + L"CREATE_LOGIN", + EventTag_LoginEvent, + NULL, + 7, + EGROUP_DDL_LOGIN, + 0 + }, + + //----------------------------------------------- + // ALTER LOGIN Event Schema + //----------------------------------------------- + { ETYP_ON_ALTERLOGIN, + x_eet_Alter_Login, + EOBJTYP_SERVER, + EFLAG_SAME_TRANS, + L"ALTER_LOGIN", + EventTag_LoginEvent, + NULL, + 7, + EGROUP_DDL_LOGIN, + 0 + }, + + //----------------------------------------------- + // DROP LOGIN Event Schema + //----------------------------------------------- + { ETYP_ON_DROPLOGIN, + x_eet_Drop_Login, + EOBJTYP_SERVER, + EFLAG_SAME_TRANS, + L"DROP_LOGIN", + EventTag_LoginEvent, + NULL, + 7, + EGROUP_DDL_LOGIN, + 0 + }, + + //----------------------------------------------- + // LOGON Event Schema + //----------------------------------------------- + { ETYP_ON_LOGON, + x_eet_Logon, + EOBJTYP_SERVER, + EFLAG_SAME_TRANS | EFLAG_SYNC_ONLY, + L"LOGON", + EventTag_LoginType | EventTag_SID | EventTag_ClientHost | EventTag_IsPooled, + NULL, + 4, + EGROUP_ALL, + 0 + }, + + //----------------------------------------------- + // ADD SERVER ROLE MEMBER (sp_AddSrvRoleMember) Event Schema + //----------------------------------------------- + { ETYP_ON_ADDSRVROLEMEMBER, + x_eet_Add_Server_Role_Member, + EOBJTYP_SERVER, + EFLAG_SAME_TRANS, + L"ADD_SERVER_ROLE_MEMBER", + EventTag_LoginEvent | EventTag_RoleEvent | EventTag_TSQLCommand, + NULL, + BitCount64(EventTag_LoginEvent | EventTag_RoleEvent | EventTag_TSQLCommand), + EGROUP_DDL_SERVER_SECURITY, + 0 + }, + + //----------------------------------------------- + // DROP SERVER ROLE MEMBER (sp_DropSrvRoleMember) Event Schema + //----------------------------------------------- + { ETYP_ON_DROPSRVROLEMEMBER, + x_eet_Drop_Server_Role_Member, + EOBJTYP_SERVER, + EFLAG_SAME_TRANS, + L"DROP_SERVER_ROLE_MEMBER", + EventTag_LoginEvent | EventTag_RoleEvent | EventTag_TSQLCommand, + NULL, + BitCount64(EventTag_LoginEvent | EventTag_RoleEvent | EventTag_TSQLCommand), + EGROUP_DDL_SERVER_SECURITY, + 0 + }, + + //----------------------------------------------- + // CREATE SERVERROLE Event Schema + //----------------------------------------------- + { ETYP_ON_CREATESERVERROLE, + x_eet_Create_ServerRole, + EOBJTYP_SERVER, + EFLAG_SAME_TRANS, + L"CREATE_SERVER_ROLE", + EventTag_ServerEvent | EventTag_SID, + NULL, + BitCount64(EventTag_ServerEvent | EventTag_SID), + EGROUP_DDL_SERVER_SECURITY, + 0 + }, + + //----------------------------------------------- + // ALTER SERVERROLE Event Schema + //----------------------------------------------- + { ETYP_ON_ALTERSERVERROLE, + x_eet_Alter_ServerRole, + EOBJTYP_SERVER, + EFLAG_SAME_TRANS, + L"ALTER_SERVER_ROLE", + EventTag_ServerEvent | EventTag_SID, + NULL, + BitCount64(EventTag_ServerEvent | EventTag_SID), + EGROUP_DDL_SERVER_SECURITY, + 0 + }, + + //----------------------------------------------- + // DROP SERVERROLE Event Schema + //----------------------------------------------- + { ETYP_ON_DROPSERVERROLE, + x_eet_Drop_ServerRole, + EOBJTYP_SERVER, + EFLAG_SAME_TRANS, + L"DROP_SERVER_ROLE", + EventTag_ServerEvent | EventTag_SID, + NULL, + BitCount64(EventTag_ServerEvent | EventTag_SID), + EGROUP_DDL_SERVER_SECURITY, + 0 + }, + + //----------------------------------------------- + // CREATE ENDPOINT Event Schema + //----------------------------------------------- + { ETYP_ON_CREATE_ENDPOINT, + x_eet_Create_Endpoint, + EOBJTYP_SERVER, + EFLAG_SAME_TRANS, + L"CREATE_ENDPOINT", + EventTag_ServerEvent, + NULL, + 3, + EGROUP_DDL_ENDPOINT, + 0 + }, + + //----------------------------------------------- + // ALTER ENDPOINT Event Schema + //----------------------------------------------- + { ETYP_ON_ALTER_ENDPOINT, + x_eet_Alter_Endpoint, + EOBJTYP_SERVER, + EFLAG_SAME_TRANS, + L"ALTER_ENDPOINT", + EventTag_ServerEvent, + NULL, + 3, + EGROUP_DDL_ENDPOINT, + 0 + }, + + //----------------------------------------------- + // DROP ENDPOINT Event Schema + //----------------------------------------------- + { ETYP_ON_DROP_ENDPOINT, + x_eet_Drop_Endpoint, + EOBJTYP_SERVER, + EFLAG_SAME_TRANS, + L"DROP_ENDPOINT", + EventTag_ServerEvent, + NULL, + 3, + EGROUP_DDL_ENDPOINT, + 0 + }, + + //*********************************************************************** + // START: Service Broker Events + // + //*********************************************************************** + + //----------------------------------------------- + // CREATE MSGTYPE Event Schema + //----------------------------------------------- + { ETYP_ON_CREATEMSGTYPE, + x_eet_Create_MsgType, + EOBJTYP_DATABASE | EOBJTYP_SERVER, + EFLAG_SAME_TRANS, + L"CREATE_MESSAGE_TYPE", + EventTag_SchemaLessDDL, + NULL, + 4, + EGROUP_DDL_MSGTYPE, + 0 + }, + + //----------------------------------------------- + // ALTER MSGTYPE Event Schema + //----------------------------------------------- + { ETYP_ON_ALTERMSGTYPE, + x_eet_Alter_MsgType, + EOBJTYP_DATABASE | EOBJTYP_SERVER, + EFLAG_SAME_TRANS, + L"ALTER_MESSAGE_TYPE", + EventTag_SchemaLessDDL, + NULL, + 4, + EGROUP_DDL_MSGTYPE, + 0 + }, + + //----------------------------------------------- + // DROP MSGTYPE Event Schema + //----------------------------------------------- + { ETYP_ON_DROPMSGTYPE, + x_eet_Drop_MsgType, + EOBJTYP_DATABASE | EOBJTYP_SERVER, + EFLAG_SAME_TRANS, + L"DROP_MESSAGE_TYPE", + EventTag_SchemaLessDDL, + NULL, + 4, + EGROUP_DDL_MSGTYPE, + 0 + }, + + + //----------------------------------------------- + // CREATE CONTRACT Event Schema + //----------------------------------------------- + { ETYP_ON_CREATECONTRACT, + x_eet_Create_Contract, + EOBJTYP_DATABASE | EOBJTYP_SERVER, + EFLAG_SAME_TRANS, + L"CREATE_CONTRACT", + EventTag_SchemaLessDDL, + NULL, + 4, + EGROUP_DDL_CONTRACT, + 0 + }, + + //----------------------------------------------- + // DROP CONTRACT Event Schema + //----------------------------------------------- + { ETYP_ON_DROPCONTRACT, + x_eet_Drop_Contract, + EOBJTYP_DATABASE | EOBJTYP_SERVER, + EFLAG_SAME_TRANS, + L"DROP_CONTRACT", + EventTag_SchemaLessDDL, + NULL, + 4, + EGROUP_DDL_CONTRACT, + 0 + }, + + + //----------------------------------------------- + // CREATE QUEUE Event Schema + //----------------------------------------------- + { ETYP_ON_CREATEQUEUE, + x_eet_Create_Queue, + EOBJTYP_DATABASE | EOBJTYP_SERVER, + EFLAG_SAME_TRANS, + L"CREATE_QUEUE", + EventTag_SchemaDDL, + NULL, + 5, + EGROUP_DDL_QUEUE, + 0 + }, + + //----------------------------------------------- + // ALTER QUEUE Event Schema + //----------------------------------------------- + { ETYP_ON_ALTERQUEUE, + x_eet_Alter_Queue, + EOBJTYP_DATABASE | EOBJTYP_SERVER, + EFLAG_SAME_TRANS, + L"ALTER_QUEUE", + EventTag_SchemaDDL, + NULL, + 5, + EGROUP_DDL_QUEUE, + 0 + }, + + //----------------------------------------------- + // DROP QUEUE Event Schema + //----------------------------------------------- + { ETYP_ON_DROPQUEUE, + x_eet_Drop_Queue, + EOBJTYP_DATABASE | EOBJTYP_SERVER, + EFLAG_SAME_TRANS, + L"DROP_QUEUE", + EventTag_SchemaDDL, + NULL, + 5, + EGROUP_DDL_QUEUE, + 0 + }, + + + //----------------------------------------------- + // CREATE SERVICE Event Schema + //----------------------------------------------- + { ETYP_ON_CREATESERVICE, + x_eet_Create_Service, + EOBJTYP_DATABASE | EOBJTYP_SERVER, + EFLAG_SAME_TRANS, + L"CREATE_SERVICE", + EventTag_SchemaLessFullTargetDDL, + NULL, + 7, + EGROUP_DDL_SERVICE, + 0 + }, + + //----------------------------------------------- + // ALTER SERVICE Event Schema + //----------------------------------------------- + { ETYP_ON_ALTERSERVICE, + x_eet_Alter_Service, + EOBJTYP_DATABASE | EOBJTYP_SERVER, + EFLAG_SAME_TRANS, + L"ALTER_SERVICE", + EventTag_SchemaLessFullTargetDDL, + NULL, + 7, + EGROUP_DDL_SERVICE, + 0 + }, + + //----------------------------------------------- + // DROP SERVICE Event Schema + //----------------------------------------------- + { ETYP_ON_DROPSERVICE, + x_eet_Drop_Service, + EOBJTYP_DATABASE | EOBJTYP_SERVER, + EFLAG_SAME_TRANS, + L"DROP_SERVICE", + EventTag_SchemaLessFullTargetDDL, + NULL, + 7, + EGROUP_DDL_SERVICE, + 0 + }, + + //----------------------------------------------- + // CREATE ROUTE Event Schema + //----------------------------------------------- + { ETYP_ON_CREATEROUTE, + x_eet_Create_Route, + EOBJTYP_DATABASE | EOBJTYP_SERVER, + EFLAG_SAME_TRANS, + L"CREATE_ROUTE", + EventTag_SchemaLessDDL, + NULL, + 4, + EGROUP_DDL_ROUTE, + 0 + }, + + //----------------------------------------------- + // ALTER ROUTE Event Schema + //----------------------------------------------- + { ETYP_ON_ALTERROUTE, + x_eet_Alter_Route, + EOBJTYP_DATABASE | EOBJTYP_SERVER, + EFLAG_SAME_TRANS, + L"ALTER_ROUTE", + EventTag_SchemaLessDDL, + NULL, + 4, + EGROUP_DDL_ROUTE, + 0 + }, + + //----------------------------------------------- + // DROP ROUTE Event Schema + //----------------------------------------------- + { ETYP_ON_DROPROUTE, + x_eet_Drop_Route, + EOBJTYP_DATABASE | EOBJTYP_SERVER, + EFLAG_SAME_TRANS, + L"DROP_ROUTE", + EventTag_SchemaLessDDL, + NULL, + 4, + EGROUP_DDL_ROUTE, + 0 + }, + + //----------------------------------------------- + // CREATE BINDING Event Schema + //----------------------------------------------- + { ETYP_ON_CREATEBINDING, + x_eet_Create_Binding, + EOBJTYP_DATABASE | EOBJTYP_SERVER, + EFLAG_SAME_TRANS, + L"CREATE_REMOTE_SERVICE_BINDING", + EventTag_SchemaLessDDL, + NULL, + 4, + EGROUP_DDL_BINDING, + 0 + }, + + //----------------------------------------------- + // ALTER BINDING Event Schema + //----------------------------------------------- + { ETYP_ON_ALTERBINDING, + x_eet_Alter_Binding, + EOBJTYP_DATABASE | EOBJTYP_SERVER, + EFLAG_SAME_TRANS, + L"ALTER_REMOTE_SERVICE_BINDING", + EventTag_SchemaLessDDL, + NULL, + 4, + EGROUP_DDL_BINDING, + 0 + }, + + //----------------------------------------------- + // DROP BINDING Event Schema + //----------------------------------------------- + { ETYP_ON_DROPBINDING, + x_eet_Drop_Binding, + EOBJTYP_DATABASE | EOBJTYP_SERVER, + EFLAG_SAME_TRANS, + L"DROP_REMOTE_SERVICE_BINDING", + EventTag_SchemaLessDDL, + NULL, + 4, + EGROUP_DDL_BINDING, + 0 + }, + + //----------------------------------------------- + // CREATE BROKER PRIORITY Event Schema + //----------------------------------------------- + { ETYP_ON_CREATEPRIORITY, + x_eet_Create_Priority, + EOBJTYP_DATABASE | EOBJTYP_SERVER, + EFLAG_SAME_TRANS, + L"CREATE_BROKER_PRIORITY", + EventTag_SchemaLessDDL, + NULL, + 4, + EGROUP_DDL_PRIORITY, + 0 + }, + + //----------------------------------------------- + // ALTER BROKER PRIORITY Event Schema + //----------------------------------------------- + { ETYP_ON_ALTERPRIORITY, + x_eet_Alter_Priority, + EOBJTYP_DATABASE | EOBJTYP_SERVER, + EFLAG_SAME_TRANS, + L"ALTER_BROKER_PRIORITY", + EventTag_SchemaLessDDL, + NULL, + 4, + EGROUP_DDL_PRIORITY, + 0 + }, + + //----------------------------------------------- + // DROP BROKER PRIORITY Event Schema + //----------------------------------------------- + { ETYP_ON_DROPPRIORITY, + x_eet_Drop_Priority, + EOBJTYP_DATABASE | EOBJTYP_SERVER, + EFLAG_SAME_TRANS, + L"DROP_BROKER_PRIORITY", + EventTag_SchemaLessDDL, + NULL, + 4, + EGROUP_DDL_PRIORITY, + 0 + }, + + //*********************************************************************** + // END: Service Broker Events + // + //*********************************************************************** + + //*********************************************************************** + // START: Grant Deny Revoke Events + // + //*********************************************************************** + + //----------------------------------------------- + // GRANT_SERVER Event Schema + //----------------------------------------------- + { ETYP_ON_GRANT_SERVER, + x_eet_Grant_Server, + EOBJTYP_SERVER, + EFLAG_SAME_TRANS, + L"GRANT_SERVER", + EventTag_GDR, + NULL, + 7, + EGROUP_DDL_GDR_SERVER, + 0 + }, + + //----------------------------------------------- + // DENY_SERVER Event Schema + //----------------------------------------------- + { ETYP_ON_DENY_SERVER, + x_eet_Deny_Server, + EOBJTYP_SERVER, + EFLAG_SAME_TRANS, + L"DENY_SERVER", + EventTag_GDR, + NULL, + 7, + EGROUP_DDL_GDR_SERVER, + 0 + }, + + //----------------------------------------------- + // REVOKE_SERVER Event Schema + //----------------------------------------------- + { ETYP_ON_REVOKE_SERVER, + x_eet_Revoke_Server, + EOBJTYP_SERVER, + EFLAG_SAME_TRANS, + L"REVOKE_SERVER", + EventTag_GDR, + NULL, + 7, + EGROUP_DDL_GDR_SERVER, + 0 + }, + + + //----------------------------------------------- + // GRANT_DATABASE Event Schema + //----------------------------------------------- + { ETYP_ON_GRANT_DATABASE, + x_eet_Grant_Database, + EOBJTYP_DATABASE | EOBJTYP_SERVER, + EFLAG_SAME_TRANS, + L"GRANT_DATABASE", + EventTag_GDRDatabase, + NULL, + 11, + EGROUP_DDL_GDR_DATABASE, + 0 + }, + + //----------------------------------------------- + // DENY_DATABASE Event Schema + //----------------------------------------------- + { ETYP_ON_DENY_DATABASE, + x_eet_Deny_Database, + EOBJTYP_DATABASE | EOBJTYP_SERVER, + EFLAG_SAME_TRANS, + L"DENY_DATABASE", + EventTag_GDRDatabase, + NULL, + 11, + EGROUP_DDL_GDR_DATABASE, + 0 + }, + + //----------------------------------------------- + // REVOKE_DATABASE Event Schema + //----------------------------------------------- + { ETYP_ON_REVOKE_DATABASE, + x_eet_Revoke_Database, + EOBJTYP_DATABASE | EOBJTYP_SERVER, + EFLAG_SAME_TRANS, + L"REVOKE_DATABASE", + EventTag_GDRDatabase, + NULL, + 11, + EGROUP_DDL_GDR_DATABASE, + 0 + }, + + + //*********************************************************************** + // END: Grant Deny Revoke Events + // + //*********************************************************************** + + //----------------------------------------------- + // CREATE XML SCHEMA COLLECTION Event Schema + //----------------------------------------------- + { ETYP_ON_CREATE_XML_SCHEMA_COLLECTION, + x_eet_Create_XmlSchemaCollection, + EOBJTYP_DATABASE | EOBJTYP_SERVER, + EFLAG_SAME_TRANS, + L"CREATE_XML_SCHEMA_COLLECTION", + EventTag_SchemaDDL, + NULL, + 5, + EGROUP_DDL_XML_SCHEMA_COLLECTION, + 0 + }, + + //----------------------------------------------- + // ALTER XMLSCHEMA Event Schema + //----------------------------------------------- + { ETYP_ON_ALTER_XML_SCHEMA_COLLECTION, + x_eet_Alter_XmlSchemaCollection, + EOBJTYP_DATABASE | EOBJTYP_SERVER, + EFLAG_SAME_TRANS, + L"ALTER_XML_SCHEMA_COLLECTION", + EventTag_SchemaDDL, + NULL, + 5, + EGROUP_DDL_XML_SCHEMA_COLLECTION, + 0 + }, + + //----------------------------------------------- + // DROP XMLSCHEMA Event Schema + //----------------------------------------------- + { ETYP_ON_DROP_XML_SCHEMA_COLLECTION, + x_eet_Drop_XmlSchemaCollection, + EOBJTYP_DATABASE | EOBJTYP_SERVER, + EFLAG_SAME_TRANS, + L"DROP_XML_SCHEMA_COLLECTION", + EventTag_SchemaDDL, + NULL, + 5, + EGROUP_DDL_XML_SCHEMA_COLLECTION, + 0 + }, + + + //----------------------------------------------- + // CREATE CERTIFICATE Event Schema + //----------------------------------------------- + { ETYP_ON_CREATECERT, + x_eet_Create_Cert, + EOBJTYP_DATABASE | EOBJTYP_SERVER, + EFLAG_SAME_TRANS, + L"CREATE_CERTIFICATE", + EventTag_ObjectOwnerKeyEvent | EventTag_CertificatePath | EventTag_PrivateKeyPath | EventTag_CertificateSubject | EventTag_DatabaseEvent, + NULL, + BitCount64(EventTag_ObjectOwnerKeyEvent | EventTag_CertificatePath | EventTag_PrivateKeyPath | EventTag_CertificateSubject | EventTag_DatabaseEvent), + EGROUP_DDL_CERTIFICATE, + 0 + }, + + //----------------------------------------------- + // ALTER CERTIFICATE Event Schema + //----------------------------------------------- + { ETYP_ON_ALTERCERT, + x_eet_Alter_Cert, + EOBJTYP_DATABASE | EOBJTYP_SERVER, + EFLAG_SAME_TRANS, + L"ALTER_CERTIFICATE", + EventTag_ObjectOwnerKeyEvent | EventTag_DatabaseEvent, + NULL, + BitCount64(EventTag_ObjectOwnerKeyEvent | EventTag_DatabaseEvent), + EGROUP_DDL_CERTIFICATE, + 0 + }, + + //----------------------------------------------- + // DROP CERTIFICATE Event Schema + //----------------------------------------------- + { ETYP_ON_DROPCERT, + x_eet_Drop_Cert, + EOBJTYP_DATABASE | EOBJTYP_SERVER, + EFLAG_SAME_TRANS, + L"DROP_CERTIFICATE", + EventTag_ObjectOwnerEvent | EventTag_DatabaseEvent, + NULL, + BitCount64(EventTag_ObjectOwnerEvent | EventTag_DatabaseEvent), + EGROUP_DDL_CERTIFICATE, + 0 + }, + + //----------------------------------------------- + // CREATE SYMMETRIC KEY Event Schema + //----------------------------------------------- + { ETYP_ON_CREATEOBFUSKEY, + x_eet_Create_ObfusKey, + EOBJTYP_DATABASE | EOBJTYP_SERVER, + EFLAG_SAME_TRANS, + L"CREATE_SYMMETRIC_KEY", + EventTag_ObjectOwnerEvent | EventTag_DatabaseEvent, + NULL, + BitCount64(EventTag_ObjectOwnerEvent | EventTag_DatabaseEvent), + EGROUP_DDL_OBFUSKEY, + 0 + }, + + //----------------------------------------------- + // ALTER SYMMETRIC KEY Event Schema + //----------------------------------------------- + { ETYP_ON_ALTEROBFUSKEY, + x_eet_Alter_ObfusKey, + EOBJTYP_DATABASE | EOBJTYP_SERVER, + EFLAG_SAME_TRANS, + L"ALTER_SYMMETRIC_KEY", + EventTag_ObjectOwnerEvent | EventTag_DatabaseEvent, + NULL, + BitCount64(EventTag_ObjectOwnerEvent | EventTag_DatabaseEvent), + EGROUP_DDL_OBFUSKEY, + 0 + }, + + //----------------------------------------------- + // DROP SYMMETRIC KEY Event Schema + //----------------------------------------------- + { ETYP_ON_DROPOBFUSKEY, + x_eet_Drop_ObfusKey, + EOBJTYP_DATABASE | EOBJTYP_SERVER, + EFLAG_SAME_TRANS, + L"DROP_SYMMETRIC_KEY", + EventTag_ObjectOwnerEvent | EventTag_DatabaseEvent, + NULL, + BitCount64(EventTag_ObjectOwnerEvent | EventTag_DatabaseEvent), + EGROUP_DDL_OBFUSKEY, + 0 + }, + + //----------------------------------------------- + // CREATE ASYMMETRIC KEY Event Schema + //----------------------------------------------- + { ETYP_ON_CREATEASYMKEY, + x_eet_Create_AsymKey, + EOBJTYP_DATABASE | EOBJTYP_SERVER, + EFLAG_SAME_TRANS, + L"CREATE_ASYMMETRIC_KEY", + EventTag_ObjectOwnerEvent | EventTag_DatabaseEvent | EventTag_KeyPath, + NULL, + BitCount64(EventTag_ObjectOwnerEvent | EventTag_DatabaseEvent | EventTag_KeyPath), + EGROUP_DDL_ASYMKEY, + 0 + }, + + //----------------------------------------------- + // ALTER ASYMMETRIC KEY Event Schema + //----------------------------------------------- + { ETYP_ON_ALTERASYMKEY, + x_eet_Alter_AsymKey, + EOBJTYP_DATABASE | EOBJTYP_SERVER, + EFLAG_SAME_TRANS, + L"ALTER_ASYMMETRIC_KEY", + EventTag_ObjectOwnerEvent | EventTag_DatabaseEvent, + NULL, + BitCount64(EventTag_ObjectOwnerEvent | EventTag_DatabaseEvent), + EGROUP_DDL_ASYMKEY, + 0 + }, + + //----------------------------------------------- + // DROP ASYMMETRIC KEY Event Schema + //----------------------------------------------- + { ETYP_ON_DROPASYMKEY, + x_eet_Drop_AsymKey, + EOBJTYP_DATABASE | EOBJTYP_SERVER, + EFLAG_SAME_TRANS, + L"DROP_ASYMMETRIC_KEY", + EventTag_ObjectOwnerEvent | EventTag_DatabaseEvent, + NULL, + BitCount64(EventTag_ObjectOwnerEvent | EventTag_DatabaseEvent), + EGROUP_DDL_ASYMKEY, + 0 + }, + + //----------------------------------------------- + // ALTER SERVICE MASTER KEY Event Schema + //----------------------------------------------- + { ETYP_ON_ALTERSRVMASTERKEY, + x_eet_Alter_SrvMasterKey, + EOBJTYP_SERVER, + EFLAG_SAME_TRANS, + L"ALTER_SERVICE_MASTER_KEY", + EventTag_ObjectType | EventTag_TSQLCommand, + NULL, + BitCount64(EventTag_ObjectType | EventTag_TSQLCommand), + EGROUP_DDL_SRVMASTERKEY, + 0 + }, + + //----------------------------------------------- + // CREATE MASTER KEY Event Schema + //----------------------------------------------- + { ETYP_ON_CREATEDBMASTERKEY, + x_eet_Create_DbMasterKey, + EOBJTYP_DATABASE | EOBJTYP_SERVER, + EFLAG_SAME_TRANS, + L"CREATE_MASTER_KEY", + EventTag_DatabaseEvent | EventTag_ObjectType, + NULL, + BitCount64(EventTag_DatabaseEvent | EventTag_ObjectType), + EGROUP_DDL_DBMASTERKEY, + 0 + }, + + //----------------------------------------------- + // ALTER MASTER KEY Event Schema + //----------------------------------------------- + { ETYP_ON_ALTERDBMASTERKEY, + x_eet_Alter_DbMasterKey, + EOBJTYP_DATABASE | EOBJTYP_SERVER, + EFLAG_SAME_TRANS, + L"ALTER_MASTER_KEY", + EventTag_DatabaseEvent | EventTag_ObjectType, + NULL, + BitCount64(EventTag_DatabaseEvent | EventTag_ObjectType), + EGROUP_DDL_DBMASTERKEY, + 0 + }, + + //----------------------------------------------- + // DROP MASTER KEY Event Schema + //----------------------------------------------- + { ETYP_ON_DROPDBMASTERKEY, + x_eet_Drop_DbMasterKey, + EOBJTYP_DATABASE | EOBJTYP_SERVER, + EFLAG_SAME_TRANS, + L"DROP_MASTER_KEY", + EventTag_DatabaseEvent | EventTag_ObjectType, + NULL, + BitCount64(EventTag_DatabaseEvent | EventTag_ObjectType), + EGROUP_DDL_DBMASTERKEY, + 0 + }, + + //----------------------------------------------- + // CREATE DEK Event Schema + //----------------------------------------------- + { ETYP_ON_CREATEDEK, + x_eet_Create_DEK, + EOBJTYP_DATABASE | EOBJTYP_SERVER, + EFLAG_NEW_TRANS, + L"CREATE_DATABASE_ENCRYPTION_KEY", + EventTag_DatabaseEvent | EventTag_ObjectType, + NULL, + BitCount64(EventTag_DatabaseEvent | EventTag_ObjectType), + EGROUP_DDL_DEK, + 0 + }, + + //----------------------------------------------- + // ALTER DEK Event Schema + //----------------------------------------------- + { ETYP_ON_ALTERDEK, + x_eet_Alter_DEK, + EOBJTYP_DATABASE | EOBJTYP_SERVER, + EFLAG_NEW_TRANS, + L"ALTER_DATABASE_ENCRYPTION_KEY", + EventTag_DatabaseEvent | EventTag_ObjectType, + NULL, + BitCount64(EventTag_DatabaseEvent | EventTag_ObjectType), + EGROUP_DDL_DEK, + 0 + }, + + //----------------------------------------------- + // DROP DEK Event Schema + //----------------------------------------------- + { ETYP_ON_DROPDEK, + x_eet_Drop_DEK, + EOBJTYP_DATABASE | EOBJTYP_SERVER, + EFLAG_NEW_TRANS, + L"DROP_DATABASE_ENCRYPTION_KEY", + EventTag_DatabaseEvent | EventTag_ObjectType, + NULL, + BitCount64(EventTag_DatabaseEvent | EventTag_ObjectType), + EGROUP_DDL_DEK, + 0 + }, + + //----------------------------------------------- + // ADD SIGNATURE on Schema Object Event Schema + //----------------------------------------------- + { ETYP_ON_ADDSIGN_SCH_OBJ, + x_eet_Add_Signature_SchObj, + EOBJTYP_DATABASE | EOBJTYP_SERVER, + EFLAG_SAME_TRANS, + L"ADD_SIGNATURE_SCHEMA_OBJECT", + EventTag_DatabaseEvent | EventTag_ObjectEvent |EventTag_SchemaName | EventTag_CounterSignature, + NULL, + BitCount64(EventTag_DatabaseEvent | EventTag_ObjectEvent |EventTag_SchemaName | EventTag_CounterSignature), + EGROUP_DDL_CRYPTOSIGN, + 0 + }, + + //----------------------------------------------- + // DROP SIGNATURE on Schema Object Event Schema + //----------------------------------------------- + { ETYP_ON_DROPSIGN_SCH_OBJ, + x_eet_Drop_Signature_SchObj, + EOBJTYP_DATABASE | EOBJTYP_SERVER, + EFLAG_SAME_TRANS, + L"DROP_SIGNATURE_SCHEMA_OBJECT", + EventTag_DatabaseEvent | EventTag_ObjectEvent |EventTag_SchemaName | EventTag_CounterSignature, + NULL, + BitCount64(EventTag_DatabaseEvent | EventTag_ObjectEvent |EventTag_SchemaName | EventTag_CounterSignature), + EGROUP_DDL_CRYPTOSIGN, + 0 + }, + + //----------------------------------------------- + // ADD SIGNATURE Event Schema + //----------------------------------------------- + { ETYP_ON_ADDSIGN, + x_eet_Add_Signature, + EOBJTYP_DATABASE | EOBJTYP_SERVER, + EFLAG_SAME_TRANS, + L"ADD_SIGNATURE", + EventTag_DatabaseEvent | EventTag_ObjectEvent | EventTag_CounterSignature, + NULL, + BitCount64(EventTag_DatabaseEvent | EventTag_ObjectEvent | EventTag_CounterSignature), + EGROUP_DDL_CRYPTOSIGN, + 0 + }, + + //----------------------------------------------- + // DROP SIGNATURE Event Schema + //----------------------------------------------- + { ETYP_ON_DROPSIGN, + x_eet_Drop_Signature, + EOBJTYP_DATABASE | EOBJTYP_SERVER, + EFLAG_SAME_TRANS, + L"DROP_SIGNATURE", + EventTag_DatabaseEvent | EventTag_ObjectEvent | EventTag_CounterSignature, + NULL, + BitCount64(EventTag_DatabaseEvent | EventTag_ObjectEvent | EventTag_CounterSignature), + EGROUP_DDL_CRYPTOSIGN, + 0 + }, + + //----------------------------------------------- + // CREATE CREDENTIAL Event Schema + //----------------------------------------------- + { ETYP_ON_CREATECREDENTIAL, + x_eet_Create_Credential, + EOBJTYP_SERVER, + EFLAG_SAME_TRANS, + L"CREATE_CREDENTIAL", + EventTag_ServerEvent, + NULL, + BitCount64(EventTag_ServerEvent), + EGROUP_DDL_CREDENTIAL, + 0 + }, + + //----------------------------------------------- + // ALTER CREDENTIAL Event Schema + //----------------------------------------------- + { ETYP_ON_ALTERCREDENTIAL, + x_eet_Alter_Credential, + EOBJTYP_SERVER, + EFLAG_SAME_TRANS, + L"ALTER_CREDENTIAL", + EventTag_ServerEvent, + NULL, + BitCount64(EventTag_ServerEvent), + EGROUP_DDL_CREDENTIAL, + 0 + }, + + //----------------------------------------------- + // DROP CREDENTIAL Event Schema + //----------------------------------------------- + { ETYP_ON_DROPCREDENTIAL, + x_eet_Drop_Credential, + EOBJTYP_SERVER, + EFLAG_SAME_TRANS, + L"DROP_CREDENTIAL", + EventTag_ServerEvent, + NULL, + BitCount64(EventTag_ServerEvent), + EGROUP_DDL_CREDENTIAL, + 0 + }, + + //----------------------------------------------- + // CREATE CRYPTO PROVIDER Event Schema + //----------------------------------------------- + { ETYP_ON_CREATECRYPTOPROV, + x_eet_Create_CryptoProv, + EOBJTYP_SERVER, + EFLAG_SAME_TRANS, + L"CREATE_CRYPTOGRAPHIC_PROVIDER", + EventTag_ServerEvent, + NULL, + BitCount64(EventTag_ServerEvent), + EGROUP_DDL_CRYPTOPROV, + 0 + }, + + //----------------------------------------------- + // ALTER CRYPTO PROVIDER Event Schema + //----------------------------------------------- + { ETYP_ON_ALTERCRYPTOPROV, + x_eet_Alter_CryptoProv, + EOBJTYP_SERVER, + EFLAG_SAME_TRANS, + L"ALTER_CRYPTOGRAPHIC_PROVIDER", + EventTag_ServerEvent, + NULL, + BitCount64(EventTag_ServerEvent), + EGROUP_DDL_CRYPTOPROV, + 0 + }, + + //----------------------------------------------- + // DROP CRYPTO PROVIDER Event Schema + //----------------------------------------------- + { ETYP_ON_DROPCRYPTOPROV, + x_eet_Drop_CryptoProv, + EOBJTYP_SERVER, + EFLAG_SAME_TRANS, + L"DROP_CRYPTOGRAPHIC_PROVIDER", + EventTag_ServerEvent, + NULL, + BitCount64(EventTag_ServerEvent), + EGROUP_DDL_CRYPTOPROV, + 0 + }, + + //----------------------------------------------- + // ALTER AUTHORIZATION Server Event Schema + //----------------------------------------------- + { ETYP_ON_ALTERAUTH_SERVER, + x_eet_Alter_Auth_Server, + EOBJTYP_SERVER, + EFLAG_SAME_TRANS, + L"ALTER_AUTHORIZATION_SERVER", + EventTag_ObjectOwnerEvent | EventTag_TSQLCommand, + NULL, + 4, + EGROUP_DDL_AUTH_SERVER, + 0 + }, + + //----------------------------------------------- + // ALTER AUTHORIZATION Database Event Schema + //----------------------------------------------- + { ETYP_ON_ALTERAUTH_DATABASE, + x_eet_Alter_Auth_Database, + EOBJTYP_DATABASE | EOBJTYP_SERVER, + EFLAG_SAME_TRANS, + L"ALTER_AUTHORIZATION_DATABASE", + EventTag_SchemaDDL | EventTag_OwnerName, + NULL, + 6, + EGROUP_DDL_AUTH_DATABASE, + 0 + }, + + //*********************************************************************** + // START START - PARTITION RELATED - START START + // + //*********************************************************************** + + //----------------------------------------------- + // CREATE PARTITION FUNCTION Event Schema + //----------------------------------------------- + { ETYP_ON_CREATEPRTFUNCTION, + x_eet_Create_Partition_Function, + EOBJTYP_DATABASE | EOBJTYP_SERVER, + EFLAG_SAME_TRANS, + L"CREATE_PARTITION_FUNCTION", + EventTag_SchemaLessDDL, + NULL, + 4, + EGROUP_DDL_PRTFUNCTION, + 0 + }, + + //----------------------------------------------- + // ALTER PARTITION FUNCTION Event Schema + //----------------------------------------------- + { ETYP_ON_ALTERPRTFUNCTION, + x_eet_Alter_Partition_Function, + EOBJTYP_DATABASE | EOBJTYP_SERVER, + EFLAG_SAME_TRANS, + L"ALTER_PARTITION_FUNCTION", + EventTag_SchemaLessDDL, + NULL, + 4, + EGROUP_DDL_PRTFUNCTION, + 0 + }, + + //----------------------------------------------- + // DROP PARTITION FUNCTION Event Schema + //----------------------------------------------- + { ETYP_ON_DROPPRTFUNCTION, + x_eet_Drop_Partition_Function, + EOBJTYP_DATABASE | EOBJTYP_SERVER, + EFLAG_SAME_TRANS, + L"DROP_PARTITION_FUNCTION", + EventTag_SchemaLessDDL, + NULL, + 4, + EGROUP_DDL_PRTFUNCTION, + 0 + }, + + //----------------------------------------------- + // CREATE PARTITION SCHEME Event Schema + //----------------------------------------------- + { ETYP_ON_CREATEPRTSCHEME, + x_eet_Create_Partition_Scheme, + EOBJTYP_DATABASE | EOBJTYP_SERVER, + EFLAG_SAME_TRANS, + L"CREATE_PARTITION_SCHEME", + EventTag_SchemaLessDDL | EventTag_Function, + NULL, + 5, + EGROUP_DDL_PRTSCHEME, + 0 + }, + + //----------------------------------------------- + // ALTER PARTITION SCHEME Event Schema + //----------------------------------------------- + { ETYP_ON_ALTERPRTSCHEME, + x_eet_Alter_Partition_Scheme, + EOBJTYP_DATABASE | EOBJTYP_SERVER, + EFLAG_SAME_TRANS, + L"ALTER_PARTITION_SCHEME", + EventTag_SchemaLessDDL | EventTag_Function, + NULL, + 5, + EGROUP_DDL_PRTSCHEME, + 0 + }, + + //----------------------------------------------- + // DROP PARTITION SCHEME Event Schema + //----------------------------------------------- + { ETYP_ON_DROPPRTSCHEME, + x_eet_Drop_Partition_Scheme, + EOBJTYP_DATABASE | EOBJTYP_SERVER, + EFLAG_SAME_TRANS, + L"DROP_PARTITION_SCHEME", + EventTag_SchemaLessDDL | EventTag_Function, + NULL, + 5, + EGROUP_DDL_PRTSCHEME, + 0 + }, + + //----------------------------------------------- + // CREATE [PRIMARY] XML INDEX Event Schema + //----------------------------------------------- + { ETYP_ON_CREATE_XML_INDEX, + x_eet_Create_XML_Index, + EOBJTYP_DATABASE | EOBJTYP_SERVER, + EFLAG_SAME_TRANS, + L"CREATE_XML_INDEX", + EventTag_SchemaTargetDDL | EventTag_PrimaryXMLIndexName | EventTag_SecondaryXMLIndexType, + NULL, + 9, + EGROUP_DDL_INDEX, + 0 + }, + + //----------------------------------------------- + // SP_UPDATEEXTENDEDPROPERTY Event Schema + //----------------------------------------------- + { ETYP_ON_ALTER_EXTENDED_PROPERTY, + x_eet_Alter_Extended_Property, + EOBJTYP_DATABASE | EOBJTYP_SERVER, + EFLAG_SAME_TRANS, + L"ALTER_EXTENDED_PROPERTY", + EventTag_SPSchemaTargetDDL | EventTag_ExtendedPropertyEvent, + NULL, + 10, + EGROUP_DDL_EXTENDED_PROPERTY, + 0 + }, + //----------------------------------------------- + // ALTER FULLTEXT CATALOG Event Schema + //----------------------------------------------- + { ETYP_ON_ALTER_FULLTEXT_CATALOG, + x_eet_Alter_Fulltext_Catalog, + EOBJTYP_DATABASE | EOBJTYP_SERVER, + EFLAG_SAME_TRANS, + L"ALTER_FULLTEXT_CATALOG", + EventTag_SchemaLessDDL, + NULL, + 4, + EGROUP_DDL_FULLTEXT_CATALOG, + 0 + }, + //----------------------------------------------- + // ALTER FULLTEXT INDEX Event Schema + //----------------------------------------------- + { ETYP_ON_ALTER_FULLTEXT_INDEX, + x_eet_Alter_Fulltext_Index, + EOBJTYP_DATABASE | EOBJTYP_SERVER, + EFLAG_SAME_TRANS, + L"ALTER_FULLTEXT_INDEX", + EventTag_SchemaDDL, + NULL, + 5, + EGROUP_DDL_INDEX, + 0 + }, + //----------------------------------------------- + // SP_CONFIGURE Event Schema + //----------------------------------------------- + { ETYP_ON_ALTER_INSTANCE, + x_eet_Alter_Instance, + EOBJTYP_SERVER, + EFLAG_SAME_TRANS, + L"ALTER_INSTANCE", + EventTag_ExtendedPropertyEvent | EventTag_TSQLCommand | EventTag_Parameters, + NULL, + 4, + EGROUP_DDL_SERVER_LEVEL, + 0 + }, + //----------------------------------------------- + // SP_SERVEROPTION Event Schema + //----------------------------------------------- + { ETYP_ON_ALTER_LINKED_SERVER, + x_eet_Alter_Linked_Server, + EOBJTYP_SERVER, + EFLAG_SAME_TRANS, + L"ALTER_LINKED_SERVER", + EventTag_SPObjectEvent, + NULL, + 4, + EGROUP_DDL_LINKED_SERVER, + 0 + }, + //----------------------------------------------- + // SP_ALTERMESSAGE Event Schema + //----------------------------------------------- + { ETYP_ON_ALTER_MESSAGE, + x_eet_Alter_Message, + EOBJTYP_SERVER, + EFLAG_SAME_TRANS, + L"ALTER_MESSAGE", + EventTag_SPObjectEvent, + NULL, + 4, + EGROUP_DDL_MESSAGE, + 0 + }, + //----------------------------------------------- + // SP_CONTROL_PLAN_GUIDE Event Schema + //----------------------------------------------- + { ETYP_ON_ALTER_PLAN_GUIDE, + x_eet_Alter_Plan_Guide, + EOBJTYP_DATABASE | EOBJTYP_SERVER, + EFLAG_SAME_TRANS, + L"ALTER_PLAN_GUIDE", + EventTag_SPDatabaseEvent | EventTag_ObjectEvent, + NULL, + 5, + EGROUP_DDL_PLAN_GUIDE, + 0 + }, + //----------------------------------------------- + // SP_SERVEROPTION Event Schema + //----------------------------------------------- + { ETYP_ON_ALTER_REMOTE_SERVER, + x_eet_Alter_Remote_Server, + EOBJTYP_SERVER, + EFLAG_SAME_TRANS, + L"ALTER_REMOTE_SERVER", + EventTag_SPObjectEvent, + NULL, + 4, + EGROUP_DDL_REMOTE_SERVER, + 0 + }, + //----------------------------------------------- + // SP_BINDEFAULT Event Schema + //----------------------------------------------- + { ETYP_ON_BIND_DEFAULT, + x_eet_Bind_Default, + EOBJTYP_DATABASE | EOBJTYP_SERVER, + EFLAG_SAME_TRANS, + L"BIND_DEFAULT", + EventTag_SPSchemaDDL, + NULL, + 6, + EGROUP_DDL_DEFAULT, + 0 + }, + //----------------------------------------------- + // SP_BINDRULE Event Schema + //----------------------------------------------- + { ETYP_ON_BIND_RULE, + x_eet_Bind_Rule, + EOBJTYP_DATABASE | EOBJTYP_SERVER, + EFLAG_SAME_TRANS, + L"BIND_RULE", + EventTag_SPSchemaDDL, + NULL, + 6, + EGROUP_DDL_RULE, + 0 + }, + //----------------------------------------------- + // CREATE DEFAULT Event Schema + //----------------------------------------------- + { ETYP_ON_CREATE_DEFAULT, + x_eet_Create_Default, + EOBJTYP_DATABASE | EOBJTYP_SERVER, + EFLAG_SAME_TRANS, + L"CREATE_DEFAULT", + EventTag_SchemaDDL, + NULL, + 5, + EGROUP_DDL_DEFAULT, + 0 + }, + //----------------------------------------------- + // SP_ADDEXTENDEDPROC Event Schema + //----------------------------------------------- + { ETYP_ON_CREATE_EXTENDED_PROCEDURE, + x_eet_Create_Extended_Procedure, + EOBJTYP_SERVER, + EFLAG_SAME_TRANS, + L"CREATE_EXTENDED_PROCEDURE", + EventTag_SPObjectEvent, + NULL, + 4, + EGROUP_DDL_EXTENDED_PROCEDURE, + 0 + }, + //----------------------------------------------- + // SP_ADDEXTENDEDPROPERTY Event Schema + //----------------------------------------------- + { ETYP_ON_CREATE_EXTENDED_PROPERTY, + x_eet_Create_Extended_Property, + EOBJTYP_DATABASE | EOBJTYP_SERVER, + EFLAG_SAME_TRANS, + L"CREATE_EXTENDED_PROPERTY", + EventTag_SPSchemaTargetDDL | EventTag_ExtendedPropertyEvent, + NULL, + 10, + EGROUP_DDL_EXTENDED_PROPERTY, + 0 + }, + //----------------------------------------------- + // CREATE FULLTEXT CATALOG Event Schema + //----------------------------------------------- + { ETYP_ON_CREATE_FULLTEXT_CATALOG, + x_eet_Create_Fulltext_Catalog, + EOBJTYP_DATABASE | EOBJTYP_SERVER, + EFLAG_SAME_TRANS, + L"CREATE_FULLTEXT_CATALOG", + EventTag_SchemaLessDDL, + NULL, + 4, + EGROUP_DDL_FULLTEXT_CATALOG, + 0 + }, + //----------------------------------------------- + // CREATE FULLTEXT INDEX Event Schema + //----------------------------------------------- + { ETYP_ON_CREATE_FULLTEXT_INDEX, + x_eet_Create_Fulltext_Index, + EOBJTYP_DATABASE | EOBJTYP_SERVER, + EFLAG_SAME_TRANS, + L"CREATE_FULLTEXT_INDEX", + EventTag_SchemaDDL, + NULL, + 5, + EGROUP_DDL_INDEX, + 0 + }, + //----------------------------------------------- + // SP_ADDLINKEDSERVER Event Schema + //----------------------------------------------- + { ETYP_ON_CREATE_LINKED_SERVER, + x_eet_Create_Linked_Server, + EOBJTYP_SERVER, + EFLAG_SAME_TRANS, + L"CREATE_LINKED_SERVER", + EventTag_SPObjectEvent, + NULL, + 4, + EGROUP_DDL_LINKED_SERVER, + 0 + }, + //----------------------------------------------- + // SP_ADDLINKEDSRVLOGIN Event Schema + //----------------------------------------------- + { ETYP_ON_CREATE_LINKED_SERVER_LOGIN, + x_eet_Create_Linked_Server_Login, + EOBJTYP_SERVER, + EFLAG_SAME_TRANS, + L"CREATE_LINKED_SERVER_LOGIN", + EventTag_SPObjectTargetEvent, + NULL, + 6, + EGROUP_DDL_LINKED_SERVER_LOGIN, + 0 + }, + //----------------------------------------------- + // SP_ADDMESSAGE Event Schema + //----------------------------------------------- + { ETYP_ON_CREATE_MESSAGE, + x_eet_Create_Message, + EOBJTYP_SERVER, + EFLAG_SAME_TRANS, + L"CREATE_MESSAGE", + EventTag_SPObjectEvent, + NULL, + 4, + EGROUP_DDL_MESSAGE, + 0 + }, + //----------------------------------------------- + // SP_CREATE_PLAN_GUIDE Event Schema + //----------------------------------------------- + { ETYP_ON_CREATE_PLAN_GUIDE, + x_eet_Create_Plan_Guide, + EOBJTYP_DATABASE | EOBJTYP_SERVER, + EFLAG_SAME_TRANS, + L"CREATE_PLAN_GUIDE", + EventTag_SPDatabaseEvent | EventTag_ObjectEvent, + NULL, + 5, + EGROUP_DDL_PLAN_GUIDE, + 0 + }, + //----------------------------------------------- + // SP_ADDSERVER Event Schema + //----------------------------------------------- + { ETYP_ON_CREATE_REMOTE_SERVER, + x_eet_Create_Remote_Server, + EOBJTYP_SERVER, + EFLAG_SAME_TRANS, + L"CREATE_REMOTE_SERVER", + EventTag_SPObjectEvent, + NULL, + 4, + EGROUP_DDL_REMOTE_SERVER, + 0 + }, + //----------------------------------------------- + // CREATE RULE Event Schema + //----------------------------------------------- + { ETYP_ON_CREATE_RULE, + x_eet_Create_Rule, + EOBJTYP_DATABASE | EOBJTYP_SERVER, + EFLAG_SAME_TRANS, + L"CREATE_RULE", + EventTag_SchemaDDL, + NULL, + 5, + EGROUP_DDL_RULE, + 0 + }, + //----------------------------------------------- + // DROP DEFAULT Event Schema + //----------------------------------------------- + { ETYP_ON_DROP_DEFAULT, + x_eet_Drop_Default, + EOBJTYP_DATABASE | EOBJTYP_SERVER, + EFLAG_SAME_TRANS, + L"DROP_DEFAULT", + EventTag_SchemaDDL, + NULL, + 5, + EGROUP_DDL_DEFAULT, + 0 + }, + //----------------------------------------------- + // SP_DROPEXTENDEDPROC Event Schema + //----------------------------------------------- + { ETYP_ON_DROP_EXTENDED_PROCEDURE, + x_eet_Drop_Extended_Procedure, + EOBJTYP_SERVER, + EFLAG_SAME_TRANS, + L"DROP_EXTENDED_PROCEDURE", + EventTag_SPObjectEvent, + NULL, + 4, + EGROUP_DDL_EXTENDED_PROCEDURE, + 0 + }, + //----------------------------------------------- + // SP_DROPEXTENDEDPROPERTY Event Schema + //----------------------------------------------- + { ETYP_ON_DROP_EXTENDED_PROPERTY, + x_eet_Drop_Extended_Property, + EOBJTYP_DATABASE | EOBJTYP_SERVER, + EFLAG_SAME_TRANS, + L"DROP_EXTENDED_PROPERTY", + EventTag_SPSchemaTargetDDL | EventTag_PropertyName, + NULL, + 9, + EGROUP_DDL_EXTENDED_PROPERTY, + 0 + }, + //----------------------------------------------- + // DROP FULLTEXT CATALOG Event Schema + //----------------------------------------------- + { ETYP_ON_DROP_FULLTEXT_CATALOG, + x_eet_Drop_Fulltext_Catalog, + EOBJTYP_DATABASE | EOBJTYP_SERVER, + EFLAG_SAME_TRANS, + L"DROP_FULLTEXT_CATALOG", + EventTag_SchemaLessDDL, + NULL, + 4, + EGROUP_DDL_FULLTEXT_CATALOG, + 0 + }, + //----------------------------------------------- + // DROP FULLTEXT INDEX Event Schema + //----------------------------------------------- + { ETYP_ON_DROP_FULLTEXT_INDEX, + x_eet_Drop_Fulltext_Index, + EOBJTYP_DATABASE | EOBJTYP_SERVER, + EFLAG_SAME_TRANS, + L"DROP_FULLTEXT_INDEX", + EventTag_SchemaDDL, + NULL, + 5, + EGROUP_DDL_INDEX, + 0 + }, + //----------------------------------------------- + // SP_DROPSERVER Event Schema + //----------------------------------------------- + { ETYP_ON_DROP_LINKED_SERVER, + x_eet_Drop_Linked_Server, + EOBJTYP_SERVER, + EFLAG_SAME_TRANS, + L"DROP_LINKED_SERVER", + EventTag_SPObjectEvent, + NULL, + 4, + EGROUP_DDL_LINKED_SERVER, + 0 + }, + //----------------------------------------------- + // SP_DROPLINKEDSRVLOGIN Event Schema + //----------------------------------------------- + { ETYP_ON_DROP_LINKED_SERVER_LOGIN, + x_eet_Drop_Linked_Server_Login, + EOBJTYP_SERVER, + EFLAG_SAME_TRANS, + L"DROP_LINKED_SERVER_LOGIN", + EventTag_SPObjectTargetEvent, + NULL, + 6, + EGROUP_DDL_LINKED_SERVER_LOGIN, + 0 + }, + //----------------------------------------------- + // SP_DROPMESSAGE Event Schema + //----------------------------------------------- + { ETYP_ON_DROP_MESSAGE, + x_eet_Drop_Message, + EOBJTYP_SERVER, + EFLAG_SAME_TRANS, + L"DROP_MESSAGE", + EventTag_SPObjectEvent, + NULL, + 4, + EGROUP_DDL_MESSAGE, + 0 + }, + //----------------------------------------------- + // SP_CONTROL_PLAN_GUIDE Event Schema + //----------------------------------------------- + { ETYP_ON_DROP_PLAN_GUIDE, + x_eet_Drop_Plan_Guide, + EOBJTYP_DATABASE | EOBJTYP_SERVER, + EFLAG_SAME_TRANS, + L"DROP_PLAN_GUIDE", + EventTag_SPDatabaseEvent | EventTag_ObjectEvent, + NULL, + 5, + EGROUP_DDL_PLAN_GUIDE, + 0 + }, + //----------------------------------------------- + // SP_DROPSERVER Event Schema + //----------------------------------------------- + { ETYP_ON_DROP_REMOTE_SERVER, + x_eet_Drop_Remote_Server, + EOBJTYP_SERVER, + EFLAG_SAME_TRANS, + L"DROP_REMOTE_SERVER", + EventTag_SPObjectEvent, + NULL, + 4, + EGROUP_DDL_REMOTE_SERVER, + 0 + }, + //----------------------------------------------- + // DROP RULE Event Schema + //----------------------------------------------- + { ETYP_ON_DROP_RULE, + x_eet_Drop_Rule, + EOBJTYP_DATABASE | EOBJTYP_SERVER, + EFLAG_SAME_TRANS, + L"DROP_RULE", + EventTag_SchemaDDL, + NULL, + 5, + EGROUP_DDL_RULE, + 0 + }, + + //----------------------------------------------- + // SP_RENAME Event Schema + //----------------------------------------------- + { ETYP_ON_RENAME, + x_eet_Rename, + EOBJTYP_DATABASE | EOBJTYP_SERVER, + EFLAG_SAME_TRANS, + L"RENAME", + EventTag_SPSchemaTargetDDL | EventTag_NewObjectName, + NULL, + 9, + EGROUP_DDL_DATABASE_LEVEL, + 0 + }, + //----------------------------------------------- + // SP_UNBINDEFAULT Event Schema + //----------------------------------------------- + { ETYP_ON_UNBIND_DEFAULT, + x_eet_Unbind_Default, + EOBJTYP_DATABASE | EOBJTYP_SERVER, + EFLAG_SAME_TRANS, + L"UNBIND_DEFAULT", + EventTag_SPSchemaDDL, + NULL, + 6, + EGROUP_DDL_DEFAULT, + 0 + }, + //----------------------------------------------- + // SP_UNBINDRULE Event Schema + //----------------------------------------------- + { ETYP_ON_UNBIND_RULE, + x_eet_Unbind_Rule, + EOBJTYP_DATABASE | EOBJTYP_SERVER, + EFLAG_SAME_TRANS, + L"UNBIND_RULE", + EventTag_SPSchemaDDL, + NULL, + 6, + EGROUP_DDL_RULE, + 0 + }, + //*********************************************************************** + // END END - PARTITION RELATED - END END + // + //*********************************************************************** + + //----------------------------------------------- + // CREATE FULLTEXT STOPLIST Event Schema + //----------------------------------------------- + { ETYP_ON_CREATE_FULLTEXT_STOPLIST, + x_eet_Create_Fulltext_StopList, + EOBJTYP_DATABASE | EOBJTYP_SERVER, + EFLAG_SAME_TRANS, + L"CREATE_FULLTEXT_STOPLIST", + EventTag_SchemaLessDDL, + NULL, + 4, + EGROUP_DDL_FULLTEXT_STOPLIST, + 0 + }, + //----------------------------------------------- + // ALTER FULLTEXT STOPLIST Event Schema + //----------------------------------------------- + { ETYP_ON_ALTER_FULLTEXT_STOPLIST, + x_eet_Alter_Fulltext_StopList, + EOBJTYP_DATABASE | EOBJTYP_SERVER, + EFLAG_SAME_TRANS, + L"ALTER_FULLTEXT_STOPLIST", + EventTag_SchemaLessDDL, + NULL, + 4, + EGROUP_DDL_FULLTEXT_STOPLIST, + 0 + }, + //----------------------------------------------- + // DROP FULLTEXT STOPLIST Event Schema + //----------------------------------------------- + { ETYP_ON_DROP_FULLTEXT_STOPLIST, + x_eet_Drop_Fulltext_StopList, + EOBJTYP_DATABASE | EOBJTYP_SERVER, + EFLAG_SAME_TRANS, + L"DROP_FULLTEXT_STOPLIST", + EventTag_SchemaLessDDL, + NULL, + 4, + EGROUP_DDL_FULLTEXT_STOPLIST, + 0 + }, + + //----------------------------------------------- + // CREATE PROPERTY LIST Event Schema + //----------------------------------------------- + { ETYP_ON_CREATE_PROPERTYLIST, + x_eet_Create_PropertyList, + EOBJTYP_DATABASE | EOBJTYP_SERVER, + EFLAG_SAME_TRANS, + L"CREATE_SEARCH_PROPERTY_LIST", + EventTag_SchemaLessDDL, + NULL, + 4, + EGROUP_DDL_PROPERTYLIST, + 0 + }, + //----------------------------------------------- + // ALTER FULLTEXT PROPERTY LIST Event Schema + //----------------------------------------------- + { ETYP_ON_ALTER_PROPERTYLIST, + x_eet_Alter_PropertyList, + EOBJTYP_DATABASE | EOBJTYP_SERVER, + EFLAG_SAME_TRANS, + L"ALTER_SEARCH_PROPERTY_LIST", + EventTag_SchemaLessDDL, + NULL, + 4, + EGROUP_DDL_PROPERTYLIST, + 0 + }, + //----------------------------------------------- + // DROP FULLTEXT PROPERTY LIST Event Schema + //----------------------------------------------- + { ETYP_ON_DROP_PROPERTYLIST, + x_eet_Drop_PropertyList, + EOBJTYP_DATABASE | EOBJTYP_SERVER, + EFLAG_SAME_TRANS, + L"DROP_SEARCH_PROPERTY_LIST", + EventTag_SchemaLessDDL, + NULL, + 4, + EGROUP_DDL_PROPERTYLIST, + 0 + }, + + //----------------------------------------------- + // CREATE_EVENT_SESSION Event Schema + //----------------------------------------------- + { ETYP_ON_CREATE_EVENT_SESSION, + x_eet_Create_Event_Session, + EOBJTYP_SERVER, + EFLAG_SAME_TRANS, + L"CREATE_EVENT_SESSION", + EventTag_ServerEvent, + NULL, + BitCount64(EventTag_ServerEvent), + EGROUP_DDL_EVENT_SESSION, + 0 + }, + + //----------------------------------------------- + // ALTER_EVENT_SESSION Event Schema + //----------------------------------------------- + { ETYP_ON_ALTER_EVENT_SESSION, + x_eet_Alter_Event_Session, + EOBJTYP_SERVER, + EFLAG_SAME_TRANS, + L"ALTER_EVENT_SESSION", + EventTag_ServerEvent, + NULL, + BitCount64(EventTag_ServerEvent), + EGROUP_DDL_EVENT_SESSION, + 0 + }, + + //----------------------------------------------- + // DROP_EVENT_SESSION Event Schema + //----------------------------------------------- + { ETYP_ON_DROP_EVENT_SESSION, + x_eet_Drop_Event_Session, + EOBJTYP_SERVER, + EFLAG_SAME_TRANS, + L"DROP_EVENT_SESSION", + EventTag_ServerEvent, + NULL, + BitCount64(EventTag_ServerEvent), + EGROUP_DDL_EVENT_SESSION, + 0 + }, + + //----------------------------------------------- + // CREATE RESOURCE POOL Event Schema + //----------------------------------------------- + { ETYP_ON_CREATE_RES_POOL, + x_eet_Create_Resource_Pool, + EOBJTYP_SERVER, + EFLAG_SAME_TRANS, + L"CREATE_RESOURCE_POOL", + EventTag_ServerEvent, + NULL, + BitCount64(EventTag_ServerEvent), + EGROUP_DDL_RESOURCE_POOL, + 0 + }, + + //----------------------------------------------- + // ALTER RESOURCE POOL Event Schema + //----------------------------------------------- + { ETYP_ON_ALTER_RES_POOL, + x_eet_Alter_Resource_Pool, + EOBJTYP_SERVER, + EFLAG_SAME_TRANS, + L"ALTER_RESOURCE_POOL", + EventTag_ServerEvent, + NULL, + BitCount64(EventTag_ServerEvent), + EGROUP_DDL_RESOURCE_POOL, + 0 + }, + + //----------------------------------------------- + // DROP RESOURCE POOL Event Schema + //----------------------------------------------- + { ETYP_ON_DROP_RES_POOL, + x_eet_Drop_Resource_Pool, + EOBJTYP_SERVER, + EFLAG_SAME_TRANS, + L"DROP_RESOURCE_POOL", + EventTag_ServerEvent, + NULL, + BitCount64(EventTag_ServerEvent), + EGROUP_DDL_RESOURCE_POOL, + 0 + }, + + //----------------------------------------------- + // CREATE WORKLOAD GROUP Event Schema + //----------------------------------------------- + { ETYP_ON_CREATE_RES_GROUP, + x_eet_Create_Resource_Group, + EOBJTYP_SERVER, + EFLAG_SAME_TRANS, + L"CREATE_WORKLOAD_GROUP", + EventTag_ServerEvent, + NULL, + BitCount64(EventTag_ServerEvent), + EGROUP_DDL_RESOURCE_GROUP, + 0 + }, + + //----------------------------------------------- + // ALTER WORKLOAD GROUP Event Schema + //----------------------------------------------- + { ETYP_ON_ALTER_RES_GROUP, + x_eet_Alter_Resource_Group, + EOBJTYP_SERVER, + EFLAG_SAME_TRANS, + L"ALTER_WORKLOAD_GROUP", + EventTag_ServerEvent, + NULL, + BitCount64(EventTag_ServerEvent), + EGROUP_DDL_RESOURCE_GROUP, + 0 + }, + + //----------------------------------------------- + // DROP WORKLOAD GROUP Event Schema + //----------------------------------------------- + { ETYP_ON_DROP_RES_GROUP, + x_eet_Drop_Resource_Group, + EOBJTYP_SERVER, + EFLAG_SAME_TRANS, + L"DROP_WORKLOAD_GROUP", + EventTag_ServerEvent, + NULL, + BitCount64(EventTag_ServerEvent), + EGROUP_DDL_RESOURCE_GROUP, + 0 + }, + + //----------------------------------------------- + // ALTER RESOURCE GOVERNOR CONFIGURATION Event Schema + //----------------------------------------------- + { ETYP_ON_ALTER_RES_GOVERNOR_CONFIG, + x_eet_Alter_Resource_Governor_Config, + EOBJTYP_SERVER, + EFLAG_SAME_TRANS, + L"ALTER_RESOURCE_GOVERNOR_CONFIG", + EventTag_ServerEvent, + NULL, + BitCount64(EventTag_ServerEvent), + EGROUP_DDL_RESOURCE_GOVERNOR, + 0 + }, + + + //----------------------------------------------- + // CREATE SPATIAL INDEX Event Schema + //----------------------------------------------- + { ETYP_ON_CREATE_SPATIAL_INDEX, + x_eet_Create_Spatial_Index, + EOBJTYP_DATABASE | EOBJTYP_SERVER, + EFLAG_SAME_TRANS, + L"CREATE_SPATIAL_INDEX", + EventTag_SchemaTargetDDL, + NULL, + BitCount64( EventTag_SchemaTargetDDL), + EGROUP_DDL_INDEX, + 0 + }, + + // Audit Related Events + // + //----------------------------------------------- + // CREATE SERVER AUDIT Event Schema + //----------------------------------------------- + { ETYP_ON_CREATE_SERVER_AUDIT, + x_eet_Create_ServerAudit, + EOBJTYP_SERVER, + EFLAG_SAME_TRANS, + L"CREATE_SERVER_AUDIT", + EventTag_ServerEvent, + NULL, + BitCount64(EventTag_ServerEvent), + EGROUP_DDL_SERVERAUDIT, + 0 + }, + + //----------------------------------------------- + // ALTER SERVER AUDIT Event Schema + //----------------------------------------------- + { ETYP_ON_ALTER_SERVER_AUDIT, + x_eet_Alter_ServerAudit, + EOBJTYP_SERVER, + EFLAG_SAME_TRANS, + L"ALTER_SERVER_AUDIT", + EventTag_ServerEvent, + NULL, + BitCount64(EventTag_ServerEvent), + EGROUP_DDL_SERVERAUDIT, + 0 + }, + + //----------------------------------------------- + // DROP SERVER AUDIT Event Schema + //----------------------------------------------- + { ETYP_ON_DROP_SERVER_AUDIT, + x_eet_Drop_ServerAudit, + EOBJTYP_SERVER, + EFLAG_SAME_TRANS, + L"DROP_SERVER_AUDIT", + EventTag_ServerEvent, + NULL, + BitCount64(EventTag_ServerEvent), + EGROUP_DDL_SERVERAUDIT, + 0 + }, + + //----------------------------------------------- + // CREATE SERVER AUDIT SPEC Event Schema + //----------------------------------------------- + { ETYP_ON_CREATE_SERVER_AUDIT_SPEC, + x_eet_Create_ServerAuditSpec, + EOBJTYP_SERVER, + EFLAG_SAME_TRANS, + L"CREATE_SERVER_AUDIT_SPECIFICATION", + EventTag_ServerEvent, + NULL, + BitCount64(EventTag_ServerEvent), + EGROUP_DDL_SERVERAUDITSPEC, + 0 + }, + + //----------------------------------------------- + // ALTER SERVER AUDIT SPEC Event Schema + //----------------------------------------------- + { ETYP_ON_ALTER_SERVER_AUDIT_SPEC, + x_eet_Alter_ServerAuditSpec, + EOBJTYP_SERVER, + EFLAG_SAME_TRANS, + L"ALTER_SERVER_AUDIT_SPECIFICATION", + EventTag_ServerEvent, + NULL, + BitCount64(EventTag_ServerEvent), + EGROUP_DDL_SERVERAUDITSPEC, + 0 + }, + + //----------------------------------------------- + // DROP SERVER AUDIT SPEC Event Schema + //----------------------------------------------- + { ETYP_ON_DROP_SERVER_AUDIT_SPEC, + x_eet_Drop_ServerAuditSpec, + EOBJTYP_SERVER, + EFLAG_SAME_TRANS, + L"DROP_SERVER_AUDIT_SPECIFICATION", + EventTag_ServerEvent, + NULL, + BitCount64(EventTag_ServerEvent), + EGROUP_DDL_SERVERAUDITSPEC, + 0 + }, + + //----------------------------------------------- + // CREATE DB AUDIT SPEC Event Schema + //----------------------------------------------- + { ETYP_ON_CREATE_DB_AUDIT_SPEC, + x_eet_Create_DbAuditSpec, + EOBJTYP_DATABASE | EOBJTYP_SERVER, + EFLAG_SAME_TRANS, + L"CREATE_DATABASE_AUDIT_SPECIFICATION", + EventTag_DatabaseEvent | EventTag_ObjectEvent, + NULL, + BitCount64(EventTag_DatabaseEvent | EventTag_ObjectEvent), + EGROUP_DDL_DBAUDITSPEC, + 0 + }, + + //----------------------------------------------- + // ALTER DB AUDIT SPEC Event Schema + //----------------------------------------------- + { ETYP_ON_ALTER_DB_AUDIT_SPEC, + x_eet_Alter_DbAuditSpec, + EOBJTYP_DATABASE | EOBJTYP_SERVER, + EFLAG_SAME_TRANS, + L"ALTER_DATABASE_AUDIT_SPECIFICATION", + EventTag_DatabaseEvent | EventTag_ObjectEvent, + NULL, + BitCount64(EventTag_DatabaseEvent | EventTag_ObjectEvent), + EGROUP_DDL_DBAUDITSPEC, + 0 + }, + + //----------------------------------------------- + // DROP DB AUDIT SPEC Event Schema + //----------------------------------------------- + { ETYP_ON_DROP_DB_AUDIT_SPEC, + x_eet_Drop_DbAuditSpec, + EOBJTYP_DATABASE | EOBJTYP_SERVER, + EFLAG_SAME_TRANS, + L"DROP_DATABASE_AUDIT_SPECIFICATION", + EventTag_DatabaseEvent | EventTag_ObjectEvent, + NULL, + BitCount64(EventTag_DatabaseEvent | EventTag_ObjectEvent), + EGROUP_DDL_DBAUDITSPEC, + 0 + }, + + //----------------------------------------------- + // CREATE SEQUENCE Event Schema + //----------------------------------------------- + { ETYP_ON_CREATE_SEQUENCE, + x_eet_Create_Sequence, + EOBJTYP_DATABASE | EOBJTYP_SERVER, + EFLAG_SAME_TRANS, + L"CREATE_SEQUENCE", + EventTag_SchemaDDL, + NULL, + BitCount64(EventTag_SchemaDDL), + EGROUP_DDL_SEQUENCE, + 0 + }, + + //----------------------------------------------- + // ALTER SEQUENCE Event Schema + //----------------------------------------------- + { ETYP_ON_ALTER_SEQUENCE, + x_eet_Alter_Sequence, + EOBJTYP_DATABASE | EOBJTYP_SERVER, + EFLAG_SAME_TRANS, + L"ALTER_SEQUENCE", + EventTag_SchemaDDL, + NULL, + BitCount64(EventTag_SchemaDDL), + EGROUP_DDL_SEQUENCE, + 0 + }, + + //----------------------------------------------- + // DROP SEQUENCE Event Schema + //----------------------------------------------- + { ETYP_ON_DROP_SEQUENCE, + x_eet_Drop_Sequence, + EOBJTYP_DATABASE | EOBJTYP_SERVER, + EFLAG_SAME_TRANS, + L"DROP_SEQUENCE", + EventTag_SchemaDDL, + NULL, + BitCount64(EventTag_SchemaDDL), + EGROUP_DDL_SEQUENCE, + 0 + }, + + //----------------------------------------------- + // CREATE AVAILABILITY GROUP Event Schema + //----------------------------------------------- + { ETYP_ON_CREATE_AVAILABILITY_GROUP, + x_eet_Create_Availability_Group, + EOBJTYP_SERVER, + EFLAG_SAME_TRANS, + L"CREATE_AVAILABILITY_GROUP", + EventTag_ServerEvent, + NULL, + BitCount64(EventTag_ServerEvent), + EGROUP_DDL_AVAILABILITY_GROUP, + 0 + }, + + //----------------------------------------------- + // ALTER AVAILABILITY GROUP Event Schema + //----------------------------------------------- + { ETYP_ON_ALTER_AVAILABILITY_GROUP, + x_eet_Alter_Availability_Group, + EOBJTYP_SERVER, + EFLAG_SAME_TRANS, + L"ALTER_AVAILABILITY_GROUP", + EventTag_ServerEvent, + NULL, + BitCount64(EventTag_ServerEvent), + EGROUP_DDL_AVAILABILITY_GROUP, + 0 + }, + + //----------------------------------------------- + // DROP AVAILABILITY GROUP Event Schema + //----------------------------------------------- + { ETYP_ON_DROP_AVAILABILITY_GROUP, + x_eet_Drop_Availability_Group, + EOBJTYP_SERVER, + EFLAG_SAME_TRANS, + L"DROP_AVAILABILITY_GROUP", + EventTag_ServerEvent, + NULL, + BitCount64(EventTag_ServerEvent), + EGROUP_DDL_AVAILABILITY_GROUP, + 0 + }, + + //----------------------------------------------- + // CREATE DATABASE AUDIT Event Schema + //----------------------------------------------- + { ETYP_ON_CREATE_DATABASE_AUDIT, + x_eet_Create_Database_Audit, + EOBJTYP_DATABASE | EOBJTYP_SERVER, + EFLAG_SAME_TRANS, + L"CREATE_AUDIT", + EventTag_DatabaseEvent | EventTag_ObjectEvent, + NULL, + BitCount64(EventTag_DatabaseEvent | EventTag_ObjectEvent), + EGROUP_DDL_DBAUDIT, + 0 + }, + + //----------------------------------------------- + // DROP DATABASE AUDIT Event Schema + //----------------------------------------------- + { ETYP_ON_DROP_DATABASE_AUDIT, + x_eet_Drop_Database_Audit, + EOBJTYP_DATABASE | EOBJTYP_SERVER, + EFLAG_SAME_TRANS, + L"DROP_AUDIT", + EventTag_DatabaseEvent | EventTag_ObjectEvent, + NULL, + BitCount64(EventTag_DatabaseEvent | EventTag_ObjectEvent), + EGROUP_DDL_DBAUDIT, + 0 + }, + + //----------------------------------------------- + // ALTER DATABASE AUDIT Event Schema + //----------------------------------------------- + { ETYP_ON_ALTER_DATABASE_AUDIT, + x_eet_Alter_Database_Audit, + EOBJTYP_DATABASE | EOBJTYP_SERVER, + EFLAG_SAME_TRANS, + L"ALTER_AUDIT", + EventTag_DatabaseEvent | EventTag_ObjectEvent, + NULL, + BitCount64(EventTag_DatabaseEvent | EventTag_ObjectEvent), + EGROUP_DDL_DBAUDIT, + 0 + }, + + //----------------------------------------------- + // CREATE SECURITY POLICY Event Schema + //----------------------------------------------- + { ETYP_ON_CREATE_SECURITY_POLICY, + x_eet_Create_Security_Policy, + EOBJTYP_DATABASE | EOBJTYP_SERVER, + EFLAG_SAME_TRANS, + L"CREATE_SECURITY_POLICY", + EventTag_SchemaDDL, + NULL, + BitCount64(EventTag_SchemaDDL), + EGROUP_DDL_SECURITY_POLICY, + 0 + }, + + //----------------------------------------------- + // ALTER SECURITY POLICY Event Schema + //----------------------------------------------- + { ETYP_ON_ALTER_SECURITY_POLICY, + x_eet_Alter_Security_Policy, + EOBJTYP_DATABASE | EOBJTYP_SERVER, + EFLAG_SAME_TRANS, + L"ALTER_SECURITY_POLICY", + EventTag_SchemaDDL, + NULL, + BitCount64(EventTag_SchemaDDL), + EGROUP_DDL_SECURITY_POLICY, + 0 + }, + + //----------------------------------------------- + // DROP SECURITY POLICY Event Schema + //----------------------------------------------- + { ETYP_ON_DROP_SECURITY_POLICY, + x_eet_Drop_Security_Policy, + EOBJTYP_DATABASE | EOBJTYP_SERVER, + EFLAG_SAME_TRANS, + L"DROP_SECURITY_POLICY", + EventTag_SchemaDDL, + NULL, + BitCount64(EventTag_SchemaDDL), + EGROUP_DDL_SECURITY_POLICY, + 0 + }, + + //----------------------------------------------- + // CREATE COLUMN MASTER KEY Event Schema + //----------------------------------------------- + { ETYP_ON_CREATE_COL_MASTER_KEY, + x_eet_Create_Col_Master_Key, + EOBJTYP_DATABASE | EOBJTYP_SERVER, + EFLAG_SAME_TRANS, + L"CREATE_COLUMN_MASTER_KEY", + EventTag_DatabaseEvent | EventTag_ObjectEvent, + NULL, + BitCount64(EventTag_DatabaseEvent | EventTag_ObjectEvent), + EGROUP_DDL_COL_MASTER_KEY, + 0 + }, + + //----------------------------------------------- + // DROP COLUMN MASTER KEY Event Schema + //----------------------------------------------- + { ETYP_ON_DROP_COL_MASTER_KEY, + x_eet_Drop_Col_Master_Key, + EOBJTYP_DATABASE | EOBJTYP_SERVER, + EFLAG_SAME_TRANS, + L"DROP_COLUMN_MASTER_KEY", + EventTag_DatabaseEvent | EventTag_ObjectEvent, + NULL, + BitCount64(EventTag_DatabaseEvent | EventTag_ObjectEvent), + EGROUP_DDL_COL_MASTER_KEY, + 0 + }, + + //----------------------------------------------- + // CREATE COLUMN ENCRYPTION KEY Event Schema + //----------------------------------------------- + { ETYP_ON_CREATE_COL_ENCRYPTION_KEY, + x_eet_Create_Col_Encryption_Key, + EOBJTYP_DATABASE | EOBJTYP_SERVER, + EFLAG_SAME_TRANS, + L"CREATE_COLUMN_ENCRYPTION_KEY", + EventTag_DatabaseEvent | EventTag_ObjectEvent, + NULL, + BitCount64(EventTag_DatabaseEvent | EventTag_ObjectEvent), + EGROUP_DDL_COL_ENCRYPTION_KEY, + 0 + }, + + //----------------------------------------------- + // ALTER COLUMN ENCRYPTION KEY Event Schema + //----------------------------------------------- + { ETYP_ON_ALTER_COL_ENCRYPTION_KEY, + x_eet_Alter_Col_Encryption_Key, + EOBJTYP_DATABASE | EOBJTYP_SERVER, + EFLAG_SAME_TRANS, + L"ALTER_COLUMN_ENCRYPTION_KEY", + EventTag_DatabaseEvent | EventTag_ObjectEvent, + NULL, + BitCount64(EventTag_DatabaseEvent | EventTag_ObjectEvent), + EGROUP_DDL_COL_ENCRYPTION_KEY, + 0 + }, + + //----------------------------------------------- + // DROP COLUMN ENCRYPTION KEY Event Schema + //----------------------------------------------- + { ETYP_ON_DROP_COL_ENCRYPTION_KEY, + x_eet_Drop_Col_Encryption_Key, + EOBJTYP_DATABASE | EOBJTYP_SERVER, + EFLAG_SAME_TRANS, + L"DROP_COLUMN_ENCRYPTION_KEY", + EventTag_DatabaseEvent | EventTag_ObjectEvent, + NULL, + BitCount64(EventTag_DatabaseEvent | EventTag_ObjectEvent), + EGROUP_DDL_COL_ENCRYPTION_KEY, + 0 + }, + + //----------------------------------------------- + // ALTER DATABASE SCOPED CONFIG Event Schema + //----------------------------------------------- + { ETYP_ON_ALTER_DB_SCOPED_CONFIG, + x_eet_Alter_DB_Scoped_Config, + EOBJTYP_DATABASE | EOBJTYP_SERVER, + EFLAG_SAME_TRANS, + L"ALTER_DATABASE_SCOPED_CONFIGURATION", + EventTag_DatabaseEvent, + NULL, + BitCount64(EventTag_DatabaseEvent), + EGROUP_DDL_DATABASE_LEVEL, + 0 + }, + + //----------------------------------------------- + // CREATE EXTERNAL RESOURCE POOL Event Schema + //----------------------------------------------- + { ETYP_ON_CREATE_EXTERNAL_RESOURCE_POOL, + x_eet_Create_External_Resource_Pool, + EOBJTYP_SERVER, + EFLAG_SAME_TRANS, + L"CREATE_EXTERNAL_RESOURCE_POOL", + EventTag_ServerEvent, + NULL, + BitCount64(EventTag_ServerEvent), + EGROUP_DDL_EXTERNAL_RESOURCE_POOL, + 0 + }, + + //----------------------------------------------- + // ALTER EXTERNAL RESOURCE POOL Event Schema + //----------------------------------------------- + { ETYP_ON_ALTER_EXTERNAL_RESOURCE_POOL, + x_eet_Alter_External_Resource_Pool, + EOBJTYP_SERVER, + EFLAG_SAME_TRANS, + L"ALTER_EXTERNAL_RESOURCE_POOL", + EventTag_ServerEvent, + NULL, + BitCount64(EventTag_ServerEvent), + EGROUP_DDL_EXTERNAL_RESOURCE_POOL, + 0 + }, + + //----------------------------------------------- + // DROP EXTERNAL RESOURCE POOL Event Schema + //----------------------------------------------- + { ETYP_ON_DROP_EXTERNAL_RESOURCE_POOL, + x_eet_Drop_External_Resource_Pool, + EOBJTYP_SERVER, + EFLAG_SAME_TRANS, + L"DROP_EXTERNAL_RESOURCE_POOL", + EventTag_ServerEvent, + NULL, + BitCount64(EventTag_ServerEvent), + EGROUP_DDL_EXTERNAL_RESOURCE_POOL, + 0 + }, + + //----------------------------------------------- + // CREATE EXTERNAL LIBRARY Event Schema + //----------------------------------------------- + { ETYP_ON_CREATE_EXTERNAL_LIBRARY, + x_eet_Create_External_Library, + EOBJTYP_DATABASE | EOBJTYP_SERVER, + EFLAG_SAME_TRANS, + L"CREATE_EXTERNAL_LIBRARY", + EventTag_SchemaLessDDL, + NULL, + 4, + EGROUP_DDL_LIBRARY, + 0 + }, + + //----------------------------------------------- + // ALTER EXTERNAL LIBRARY Event Schema + //----------------------------------------------- + { ETYP_ON_ALTER_EXTERNAL_LIBRARY, + x_eet_Alter_External_Library, + EOBJTYP_DATABASE | EOBJTYP_SERVER, + EFLAG_SAME_TRANS, + L"ALTER_EXTERNAL_LIBRARY", + EventTag_SchemaLessDDL, + NULL, + 4, + EGROUP_DDL_LIBRARY, + 0 + }, + + //----------------------------------------------- + // DROP EXTERNAL LIBRARY Event Schema + //----------------------------------------------- + { ETYP_ON_DROP_EXTERNAL_LIBRARY, + x_eet_Drop_External_Library, + EOBJTYP_DATABASE | EOBJTYP_SERVER, + EFLAG_SAME_TRANS, + L"DROP_EXTERNAL_LIBRARY", + EventTag_SchemaLessDDL, + NULL, + 4, + EGROUP_DDL_LIBRARY, + 0 + }, + + //----------------------------------------------- + // ADD SENSITIVITY CLASSIFICATION Event Schema + //----------------------------------------------- + { ETYP_ON_ADD_SENSITIVITY_CLASSIFICATION, + x_eet_Add_Sensitivity_Classification, + EOBJTYP_DATABASE | EOBJTYP_SERVER, + EFLAG_SAME_TRANS, + L"ADD_SENSITIVITY_CLASSIFICATION", + EventTag_SchemaDDL, + NULL, + BitCount64(EventTag_SchemaDDL), + EGROUP_DDL_SENSITIVITY, + 0 + }, + + //----------------------------------------------- + // DROP SENSITIVITY CLASSIFICATION Event Schema + //----------------------------------------------- + { ETYP_ON_DROP_SENSITIVITY_CLASSIFICATION, + x_eet_Drop_Sensitivity_Classification, + EOBJTYP_DATABASE | EOBJTYP_SERVER, + EFLAG_SAME_TRANS, + L"DROP_SENSITIVITY_CLASSIFICATION", + EventTag_SchemaDDL, + NULL, + BitCount64(EventTag_SchemaDDL), + EGROUP_DDL_SENSITIVITY, + 0 + }, + + //----------------------------------------------- + // CREATE EXTERNAL LANGUAGE Event Schema + //----------------------------------------------- + { ETYP_ON_CREATE_EXTERNAL_LANGUAGE, + x_eet_Create_External_Language, + EOBJTYP_DATABASE | EOBJTYP_SERVER, + EFLAG_SAME_TRANS, + L"CREATE_EXTERNAL_LANGUAGE", + EventTag_SchemaLessDDL, + NULL, + BitCount64(EventTag_SchemaLessDDL), + EGROUP_DDL_EXTERNAL_LANGUAGE, + 0 + }, + + //----------------------------------------------- + // ALTER EXTERNAL LANGUAGE Event Schema + //----------------------------------------------- + { ETYP_ON_ALTER_EXTERNAL_LANGUAGE, + x_eet_Alter_External_Language, + EOBJTYP_DATABASE | EOBJTYP_SERVER, + EFLAG_SAME_TRANS, + L"ALTER_EXTERNAL_LANGUAGE", + EventTag_SchemaLessDDL, + NULL, + BitCount64(EventTag_SchemaLessDDL), + EGROUP_DDL_EXTERNAL_LANGUAGE, + 0 + }, + + //----------------------------------------------- + // DROP EXTERNAL LANGUAGE Event Schema + //----------------------------------------------- + { ETYP_ON_DROP_EXTERNAL_LANGUAGE, + x_eet_Drop_External_Language, + EOBJTYP_DATABASE | EOBJTYP_SERVER, + EFLAG_SAME_TRANS, + L"DROP_EXTERNAL_LANGUAGE", + EventTag_SchemaLessDDL, + NULL, + BitCount64(EventTag_SchemaLessDDL), + EGROUP_DDL_EXTERNAL_LANGUAGE, + 0 + }, + + //*********************************************************************** + // START - NON DDL EVENT TYPES - START + //*********************************************************************** + + //----------------------------------------------- + // SERVICE QUEUE ACTIVATION Event Schema + //----------------------------------------------- + { ETYP_ON_ACTIVATION, + x_eet_Activation, + EOBJTYP_SVCQ, + EFLAG_ASYNC_ONLY, + L"QUEUE_ACTIVATION", + EventTag_ObjectEvent | EventTag_DatabaseName | EventTag_SchemaName, + NULL, + 4, + EGROUP_ALL, + 0 + }, + + //----------------------------------------------- + // SERVICE QUEUE DISABLED Event Schema + //----------------------------------------------- + { ETYP_ON_QUEUE_DISABLED, + x_eet_Queue_Disabled, + EOBJTYP_SVCQ, + EFLAG_ASYNC_ONLY | EFLAG_DDLADMN_CAD_PERM, + L"BROKER_QUEUE_DISABLED", + EventTag_ObjectEvent | EventTag_DatabaseName | EventTag_SchemaName, + NULL, + 4, + EGROUP_ALL, + 0 + }, + + //----------------------------------------------- + // ALTER SERVER CONFIGURATION Event Schema + // ALTER SERVER does not support transactional semantics and does not expose a DDL trigger + //----------------------------------------------- + { ETYP_ON_ALTER_SERVER_CONFIG, + x_eet_Alter_Server_Config, + EOBJTYP_SERVER, + EFLAG_ASYNC_ONLY, + L"ALTER_SERVER_CONFIGURATION", + EventTag_ObjectType | EventTag_TSQLCommand, + NULL, + BitCount64(EventTag_ObjectType | EventTag_TSQLCommand), + EGROUP_ALL, + 0 + }, + + //*********************************************************************** + // END - NON DDL EVENT TYPES - END + //*********************************************************************** + + //------------------------------------------------- + // SQL Trace events. Do not add regular events below this!!! + //------------------------------------------------- +#include "schema.inc" +}; + diff --git a/SmoBuild/DdlEvents/evtenum_template.cs b/SmoBuild/DdlEvents/evtenum_template.cs new file mode 100644 index 00000000..ccaa8188 --- /dev/null +++ b/SmoBuild/DdlEvents/evtenum_template.cs @@ -0,0 +1,67 @@ +// ************************************************************************** +// Copyright (c) Microsoft Corporation. +// +// @File: smoevt.txt +// @Owner: macies +// +// Description: +// +// This is a template file used by smoevt.pl to autogenerate smoevt.cs. +// +// Notes: +@@@ autogenerated +// +// History: +// +// @Version: Yukon +// 000000 MJW 09/10/03 ... +// +// @EndHeader@ +// ************************************************************************** + +using System; +using System.Collections; +using System.Collections.Specialized; +using System.Text; + +namespace Microsoft.SqlServer.Management.Smo +{ + // ************************************************************************** + // + // CLASSES + // + // ************************************************************************** + + internal partial class PostProcessServerDdlTriggerEvents : PostProcessDdlEvents + { + + private ServerDdlTriggerEvent ServerDdlTriggerEventOffsetFromEventString(string evtdesc) + { + switch (evtdesc) + { +@@@ServerDdlTriggerEvent_string_offset_mapping + } + return ServerDdlTriggerEvent.CreateEndpoint; + } + } + + internal partial class PostProcessDatabaseDdlTriggerEvents : PostProcessDdlEvents + { + + private DatabaseDdlTriggerEvent DatabaseDdlTriggerEventOffsetFromEventString(string evtdesc) + { + switch (evtdesc) + { +@@@DatabaseDdlTriggerEvent_string_offset_mapping + } + + return DatabaseDdlTriggerEvent.CreateTable; + } + } + + // From here on generated template code +@@@CLASS_TEMPLATE + // End of generated template code + + +} diff --git a/SmoBuild/DdlEvents/evtschema.pl b/SmoBuild/DdlEvents/evtschema.pl new file mode 100644 index 00000000..d40396fa --- /dev/null +++ b/SmoBuild/DdlEvents/evtschema.pl @@ -0,0 +1,57 @@ +#**************************************************************************************** +# Copyright (c) Microsoft Corporation. +# @File: evtschema.pl +# @Owner: jayc +# +# Purpose: +# This script generates the temporary eventsschema.tmp file from eventsschema.cpp and other SQLTrace +# generated files. This new file is used by mofgen.pl. +# +# Usage: +# perl evtschema.pl eventschema.cpp $(O) +# @EndHeader@ +#**************************************************************************************** + +# Get ful path to eventsschema.cpp +$eventsschema_cpp = $ARGV[0]; + +# Get output directory +$OutputDir = $ARGV[1]; + +# Eventsschema.cpp +open(EVTSCHEMACPP, $eventsschema_cpp) || die "Cannot open $eventsschema_cpp\n"; + +# New destination file +open(OUTF, ">" . $OutputDir . "\\eventsschema.tmp") || die "Cannot write to eventsschema.tmp\n"; + +# read and copy +while() +{ + # search for pattern like #include "abc.inc" + if(/^\s*#include\s+\"(\w+\.inc)\"\s*$/) + { + print OUTF "// " , $1, "\n"; + &IncludeFile($1); + } + else + { + print OUTF $_; + } +} + +close(EVTSCHEMACPP); +close(OUTF); + + +sub IncludeFile +{ + local($IncName) = @_; + open(INCFILE, $OutputDir . "\\" . $IncName) || die "Cannot open " . $IncName . "\n"; + while() + { + print OUTF $_; + } + + print OUTF "\n"; + close(INCFILE); +} diff --git a/SmoBuild/DdlEvents/smoevt.pl b/SmoBuild/DdlEvents/smoevt.pl new file mode 100644 index 00000000..ec3d0c6d --- /dev/null +++ b/SmoBuild/DdlEvents/smoevt.pl @@ -0,0 +1,1102 @@ +#!/usr/bin/perl +#**************************************************************************** +# Copyright (c) Microsoft Corporation. +# +# @File: smoevt.pl +# @Owner: macies +# +# Purpose: +# +# This script is used for automatic generation of smoevt.cs +# from eventsschema.cpp +# +# Adapted from mofgen.pl by mwories +# +# History: +# +# @Version: Yukon +# 00000 MJW 09/10/03 This file was created +# +# @EndHeader@ +#**************************************************************************** +use strict; +use warnings "all"; + +######################################################## +# EVENT SCHEMA VARIABLES +######################################################## + +# The result after the parsing will be kept in the following two scalars. +# +my $class_select_list = ""; + +# the events that are defined here are routed events +my @server_events; +my @database_events = ("DROP_DATABASE"); +my @table_events; +my @view_events; +my @function_events; +my @sp_events; +my @asm_events; +my @svcq_events = ("ALTER_QUEUE", "DROP_QUEUE"); +my @object_events = ("ALTER", "DROP"); +my @all_events; +my @trace_events; +my @server_level_triggers; +my @database_level_triggers; + +######################################################## +# EVENT GROUPS' VARIABLES +######################################################## + +# The parse result for the groups will be kept in the following scalar +my $group_def = ""; + +# If 0, then we are outside of the group definition. +my $f_inside_group_def = 0; +my $f_inside_schema_def = 0; + +# The following hash holds the group names +my %h_group_name; +$h_group_name{ "EGROUP_INVALID" } = "Envelope"; +my %h_group_children; +my %h_event_parent; + +# The following hash holds the group-parent relationship +my %h_group_parent; + +# Prototypes +# +sub CamelCase($); +sub CreateEnum(@); +sub CreateStaticProps($@); +sub CreateProps($@); +sub CreateStringFromEvent($@); +sub CreateEventFromString($@); +sub GetEventsInGroupRecurse($); +sub GetGroupsInGroupRecurse($); +sub CreateEventsGroupProp($$); +sub CreateEventsGroupPropInit($$); +sub CreateElementCount(@); + +######################################################## +# +# TEMPLATE GENERATION +# +# The following section generates a template +# file based on a class template file. +# This is done as we do not want to copy/paste +# identical class definitions into the overall +# template file. +# +######################################################## + +my $gen_for_enum_or_main = $ARGV[0]; +my $event_schema = $ARGV[1]; +my $class_template = $ARGV[2]; # class template - class_template.cs +my $template = $ARGV[3]; # overall template - smoevt_template.cs +my $output_template=$ARGV[4] ? $ARGV[4] : "smoevt_gen_template.cs"; + # optional input: generated template temp file + +my @classnames; + +if( $gen_for_enum_or_main eq "main" ) +{ + @classnames = qw(ServerEvent ServerTraceEvent DatabaseEvent TableEvent ViewEvent ServiceQueueEvent ObjectEvent UserDefinedFunctionEvent StoredProcedureEvent SqlAssemblyEvent); +} +else +{ + @classnames = qw(ServerDdlTriggerEvent DatabaseDdlTriggerEvent); +} + +my $template_code; + +# Generate class definitions +open(CLASS_TEMPLATE_FILE, $class_template) || die "Cannot open class template: $class_template $!"; + +foreach my $classname (@classnames) +{ + while () + { + s/CLASSNAME/$classname/g; + $template_code .= $_; + } + seek CLASS_TEMPLATE_FILE, 0, 0; +} +close CLASS_TEMPLATE_FILE || die "Close failed."; + +# Write template file +open(TEMPLATE, $template) || die "Cannot open template: $template $!"; +open(OUTPUT_TEMPLATE, ">$output_template") || die "Cannot open $output_template: $!"; + +while (