Updates for PHP 5.5, changing to use the Microsoft ODBC Driver 11 for SQL Server
This commit is contained in:
parent
a76d96695f
commit
f168779671
|
@ -1,602 +0,0 @@
|
||||||
<Activity mc:Ignorable="sap" x:Class="TfsBuild.Process" this:Process.BuildSettings="[New Microsoft.TeamFoundation.Build.Workflow.Activities.BuildSettings()]" this:Process.TestSpecs="[New Microsoft.TeamFoundation.Build.Workflow.Activities.TestSpecList(New Microsoft.TeamFoundation.Build.Workflow.Activities.TestAssemblySpec("**\*test*.dll"))]" this:Process.BuildNumberFormat="["$(BuildDefinitionName)_$(Date:yyyyMMdd)$(Rev:.r)"]" this:Process.CleanWorkspace="[Microsoft.TeamFoundation.Build.Workflow.Activities.CleanWorkspaceOption.All]" this:Process.RunCodeAnalysis="[Microsoft.TeamFoundation.Build.Workflow.Activities.CodeAnalysisOption.AsConfigured]" this:Process.SourceAndSymbolServerSettings="[New Microsoft.TeamFoundation.Build.Workflow.Activities.SourceAndSymbolServerSettings(True, Nothing)]" this:Process.AgentSettings="[New Microsoft.TeamFoundation.Build.Workflow.Activities.AgentSettings() With {.MaxWaitTime = New System.TimeSpan(4, 0, 0), .MaxExecutionTime = New System.TimeSpan(0, 0, 0), .TagComparison = Microsoft.TeamFoundation.Build.Workflow.Activities.TagComparison.MatchExactly }]" this:Process.AssociateChangesetsAndWorkItems="[True]" this:Process.CreateWorkItem="[True]" this:Process.DropBuild="[True]" this:Process.MSBuildPlatform="[Microsoft.TeamFoundation.Build.Workflow.Activities.ToolPlatform.Auto]" this:Process.PerformTestImpactAnalysis="[True]" this:Process.CreateLabel="[True]" this:Process.DisableTests="[False]" this:Process.Verbosity="[Microsoft.TeamFoundation.Build.Workflow.BuildVerbosity.Normal]" this:Process.SupportedReasons="All" xmlns="http://schemas.microsoft.com/netfx/2009/xaml/activities" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:mt="clr-namespace:Microsoft.TeamFoundation;assembly=Microsoft.TeamFoundation.Common" xmlns:mtbc="clr-namespace:Microsoft.TeamFoundation.Build.Client;assembly=Microsoft.TeamFoundation.Build.Client" xmlns:mtbw="clr-namespace:Microsoft.TeamFoundation.Build.Workflow;assembly=Microsoft.TeamFoundation.Build.Workflow" xmlns:mtbwa="clr-namespace:Microsoft.TeamFoundation.Build.Workflow.Activities;assembly=Microsoft.TeamFoundation.Build.Workflow" xmlns:mtbwt="clr-namespace:Microsoft.TeamFoundation.Build.Workflow.Tracking;assembly=Microsoft.TeamFoundation.Build.Workflow" xmlns:mttbb="clr-namespace:Microsoft.TeamFoundation.TestImpact.BuildIntegration.BuildActivities;assembly=Microsoft.TeamFoundation.TestImpact.BuildIntegration" xmlns:mtvc="clr-namespace:Microsoft.TeamFoundation.VersionControl.Client;assembly=Microsoft.TeamFoundation.VersionControl.Client" xmlns:mtvc1="clr-namespace:Microsoft.TeamFoundation.VersionControl.Common;assembly=Microsoft.TeamFoundation.VersionControl.Common" xmlns:mva="clr-namespace:Microsoft.VisualBasic.Activities;assembly=System.Activities" xmlns:s="clr-namespace:System;assembly=mscorlib" xmlns:sa="clr-namespace:System.Activities;assembly=System.Activities" xmlns:sad="clr-namespace:System.Activities.Debugger;assembly=System.Activities" xmlns:sap="http://schemas.microsoft.com/netfx/2009/xaml/activities/presentation" xmlns:scg="clr-namespace:System.Collections.Generic;assembly=mscorlib" xmlns:si="clr-namespace:System.IO;assembly=mscorlib" xmlns:sl="clr-namespace:System.Linq;assembly=System.Core" xmlns:this="clr-namespace:TfsBuild" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
|
|
||||||
<x:Members>
|
|
||||||
<x:Property Name="BuildSettings" Type="InArgument(mtbwa:BuildSettings)" />
|
|
||||||
<x:Property Name="TestSpecs" Type="InArgument(mtbwa:TestSpecList)" />
|
|
||||||
<x:Property Name="BuildNumberFormat" Type="InArgument(x:String)" />
|
|
||||||
<x:Property Name="CleanWorkspace" Type="InArgument(mtbwa:CleanWorkspaceOption)" />
|
|
||||||
<x:Property Name="RunCodeAnalysis" Type="InArgument(mtbwa:CodeAnalysisOption)" />
|
|
||||||
<x:Property Name="SourceAndSymbolServerSettings" Type="InArgument(mtbwa:SourceAndSymbolServerSettings)" />
|
|
||||||
<x:Property Name="AgentSettings" Type="InArgument(mtbwa:AgentSettings)" />
|
|
||||||
<x:Property Name="AssociateChangesetsAndWorkItems" Type="InArgument(x:Boolean)" />
|
|
||||||
<x:Property Name="CreateWorkItem" Type="InArgument(x:Boolean)" />
|
|
||||||
<x:Property Name="DropBuild" Type="InArgument(x:Boolean)" />
|
|
||||||
<x:Property Name="MSBuildArguments" Type="InArgument(x:String)" />
|
|
||||||
<x:Property Name="MSBuildPlatform" Type="InArgument(mtbwa:ToolPlatform)" />
|
|
||||||
<x:Property Name="PerformTestImpactAnalysis" Type="InArgument(x:Boolean)" />
|
|
||||||
<x:Property Name="CreateLabel" Type="InArgument(x:Boolean)" />
|
|
||||||
<x:Property Name="DisableTests" Type="InArgument(x:Boolean)" />
|
|
||||||
<x:Property Name="GetVersion" Type="InArgument(x:String)" />
|
|
||||||
<x:Property Name="PrivateDropLocation" Type="InArgument(x:String)" />
|
|
||||||
<x:Property Name="Verbosity" Type="InArgument(mtbw:BuildVerbosity)" />
|
|
||||||
<x:Property Name="Metadata" Type="mtbw:ProcessParameterMetadataCollection" />
|
|
||||||
<x:Property Name="SupportedReasons" Type="mtbc:BuildReason" />
|
|
||||||
</x:Members>
|
|
||||||
<this:Process.MSBuildArguments>
|
|
||||||
<InArgument x:TypeArguments="x:String" />
|
|
||||||
</this:Process.MSBuildArguments>
|
|
||||||
<this:Process.GetVersion>
|
|
||||||
<InArgument x:TypeArguments="x:String" />
|
|
||||||
</this:Process.GetVersion>
|
|
||||||
<this:Process.Metadata>
|
|
||||||
<mtbw:ProcessParameterMetadataCollection />
|
|
||||||
</this:Process.Metadata>
|
|
||||||
<mva:VisualBasic.Settings>Assembly references and imported namespaces serialized as XML namespaces</mva:VisualBasic.Settings>
|
|
||||||
<sap:WorkflowViewStateService.ViewState>
|
|
||||||
<scg:Dictionary x:TypeArguments="x:String, x:Object">
|
|
||||||
<x:Boolean x:Key="ShouldExpandAll">True</x:Boolean>
|
|
||||||
</scg:Dictionary>
|
|
||||||
</sap:WorkflowViewStateService.ViewState>
|
|
||||||
<Sequence sad:XamlDebuggerXmlReader.FileName="C:\vstf\lab26vsts\src\vset\SCM\BigBuild\templates\defaulttemplate.xaml" sap:VirtualizedContainerService.HintSize="1972,13038" mtbwt:BuildTrackingParticipant.Importance="None">
|
|
||||||
<Sequence.Variables>
|
|
||||||
<Variable x:TypeArguments="mtbc:IBuildDetail" Name="BuildDetail" />
|
|
||||||
</Sequence.Variables>
|
|
||||||
<sap:WorkflowViewStateService.ViewState>
|
|
||||||
<scg:Dictionary x:TypeArguments="x:String, x:Object">
|
|
||||||
<x:Boolean x:Key="IsExpanded">True</x:Boolean>
|
|
||||||
</scg:Dictionary>
|
|
||||||
</sap:WorkflowViewStateService.ViewState>
|
|
||||||
<mtbwa:GetBuildDetail DisplayName="Get the Build" sap:VirtualizedContainerService.HintSize="1950,22" mtbwt:BuildTrackingParticipant.Importance="Low" Result="[BuildDetail]" />
|
|
||||||
<Sequence DisplayName="Update Drop Location" sap:VirtualizedContainerService.HintSize="1950,1310" mtbwt:BuildTrackingParticipant.Importance="Low">
|
|
||||||
<sap:WorkflowViewStateService.ViewState>
|
|
||||||
<scg:Dictionary x:TypeArguments="x:String, x:Object">
|
|
||||||
<x:Boolean x:Key="IsExpanded">True</x:Boolean>
|
|
||||||
</scg:Dictionary>
|
|
||||||
</sap:WorkflowViewStateService.ViewState>
|
|
||||||
<mtbwa:InvokeForReason DisplayName="Update Build Number for Triggered Builds" sap:VirtualizedContainerService.HintSize="611,146" Reason="Triggered">
|
|
||||||
<mtbwa:UpdateBuildNumber BuildNumberFormat="[BuildNumberFormat]" DisplayName="Update Build Number" sap:VirtualizedContainerService.HintSize="200,22" />
|
|
||||||
</mtbwa:InvokeForReason>
|
|
||||||
<If Condition="[DropBuild AndAlso (BuildDetail.Reason And Microsoft.TeamFoundation.Build.Client.BuildReason.Triggered) = BuildDetail.Reason]" DisplayName="If DropBuild And Build Reason is Triggered" sap:VirtualizedContainerService.HintSize="611,550" mtbwt:BuildTrackingParticipant.Importance="Low">
|
|
||||||
<If.Then>
|
|
||||||
<Sequence sap:VirtualizedContainerService.HintSize="486,449" mtbwt:BuildTrackingParticipant.Importance="None">
|
|
||||||
<sap:WorkflowViewStateService.ViewState>
|
|
||||||
<scg:Dictionary x:TypeArguments="x:String, x:Object">
|
|
||||||
<x:Boolean x:Key="IsExpanded">True</x:Boolean>
|
|
||||||
</scg:Dictionary>
|
|
||||||
</sap:WorkflowViewStateService.ViewState>
|
|
||||||
<If Condition="[String.IsNullOrEmpty(BuildDetail.DropLocationRoot)]" DisplayName="If DropLocationRoot is empty" sap:VirtualizedContainerService.HintSize="464,201" mtbwt:BuildTrackingParticipant.Importance="Low">
|
|
||||||
<If.Then>
|
|
||||||
<Throw DisplayName="Throw EmptyDropLocationRootException" Exception="[New Microsoft.TeamFoundation.Build.Workflow.Activities.EmptyDropLocationRootException(BuildDetail.BuildDefinition.Name)]" sap:VirtualizedContainerService.HintSize="269,100" mtbwt:BuildTrackingParticipant.Importance="Low" />
|
|
||||||
</If.Then>
|
|
||||||
</If>
|
|
||||||
<mtbwa:SetBuildProperties DisplayName="Set Drop Location" DropLocation="[BuildDetail.DropLocationRoot + "\" + BuildDetail.BuildDefinition.Name + "\" + BuildDetail.BuildNumber]" sap:VirtualizedContainerService.HintSize="464,22" mtbwt:BuildTrackingParticipant.Importance="Low" PropertiesToSet="DropLocation" />
|
|
||||||
<mtbwa:CreateDirectory Directory="[BuildDetail.DropLocation]" DisplayName="Create the Drop Location" sap:VirtualizedContainerService.HintSize="464,22" mtbwt:BuildTrackingParticipant.Importance="Normal" />
|
|
||||||
</Sequence>
|
|
||||||
</If.Then>
|
|
||||||
</If>
|
|
||||||
<If Condition="[DropBuild AndAlso BuildDetail.Reason = Microsoft.TeamFoundation.Build.Client.BuildReason.ValidateShelveset]" DisplayName="If DropBuild And Build Reason is ValidateShelveset" sap:VirtualizedContainerService.HintSize="611,410" mtbwt:BuildTrackingParticipant.Importance="Low">
|
|
||||||
<If.Then>
|
|
||||||
<If Condition="[Not String.IsNullOrEmpty(PrivateDropLocation)]" sap:VirtualizedContainerService.HintSize="464,309" mtbwt:BuildTrackingParticipant.Importance="None">
|
|
||||||
<If.Then>
|
|
||||||
<Sequence sap:VirtualizedContainerService.HintSize="231,208" mtbwt:BuildTrackingParticipant.Importance="None">
|
|
||||||
<sap:WorkflowViewStateService.ViewState>
|
|
||||||
<scg:Dictionary x:TypeArguments="x:String, x:Object">
|
|
||||||
<x:Boolean x:Key="IsExpanded">True</x:Boolean>
|
|
||||||
</scg:Dictionary>
|
|
||||||
</sap:WorkflowViewStateService.ViewState>
|
|
||||||
<mtbwa:SetBuildProperties DisplayName="Set Drop Location for Private Build" DropLocation="[PrivateDropLocation + "\" + BuildDetail.BuildDefinition.Name + "\" + BuildDetail.BuildNumber]" sap:VirtualizedContainerService.HintSize="200,22" mtbwt:BuildTrackingParticipant.Importance="Low" PropertiesToSet="DropLocation" />
|
|
||||||
<mtbwa:CreateDirectory Directory="[BuildDetail.DropLocation]" DisplayName="Create the Drop Location" sap:VirtualizedContainerService.HintSize="200,22" mtbwt:BuildTrackingParticipant.Importance="Normal" />
|
|
||||||
</Sequence>
|
|
||||||
</If.Then>
|
|
||||||
<If.Else>
|
|
||||||
<mtbwa:WriteBuildWarning sap:VirtualizedContainerService.HintSize="208,208" Message="The build outputs for this private build will not be copied to the drop location because the PrivateDropLocation is not set." />
|
|
||||||
</If.Else>
|
|
||||||
</If>
|
|
||||||
</If.Then>
|
|
||||||
</If>
|
|
||||||
</Sequence>
|
|
||||||
<mtbwa:AgentScope DisplayName="Run On Agent" sap:VirtualizedContainerService.HintSize="1950,11316" MaxExecutionTime="[AgentSettings.MaxExecutionTime]" MaxWaitTime="[AgentSettings.MaxWaitTime]" ReservationSpec="[AgentSettings.GetAgentReservationSpec()]">
|
|
||||||
<mtbwa:AgentScope.Variables>
|
|
||||||
<Variable x:TypeArguments="mtbc:IBuildAgent" Name="BuildAgent" />
|
|
||||||
<Variable x:TypeArguments="mtvc:Workspace" Name="Workspace" />
|
|
||||||
<Variable x:TypeArguments="x:String" Name="BuildDirectory" />
|
|
||||||
<Variable x:TypeArguments="x:String" Default="[BuildDetail.BuildNumber]" Name="LabelName" />
|
|
||||||
<Variable x:TypeArguments="x:String" Name="WorkspaceName" />
|
|
||||||
<Variable x:TypeArguments="x:String" Name="SourcesDirectory" />
|
|
||||||
<Variable x:TypeArguments="x:String" Name="BinariesDirectory" />
|
|
||||||
<Variable x:TypeArguments="x:String" Name="TestResultsDirectory" />
|
|
||||||
</mtbwa:AgentScope.Variables>
|
|
||||||
<Sequence DisplayName="Initialize Variables" sap:VirtualizedContainerService.HintSize="1928,1046" mtbwt:BuildTrackingParticipant.Importance="Low">
|
|
||||||
<sap:WorkflowViewStateService.ViewState>
|
|
||||||
<scg:Dictionary x:TypeArguments="x:String, x:Object">
|
|
||||||
<x:Boolean x:Key="IsExpanded">True</x:Boolean>
|
|
||||||
</scg:Dictionary>
|
|
||||||
</sap:WorkflowViewStateService.ViewState>
|
|
||||||
<mtbwa:GetBuildAgent DisplayName="Get the Agent" sap:VirtualizedContainerService.HintSize="464,22" mtbwt:BuildTrackingParticipant.Importance="Low" Result="[BuildAgent]" />
|
|
||||||
<mtbwa:GetBuildDirectory DisplayName="Get the Build Directory" sap:VirtualizedContainerService.HintSize="464,22" mtbwt:BuildTrackingParticipant.Importance="Low" Result="[BuildDirectory]" />
|
|
||||||
<Assign x:TypeArguments="x:String" DisplayName="Initialize Workspace Name" sap:VirtualizedContainerService.HintSize="464,22" mtbwt:BuildTrackingParticipant.Importance="Low" To="[WorkspaceName]" Value="[String.Format("{0}_{1}_{2}", BuildDetail.BuildDefinition.Id, Microsoft.TeamFoundation.LinkingUtilities.DecodeUri(BuildAgent.Uri.AbsoluteUri).ToolSpecificId, BuildAgent.ServiceHost.Name)]" />
|
|
||||||
<Assign x:TypeArguments="x:String" DisplayName="Initialize Sources Directory" sap:VirtualizedContainerService.HintSize="464,22" mtbwt:BuildTrackingParticipant.Importance="Low" To="[SourcesDirectory]" Value="[String.Format("{0}\Sources", BuildDirectory)]" />
|
|
||||||
<Assign x:TypeArguments="x:String" DisplayName="Initialize Binaries Directory" sap:VirtualizedContainerService.HintSize="464,22" mtbwt:BuildTrackingParticipant.Importance="Low" To="[BinariesDirectory]" Value="[String.Format("{0}\Binaries", BuildDirectory)]" />
|
|
||||||
<Assign x:TypeArguments="x:String" DisplayName="Initialize TestResults Directory" sap:VirtualizedContainerService.HintSize="464,22" mtbwt:BuildTrackingParticipant.Importance="Low" To="[TestResultsDirectory]" Value="[String.Format("{0}\TestResults", BuildDirectory)]" />
|
|
||||||
<If Condition="[Not BuildSettings.HasPlatformConfigurations]" DisplayName="If Not BuildSettings.HasPlatformConfigurations" sap:VirtualizedContainerService.HintSize="464,201" mtbwt:BuildTrackingParticipant.Importance="Low">
|
|
||||||
<If.Then>
|
|
||||||
<AddToCollection x:TypeArguments="mtbwa:PlatformConfiguration" DisplayName="Use Default Platform Configuration" Collection="[BuildSettings.PlatformConfigurations]" Item="[Microsoft.TeamFoundation.Build.Workflow.Activities.PlatformConfiguration.Default]" mtbwt:BuildTrackingParticipant.Importance="Low" />
|
|
||||||
</If.Then>
|
|
||||||
</If>
|
|
||||||
<If Condition="[WorkspaceName.Length > Microsoft.TeamFoundation.VersionControl.Common.RepositoryConstants.MaxWorkspaceNameSize]" DisplayName="If WorkspaceName > MaxSize" sap:VirtualizedContainerService.HintSize="464,309" mtbwt:BuildTrackingParticipant.Importance="Low">
|
|
||||||
<If.Then>
|
|
||||||
<Sequence sap:VirtualizedContainerService.HintSize="281,208" mtbwt:BuildTrackingParticipant.Importance="None">
|
|
||||||
<sap:WorkflowViewStateService.ViewState>
|
|
||||||
<scg:Dictionary x:TypeArguments="x:String, x:Object">
|
|
||||||
<x:Boolean x:Key="IsExpanded">True</x:Boolean>
|
|
||||||
</scg:Dictionary>
|
|
||||||
</sap:WorkflowViewStateService.ViewState>
|
|
||||||
<mtbwa:WriteBuildWarning sap:VirtualizedContainerService.HintSize="200,22" Message="[String.Format("The workspace name '{0}' exceeds the maximum allowed limit of '{1}' characters. Truncating it to match the maximum limit.", WorkspaceName, Microsoft.TeamFoundation.VersionControl.Common.RepositoryConstants.MaxWorkspaceNameSize)]" />
|
|
||||||
<Assign x:TypeArguments="x:String" DisplayName="Truncate WorkspaceName to MaxSize" sap:VirtualizedContainerService.HintSize="200,22" mtbwt:BuildTrackingParticipant.Importance="Low" To="[WorkspaceName]" Value="[WorkspaceName.Substring(0, Microsoft.TeamFoundation.VersionControl.Common.RepositoryConstants.MaxWorkspaceNameSize).TrimEnd()]" />
|
|
||||||
</Sequence>
|
|
||||||
</If.Then>
|
|
||||||
</If>
|
|
||||||
</Sequence>
|
|
||||||
<Sequence DisplayName="Initialize Workspace" sap:VirtualizedContainerService.HintSize="1928,1819" mtbwt:BuildTrackingParticipant.Importance="Low">
|
|
||||||
<sap:WorkflowViewStateService.ViewState>
|
|
||||||
<scg:Dictionary x:TypeArguments="x:String, x:Object">
|
|
||||||
<x:Boolean x:Key="IsExpanded">True</x:Boolean>
|
|
||||||
</scg:Dictionary>
|
|
||||||
</sap:WorkflowViewStateService.ViewState>
|
|
||||||
<mtbwa:DeleteDirectory Directory="[TestResultsDirectory]" DisplayName="Delete Test Results Directory" sap:VirtualizedContainerService.HintSize="818,22" mtbwt:BuildTrackingParticipant.Importance="Normal" Recursive="[True]" />
|
|
||||||
<If Condition="[Not CleanWorkspace = Microsoft.TeamFoundation.Build.Workflow.Activities.CleanWorkspaceOption.None]" DisplayName="If Not CleanWorkspace = CleanWorkspaceOption.None" sap:VirtualizedContainerService.HintSize="818,201" mtbwt:BuildTrackingParticipant.Importance="Low">
|
|
||||||
<If.Then>
|
|
||||||
<mtbwa:DeleteDirectory Directory="[BinariesDirectory]" DisplayName="Delete Binaries Directory" sap:VirtualizedContainerService.HintSize="269,100" mtbwt:BuildTrackingParticipant.Importance="Normal" />
|
|
||||||
</If.Then>
|
|
||||||
</If>
|
|
||||||
<If Condition="[CleanWorkspace = Microsoft.TeamFoundation.Build.Workflow.Activities.CleanWorkspaceOption.All]" DisplayName="If CleanWorkspace = CleanWorkspaceOption.All" sap:VirtualizedContainerService.HintSize="818,309" mtbwt:BuildTrackingParticipant.Importance="Low">
|
|
||||||
<If.Then>
|
|
||||||
<Sequence DisplayName="Delete Workspace and Sources Directory" sap:VirtualizedContainerService.HintSize="281,208" mtbwt:BuildTrackingParticipant.Importance="Low">
|
|
||||||
<sap:WorkflowViewStateService.ViewState>
|
|
||||||
<scg:Dictionary x:TypeArguments="x:String, x:Object">
|
|
||||||
<x:Boolean x:Key="IsExpanded">True</x:Boolean>
|
|
||||||
</scg:Dictionary>
|
|
||||||
</sap:WorkflowViewStateService.ViewState>
|
|
||||||
<mtbwa:DeleteWorkspace DeleteLocalItems="[True]" DisplayName="Delete Workspace" sap:VirtualizedContainerService.HintSize="200,22" mtbwt:BuildTrackingParticipant.Importance="Normal" Name="[WorkspaceName]" />
|
|
||||||
<mtbwa:DeleteDirectory Directory="[SourcesDirectory]" DisplayName="Delete Sources Directory" sap:VirtualizedContainerService.HintSize="200,22" mtbwt:BuildTrackingParticipant.Importance="Normal" />
|
|
||||||
</Sequence>
|
|
||||||
</If.Then>
|
|
||||||
</If>
|
|
||||||
<mtbwa:CreateWorkspace BuildDirectory="[BuildDirectory]" Comment="["Workspace Created by Team Build"]" DisplayName="Create Workspace" sap:VirtualizedContainerService.HintSize="818,22" Name="[WorkspaceName]" Result="[Workspace]" SourcesDirectory="[SourcesDirectory]" />
|
|
||||||
<If Condition="[CleanWorkspace = Microsoft.TeamFoundation.Build.Workflow.Activities.CleanWorkspaceOption.Outputs]" DisplayName="If CleanWorkspace = CleanWorkspaceOption.Outputs" sap:VirtualizedContainerService.HintSize="818,919" mtbwt:BuildTrackingParticipant.Importance="Low">
|
|
||||||
<If.Then>
|
|
||||||
<ForEach x:TypeArguments="mtbwa:PlatformConfiguration" DisplayName="For Each Configuration in BuildSettings.PlatformConfigurations" sap:VirtualizedContainerService.HintSize="693,818" mtbwt:BuildTrackingParticipant.Importance="Low" Values="[BuildSettings.PlatformConfigurations]">
|
|
||||||
<ActivityAction x:TypeArguments="mtbwa:PlatformConfiguration">
|
|
||||||
<ActivityAction.Argument>
|
|
||||||
<DelegateInArgument x:TypeArguments="mtbwa:PlatformConfiguration" Name="platformConfiguration" />
|
|
||||||
</ActivityAction.Argument>
|
|
||||||
<Sequence DisplayName="Clean Configuration" sap:VirtualizedContainerService.HintSize="663,715">
|
|
||||||
<sap:WorkflowViewStateService.ViewState>
|
|
||||||
<scg:Dictionary x:TypeArguments="x:String, x:Object">
|
|
||||||
<x:Boolean x:Key="IsExpanded">True</x:Boolean>
|
|
||||||
</scg:Dictionary>
|
|
||||||
</sap:WorkflowViewStateService.ViewState>
|
|
||||||
<If Condition="[BuildSettings.HasProjectsToBuild]" DisplayName="If BuildSettings.HasProjectsToBuild" sap:VirtualizedContainerService.HintSize="641,591" mtbwt:BuildTrackingParticipant.Importance="Low">
|
|
||||||
<If.Then>
|
|
||||||
<ForEach x:TypeArguments="x:String" DisplayName="For Each Project in BuildSettings.ProjectsToBuild" sap:VirtualizedContainerService.HintSize="516,490" mtbwt:BuildTrackingParticipant.Importance="Low" Values="[BuildSettings.ProjectsToBuild]">
|
|
||||||
<ActivityAction x:TypeArguments="x:String">
|
|
||||||
<ActivityAction.Argument>
|
|
||||||
<DelegateInArgument x:TypeArguments="x:String" Name="serverBuildProjectItem" />
|
|
||||||
</ActivityAction.Argument>
|
|
||||||
<Sequence DisplayName="Clean Project" sap:VirtualizedContainerService.HintSize="486,387" mtbwt:BuildTrackingParticipant.Importance="Normal">
|
|
||||||
<Sequence.Variables>
|
|
||||||
<Variable x:TypeArguments="x:String" Name="localBuildProjectItem" />
|
|
||||||
</Sequence.Variables>
|
|
||||||
<sap:WorkflowViewStateService.ViewState>
|
|
||||||
<scg:Dictionary x:TypeArguments="x:String, x:Object">
|
|
||||||
<x:Boolean x:Key="IsExpanded">True</x:Boolean>
|
|
||||||
</scg:Dictionary>
|
|
||||||
</sap:WorkflowViewStateService.ViewState>
|
|
||||||
<mtbwa:ConvertWorkspaceItem DisplayName="Convert Server Paths to Local Paths" sap:VirtualizedContainerService.HintSize="464,22" mtbwt:BuildTrackingParticipant.Importance="Low" Input="[serverBuildProjectItem]" Result="[localBuildProjectItem]" Workspace="[Workspace]" />
|
|
||||||
<If Condition="[System.IO.File.Exists(localBuildProjectItem)]" DisplayName="If File.Exists(Project)" sap:VirtualizedContainerService.HintSize="464,201" mtbwt:BuildTrackingParticipant.Importance="Low">
|
|
||||||
<If.Then>
|
|
||||||
<mtbwa:MSBuild CommandLineArguments="[String.Format("/p:SkipInvalidConfigurations=true {0}", MSBuildArguments)]" Configuration="[platformConfiguration.Configuration]" DisplayName="Run MSBuild for Project" GenerateVSPropsFile="[True]" sap:VirtualizedContainerService.HintSize="269,100" OutDir="[BinariesDirectory]" Platform="[platformConfiguration.Platform]" Project="[localBuildProjectItem]" Targets="[New String() { "Clean" }]" TargetsNotLogged="[New String() {"GetNativeManifest", "GetCopyToOutputDirectoryItems", "GetTargetPath"}]" ToolPlatform="[MSBuildPlatform]" Verbosity="[Verbosity]" />
|
|
||||||
</If.Then>
|
|
||||||
</If>
|
|
||||||
</Sequence>
|
|
||||||
</ActivityAction>
|
|
||||||
</ForEach>
|
|
||||||
</If.Then>
|
|
||||||
</If>
|
|
||||||
</Sequence>
|
|
||||||
</ActivityAction>
|
|
||||||
</ForEach>
|
|
||||||
</If.Then>
|
|
||||||
</If>
|
|
||||||
<mtbwa:SyncWorkspace DisplayName="Get Workspace" sap:VirtualizedContainerService.HintSize="818,22" VersionOverride="[GetVersion]" Workspace="[Workspace]" />
|
|
||||||
</Sequence>
|
|
||||||
<If Condition="[CreateLabel]" DisplayName="If CreateLabel" sap:VirtualizedContainerService.HintSize="1928,309" mtbwt:BuildTrackingParticipant.Importance="Low">
|
|
||||||
<If.Then>
|
|
||||||
<mtbwa:InvokeForReason DisplayName="Create and Set Label for non-Shelveset Builds" sap:VirtualizedContainerService.HintSize="281,208" Reason="Manual, IndividualCI, BatchedCI, Schedule, ScheduleForced, UserCreated">
|
|
||||||
<mtbwa:LabelWorkspace Comment="["Label Created by Team Build"]" DisplayName="Create Label" sap:VirtualizedContainerService.HintSize="200,22" Name="[LabelName]" Scope="[String.Format("$/{0}", BuildDetail.BuildDefinition.TeamProject)]" Workspace="[Workspace]" />
|
|
||||||
<mtbwa:SetBuildProperties DisplayName="Set Label on BuildDetail" sap:VirtualizedContainerService.HintSize="200,22" mtbwt:BuildTrackingParticipant.Importance="Low" LabelName="[String.Format("{0}@$/{1}", LabelName, BuildDetail.BuildDefinition.TeamProject)]" PropertiesToSet="LabelName" />
|
|
||||||
</mtbwa:InvokeForReason>
|
|
||||||
</If.Then>
|
|
||||||
</If>
|
|
||||||
<TryCatch DisplayName="Try Compile, Test, and Associate Changesets and Work Items" sap:VirtualizedContainerService.HintSize="1928,7898" mtbwt:BuildTrackingParticipant.Importance="Low">
|
|
||||||
<TryCatch.Finally>
|
|
||||||
<Sequence DisplayName="Revert Workspace and Copy Files to Drop Location" sap:VirtualizedContainerService.HintSize="1910,511" mtbwt:BuildTrackingParticipant.Importance="Low">
|
|
||||||
<sap:WorkflowViewStateService.ViewState>
|
|
||||||
<scg:Dictionary x:TypeArguments="x:String, x:Object">
|
|
||||||
<x:Boolean x:Key="IsExpanded">True</x:Boolean>
|
|
||||||
</scg:Dictionary>
|
|
||||||
</sap:WorkflowViewStateService.ViewState>
|
|
||||||
<mtbwa:InvokeForReason DisplayName="Revert Workspace for Shelveset Builds" sap:VirtualizedContainerService.HintSize="464,146" Reason="ValidateShelveset, CheckInShelveset">
|
|
||||||
<mtbwa:RevertWorkspace DisplayName="Revert Workspace" sap:VirtualizedContainerService.HintSize="200,22" Workspace="[Workspace]" />
|
|
||||||
</mtbwa:InvokeForReason>
|
|
||||||
<If Condition="[DropBuild AndAlso Not String.IsNullOrEmpty(BuildDetail.DropLocation)]" DisplayName="If DropBuild And DropLocation is Set" sap:VirtualizedContainerService.HintSize="464,201" mtbwt:BuildTrackingParticipant.Importance="Low">
|
|
||||||
<If.Then>
|
|
||||||
<mtbwa:CopyDirectory Destination="[BuildDetail.DropLocation]" DisplayName="Copy Files to Drop Location" sap:VirtualizedContainerService.HintSize="269,100" Source="[BinariesDirectory]" />
|
|
||||||
</If.Then>
|
|
||||||
</If>
|
|
||||||
</Sequence>
|
|
||||||
</TryCatch.Finally>
|
|
||||||
<TryCatch.Try>
|
|
||||||
<Sequence sap:VirtualizedContainerService.HintSize="1910,7226" mtbwt:BuildTrackingParticipant.Importance="None">
|
|
||||||
<Sequence.Variables>
|
|
||||||
<Variable x:TypeArguments="s:Exception" Name="compilationException" />
|
|
||||||
<Variable x:TypeArguments="scg:IList(mtvc:Changeset)" Name="associatedChangesets" />
|
|
||||||
<Variable x:TypeArguments="x:Boolean" Name="treatTestFailureAsBuildFailure" />
|
|
||||||
</Sequence.Variables>
|
|
||||||
<sap:WorkflowViewStateService.ViewState>
|
|
||||||
<scg:Dictionary x:TypeArguments="x:String, x:Object">
|
|
||||||
<x:Boolean x:Key="IsExpanded">True</x:Boolean>
|
|
||||||
</scg:Dictionary>
|
|
||||||
</sap:WorkflowViewStateService.ViewState>
|
|
||||||
<Parallel DisplayName="Compile, Test, and Associate Changesets and Work Items" sap:VirtualizedContainerService.HintSize="1888,5264">
|
|
||||||
<TryCatch DisplayName="Try Compile and Test" sap:VirtualizedContainerService.HintSize="1270,5218" mtbwt:BuildTrackingParticipant.Importance="Low">
|
|
||||||
<TryCatch.Try>
|
|
||||||
<Sequence DisplayName="Compile and Test" sap:VirtualizedContainerService.HintSize="1252,4850">
|
|
||||||
<sap:WorkflowViewStateService.ViewState>
|
|
||||||
<scg:Dictionary x:TypeArguments="x:String, x:Object">
|
|
||||||
<x:Boolean x:Key="IsExpanded">True</x:Boolean>
|
|
||||||
</scg:Dictionary>
|
|
||||||
</sap:WorkflowViewStateService.ViewState>
|
|
||||||
<ForEach x:TypeArguments="mtbwa:PlatformConfiguration" DisplayName="For Each Configuration in BuildSettings.PlatformConfigurations" sap:VirtualizedContainerService.HintSize="1230,4003" mtbwt:BuildTrackingParticipant.Importance="Low" Values="[BuildSettings.PlatformConfigurations]">
|
|
||||||
<ActivityAction x:TypeArguments="mtbwa:PlatformConfiguration">
|
|
||||||
<ActivityAction.Argument>
|
|
||||||
<DelegateInArgument x:TypeArguments="mtbwa:PlatformConfiguration" Name="platformConfiguration" />
|
|
||||||
</ActivityAction.Argument>
|
|
||||||
<Sequence DisplayName="Compile and Test for Configuration" sap:VirtualizedContainerService.HintSize="1200,3900" mtbwt:BuildTrackingParticipant.Importance="Low">
|
|
||||||
<Sequence.Variables>
|
|
||||||
<Variable x:TypeArguments="x:String" Name="outputDirectory" />
|
|
||||||
<Variable x:TypeArguments="x:String" Name="logFileDropLocation" />
|
|
||||||
</Sequence.Variables>
|
|
||||||
<sap:WorkflowViewStateService.ViewState>
|
|
||||||
<scg:Dictionary x:TypeArguments="x:String, x:Object">
|
|
||||||
<x:Boolean x:Key="IsExpanded">True</x:Boolean>
|
|
||||||
</scg:Dictionary>
|
|
||||||
</sap:WorkflowViewStateService.ViewState>
|
|
||||||
<Sequence DisplayName="Initialize Variables" sap:VirtualizedContainerService.HintSize="1178,387" mtbwt:BuildTrackingParticipant.Importance="Low">
|
|
||||||
<sap:WorkflowViewStateService.ViewState>
|
|
||||||
<scg:Dictionary x:TypeArguments="x:String, x:Object">
|
|
||||||
<x:Boolean x:Key="IsExpanded">True</x:Boolean>
|
|
||||||
</scg:Dictionary>
|
|
||||||
</sap:WorkflowViewStateService.ViewState>
|
|
||||||
<Assign x:TypeArguments="x:String" DisplayName="Initialize OutputDirectory" sap:VirtualizedContainerService.HintSize="464,22" mtbwt:BuildTrackingParticipant.Importance="Low" To="[outputDirectory]" Value="[If (platformConfiguration.IsEmpty Or BuildSettings.PlatformConfigurations.Count = 1, BinariesDirectory, If (platformConfiguration.IsPlatformEmptyOrAnyCpu, BinariesDirectory + "\" + platformConfiguration.Configuration, BinariesDirectory + "\" + platformConfiguration.Platform + "\" + platformConfiguration.Configuration))]" />
|
|
||||||
<If Condition="[Not String.IsNullOrEmpty(BuildDetail.DropLocation)]" DisplayName="If DropLocation is Set" sap:VirtualizedContainerService.HintSize="464,201" mtbwt:BuildTrackingParticipant.Importance="Low">
|
|
||||||
<If.Then>
|
|
||||||
<Assign x:TypeArguments="x:String" DisplayName="Initialize LogFile Drop Location" sap:VirtualizedContainerService.HintSize="269,100" mtbwt:BuildTrackingParticipant.Importance="Low" To="[logFileDropLocation]" Value="[If (platformConfiguration.IsEmpty Or BuildSettings.PlatformConfigurations.Count = 1, BuildDetail.DropLocation + "\logs", If (platformConfiguration.IsPlatformEmptyOrAnyCpu, BuildDetail.DropLocation + "\logs\" + platformConfiguration.Configuration, BuildDetail.DropLocation + "\logs\" + platformConfiguration.Platform + "\" + platformConfiguration.Configuration))]" />
|
|
||||||
</If.Then>
|
|
||||||
</If>
|
|
||||||
</Sequence>
|
|
||||||
<If Condition="[BuildSettings.HasProjectsToBuild]" DisplayName="If BuildSettings.HasProjectsToBuild" sap:VirtualizedContainerService.HintSize="1178,1379" mtbwt:BuildTrackingParticipant.Importance="Low">
|
|
||||||
<If.Then>
|
|
||||||
<ForEach x:TypeArguments="x:String" DisplayName="For Each Project in BuildSettings.ProjectsToBuild" sap:VirtualizedContainerService.HintSize="536,1278" mtbwt:BuildTrackingParticipant.Importance="Low" Values="[BuildSettings.ProjectsToBuild]">
|
|
||||||
<ActivityAction x:TypeArguments="x:String">
|
|
||||||
<ActivityAction.Argument>
|
|
||||||
<DelegateInArgument x:TypeArguments="x:String" Name="serverBuildProjectItem" />
|
|
||||||
</ActivityAction.Argument>
|
|
||||||
<TryCatch DisplayName="Try to Compile the Project" sap:VirtualizedContainerService.HintSize="506,1175" mtbwt:BuildTrackingParticipant.Importance="Low">
|
|
||||||
<TryCatch.Try>
|
|
||||||
<Sequence DisplayName="Compile the Project" sap:VirtualizedContainerService.HintSize="488,387" mtbwt:BuildTrackingParticipant.Importance="Low">
|
|
||||||
<Sequence.Variables>
|
|
||||||
<Variable x:TypeArguments="x:String" Name="localProject" />
|
|
||||||
</Sequence.Variables>
|
|
||||||
<sap:WorkflowViewStateService.ViewState>
|
|
||||||
<scg:Dictionary x:TypeArguments="x:String, x:Object">
|
|
||||||
<x:Boolean x:Key="IsExpanded">True</x:Boolean>
|
|
||||||
</scg:Dictionary>
|
|
||||||
</sap:WorkflowViewStateService.ViewState>
|
|
||||||
<mtbwa:ConvertWorkspaceItem DisplayName="Convert Server Path to Local Path" sap:VirtualizedContainerService.HintSize="464,22" mtbwt:BuildTrackingParticipant.Importance="Low" Input="[serverBuildProjectItem]" Result="[localProject]" Workspace="[Workspace]" />
|
|
||||||
<If Condition="[Not System.IO.File.Exists(localProject)]" DisplayName="If Local File Doesn't Exist" sap:VirtualizedContainerService.HintSize="464,201">
|
|
||||||
<If.Then>
|
|
||||||
<Throw DisplayName="Throw FileNotFoundException" Exception="[New System.IO.FileNotFoundException(String.Format("The file {0} could not be found.", localProject), localProject)]" sap:VirtualizedContainerService.HintSize="219,100" />
|
|
||||||
</If.Then>
|
|
||||||
<If.Else>
|
|
||||||
<mtbwa:MSBuild CommandLineArguments="[String.Format("/p:SkipInvalidConfigurations=true {0}", MSBuildArguments)]" Configuration="[platformConfiguration.Configuration]" DisplayName="Run MSBuild for Project" GenerateVSPropsFile="[True]" sap:VirtualizedContainerService.HintSize="220,100" LogFileDropLocation="[logFileDropLocation]" OutDir="[outputDirectory]" Platform="[platformConfiguration.Platform]" Project="[localProject]" RunCodeAnalysis="[RunCodeAnalysis]" TargetsNotLogged="[New String() {"GetNativeManifest", "GetCopyToOutputDirectoryItems", "GetTargetPath"}]" ToolPlatform="[MSBuildPlatform]" Verbosity="[Verbosity]" />
|
|
||||||
</If.Else>
|
|
||||||
</If>
|
|
||||||
</Sequence>
|
|
||||||
</TryCatch.Try>
|
|
||||||
<TryCatch.Catches>
|
|
||||||
<Catch x:TypeArguments="s:Exception" sap:VirtualizedContainerService.HintSize="492,526">
|
|
||||||
<sap:WorkflowViewStateService.ViewState>
|
|
||||||
<scg:Dictionary x:TypeArguments="x:String, x:Object">
|
|
||||||
<x:Boolean x:Key="IsExpanded">False</x:Boolean>
|
|
||||||
</scg:Dictionary>
|
|
||||||
</sap:WorkflowViewStateService.ViewState>
|
|
||||||
<ActivityAction x:TypeArguments="s:Exception">
|
|
||||||
<ActivityAction.Argument>
|
|
||||||
<DelegateInArgument x:TypeArguments="s:Exception" Name="ex" />
|
|
||||||
</ActivityAction.Argument>
|
|
||||||
<Sequence DisplayName="Handle Exception" sap:VirtualizedContainerService.HintSize="486,495">
|
|
||||||
<sap:WorkflowViewStateService.ViewState>
|
|
||||||
<scg:Dictionary x:TypeArguments="x:String, x:Object">
|
|
||||||
<x:Boolean x:Key="IsExpanded">True</x:Boolean>
|
|
||||||
</scg:Dictionary>
|
|
||||||
</sap:WorkflowViewStateService.ViewState>
|
|
||||||
<mtbwa:SetBuildProperties CompilationStatus="[Microsoft.TeamFoundation.Build.Client.BuildPhaseStatus.Failed]" DisplayName="Set CompilationStatus to Failed" sap:VirtualizedContainerService.HintSize="464,22" mtbwt:BuildTrackingParticipant.Importance="Low" PropertiesToSet="CompilationStatus" />
|
|
||||||
<If Condition="[CreateWorkItem]" DisplayName="If CreateWorkItem" sap:VirtualizedContainerService.HintSize="464,247" mtbwt:BuildTrackingParticipant.Importance="Low">
|
|
||||||
<If.Then>
|
|
||||||
<mtbwa:InvokeForReason DisplayName="Create Work Item for non-Shelveset Builds" sap:VirtualizedContainerService.HintSize="281,146" Reason="Manual, IndividualCI, BatchedCI, Schedule, ScheduleForced, UserCreated">
|
|
||||||
<mtbwa:OpenWorkItem AssignedTo="[BuildDetail.RequestedFor]" Comment="["This work item was created by TFS Build on a build failure."]" CustomFields="[New Dictionary(Of String, String) From { {"System.Reason", "Build Failure"}, {"Microsoft.VSTS.TCM.ReproSteps", "Start the build using TFS Build"}, {"Priority", "1"}, {"Severity", "1 - Critical"} }]" DisplayName="Create Work Item" sap:VirtualizedContainerService.HintSize="200,22" Title="[String.Format("Build Failure in Build: {0}", BuildDetail.BuildNumber)]" Type="["Bug"]" />
|
|
||||||
</mtbwa:InvokeForReason>
|
|
||||||
</If.Then>
|
|
||||||
</If>
|
|
||||||
<Rethrow DisplayName="Rethrow the exception so the build will stop" sap:VirtualizedContainerService.HintSize="464,22" mtbwt:BuildTrackingParticipant.Importance="Low" />
|
|
||||||
</Sequence>
|
|
||||||
</ActivityAction>
|
|
||||||
</Catch>
|
|
||||||
</TryCatch.Catches>
|
|
||||||
</TryCatch>
|
|
||||||
</ActivityAction>
|
|
||||||
</ForEach>
|
|
||||||
</If.Then>
|
|
||||||
</If>
|
|
||||||
<If Condition="[Not DisableTests]" DisplayName="If Not DisableTests" sap:VirtualizedContainerService.HintSize="1178,1930" mtbwt:BuildTrackingParticipant.Importance="Low">
|
|
||||||
<If.Then>
|
|
||||||
<Sequence DisplayName="Run Tests" sap:VirtualizedContainerService.HintSize="1053,1829" mtbwt:BuildTrackingParticipant.Importance="Low">
|
|
||||||
<sap:WorkflowViewStateService.ViewState>
|
|
||||||
<scg:Dictionary x:TypeArguments="x:String, x:Object">
|
|
||||||
<x:Boolean x:Key="IsExpanded">True</x:Boolean>
|
|
||||||
</scg:Dictionary>
|
|
||||||
</sap:WorkflowViewStateService.ViewState>
|
|
||||||
<If Condition="[Not TestSpecs Is Nothing]" DisplayName="If Not TestSpecs Is Nothing" sap:VirtualizedContainerService.HintSize="1031,1705" mtbwt:BuildTrackingParticipant.Importance="Low">
|
|
||||||
<If.Then>
|
|
||||||
<ForEach x:TypeArguments="mtbwa:TestSpec" DisplayName="For Each TestSpec in TestSpecs" sap:VirtualizedContainerService.HintSize="906,1604" mtbwt:BuildTrackingParticipant.Importance="Low" Values="[TestSpecs]">
|
|
||||||
<ActivityAction x:TypeArguments="mtbwa:TestSpec">
|
|
||||||
<ActivityAction.Argument>
|
|
||||||
<DelegateInArgument x:TypeArguments="mtbwa:TestSpec" Name="spec" />
|
|
||||||
</ActivityAction.Argument>
|
|
||||||
<TryCatch DisplayName="Try Run Tests" sap:VirtualizedContainerService.HintSize="876,1501" mtbwt:BuildTrackingParticipant.Importance="Low">
|
|
||||||
<TryCatch.Try>
|
|
||||||
<If Condition="[TypeOf spec Is Microsoft.TeamFoundation.Build.Workflow.Activities.TestMetadataFileSpec]" DisplayName="If spec Is TestMetadataFileSpec" sap:VirtualizedContainerService.HintSize="858,759" mtbwt:BuildTrackingParticipant.Importance="None">
|
|
||||||
<If.Then>
|
|
||||||
<Sequence DisplayName="Run MSTest for Metadata File" sap:VirtualizedContainerService.HintSize="222,658">
|
|
||||||
<Sequence.Variables>
|
|
||||||
<Variable x:TypeArguments="mtbwa:TestMetadataFileSpec" Name="testMetadataFile" />
|
|
||||||
<Variable x:TypeArguments="x:String" Name="localTestMetadata" />
|
|
||||||
</Sequence.Variables>
|
|
||||||
<sap:WorkflowViewStateService.ViewState>
|
|
||||||
<scg:Dictionary x:TypeArguments="x:String, x:Object">
|
|
||||||
<x:Boolean x:Key="IsExpanded">True</x:Boolean>
|
|
||||||
</scg:Dictionary>
|
|
||||||
</sap:WorkflowViewStateService.ViewState>
|
|
||||||
<Assign x:TypeArguments="mtbwa:TestMetadataFileSpec" DisplayName="Assign spec to testMetadataFile" sap:VirtualizedContainerService.HintSize="200,22" mtbwt:BuildTrackingParticipant.Importance="Low" To="[testMetadataFile]" Value="[DirectCast(spec, Microsoft.TeamFoundation.Build.Workflow.Activities.TestMetadataFileSpec)]" />
|
|
||||||
<mtbwa:ConvertWorkspaceItem DisplayName="Convert Server Path to Local Path" sap:VirtualizedContainerService.HintSize="200,22" mtbwt:BuildTrackingParticipant.Importance="Low" Input="[testMetadataFile.MetadataFileName]" Result="[localTestMetadata]" Workspace="[Workspace]" />
|
|
||||||
<mtbwa:MSTest Category="[testMetadataFile.CategoryFilter]" CommandLineArguments="[testMetadataFile.MSTestCommandLineArgs]" DisplayName="Run MSTest for Metadata File" Flavor="[platformConfiguration.Configuration]" sap:VirtualizedContainerService.HintSize="200,22" MaxPriority="[testMetadataFile.MaximumPriority]" MinPriority="[testMetadataFile.MinimumPriority]" PathToResultsFilesRoot="[TestResultsDirectory]" Platform="[platformConfiguration.Platform]" SearchPathRoot="[outputDirectory]" TestLists="[testMetadataFile.TestLists]" TestMetadata="[localTestMetadata]" TestSettings="[String.Empty]" />
|
|
||||||
</Sequence>
|
|
||||||
</If.Then>
|
|
||||||
<If.Else>
|
|
||||||
<Sequence DisplayName="Run MSTest for Test Assemblies" sap:VirtualizedContainerService.HintSize="611,658" mtbwt:BuildTrackingParticipant.Importance="Low">
|
|
||||||
<Sequence.Variables>
|
|
||||||
<Variable x:TypeArguments="mtbwa:TestAssemblySpec" Name="testAssembly" />
|
|
||||||
<Variable x:TypeArguments="scg:IEnumerable(x:String)" Name="testAssemblies" />
|
|
||||||
<Variable x:TypeArguments="x:String" Default="[String.Empty]" Name="testFlavor" />
|
|
||||||
<Variable x:TypeArguments="x:String" Default="[String.Empty]" Name="testPlatform" />
|
|
||||||
</Sequence.Variables>
|
|
||||||
<sap:WorkflowViewStateService.ViewState>
|
|
||||||
<scg:Dictionary x:TypeArguments="x:String, x:Object">
|
|
||||||
<x:Boolean x:Key="IsExpanded">True</x:Boolean>
|
|
||||||
</scg:Dictionary>
|
|
||||||
</sap:WorkflowViewStateService.ViewState>
|
|
||||||
<Assign x:TypeArguments="mtbwa:TestAssemblySpec" DisplayName="Assign spec to testAssembly" sap:VirtualizedContainerService.HintSize="589,22" mtbwt:BuildTrackingParticipant.Importance="Low" To="[testAssembly]" Value="[DirectCast(spec, Microsoft.TeamFoundation.Build.Workflow.Activities.TestAssemblySpec)]" />
|
|
||||||
<mtbwa:FindMatchingFiles DisplayName="Find Test Assemblies" sap:VirtualizedContainerService.HintSize="589,22" mtbwt:BuildTrackingParticipant.Importance="Low" MatchPattern="[String.Format("{0}\{1}", outputDirectory, testAssembly.AssemblyFileSpec)]" Result="[testAssemblies]" />
|
|
||||||
<If Condition="[testAssemblies.Count() > 0]" DisplayName="If Test Assemblies Found" sap:VirtualizedContainerService.HintSize="589,410" mtbwt:BuildTrackingParticipant.Importance="Low">
|
|
||||||
<If.Then>
|
|
||||||
<If Condition="[testAssembly.HasTestSettingsFile]" DisplayName="If testAssembly.HasTestSettingsFile" sap:VirtualizedContainerService.HintSize="464,309" mtbwt:BuildTrackingParticipant.Importance="Low">
|
|
||||||
<If.Then>
|
|
||||||
<Sequence DisplayName="Find Test Settings File And Run MSTest" sap:VirtualizedContainerService.HintSize="231,208" mtbwt:BuildTrackingParticipant.Importance="Low">
|
|
||||||
<Sequence.Variables>
|
|
||||||
<Variable x:TypeArguments="x:String" Name="localTestSettings" />
|
|
||||||
</Sequence.Variables>
|
|
||||||
<sap:WorkflowViewStateService.ViewState>
|
|
||||||
<scg:Dictionary x:TypeArguments="x:String, x:Object">
|
|
||||||
<x:Boolean x:Key="IsExpanded">True</x:Boolean>
|
|
||||||
</scg:Dictionary>
|
|
||||||
</sap:WorkflowViewStateService.ViewState>
|
|
||||||
<mtbwa:ConvertWorkspaceItem DisplayName="Convert Server Path to Local Path" sap:VirtualizedContainerService.HintSize="200,22" mtbwt:BuildTrackingParticipant.Importance="Low" Input="[testAssembly.TestSettingsFileName]" Result="[localTestSettings]" Workspace="[Workspace]" />
|
|
||||||
<mtbwa:MSTest Category="[testAssembly.CategoryFilter]" CommandLineArguments="[testAssembly.MSTestCommandLineArgs]" DisplayName="Run MSTest for Test Assemblies" Flavor="[platformConfiguration.Configuration]" sap:VirtualizedContainerService.HintSize="200,22" MaxPriority="[testAssembly.MaximumPriority]" MinPriority="[testAssembly.MinimumPriority]" PathToResultsFilesRoot="[TestResultsDirectory]" Platform="[platformConfiguration.Platform]" SearchPathRoot="[outputDirectory]" TestContainers="[testAssemblies]" TestSettings="[localTestSettings]" />
|
|
||||||
</Sequence>
|
|
||||||
</If.Then>
|
|
||||||
<If.Else>
|
|
||||||
<mtbwa:MSTest Category="[testAssembly.CategoryFilter]" CommandLineArguments="[testAssembly.MSTestCommandLineArgs]" DisplayName="Run MSTest for Test Assemblies" Flavor="[platformConfiguration.Configuration]" sap:VirtualizedContainerService.HintSize="208,208" MaxPriority="[testAssembly.MaximumPriority]" MinPriority="[testAssembly.MinimumPriority]" PathToResultsFilesRoot="[TestResultsDirectory]" Platform="[platformConfiguration.Platform]" SearchPathRoot="[outputDirectory]" TestContainers="[testAssemblies]" />
|
|
||||||
</If.Else>
|
|
||||||
</If>
|
|
||||||
</If.Then>
|
|
||||||
</If>
|
|
||||||
</Sequence>
|
|
||||||
</If.Else>
|
|
||||||
</If>
|
|
||||||
</TryCatch.Try>
|
|
||||||
<TryCatch.Catches>
|
|
||||||
<Catch x:TypeArguments="s:Exception" sap:VirtualizedContainerService.HintSize="862,480">
|
|
||||||
<sap:WorkflowViewStateService.ViewState>
|
|
||||||
<scg:Dictionary x:TypeArguments="x:String, x:Object">
|
|
||||||
<x:Boolean x:Key="IsExpanded">False</x:Boolean>
|
|
||||||
</scg:Dictionary>
|
|
||||||
</sap:WorkflowViewStateService.ViewState>
|
|
||||||
<ActivityAction x:TypeArguments="s:Exception">
|
|
||||||
<ActivityAction.Argument>
|
|
||||||
<DelegateInArgument x:TypeArguments="s:Exception" Name="testException" />
|
|
||||||
</ActivityAction.Argument>
|
|
||||||
<Sequence DisplayName="Handle MSTest Exception" sap:VirtualizedContainerService.HintSize="856,449">
|
|
||||||
<sap:WorkflowViewStateService.ViewState>
|
|
||||||
<scg:Dictionary x:TypeArguments="x:String, x:Object">
|
|
||||||
<x:Boolean x:Key="IsExpanded">True</x:Boolean>
|
|
||||||
</scg:Dictionary>
|
|
||||||
</sap:WorkflowViewStateService.ViewState>
|
|
||||||
<If Condition="[Not (TypeOf testException Is Microsoft.TeamFoundation.Build.Workflow.Activities.TestFailureException)]" DisplayName="If testException is NOT TestFailureException" mtbwt:BuildTrackingParticipant.Importance="Low">
|
|
||||||
<If.Then>
|
|
||||||
<mtbwa:WriteBuildError DisplayName="Write Test Failure Exception message" Message="[testException.Message]" />
|
|
||||||
</If.Then>
|
|
||||||
</If>
|
|
||||||
<mtbwa:SetBuildProperties DisplayName="Set TestStatus to Failed" sap:VirtualizedContainerService.HintSize="464,22" mtbwt:BuildTrackingParticipant.Importance="Low" PropertiesToSet="TestStatus" TestStatus="[Microsoft.TeamFoundation.Build.Client.BuildPhaseStatus.Failed]" />
|
|
||||||
<If Condition="[spec.FailBuildOnFailure]" DisplayName="If spec.FailBuildOnFailure" sap:VirtualizedContainerService.HintSize="464,201" mtbwt:BuildTrackingParticipant.Importance="Low">
|
|
||||||
<If.Then>
|
|
||||||
<Assign x:TypeArguments="x:Boolean" DisplayName="Set treatTestFailureAsBuildFailure to True" sap:VirtualizedContainerService.HintSize="269,100" mtbwt:BuildTrackingParticipant.Importance="Low" To="[treatTestFailureAsBuildFailure]" Value="[True]" />
|
|
||||||
</If.Then>
|
|
||||||
</If>
|
|
||||||
</Sequence>
|
|
||||||
</ActivityAction>
|
|
||||||
</Catch>
|
|
||||||
</TryCatch.Catches>
|
|
||||||
</TryCatch>
|
|
||||||
</ActivityAction>
|
|
||||||
</ForEach>
|
|
||||||
</If.Then>
|
|
||||||
</If>
|
|
||||||
</Sequence>
|
|
||||||
</If.Then>
|
|
||||||
</If>
|
|
||||||
</Sequence>
|
|
||||||
</ActivityAction>
|
|
||||||
</ForEach>
|
|
||||||
<If Condition="[BuildDetail.CompilationStatus = Microsoft.TeamFoundation.Build.Client.BuildPhaseStatus.Unknown]" DisplayName="If CompilationStatus = Unknown" sap:VirtualizedContainerService.HintSize="1230,201" mtbwt:BuildTrackingParticipant.Importance="Low">
|
|
||||||
<If.Then>
|
|
||||||
<mtbwa:SetBuildProperties CompilationStatus="[Microsoft.TeamFoundation.Build.Client.BuildPhaseStatus.Succeeded]" DisplayName="Set CompilationStatus to Succeeded" sap:VirtualizedContainerService.HintSize="269,100" mtbwt:BuildTrackingParticipant.Importance="Low" PropertiesToSet="CompilationStatus" />
|
|
||||||
</If.Then>
|
|
||||||
</If>
|
|
||||||
<If Condition="[BuildDetail.TestStatus = Microsoft.TeamFoundation.Build.Client.BuildPhaseStatus.Unknown]" DisplayName="If TestStatus = Unknown" sap:VirtualizedContainerService.HintSize="1230,201" mtbwt:BuildTrackingParticipant.Importance="Low">
|
|
||||||
<If.Then>
|
|
||||||
<mtbwa:SetBuildProperties DisplayName="Set TestStatus to Succeeded" sap:VirtualizedContainerService.HintSize="269,100" mtbwt:BuildTrackingParticipant.Importance="Low" PropertiesToSet="TestStatus" TestStatus="[Microsoft.TeamFoundation.Build.Client.BuildPhaseStatus.Succeeded]" />
|
|
||||||
</If.Then>
|
|
||||||
</If>
|
|
||||||
<If Condition="[treatTestFailureAsBuildFailure And (BuildDetail.TestStatus = Microsoft.TeamFoundation.Build.Client.BuildPhaseStatus.Failed)]" DisplayName="If TreatTestFailureAsBuildFailure And (TestStatus = Failed)" sap:VirtualizedContainerService.HintSize="1230,201" mtbwt:BuildTrackingParticipant.Importance="Low">
|
|
||||||
<If.Then>
|
|
||||||
<mtbwa:SetBuildProperties DisplayName="Set Status to Failed" sap:VirtualizedContainerService.HintSize="269,100" mtbwt:BuildTrackingParticipant.Importance="Low" PropertiesToSet="Status" Status="[Microsoft.TeamFoundation.Build.Client.BuildStatus.Failed]" />
|
|
||||||
</If.Then>
|
|
||||||
</If>
|
|
||||||
</Sequence>
|
|
||||||
</TryCatch.Try>
|
|
||||||
<TryCatch.Catches>
|
|
||||||
<Catch x:TypeArguments="s:Exception" sap:VirtualizedContainerService.HintSize="1256,106">
|
|
||||||
<sap:WorkflowViewStateService.ViewState>
|
|
||||||
<scg:Dictionary x:TypeArguments="x:String, x:Object">
|
|
||||||
<x:Boolean x:Key="IsExpanded">False</x:Boolean>
|
|
||||||
</scg:Dictionary>
|
|
||||||
</sap:WorkflowViewStateService.ViewState>
|
|
||||||
<ActivityAction x:TypeArguments="s:Exception">
|
|
||||||
<ActivityAction.Argument>
|
|
||||||
<DelegateInArgument x:TypeArguments="s:Exception" Name="compilationExceptionArgument" />
|
|
||||||
</ActivityAction.Argument>
|
|
||||||
<Assign x:TypeArguments="s:Exception" DisplayName="Save the Compilation Exception" sap:VirtualizedContainerService.HintSize="1250,75" mtbwt:BuildTrackingParticipant.Importance="None" To="[compilationException]" Value="[compilationExceptionArgument]" />
|
|
||||||
</ActivityAction>
|
|
||||||
</Catch>
|
|
||||||
</TryCatch.Catches>
|
|
||||||
</TryCatch>
|
|
||||||
<If Condition="[AssociateChangesetsAndWorkItems]" DisplayName="If AssociateChangesetsAndWorkItems" sap:VirtualizedContainerService.HintSize="464,5218" mtbwt:BuildTrackingParticipant.Importance="Low">
|
|
||||||
<If.Then>
|
|
||||||
<mtbwa:InvokeForReason DisplayName="Associate Changesets and Work Items for non-Shelveset Builds" sap:VirtualizedContainerService.HintSize="281,146" Reason="Manual, IndividualCI, BatchedCI, Schedule, ScheduleForced, UserCreated">
|
|
||||||
<mtbwa:AssociateChangesetsAndWorkItems DisplayName="Associate Changesets and Work Items" Result="[associatedChangesets]" />
|
|
||||||
</mtbwa:InvokeForReason>
|
|
||||||
</If.Then>
|
|
||||||
</If>
|
|
||||||
</Parallel>
|
|
||||||
<If Condition="[Not compilationException Is Nothing]" DisplayName="If a Compilation Exception Occurred" sap:VirtualizedContainerService.HintSize="1888,201" mtbwt:BuildTrackingParticipant.Importance="Low">
|
|
||||||
<If.Then>
|
|
||||||
<Throw DisplayName="Rethrow Compilation Exception" Exception="[compilationException]" sap:VirtualizedContainerService.HintSize="269,100" mtbwt:BuildTrackingParticipant.Importance="Low" />
|
|
||||||
</If.Then>
|
|
||||||
</If>
|
|
||||||
<Parallel DisplayName="Get Impacted Tests, Index Sources and Publish Symbols" sap:VirtualizedContainerService.HintSize="1888,1557">
|
|
||||||
<If Condition="[PerformTestImpactAnalysis]" DisplayName="If PerformTestImpactAnalysis" sap:VirtualizedContainerService.HintSize="464,1511" mtbwt:BuildTrackingParticipant.Importance="Low">
|
|
||||||
<If.Then>
|
|
||||||
<Sequence DisplayName="Get Impacted Tests" sap:VirtualizedContainerService.HintSize="281,208" mtbwt:BuildTrackingParticipant.Importance="Low">
|
|
||||||
<Sequence.Variables>
|
|
||||||
<Variable x:TypeArguments="scg:IEnumerable(x:String)" Name="assemblies" />
|
|
||||||
</Sequence.Variables>
|
|
||||||
<sap:WorkflowViewStateService.ViewState>
|
|
||||||
<scg:Dictionary x:TypeArguments="x:String, x:Object">
|
|
||||||
<x:Boolean x:Key="IsExpanded">True</x:Boolean>
|
|
||||||
</scg:Dictionary>
|
|
||||||
</sap:WorkflowViewStateService.ViewState>
|
|
||||||
<mtbwa:FindMatchingFiles DisplayName="Find Build Outputs" sap:VirtualizedContainerService.HintSize="200,22" mtbwt:BuildTrackingParticipant.Importance="Low" MatchPattern="[String.Format("{0}\**\*.dll;{0}\**\*.exe", BinariesDirectory)]" Result="[assemblies]" />
|
|
||||||
<mttbb:GetImpactedTests Assemblies="[assemblies]" AssociatedChangesets="[associatedChangesets]" BinariesRoot="[BinariesDirectory]" Build="[BuildDetail]" CodeChanges="{x:Null}" DisplayName="Get Impacted Tests" ImpactedTests="{x:Null}" Workspace="[Workspace]" />
|
|
||||||
</Sequence>
|
|
||||||
</If.Then>
|
|
||||||
</If>
|
|
||||||
<If Condition="[SourceAndSymbolServerSettings.IndexSources Or SourceAndSymbolServerSettings.HasSymbolStorePath]" DisplayName="If SourceAndSymbolServerSettings.IndexSources Or SourceAndSymbolServerSettings.HasSymbolStorePath" sap:VirtualizedContainerService.HintSize="690,1511" mtbwt:BuildTrackingParticipant.Importance="Low">
|
|
||||||
<If.Then>
|
|
||||||
<mtbwa:InvokeForReason DisplayName="Index Sources and Publish Symbols for Triggered Builds" sap:VirtualizedContainerService.HintSize="565,1410" Reason="Triggered">
|
|
||||||
<mtbwa:InvokeForReason.Variables>
|
|
||||||
<Variable x:TypeArguments="scg:IEnumerable(x:String)" Name="symbolFiles" />
|
|
||||||
</mtbwa:InvokeForReason.Variables>
|
|
||||||
<mtbwa:FindMatchingFiles DisplayName="Find Symbol Files" sap:VirtualizedContainerService.HintSize="543,22" mtbwt:BuildTrackingParticipant.Importance="Low" MatchPattern="[String.Format("{0}\**\*.pdb", BinariesDirectory)]" Result="[symbolFiles]" />
|
|
||||||
<If Condition="[SourceAndSymbolServerSettings.IndexSources]" DisplayName="If SourceAndSymbolServerSettings.IndexSources" sap:VirtualizedContainerService.HintSize="543,569" mtbwt:BuildTrackingParticipant.Importance="Low">
|
|
||||||
<If.Then>
|
|
||||||
<TryCatch DisplayName="Try Index Sources" sap:VirtualizedContainerService.HintSize="418,468" mtbwt:BuildTrackingParticipant.Importance="Low">
|
|
||||||
<TryCatch.Try>
|
|
||||||
<mtbwa:IndexSources DisplayName="Index Sources" FileList="[symbolFiles]" sap:VirtualizedContainerService.HintSize="400,100" />
|
|
||||||
</TryCatch.Try>
|
|
||||||
<TryCatch.Catches>
|
|
||||||
<Catch x:TypeArguments="s:Exception" sap:VirtualizedContainerService.HintSize="404,106">
|
|
||||||
<sap:WorkflowViewStateService.ViewState>
|
|
||||||
<scg:Dictionary x:TypeArguments="x:String, x:Object">
|
|
||||||
<x:Boolean x:Key="IsExpanded">False</x:Boolean>
|
|
||||||
</scg:Dictionary>
|
|
||||||
</sap:WorkflowViewStateService.ViewState>
|
|
||||||
<ActivityAction x:TypeArguments="s:Exception">
|
|
||||||
<ActivityAction.Argument>
|
|
||||||
<DelegateInArgument x:TypeArguments="s:Exception" Name="exception" />
|
|
||||||
</ActivityAction.Argument>
|
|
||||||
<mtbwa:WriteBuildError sap:VirtualizedContainerService.HintSize="398,75" Message="[exception.Message]" />
|
|
||||||
</ActivityAction>
|
|
||||||
</Catch>
|
|
||||||
</TryCatch.Catches>
|
|
||||||
</TryCatch>
|
|
||||||
</If.Then>
|
|
||||||
</If>
|
|
||||||
<If Condition="[SourceAndSymbolServerSettings.HasSymbolStorePath]" DisplayName="If SourceAndSymbolServerSettings.HasSymbolStorePath" sap:VirtualizedContainerService.HintSize="543,615" mtbwt:BuildTrackingParticipant.Importance="Low">
|
|
||||||
<If.Then>
|
|
||||||
<TryCatch DisplayName="Try Publish Symbols" sap:VirtualizedContainerService.HintSize="418,514" mtbwt:BuildTrackingParticipant.Importance="Low">
|
|
||||||
<TryCatch.Try>
|
|
||||||
<mtbwa:SharedResourceScope DisplayName="Synchronize Access to Symbol Store" sap:VirtualizedContainerService.HintSize="400,146" mtbwt:BuildTrackingParticipant.Importance="Low" MaxExecutionTime="[TimeSpan.Zero]" MaxWaitTime="[New TimeSpan(1, 0, 0)]" ResourceName="[SourceAndSymbolServerSettings.SymbolStorePath]">
|
|
||||||
<mtbwa:PublishSymbols DisplayName="Publish Symbols" FileList="[symbolFiles]" sap:VirtualizedContainerService.HintSize="200,22" ProductName="[BuildDetail.BuildDefinition.Name]" StorePath="[SourceAndSymbolServerSettings.SymbolStorePath]" Version="[BuildDetail.BuildNumber]" />
|
|
||||||
</mtbwa:SharedResourceScope>
|
|
||||||
</TryCatch.Try>
|
|
||||||
<TryCatch.Catches>
|
|
||||||
<Catch x:TypeArguments="s:Exception" sap:VirtualizedContainerService.HintSize="404,106">
|
|
||||||
<sap:WorkflowViewStateService.ViewState>
|
|
||||||
<scg:Dictionary x:TypeArguments="x:String, x:Object">
|
|
||||||
<x:Boolean x:Key="IsExpanded">False</x:Boolean>
|
|
||||||
</scg:Dictionary>
|
|
||||||
</sap:WorkflowViewStateService.ViewState>
|
|
||||||
<ActivityAction x:TypeArguments="s:Exception">
|
|
||||||
<ActivityAction.Argument>
|
|
||||||
<DelegateInArgument x:TypeArguments="s:Exception" Name="exception" />
|
|
||||||
</ActivityAction.Argument>
|
|
||||||
<mtbwa:WriteBuildError sap:VirtualizedContainerService.HintSize="398,75" Message="[exception.Message]" />
|
|
||||||
</ActivityAction>
|
|
||||||
</Catch>
|
|
||||||
</TryCatch.Catches>
|
|
||||||
</TryCatch>
|
|
||||||
</If.Then>
|
|
||||||
</If>
|
|
||||||
</mtbwa:InvokeForReason>
|
|
||||||
</If.Then>
|
|
||||||
</If>
|
|
||||||
</Parallel>
|
|
||||||
</Sequence>
|
|
||||||
</TryCatch.Try>
|
|
||||||
</TryCatch>
|
|
||||||
</mtbwa:AgentScope>
|
|
||||||
<mtbwa:InvokeForReason DisplayName="Check In Gated Changes for CheckInShelveset Builds" sap:VirtualizedContainerService.HintSize="1950,146" Reason="CheckInShelveset">
|
|
||||||
<mtbwa:CheckInGatedChanges DisplayName="Check In Gated Changes" sap:VirtualizedContainerService.HintSize="200,22" />
|
|
||||||
</mtbwa:InvokeForReason>
|
|
||||||
</Sequence>
|
|
||||||
</Activity>
|
|
|
@ -1,76 +0,0 @@
|
||||||
<Activity mc:Ignorable="sad" x:Class="TfsBuild.Process" xmlns="http://schemas.microsoft.com/netfx/2009/xaml/activities" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:mtbc="clr-namespace:Microsoft.TeamFoundation.Build.Client;assembly=Microsoft.TeamFoundation.Build.Client" xmlns:mtbw="clr-namespace:Microsoft.TeamFoundation.Build.Workflow;assembly=Microsoft.TeamFoundation.Build.Workflow" xmlns:mtbwa="clr-namespace:Microsoft.TeamFoundation.Build.Workflow.Activities;assembly=Microsoft.TeamFoundation.Build.Workflow" xmlns:mtbwt="clr-namespace:Microsoft.TeamFoundation.Build.Workflow.Tracking;assembly=Microsoft.TeamFoundation.Build.Workflow" xmlns:mtvc="clr-namespace:Microsoft.TeamFoundation.VersionControl.Client;assembly=Microsoft.TeamFoundation.VersionControl.Client" xmlns:mva="clr-namespace:Microsoft.VisualBasic.Activities;assembly=System.Activities" xmlns:s="clr-namespace:System;assembly=mscorlib" xmlns:sad="http://schemas.microsoft.com/netfx/2009/xaml/activities/presentation" xmlns:sad1="clr-namespace:System.Activities.Debugger;assembly=System.Activities" xmlns:scg="clr-namespace:System.Collections.Generic;assembly=mscorlib" xmlns:this="clr-namespace:TfsBuild;" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
|
|
||||||
<x:Members>
|
|
||||||
<x:Property Name="ConfigurationFolderPath" Type="InArgument(x:String)" />
|
|
||||||
<x:Property Name="AgentSettings" Type="InArgument(mtbwa:AgentSettings)" />
|
|
||||||
<x:Property Name="MSBuildArguments" Type="InArgument(x:String)" />
|
|
||||||
<x:Property Name="MSBuildPlatform" Type="InArgument(mtbwa:ToolPlatform)" />
|
|
||||||
<x:Property Name="DoNotDownloadBuildType" Type="InArgument(x:Boolean)" />
|
|
||||||
<x:Property Name="LogFilePerProject" Type="InArgument(x:Boolean)" />
|
|
||||||
<x:Property Name="SourcesSubdirectory" Type="InArgument(x:String)" />
|
|
||||||
<x:Property Name="BinariesSubdirectory" Type="InArgument(x:String)" />
|
|
||||||
<x:Property Name="TestResultsSubdirectory" Type="InArgument(x:String)" />
|
|
||||||
<x:Property Name="RecursionType" Type="InArgument(mtvc:RecursionType)" />
|
|
||||||
<x:Property Name="Verbosity" Type="InArgument(mtbw:BuildVerbosity)" />
|
|
||||||
<x:Property Name="Metadata" Type="mtbw:ProcessParameterMetadataCollection" />
|
|
||||||
<x:Property Name="SupportedReasons" Type="mtbc:BuildReason" />
|
|
||||||
</x:Members>
|
|
||||||
<this:Process.ConfigurationFolderPath>
|
|
||||||
<InArgument x:TypeArguments="x:String" />
|
|
||||||
</this:Process.ConfigurationFolderPath>
|
|
||||||
<this:Process.AgentSettings>[New Microsoft.TeamFoundation.Build.Workflow.Activities.AgentSettings() With {.MaxWaitTime = New System.TimeSpan(4, 0, 0), .MaxExecutionTime = New System.TimeSpan(0, 0, 0), .TagComparison = Microsoft.TeamFoundation.Build.Workflow.Activities.TagComparison.MatchExactly }]</this:Process.AgentSettings>
|
|
||||||
<this:Process.MSBuildArguments>
|
|
||||||
<InArgument x:TypeArguments="x:String" />
|
|
||||||
</this:Process.MSBuildArguments>
|
|
||||||
<this:Process.MSBuildPlatform>[Microsoft.TeamFoundation.Build.Workflow.Activities.ToolPlatform.Auto]</this:Process.MSBuildPlatform>
|
|
||||||
<this:Process.DoNotDownloadBuildType>[False]</this:Process.DoNotDownloadBuildType>
|
|
||||||
<this:Process.LogFilePerProject>[False]</this:Process.LogFilePerProject>
|
|
||||||
<this:Process.SourcesSubdirectory>
|
|
||||||
<InArgument x:TypeArguments="x:String" />
|
|
||||||
</this:Process.SourcesSubdirectory>
|
|
||||||
<this:Process.BinariesSubdirectory>
|
|
||||||
<InArgument x:TypeArguments="x:String" />
|
|
||||||
</this:Process.BinariesSubdirectory>
|
|
||||||
<this:Process.TestResultsSubdirectory>
|
|
||||||
<InArgument x:TypeArguments="x:String" />
|
|
||||||
</this:Process.TestResultsSubdirectory>
|
|
||||||
<this:Process.RecursionType>[Microsoft.TeamFoundation.VersionControl.Client.RecursionType.OneLevel]</this:Process.RecursionType>
|
|
||||||
<this:Process.Verbosity>[Microsoft.TeamFoundation.Build.Workflow.BuildVerbosity.Normal]</this:Process.Verbosity>
|
|
||||||
<this:Process.Metadata>
|
|
||||||
<mtbw:ProcessParameterMetadataCollection />
|
|
||||||
</this:Process.Metadata>
|
|
||||||
<this:Process.SupportedReasons>All</this:Process.SupportedReasons>
|
|
||||||
<mva:VisualBasic.Settings>Assembly references and imported namespaces serialized as XML namespaces</mva:VisualBasic.Settings>
|
|
||||||
<Sequence mtbwt:BuildTrackingParticipant.Importance="None">
|
|
||||||
<Sequence.Variables>
|
|
||||||
<Variable x:TypeArguments="mtbc:IBuildDetail" Name="BuildDetail" />
|
|
||||||
</Sequence.Variables>
|
|
||||||
<mtbwa:GetBuildDetail DisplayName="Get the Build" Result="[BuildDetail]" />
|
|
||||||
<mtbwa:InvokeForReason DisplayName="Update Build Number for Triggered Builds" Reason="Triggered">
|
|
||||||
<mtbwa:UpdateBuildNumber BuildNumberFormat="["$(BuildDefinitionName)_$(Date:yyyyMMdd)$(Rev:.r)"]" DisplayName="Update Build Number" />
|
|
||||||
</mtbwa:InvokeForReason>
|
|
||||||
<mtbwa:AgentScope DisplayName="Run On Agent" MaxExecutionTime="[AgentSettings.MaxExecutionTime]" MaxWaitTime="[AgentSettings.MaxWaitTime]" ReservationSpec="[AgentSettings.GetAgentReservationSpec()]">
|
|
||||||
<mtbwa:AgentScope.Variables>
|
|
||||||
<Variable x:TypeArguments="x:String" Name="buildDirectory" />
|
|
||||||
</mtbwa:AgentScope.Variables>
|
|
||||||
<mtbwa:GetBuildDirectory DisplayName="Get the Build Directory" Result="[buildDirectory]" />
|
|
||||||
<If Condition="[Not String.IsNullOrEmpty(ConfigurationFolderPath)]" DisplayName="If Not String.IsNullOrEmpty(ConfigurationFolderPath)">
|
|
||||||
<If.Then>
|
|
||||||
<mtbwa:TfsBuild BinariesSubdirectory="[BinariesSubdirectory]" BuildDirectory="[buildDirectory]" CommandLineArguments="[MSBuildArguments]" ConfigurationFolderPath="[ConfigurationFolderPath]" DisplayName="Run TfsBuild for Configuration Folder" DoNotDownloadBuildType="[DoNotDownloadBuildType]" LogFilePerProject="[LogFilePerProject]" RecursionType="[RecursionType]" SourcesSubdirectory="[SourcesSubdirectory]" TestResultsSubdirectory="[TestResultsSubdirectory]" ToolPlatform="[MSBuildPlatform]" Verbosity="[Verbosity]" />
|
|
||||||
</If.Then>
|
|
||||||
</If>
|
|
||||||
<If Condition="[BuildDetail.CompilationStatus = Microsoft.TeamFoundation.Build.Client.BuildPhaseStatus.Unknown]" DisplayName="If CompilationStatus = Unknown">
|
|
||||||
<If.Then>
|
|
||||||
<mtbwa:SetBuildProperties CompilationStatus="[Microsoft.TeamFoundation.Build.Client.BuildPhaseStatus.Succeeded]" DisplayName="Set CompilationStatus to Succeeded" PropertiesToSet="CompilationStatus" />
|
|
||||||
</If.Then>
|
|
||||||
</If>
|
|
||||||
<If Condition="[BuildDetail.TestStatus = Microsoft.TeamFoundation.Build.Client.BuildPhaseStatus.Unknown]" DisplayName="If TestStatus = Unknown">
|
|
||||||
<If.Then>
|
|
||||||
<mtbwa:SetBuildProperties DisplayName="Set TestStatus to Succeeded" PropertiesToSet="TestStatus" TestStatus="[Microsoft.TeamFoundation.Build.Client.BuildPhaseStatus.Succeeded]" />
|
|
||||||
</If.Then>
|
|
||||||
</If>
|
|
||||||
</mtbwa:AgentScope>
|
|
||||||
<mtbwa:InvokeForReason Reason="CheckInShelveset">
|
|
||||||
<mtbwa:CheckInGatedChanges DisplayName="Check In Gated Changes" />
|
|
||||||
</mtbwa:InvokeForReason>
|
|
||||||
</Sequence>
|
|
||||||
</Activity>
|
|
|
@ -1 +1 @@
|
||||||
Microsoft Drivers 3.0.1 for PHP for SQL Server (PDO driver)
|
Microsoft Drivers 3.1.0 for PHP for SQL Server (PDO driver)
|
||||||
|
|
|
@ -14,13 +14,13 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
|
||||||
implied. See the License for the specific language governing
|
implied. See the License for the specific language governing
|
||||||
permissions and limitations under the License.
|
permissions and limitations under the License.
|
||||||
|
|
||||||
* Notes about changes to the Microsoft Drivers 3.0 for PHP for SQL Server *
|
* Notes about changes to the Microsoft Drivers 3.1 for PHP for SQL Server *
|
||||||
|
|
||||||
For details about the changes included in this release, please see our blog at
|
For details about the changes included in this release, please see our blog at
|
||||||
http://blogs.msdn.com/sqlphp or see the SQLSRV_Readme.htm
|
http://blogs.msdn.com/sqlphp or see the SQLSRV_Readme.htm
|
||||||
file that is part of the download package.
|
file that is part of the download package.
|
||||||
|
|
||||||
* Notes about compiling the Microsoft Drivers 3.0 for PHP for SQL Server *
|
* Notes about compiling the Microsoft Drivers 3.1 for PHP for SQL Server *
|
||||||
|
|
||||||
Prerequisites:
|
Prerequisites:
|
||||||
|
|
||||||
|
@ -28,7 +28,7 @@ Prerequisites:
|
||||||
extensions. For help with doing this, see the official PHP website,
|
extensions. For help with doing this, see the official PHP website,
|
||||||
http://php.net.
|
http://php.net.
|
||||||
|
|
||||||
To compile the SQLSRV301 and PDO_SQLSRV301:
|
To compile the SQLSRV310 and PDO_SQLSRV310:
|
||||||
|
|
||||||
1) Copy the source code directories from this repository into the ext
|
1) Copy the source code directories from this repository into the ext
|
||||||
subdirectory.
|
subdirectory.
|
||||||
|
@ -53,7 +53,7 @@ wish to do so, run "nmake clean" first.
|
||||||
php_sqlsrv.dll and php_pdo_sqlsrv.dll to your PHP extension directory.
|
php_sqlsrv.dll and php_pdo_sqlsrv.dll to your PHP extension directory.
|
||||||
Also enable them within your PHP installation's php.ini file.
|
Also enable them within your PHP installation's php.ini file.
|
||||||
|
|
||||||
This software has been compiled and tested under PHP 5.3.6 and later
|
This software has been compiled and tested under PHP 5.4.32 and later
|
||||||
using the Visual C++ 2008 and 2010, Express and Standard compilers.
|
using the Visual C++ 2008 and 2010, Express and Standard compilers.
|
||||||
|
|
||||||
* Note about version.h *
|
* Note about version.h *
|
||||||
|
|
|
@ -43,7 +43,7 @@ const int INFO_BUFFER_LEN = 256;
|
||||||
const char* PROCESSOR_ARCH[] = { "x86", "x64", "ia64" };
|
const char* PROCESSOR_ARCH[] = { "x86", "x64", "ia64" };
|
||||||
|
|
||||||
// ODBC driver name.
|
// ODBC driver name.
|
||||||
const char CONNECTION_STRING_DRIVER_NAME[] = "Driver={SQL Server Native Client 11.0};";
|
const char CONNECTION_STRING_DRIVER_NAME[] = "Driver={ODBC Driver 11 for SQL Server};";
|
||||||
|
|
||||||
// default options if only the server is specified
|
// default options if only the server is specified
|
||||||
const char CONNECTION_STRING_DEFAULT_OPTIONS[] = "Mars_Connection={Yes}";
|
const char CONNECTION_STRING_DEFAULT_OPTIONS[] = "Mars_Connection={Yes}";
|
||||||
|
|
|
@ -153,14 +153,12 @@ struct row_dtor_closure {
|
||||||
sqlsrv_error* odbc_get_diag_rec( sqlsrv_stmt* odbc, SQLSMALLINT record_number )
|
sqlsrv_error* odbc_get_diag_rec( sqlsrv_stmt* odbc, SQLSMALLINT record_number )
|
||||||
{
|
{
|
||||||
SQLWCHAR wsql_state[ SQL_SQLSTATE_BUFSIZE ];
|
SQLWCHAR wsql_state[ SQL_SQLSTATE_BUFSIZE ];
|
||||||
SQLCHAR* sql_state = reinterpret_cast<SQLCHAR*>( wsql_state );
|
|
||||||
SQLWCHAR wnative_message[ SQL_MAX_MESSAGE_LENGTH + 1 ];
|
SQLWCHAR wnative_message[ SQL_MAX_MESSAGE_LENGTH + 1 ];
|
||||||
sqlsrv_malloc_auto_ptr<SQLCHAR> native_message;
|
|
||||||
SQLINTEGER native_code;
|
SQLINTEGER native_code;
|
||||||
SQLINTEGER message_len;
|
SQLSMALLINT wnative_message_len = 0;
|
||||||
|
|
||||||
SQLRETURN r = SQLGetDiagRecW( SQL_HANDLE_STMT, odbc->handle(), record_number, wsql_state, &native_code, wnative_message,
|
SQLRETURN r = SQLGetDiagRecW( SQL_HANDLE_STMT, odbc->handle(), record_number, wsql_state, &native_code, wnative_message,
|
||||||
SQL_MAX_MESSAGE_LENGTH + 1, NULL );
|
SQL_MAX_MESSAGE_LENGTH + 1, &wnative_message_len );
|
||||||
if( !SQL_SUCCEEDED( r ) || r == SQL_NO_DATA ) {
|
if( !SQL_SUCCEEDED( r ) || r == SQL_NO_DATA ) {
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
@ -172,13 +170,17 @@ sqlsrv_error* odbc_get_diag_rec( sqlsrv_stmt* odbc, SQLSMALLINT record_number )
|
||||||
}
|
}
|
||||||
|
|
||||||
// convert the error into the encoding of the context
|
// convert the error into the encoding of the context
|
||||||
message_len = SQL_SQLSTATE_BUFSIZE * sizeof(WCHAR);
|
sqlsrv_malloc_auto_ptr<SQLCHAR> sql_state;
|
||||||
convert_string_from_utf16( enc, reinterpret_cast<char**>( &sql_state ), message_len,
|
SQLINTEGER sql_state_len = 0;
|
||||||
false /*no free*/ );
|
if (!convert_string_from_utf16( enc, wsql_state, sizeof(wsql_state), (char**)&sql_state, sql_state_len )) {
|
||||||
message_len = (SQL_MAX_MESSAGE_LENGTH + 1) * sizeof( WCHAR );
|
return NULL;
|
||||||
native_message = reinterpret_cast<SQLCHAR*>( wnative_message );
|
}
|
||||||
convert_string_from_utf16( enc, reinterpret_cast<char**>( &native_message ), message_len,
|
|
||||||
false /*no free*/ );
|
sqlsrv_malloc_auto_ptr<SQLCHAR> native_message;
|
||||||
|
SQLINTEGER native_message_len = 0;
|
||||||
|
if (!convert_string_from_utf16( enc, wnative_message, wnative_message_len, (char**)&native_message, native_message_len )) {
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
return new (sqlsrv_malloc( sizeof( sqlsrv_error ))) sqlsrv_error( (SQLCHAR*) sql_state, (SQLCHAR*) native_message,
|
return new (sqlsrv_malloc( sizeof( sqlsrv_error ))) sqlsrv_error( (SQLCHAR*) sql_state, (SQLCHAR*) native_message,
|
||||||
native_code );
|
native_code );
|
||||||
|
|
|
@ -6,21 +6,21 @@
|
||||||
//
|
//
|
||||||
// Contents: Core routines and constants shared by the Microsoft Drivers for PHP for SQL Server
|
// Contents: Core routines and constants shared by the Microsoft Drivers for PHP for SQL Server
|
||||||
//
|
//
|
||||||
// Copyright Microsoft Corporation
|
// Microsoft Drivers for PHP for SQL Server
|
||||||
|
// Copyright (c) Microsoft Corporation. All rights reserved.
|
||||||
//
|
//
|
||||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
// you may not use this file except in compliance with the License.
|
// you may not use these files except in compliance with the License.
|
||||||
//
|
|
||||||
// You may obtain a copy of the License at:
|
// You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0
|
||||||
// http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
//
|
|
||||||
// Unless required by applicable law or agreed to in writing, software
|
// Unless required by applicable law or agreed to in writing, software
|
||||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
// See the License for the specific language governing permissions and
|
// See the License for the specific language governing permissions and
|
||||||
// limitations under the License.
|
// limitations under the License.
|
||||||
//---------------------------------------------------------------------------------------------------------------------------------
|
//
|
||||||
|
//----------------------------------------------------------------------------------------------------------------------------------
|
||||||
|
|
||||||
//*********************************************************************************************************************************
|
//*********************************************************************************************************************************
|
||||||
// Includes
|
// Includes
|
||||||
|
@ -111,7 +111,7 @@ OACR_WARNING_POP
|
||||||
#include <strsafe.h>
|
#include <strsafe.h>
|
||||||
|
|
||||||
// included for SQL Server specific constants
|
// included for SQL Server specific constants
|
||||||
#include "sqlncli.h"
|
#include "msodbcsql.h"
|
||||||
|
|
||||||
//*********************************************************************************************************************************
|
//*********************************************************************************************************************************
|
||||||
// Constants and Types
|
// Constants and Types
|
||||||
|
@ -1502,7 +1502,8 @@ struct sqlsrv_buffered_result_set : public sqlsrv_result_set {
|
||||||
#define MEMCHECK_SILENT 1
|
#define MEMCHECK_SILENT 1
|
||||||
|
|
||||||
// utility functions shared by multiple callers across files
|
// utility functions shared by multiple callers across files
|
||||||
bool convert_string_from_utf16( SQLSRV_ENCODING encoding, char** string, SQLINTEGER& len, bool free_utf16 = true );
|
bool convert_string_from_utf16_inplace( SQLSRV_ENCODING encoding, char** string, SQLINTEGER& len);
|
||||||
|
bool convert_string_from_utf16( SQLSRV_ENCODING encoding, const wchar_t* inString, SQLINTEGER cchInLen, char** outString, SQLINTEGER& cchOutLen );
|
||||||
wchar_t* utf16_string_from_mbcs_string( SQLSRV_ENCODING php_encoding, const char* mbcs_string,
|
wchar_t* utf16_string_from_mbcs_string( SQLSRV_ENCODING php_encoding, const char* mbcs_string,
|
||||||
unsigned int mbcs_len, __out unsigned int* utf16_len );
|
unsigned int mbcs_len, __out unsigned int* utf16_len );
|
||||||
|
|
||||||
|
@ -1559,8 +1560,8 @@ enum SQLSRV_ERROR_CODES {
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
// the message returned by SQL Native Client
|
// the message returned by ODBC Driver 11 for SQL Server
|
||||||
const char CONNECTION_BUSY_ODBC_ERROR[] = "[Microsoft][SQL Server Native Client 11.0]Connection is busy with results for "
|
const char CONNECTION_BUSY_ODBC_ERROR[] = "[Microsoft][ODBC Driver 11 for SQL Server]Connection is busy with results for "
|
||||||
"another command";
|
"another command";
|
||||||
|
|
||||||
// SQLSTATE for all internal errors
|
// SQLSTATE for all internal errors
|
||||||
|
|
|
@ -496,7 +496,7 @@ void core_sqlsrv_bind_param( sqlsrv_stmt* stmt, unsigned int param_num, int dire
|
||||||
ind_ptr = buffer_len;
|
ind_ptr = buffer_len;
|
||||||
if( direction != SQL_PARAM_INPUT ) {
|
if( direction != SQL_PARAM_INPUT ) {
|
||||||
|
|
||||||
#if PHP_MAJOR_VERSION == 5 && PHP_MINOR_VERSION == 4
|
#if PHP_MAJOR_VERSION == 5 && PHP_MINOR_VERSION >= 4
|
||||||
// PHP 5.4 added interned strings, so since we obviously want to change that string here in some fashion,
|
// PHP 5.4 added interned strings, so since we obviously want to change that string here in some fashion,
|
||||||
// we reallocate the string if it's interned
|
// we reallocate the string if it's interned
|
||||||
if( IS_INTERNED( buffer )) {
|
if( IS_INTERNED( buffer )) {
|
||||||
|
@ -1991,7 +1991,7 @@ void finalize_output_parameters( sqlsrv_stmt* stmt TSRMLS_DC )
|
||||||
// if it's not in the 8 bit encodings, then it's in UTF-16
|
// if it's not in the 8 bit encodings, then it's in UTF-16
|
||||||
if( output_param->encoding != SQLSRV_ENCODING_CHAR && output_param->encoding != SQLSRV_ENCODING_BINARY ) {
|
if( output_param->encoding != SQLSRV_ENCODING_CHAR && output_param->encoding != SQLSRV_ENCODING_BINARY ) {
|
||||||
|
|
||||||
bool converted = convert_string_from_utf16( output_param->encoding, &str, str_len );
|
bool converted = convert_string_from_utf16_inplace( output_param->encoding, &str, str_len );
|
||||||
CHECK_CUSTOM_ERROR( !converted, stmt, SQLSRV_ERROR_OUTPUT_PARAM_ENCODING_TRANSLATE, get_last_error_message()) {
|
CHECK_CUSTOM_ERROR( !converted, stmt, SQLSRV_ERROR_OUTPUT_PARAM_ENCODING_TRANSLATE, get_last_error_message()) {
|
||||||
throw core::CoreException();
|
throw core::CoreException();
|
||||||
}
|
}
|
||||||
|
@ -2179,7 +2179,7 @@ void get_field_as_string( sqlsrv_stmt* stmt, SQLUSMALLINT field_index, sqlsrv_ph
|
||||||
|
|
||||||
if( sqlsrv_php_type.typeinfo.encoding == SQLSRV_ENCODING_UTF8 ) {
|
if( sqlsrv_php_type.typeinfo.encoding == SQLSRV_ENCODING_UTF8 ) {
|
||||||
|
|
||||||
bool converted = convert_string_from_utf16( static_cast<SQLSRV_ENCODING>( sqlsrv_php_type.typeinfo.encoding ),
|
bool converted = convert_string_from_utf16_inplace( static_cast<SQLSRV_ENCODING>( sqlsrv_php_type.typeinfo.encoding ),
|
||||||
&field_value_temp, field_len_temp );
|
&field_value_temp, field_len_temp );
|
||||||
|
|
||||||
CHECK_CUSTOM_ERROR( !converted, stmt, SQLSRV_ERROR_FIELD_ENCODING_TRANSLATE, get_last_error_message() ) {
|
CHECK_CUSTOM_ERROR( !converted, stmt, SQLSRV_ERROR_FIELD_ENCODING_TRANSLATE, get_last_error_message() ) {
|
||||||
|
@ -2223,7 +2223,7 @@ void get_field_as_string( sqlsrv_stmt* stmt, SQLUSMALLINT field_index, sqlsrv_ph
|
||||||
|
|
||||||
if( sqlsrv_php_type.typeinfo.encoding == CP_UTF8 ) {
|
if( sqlsrv_php_type.typeinfo.encoding == CP_UTF8 ) {
|
||||||
|
|
||||||
bool converted = convert_string_from_utf16( static_cast<SQLSRV_ENCODING>( sqlsrv_php_type.typeinfo.encoding ),
|
bool converted = convert_string_from_utf16_inplace( static_cast<SQLSRV_ENCODING>( sqlsrv_php_type.typeinfo.encoding ),
|
||||||
&field_value_temp, field_len_temp );
|
&field_value_temp, field_len_temp );
|
||||||
|
|
||||||
CHECK_CUSTOM_ERROR( !converted, stmt, SQLSRV_ERROR_FIELD_ENCODING_TRANSLATE, get_last_error_message() ) {
|
CHECK_CUSTOM_ERROR( !converted, stmt, SQLSRV_ERROR_FIELD_ENCODING_TRANSLATE, get_last_error_message() ) {
|
||||||
|
|
|
@ -71,18 +71,42 @@ void core_sqlsrv_register_logger( log_callback driver_logger )
|
||||||
// utf-16 string is released by this function if no errors occurred. Otherwise the parameters are not changed
|
// utf-16 string is released by this function if no errors occurred. Otherwise the parameters are not changed
|
||||||
// and false is returned.
|
// and false is returned.
|
||||||
|
|
||||||
bool convert_string_from_utf16( SQLSRV_ENCODING encoding, char** string, SQLINTEGER& len, bool free_utf16 )
|
bool convert_string_from_utf16_inplace( SQLSRV_ENCODING encoding, char** string, SQLINTEGER& len)
|
||||||
{
|
{
|
||||||
char* utf16_string = *string;
|
SQLSRV_ASSERT( string != NULL && *string != NULL, "String must be specified" );
|
||||||
unsigned int utf16_len = len / 2; // from # of bytes to # of wchars
|
|
||||||
char *enc_string = NULL;
|
|
||||||
unsigned int enc_len = 0;
|
|
||||||
|
|
||||||
// for the empty string, we simply returned we converted it
|
// for the empty string, we simply returned we converted it
|
||||||
if( len == 0 && *string[0] == '\0' ) {
|
if( len == 0 && *string[0] == '\0' ) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
char* outString = NULL;
|
||||||
|
SQLINTEGER outLen = 0;
|
||||||
|
bool result = convert_string_from_utf16( encoding, reinterpret_cast<const wchar_t*>(*string), len / sizeof(wchar_t), &outString, outLen);
|
||||||
|
|
||||||
|
if (result)
|
||||||
|
{
|
||||||
|
sqlsrv_free( *string );
|
||||||
|
*string = outString;
|
||||||
|
len = outLen;
|
||||||
|
}
|
||||||
|
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool convert_string_from_utf16( SQLSRV_ENCODING encoding, const wchar_t* inString, SQLINTEGER cchInLen, char** outString, SQLINTEGER& cchOutLen )
|
||||||
|
{
|
||||||
|
SQLSRV_ASSERT( inString != NULL, "Input string must be specified" );
|
||||||
|
SQLSRV_ASSERT( outString != NULL, "Output buffer pointer must be specified" );
|
||||||
|
SQLSRV_ASSERT( *outString == NULL, "Output buffer pointer must not be set" );
|
||||||
|
|
||||||
|
if (cchInLen == 0 && inString[0] == L'\0') {
|
||||||
|
*outString = reinterpret_cast<char*>( sqlsrv_malloc ( 1 ) );
|
||||||
|
*outString[0] = '\0';
|
||||||
|
cchOutLen = 0;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
// flags set to 0 by default, which means that any invalid characters are dropped rather than causing
|
// flags set to 0 by default, which means that any invalid characters are dropped rather than causing
|
||||||
// an error. This happens only on XP.
|
// an error. This happens only on XP.
|
||||||
DWORD flags = 0;
|
DWORD flags = 0;
|
||||||
|
@ -92,28 +116,26 @@ bool convert_string_from_utf16( SQLSRV_ENCODING encoding, char** string, SQLINTE
|
||||||
}
|
}
|
||||||
|
|
||||||
// calculate the number of characters needed
|
// calculate the number of characters needed
|
||||||
enc_len = WideCharToMultiByte( encoding, flags,
|
cchOutLen = WideCharToMultiByte( encoding, flags,
|
||||||
reinterpret_cast<LPCWSTR>( utf16_string ), utf16_len,
|
inString, cchInLen,
|
||||||
NULL, 0, NULL, NULL );
|
NULL, 0, NULL, NULL );
|
||||||
if( enc_len == 0 ) {
|
if( cchOutLen == 0 ) {
|
||||||
return false;
|
|
||||||
}
|
|
||||||
// we must allocate a new buffer because it is possible that a UTF-8 string is longer than
|
|
||||||
// the corresponding UTF-16 string, so we cannot use an inplace conversion
|
|
||||||
enc_string = reinterpret_cast<char*>( sqlsrv_malloc( enc_len + 1 /* NULL char*/ ));
|
|
||||||
int rc = WideCharToMultiByte( encoding, flags,
|
|
||||||
reinterpret_cast<LPCWSTR>( utf16_string ), utf16_len,
|
|
||||||
enc_string, enc_len, NULL, NULL );
|
|
||||||
if( rc == 0 ) {
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
enc_string[ enc_len ] = '\0'; // null terminate the encoded string
|
// Create a buffer to fit the encoded string
|
||||||
if( free_utf16 ) {
|
char* newString = reinterpret_cast<char*>( sqlsrv_malloc( cchOutLen + 1 /* NULL char*/ ));
|
||||||
sqlsrv_free( utf16_string );
|
int rc = WideCharToMultiByte( encoding, flags,
|
||||||
|
inString, cchInLen,
|
||||||
|
newString, cchOutLen, NULL, NULL );
|
||||||
|
if( rc == 0 ) {
|
||||||
|
cchOutLen = 0;
|
||||||
|
sqlsrv_free( newString );
|
||||||
|
return false;
|
||||||
}
|
}
|
||||||
*string = enc_string;
|
|
||||||
len = enc_len;
|
*outString = newString;
|
||||||
|
newString[cchOutLen] = '\0'; // null terminate the encoded string
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
@ -161,9 +183,7 @@ bool core_sqlsrv_get_odbc_error( sqlsrv_context& ctx, int record_number, sqlsrv_
|
||||||
int zr = SUCCESS;
|
int zr = SUCCESS;
|
||||||
zval* temp = NULL;
|
zval* temp = NULL;
|
||||||
SQLRETURN r = SQL_SUCCESS;
|
SQLRETURN r = SQL_SUCCESS;
|
||||||
SQLINTEGER sqlstate_len = SQL_SQLSTATE_BUFSIZE * sizeof( wchar_t );
|
|
||||||
SQLSMALLINT wmessage_len = 0;
|
SQLSMALLINT wmessage_len = 0;
|
||||||
SQLINTEGER message_len = 0;
|
|
||||||
SQLWCHAR wsqlstate[ SQL_SQLSTATE_BUFSIZE ];
|
SQLWCHAR wsqlstate[ SQL_SQLSTATE_BUFSIZE ];
|
||||||
SQLWCHAR wnative_message[ SQL_MAX_MESSAGE_LENGTH + 1 ];
|
SQLWCHAR wnative_message[ SQL_MAX_MESSAGE_LENGTH + 1 ];
|
||||||
SQLSRV_ENCODING enc = ctx.encoding();
|
SQLSRV_ENCODING enc = ctx.encoding();
|
||||||
|
@ -200,13 +220,11 @@ bool core_sqlsrv_get_odbc_error( sqlsrv_context& ctx, int record_number, sqlsrv_
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
error->sqlstate = reinterpret_cast<SQLCHAR*>( wsqlstate );
|
SQLINTEGER sqlstate_len = 0;
|
||||||
convert_string_from_utf16( enc, reinterpret_cast<char**>( &error->sqlstate ), sqlstate_len,
|
convert_string_from_utf16(enc, wsqlstate, sizeof(wsqlstate), (char**)&error->sqlstate, sqlstate_len);
|
||||||
false /*no free*/ );
|
|
||||||
error->native_message = reinterpret_cast<SQLCHAR*>( wnative_message );
|
SQLINTEGER message_len = 0;
|
||||||
message_len = wmessage_len * sizeof( wchar_t );
|
convert_string_from_utf16(enc, wnative_message, wmessage_len, (char**)&error->native_message, message_len);
|
||||||
convert_string_from_utf16( enc, reinterpret_cast<char**>( &error->native_message ), message_len,
|
|
||||||
false /*no free*/ );
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
2343
pdo_sqlsrv/msodbcsql.h
Normal file
2343
pdo_sqlsrv/msodbcsql.h
Normal file
|
@ -0,0 +1,2343 @@
|
||||||
|
//-----------------------------------------------------------------------------
|
||||||
|
// File: msodbcsql.h
|
||||||
|
//
|
||||||
|
// Copyright: Copyright (c) Microsoft Corporation
|
||||||
|
//
|
||||||
|
// Contents: ODBC driver for SQL Server specific definitions.
|
||||||
|
//
|
||||||
|
//-----------------------------------------------------------------------------
|
||||||
|
#ifndef __msodbcsql_h__
|
||||||
|
#define __msodbcsql_h__
|
||||||
|
|
||||||
|
#if !defined(SQLODBC_VER)
|
||||||
|
#define SQLODBC_VER 1100
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if SQLODBC_VER >= 1100
|
||||||
|
|
||||||
|
#define SQLODBC_PRODUCT_NAME_FULL_VER_ANSI "Microsoft ODBC Driver 11 for SQL Server"
|
||||||
|
#define SQLODBC_PRODUCT_NAME_FULL_ANSI "Microsoft ODBC Driver for SQL Server"
|
||||||
|
#define SQLODBC_PRODUCT_NAME_SHORT_VER_ANSI "ODBC Driver 11 for SQL Server"
|
||||||
|
#define SQLODBC_PRODUCT_NAME_SHORT_ANSI "ODBC Driver for SQL Server"
|
||||||
|
|
||||||
|
#define SQLODBC_FILE_NAME_ANSI "msodbcsql"
|
||||||
|
#define SQLODBC_FILE_NAME_VER_ANSI "msodbcsql11"
|
||||||
|
#define SQLODBC_FILE_NAME_FULL_ANSI "msodbcsql11.dll"
|
||||||
|
|
||||||
|
#define SQLODBC_PRODUCT_NAME_FULL_VER_UNICODE L"Microsoft ODBC Driver 11 for SQL Server"
|
||||||
|
#define SQLODBC_PRODUCT_NAME_FULL_UNICODE L"Microsoft ODBC Driver for SQL Server"
|
||||||
|
#define SQLODBC_PRODUCT_NAME_SHORT_VER_UNICODE L"ODBC Driver 11 for SQL Server"
|
||||||
|
#define SQLODBC_PRODUCT_NAME_SHORT_UNICODE L"ODBC Driver for SQL Server"
|
||||||
|
|
||||||
|
#define SQLODBC_FILE_NAME_UNICODE L"msodbcsql"
|
||||||
|
#define SQLODBC_FILE_NAME_VER_UNICODE L"msodbcsql11"
|
||||||
|
#define SQLODBC_FILE_NAME_FULL_UNICODE L"msodbcsql11.dll"
|
||||||
|
|
||||||
|
// define the character type agnostic constants
|
||||||
|
#if defined(_UNICODE) || defined(UNICODE)
|
||||||
|
|
||||||
|
#define SQLODBC_PRODUCT_NAME_FULL_VER SQLODBC_PRODUCT_NAME_FULL_VER_UNICODE
|
||||||
|
#define SQLODBC_PRODUCT_NAME_FULL SQLODBC_PRODUCT_NAME_FULL_UNICODE
|
||||||
|
#define SQLODBC_PRODUCT_NAME_SHORT_VER SQLODBC_PRODUCT_NAME_SHORT_VER_UNICODE
|
||||||
|
#define SQLODBC_PRODUCT_NAME_SHORT SQLODBC_PRODUCT_NAME_SHORT_UNICODE
|
||||||
|
|
||||||
|
#define SQLODBC_FILE_NAME SQLODBC_FILE_NAME_UNICODE
|
||||||
|
#define SQLODBC_FILE_NAME_VER SQLODBC_FILE_NAME_VER_UNICODE
|
||||||
|
#define SQLODBC_FILE_NAME_FULL SQLODBC_FILE_NAME_FULL_UNICODE
|
||||||
|
|
||||||
|
#else // _UNICODE || UNICODE
|
||||||
|
|
||||||
|
#define SQLODBC_PRODUCT_NAME_FULL_VER SQLODBC_PRODUCT_NAME_FULL_VER_ANSI
|
||||||
|
#define SQLODBC_PRODUCT_NAME_FULL SQLODBC_PRODUCT_NAME_FULL_ANSI
|
||||||
|
#define SQLODBC_PRODUCT_NAME_SHORT_VER SQLODBC_PRODUCT_NAME_SHORT_VER_ANSI
|
||||||
|
#define SQLODBC_PRODUCT_NAME_SHORT SQLODBC_PRODUCT_NAME_SHORT_ANSI
|
||||||
|
|
||||||
|
#define SQLODBC_FILE_NAME SQLODBC_FILE_NAME_ANSI
|
||||||
|
#define SQLODBC_FILE_NAME_VER SQLODBC_FILE_NAME_VER_ANSI
|
||||||
|
#define SQLODBC_FILE_NAME_FULL SQLODBC_FILE_NAME_FULL_ANSI
|
||||||
|
|
||||||
|
#endif // _UNICODE || UNICODE
|
||||||
|
|
||||||
|
#define SQLODBC_DRIVER_NAME SQLODBC_PRODUCT_NAME_SHORT_VER
|
||||||
|
|
||||||
|
#endif // SQLODBC_VER
|
||||||
|
|
||||||
|
#ifndef __sqlncli_h__
|
||||||
|
|
||||||
|
#if !defined(SQLNCLI_VER)
|
||||||
|
#define SQLNCLI_VER 1100
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if SQLNCLI_VER >= 1100
|
||||||
|
|
||||||
|
#define SQLNCLI_PRODUCT_NAME_FULL_VER_ANSI "Microsoft SQL Server Native Client 11.0"
|
||||||
|
#define SQLNCLI_PRODUCT_NAME_FULL_ANSI "Microsoft SQL Server Native Client"
|
||||||
|
#define SQLNCLI_PRODUCT_NAME_SHORT_VER_ANSI "SQL Server Native Client 11.0"
|
||||||
|
#define SQLNCLI_PRODUCT_NAME_SHORT_ANSI "SQL Server Native Client"
|
||||||
|
|
||||||
|
#define SQLNCLI_FILE_NAME_ANSI "sqlncli"
|
||||||
|
#define SQLNCLI_FILE_NAME_VER_ANSI "sqlncli11"
|
||||||
|
#define SQLNCLI_FILE_NAME_FULL_ANSI "sqlncli11.dll"
|
||||||
|
|
||||||
|
#define SQLNCLI_PRODUCT_NAME_FULL_VER_UNICODE L"Microsoft SQL Server Native Client 11.0"
|
||||||
|
#define SQLNCLI_PRODUCT_NAME_FULL_UNICODE L"Microsoft SQL Server Native Client"
|
||||||
|
#define SQLNCLI_PRODUCT_NAME_SHORT_VER_UNICODE L"SQL Server Native Client 11.0"
|
||||||
|
#define SQLNCLI_PRODUCT_NAME_SHORT_UNICODE L"SQL Server Native Client"
|
||||||
|
|
||||||
|
#define SQLNCLI_FILE_NAME_UNICODE L"sqlncli"
|
||||||
|
#define SQLNCLI_FILE_NAME_VER_UNICODE L"sqlncli11"
|
||||||
|
#define SQLNCLI_FILE_NAME_FULL_UNICODE L"sqlncli11.dll"
|
||||||
|
|
||||||
|
#elif SQLNCLI_VER >= 1000
|
||||||
|
|
||||||
|
#define SQLNCLI_PRODUCT_NAME_FULL_VER_ANSI "Microsoft SQL Server Native Client 10.0"
|
||||||
|
#define SQLNCLI_PRODUCT_NAME_FULL_ANSI "Microsoft SQL Server Native Client"
|
||||||
|
#define SQLNCLI_PRODUCT_NAME_SHORT_VER_ANSI "SQL Server Native Client 10.0"
|
||||||
|
#define SQLNCLI_PRODUCT_NAME_SHORT_ANSI "SQL Server Native Client"
|
||||||
|
|
||||||
|
#define SQLNCLI_FILE_NAME_ANSI "sqlncli"
|
||||||
|
#define SQLNCLI_FILE_NAME_VER_ANSI "sqlncli10"
|
||||||
|
#define SQLNCLI_FILE_NAME_FULL_ANSI "sqlncli10.dll"
|
||||||
|
|
||||||
|
#define SQLNCLI_PRODUCT_NAME_FULL_VER_UNICODE L"Microsoft SQL Server Native Client 10.0"
|
||||||
|
#define SQLNCLI_PRODUCT_NAME_FULL_UNICODE L"Microsoft SQL Server Native Client"
|
||||||
|
#define SQLNCLI_PRODUCT_NAME_SHORT_VER_UNICODE L"SQL Server Native Client 10.0"
|
||||||
|
#define SQLNCLI_PRODUCT_NAME_SHORT_UNICODE L"SQL Server Native Client"
|
||||||
|
|
||||||
|
#define SQLNCLI_FILE_NAME_UNICODE L"sqlncli"
|
||||||
|
#define SQLNCLI_FILE_NAME_VER_UNICODE L"sqlncli10"
|
||||||
|
#define SQLNCLI_FILE_NAME_FULL_UNICODE L"sqlncli10.dll"
|
||||||
|
|
||||||
|
#else
|
||||||
|
|
||||||
|
#define SQLNCLI_PRODUCT_NAME_FULL_VER_ANSI "Microsoft SQL Server Native Client"
|
||||||
|
#define SQLNCLI_PRODUCT_NAME_FULL_ANSI "Microsoft SQL Server Native Client"
|
||||||
|
#define SQLNCLI_PRODUCT_NAME_SHORT_VER_ANSI "SQL Native Client"
|
||||||
|
#define SQLNCLI_PRODUCT_NAME_SHORT_ANSI "SQL Native Client"
|
||||||
|
|
||||||
|
#define SQLNCLI_FILE_NAME_ANSI "sqlncli"
|
||||||
|
#define SQLNCLI_FILE_NAME_VER_ANSI "sqlncli"
|
||||||
|
#define SQLNCLI_FILE_NAME_FULL_ANSI "sqlncli.dll"
|
||||||
|
|
||||||
|
#define SQLNCLI_PRODUCT_NAME_FULL_VER_UNICODE L"Microsoft SQL Server Native Client"
|
||||||
|
#define SQLNCLI_PRODUCT_NAME_FULL_UNICODE L"Microsoft SQL Server Native Client"
|
||||||
|
#define SQLNCLI_PRODUCT_NAME_SHORT_VER_UNICODE L"SQL Native Client"
|
||||||
|
#define SQLNCLI_PRODUCT_NAME_SHORT_UNICODE L"SQL Native Client"
|
||||||
|
|
||||||
|
#define SQLNCLI_FILE_NAME_UNICODE L"sqlncli"
|
||||||
|
#define SQLNCLI_FILE_NAME_VER_UNICODE L"sqlncli"
|
||||||
|
#define SQLNCLI_FILE_NAME_FULL_UNICODE L"sqlncli.dll"
|
||||||
|
|
||||||
|
#endif // SQLNCLI_VER >= 1100
|
||||||
|
|
||||||
|
// define the character type agnostic constants
|
||||||
|
#if defined(_UNICODE) || defined(UNICODE)
|
||||||
|
|
||||||
|
#define SQLNCLI_PRODUCT_NAME_FULL_VER SQLNCLI_PRODUCT_NAME_FULL_VER_UNICODE
|
||||||
|
#define SQLNCLI_PRODUCT_NAME_FULL SQLNCLI_PRODUCT_NAME_FULL_UNICODE
|
||||||
|
#define SQLNCLI_PRODUCT_NAME_SHORT_VER SQLNCLI_PRODUCT_NAME_SHORT_VER_UNICODE
|
||||||
|
#define SQLNCLI_PRODUCT_NAME_SHORT SQLNCLI_PRODUCT_NAME_SHORT_UNICODE
|
||||||
|
|
||||||
|
#define SQLNCLI_FILE_NAME SQLNCLI_FILE_NAME_UNICODE
|
||||||
|
#define SQLNCLI_FILE_NAME_VER SQLNCLI_FILE_NAME_VER_UNICODE
|
||||||
|
#define SQLNCLI_FILE_NAME_FULL SQLNCLI_FILE_NAME_FULL_UNICODE
|
||||||
|
|
||||||
|
|
||||||
|
#else // _UNICODE || UNICODE
|
||||||
|
|
||||||
|
#define SQLNCLI_PRODUCT_NAME_FULL_VER SQLNCLI_PRODUCT_NAME_FULL_VER_ANSI
|
||||||
|
#define SQLNCLI_PRODUCT_NAME_FULL SQLNCLI_PRODUCT_NAME_FULL_ANSI
|
||||||
|
#define SQLNCLI_PRODUCT_NAME_SHORT_VER SQLNCLI_PRODUCT_NAME_SHORT_VER_ANSI
|
||||||
|
#define SQLNCLI_PRODUCT_NAME_SHORT SQLNCLI_PRODUCT_NAME_SHORT_ANSI
|
||||||
|
|
||||||
|
#define SQLNCLI_FILE_NAME SQLNCLI_FILE_NAME_ANSI
|
||||||
|
#define SQLNCLI_FILE_NAME_VER SQLNCLI_FILE_NAME_VER_ANSI
|
||||||
|
#define SQLNCLI_FILE_NAME_FULL SQLNCLI_FILE_NAME_FULL_ANSI
|
||||||
|
|
||||||
|
#endif // _UNICODE || UNICODE
|
||||||
|
|
||||||
|
#define SQLNCLI_DRIVER_NAME SQLNCLI_PRODUCT_NAME_SHORT_VER
|
||||||
|
|
||||||
|
|
||||||
|
#ifdef ODBCVER
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
extern "C" {
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// max SQL Server identifier length
|
||||||
|
#define SQL_MAX_SQLSERVERNAME 128
|
||||||
|
|
||||||
|
// SQLSetConnectAttr driver specific defines.
|
||||||
|
// Microsoft has 1200 thru 1249 reserved for Microsoft SQL Server Native Client driver usage.
|
||||||
|
// Connection attributes
|
||||||
|
#define SQL_COPT_SS_BASE 1200
|
||||||
|
#define SQL_COPT_SS_REMOTE_PWD (SQL_COPT_SS_BASE+1) // dbrpwset SQLSetConnectOption only
|
||||||
|
#define SQL_COPT_SS_USE_PROC_FOR_PREP (SQL_COPT_SS_BASE+2) // Use create proc for SQLPrepare
|
||||||
|
#define SQL_COPT_SS_INTEGRATED_SECURITY (SQL_COPT_SS_BASE+3) // Force integrated security on login
|
||||||
|
#define SQL_COPT_SS_PRESERVE_CURSORS (SQL_COPT_SS_BASE+4) // Preserve server cursors after SQLTransact
|
||||||
|
#define SQL_COPT_SS_USER_DATA (SQL_COPT_SS_BASE+5) // dbgetuserdata/dbsetuserdata
|
||||||
|
#define SQL_COPT_SS_ENLIST_IN_DTC SQL_ATTR_ENLIST_IN_DTC // Enlist in a DTC transaction
|
||||||
|
#define SQL_COPT_SS_ENLIST_IN_XA SQL_ATTR_ENLIST_IN_XA // Enlist in a XA transaction
|
||||||
|
#define SQL_COPT_SS_FALLBACK_CONNECT (SQL_COPT_SS_BASE+10) // Enables FallBack connections
|
||||||
|
#define SQL_COPT_SS_PERF_DATA (SQL_COPT_SS_BASE+11) // Used to access SQL Server ODBC driver performance data
|
||||||
|
#define SQL_COPT_SS_PERF_DATA_LOG (SQL_COPT_SS_BASE+12) // Used to set the logfile name for the Performance data
|
||||||
|
#define SQL_COPT_SS_PERF_QUERY_INTERVAL (SQL_COPT_SS_BASE+13) // Used to set the query logging threshold in milliseconds.
|
||||||
|
#define SQL_COPT_SS_PERF_QUERY_LOG (SQL_COPT_SS_BASE+14) // Used to set the logfile name for saving queryies.
|
||||||
|
#define SQL_COPT_SS_PERF_QUERY (SQL_COPT_SS_BASE+15) // Used to start and stop query logging.
|
||||||
|
#define SQL_COPT_SS_PERF_DATA_LOG_NOW (SQL_COPT_SS_BASE+16) // Used to make a statistics log entry to disk.
|
||||||
|
#define SQL_COPT_SS_QUOTED_IDENT (SQL_COPT_SS_BASE+17) // Enable/Disable Quoted Identifiers
|
||||||
|
#define SQL_COPT_SS_ANSI_NPW (SQL_COPT_SS_BASE+18) // Enable/Disable ANSI NULL, Padding and Warnings
|
||||||
|
#define SQL_COPT_SS_BCP (SQL_COPT_SS_BASE+19) // Allow BCP usage on connection
|
||||||
|
#define SQL_COPT_SS_TRANSLATE (SQL_COPT_SS_BASE+20) // Perform code page translation
|
||||||
|
#define SQL_COPT_SS_ATTACHDBFILENAME (SQL_COPT_SS_BASE+21) // File name to be attached as a database
|
||||||
|
#define SQL_COPT_SS_CONCAT_NULL (SQL_COPT_SS_BASE+22) // Enable/Disable CONCAT_NULL_YIELDS_NULL
|
||||||
|
#define SQL_COPT_SS_ENCRYPT (SQL_COPT_SS_BASE+23) // Allow strong encryption for data
|
||||||
|
#define SQL_COPT_SS_MARS_ENABLED (SQL_COPT_SS_BASE+24) // Multiple active result set per connection
|
||||||
|
#define SQL_COPT_SS_FAILOVER_PARTNER (SQL_COPT_SS_BASE+25) // Failover partner server
|
||||||
|
#define SQL_COPT_SS_OLDPWD (SQL_COPT_SS_BASE+26) // Old Password, used when changing password during login
|
||||||
|
#define SQL_COPT_SS_TXN_ISOLATION (SQL_COPT_SS_BASE+27) // Used to set/get any driver-specific or ODBC-defined TXN iso level
|
||||||
|
#define SQL_COPT_SS_TRUST_SERVER_CERTIFICATE (SQL_COPT_SS_BASE+28) // Trust server certificate
|
||||||
|
#define SQL_COPT_SS_SERVER_SPN (SQL_COPT_SS_BASE+29) // Server SPN
|
||||||
|
#define SQL_COPT_SS_FAILOVER_PARTNER_SPN (SQL_COPT_SS_BASE+30) // Failover partner server SPN
|
||||||
|
#define SQL_COPT_SS_INTEGRATED_AUTHENTICATION_METHOD (SQL_COPT_SS_BASE+31) // The integrated authentication method used for the connection
|
||||||
|
#define SQL_COPT_SS_MUTUALLY_AUTHENTICATED (SQL_COPT_SS_BASE+32) // Used to decide if the connection is mutually authenticated
|
||||||
|
#define SQL_COPT_SS_CLIENT_CONNECTION_ID (SQL_COPT_SS_BASE+33) // Post connection attribute used to get the ConnectionID
|
||||||
|
// Define old names
|
||||||
|
#define SQL_REMOTE_PWD SQL_COPT_SS_REMOTE_PWD
|
||||||
|
#define SQL_USE_PROCEDURE_FOR_PREPARE SQL_COPT_SS_USE_PROC_FOR_PREP
|
||||||
|
#define SQL_INTEGRATED_SECURITY SQL_COPT_SS_INTEGRATED_SECURITY
|
||||||
|
#define SQL_PRESERVE_CURSORS SQL_COPT_SS_PRESERVE_CURSORS
|
||||||
|
|
||||||
|
// SQLSetStmtAttr SQL Server Native Client driver specific defines.
|
||||||
|
// Statement attributes
|
||||||
|
#define SQL_SOPT_SS_BASE 1225
|
||||||
|
#define SQL_SOPT_SS_TEXTPTR_LOGGING (SQL_SOPT_SS_BASE+0) // Text pointer logging
|
||||||
|
#define SQL_SOPT_SS_CURRENT_COMMAND (SQL_SOPT_SS_BASE+1) // dbcurcmd SQLGetStmtOption only
|
||||||
|
#define SQL_SOPT_SS_HIDDEN_COLUMNS (SQL_SOPT_SS_BASE+2) // Expose FOR BROWSE hidden columns
|
||||||
|
#define SQL_SOPT_SS_NOBROWSETABLE (SQL_SOPT_SS_BASE+3) // Set NOBROWSETABLE option
|
||||||
|
#define SQL_SOPT_SS_REGIONALIZE (SQL_SOPT_SS_BASE+4) // Regionalize output character conversions
|
||||||
|
#define SQL_SOPT_SS_CURSOR_OPTIONS (SQL_SOPT_SS_BASE+5) // Server cursor options
|
||||||
|
#define SQL_SOPT_SS_NOCOUNT_STATUS (SQL_SOPT_SS_BASE+6) // Real vs. Not Real row count indicator
|
||||||
|
#define SQL_SOPT_SS_DEFER_PREPARE (SQL_SOPT_SS_BASE+7) // Defer prepare until necessary
|
||||||
|
#define SQL_SOPT_SS_QUERYNOTIFICATION_TIMEOUT (SQL_SOPT_SS_BASE+8) // Notification timeout
|
||||||
|
#define SQL_SOPT_SS_QUERYNOTIFICATION_MSGTEXT (SQL_SOPT_SS_BASE+9) // Notification message text
|
||||||
|
#define SQL_SOPT_SS_QUERYNOTIFICATION_OPTIONS (SQL_SOPT_SS_BASE+10)// SQL service broker name
|
||||||
|
#define SQL_SOPT_SS_PARAM_FOCUS (SQL_SOPT_SS_BASE+11)// Direct subsequent calls to parameter related methods to set properties on constituent columns/parameters of container types
|
||||||
|
#define SQL_SOPT_SS_NAME_SCOPE (SQL_SOPT_SS_BASE+12)// Sets name scope for subsequent catalog function calls
|
||||||
|
#define SQL_SOPT_SS_MAX_USED SQL_SOPT_SS_NAME_SCOPE
|
||||||
|
// Define old names
|
||||||
|
#define SQL_TEXTPTR_LOGGING SQL_SOPT_SS_TEXTPTR_LOGGING
|
||||||
|
#define SQL_COPT_SS_BASE_EX 1240
|
||||||
|
#define SQL_COPT_SS_BROWSE_CONNECT (SQL_COPT_SS_BASE_EX+1) // Browse connect mode of operation
|
||||||
|
#define SQL_COPT_SS_BROWSE_SERVER (SQL_COPT_SS_BASE_EX+2) // Single Server browse request.
|
||||||
|
#define SQL_COPT_SS_WARN_ON_CP_ERROR (SQL_COPT_SS_BASE_EX+3) // Issues warning when data from the server had a loss during code page conversion.
|
||||||
|
#define SQL_COPT_SS_CONNECTION_DEAD (SQL_COPT_SS_BASE_EX+4) // dbdead SQLGetConnectOption only. It will try to ping the server. Expensive connection check
|
||||||
|
#define SQL_COPT_SS_BROWSE_CACHE_DATA (SQL_COPT_SS_BASE_EX+5) // Determines if we should cache browse info. Used when returned buffer is greater then ODBC limit (32K)
|
||||||
|
#define SQL_COPT_SS_RESET_CONNECTION (SQL_COPT_SS_BASE_EX+6) // When this option is set, we will perform connection reset on next packet
|
||||||
|
#define SQL_COPT_SS_APPLICATION_INTENT (SQL_COPT_SS_BASE_EX+7) // Application Intent
|
||||||
|
#define SQL_COPT_SS_MULTISUBNET_FAILOVER (SQL_COPT_SS_BASE_EX+8) // Multi-subnet Failover
|
||||||
|
#define SQL_COPT_SS_EX_MAX_USED SQL_COPT_SS_MULTISUBNET_FAILOVER
|
||||||
|
|
||||||
|
// SQLColAttributes driver specific defines.
|
||||||
|
// SQLSetDescField/SQLGetDescField driver specific defines.
|
||||||
|
// Microsoft has 1200 thru 1249 reserved for Microsoft SQL Server Native Client driver usage.
|
||||||
|
#define SQL_CA_SS_BASE 1200
|
||||||
|
#define SQL_CA_SS_COLUMN_SSTYPE (SQL_CA_SS_BASE+0) // dbcoltype/dbalttype
|
||||||
|
#define SQL_CA_SS_COLUMN_UTYPE (SQL_CA_SS_BASE+1) // dbcolutype/dbaltutype
|
||||||
|
#define SQL_CA_SS_NUM_ORDERS (SQL_CA_SS_BASE+2) // dbnumorders
|
||||||
|
#define SQL_CA_SS_COLUMN_ORDER (SQL_CA_SS_BASE+3) // dbordercol
|
||||||
|
#define SQL_CA_SS_COLUMN_VARYLEN (SQL_CA_SS_BASE+4) // dbvarylen
|
||||||
|
#define SQL_CA_SS_NUM_COMPUTES (SQL_CA_SS_BASE+5) // dbnumcompute
|
||||||
|
#define SQL_CA_SS_COMPUTE_ID (SQL_CA_SS_BASE+6) // dbnextrow status return
|
||||||
|
#define SQL_CA_SS_COMPUTE_BYLIST (SQL_CA_SS_BASE+7) // dbbylist
|
||||||
|
#define SQL_CA_SS_COLUMN_ID (SQL_CA_SS_BASE+8) // dbaltcolid
|
||||||
|
#define SQL_CA_SS_COLUMN_OP (SQL_CA_SS_BASE+9) // dbaltop
|
||||||
|
#define SQL_CA_SS_COLUMN_SIZE (SQL_CA_SS_BASE+10) // dbcollen
|
||||||
|
#define SQL_CA_SS_COLUMN_HIDDEN (SQL_CA_SS_BASE+11) // Column is hidden (FOR BROWSE)
|
||||||
|
#define SQL_CA_SS_COLUMN_KEY (SQL_CA_SS_BASE+12) // Column is key column (FOR BROWSE)
|
||||||
|
//#define SQL_DESC_BASE_COLUMN_NAME_OLD (SQL_CA_SS_BASE+13) // This is defined at another location.
|
||||||
|
#define SQL_CA_SS_COLUMN_COLLATION (SQL_CA_SS_BASE+14) // Column collation (only for chars)
|
||||||
|
#define SQL_CA_SS_VARIANT_TYPE (SQL_CA_SS_BASE+15)
|
||||||
|
#define SQL_CA_SS_VARIANT_SQL_TYPE (SQL_CA_SS_BASE+16)
|
||||||
|
#define SQL_CA_SS_VARIANT_SERVER_TYPE (SQL_CA_SS_BASE+17)
|
||||||
|
|
||||||
|
// XML, CLR UDT, and table valued parameter related metadata
|
||||||
|
#define SQL_CA_SS_UDT_CATALOG_NAME (SQL_CA_SS_BASE+18) // UDT catalog name
|
||||||
|
#define SQL_CA_SS_UDT_SCHEMA_NAME (SQL_CA_SS_BASE+19) // UDT schema name
|
||||||
|
#define SQL_CA_SS_UDT_TYPE_NAME (SQL_CA_SS_BASE+20) // UDT type name
|
||||||
|
#define SQL_CA_SS_UDT_ASSEMBLY_TYPE_NAME (SQL_CA_SS_BASE+21) // Qualified name of the assembly containing the UDT class
|
||||||
|
#define SQL_CA_SS_XML_SCHEMACOLLECTION_CATALOG_NAME (SQL_CA_SS_BASE+22) // Name of the catalog that contains XML Schema collection
|
||||||
|
#define SQL_CA_SS_XML_SCHEMACOLLECTION_SCHEMA_NAME (SQL_CA_SS_BASE+23) // Name of the schema that contains XML Schema collection
|
||||||
|
#define SQL_CA_SS_XML_SCHEMACOLLECTION_NAME (SQL_CA_SS_BASE+24) // Name of the XML Schema collection
|
||||||
|
#define SQL_CA_SS_CATALOG_NAME (SQL_CA_SS_BASE+25) // Catalog name
|
||||||
|
#define SQL_CA_SS_SCHEMA_NAME (SQL_CA_SS_BASE+26) // Schema name
|
||||||
|
#define SQL_CA_SS_TYPE_NAME (SQL_CA_SS_BASE+27) // Type name
|
||||||
|
|
||||||
|
// table valued parameter related metadata
|
||||||
|
#define SQL_CA_SS_COLUMN_COMPUTED (SQL_CA_SS_BASE+29) // column is computed
|
||||||
|
#define SQL_CA_SS_COLUMN_IN_UNIQUE_KEY (SQL_CA_SS_BASE+30) // column is part of a unique key
|
||||||
|
#define SQL_CA_SS_COLUMN_SORT_ORDER (SQL_CA_SS_BASE+31) // column sort order
|
||||||
|
#define SQL_CA_SS_COLUMN_SORT_ORDINAL (SQL_CA_SS_BASE+32) // column sort ordinal
|
||||||
|
#define SQL_CA_SS_COLUMN_HAS_DEFAULT_VALUE (SQL_CA_SS_BASE+33) // column has default value for all rows of the table valued parameter
|
||||||
|
|
||||||
|
// sparse column related metadata
|
||||||
|
#define SQL_CA_SS_IS_COLUMN_SET (SQL_CA_SS_BASE+34) // column is a column-set column for sparse columns
|
||||||
|
|
||||||
|
// Legacy datetime related metadata
|
||||||
|
#define SQL_CA_SS_SERVER_TYPE (SQL_CA_SS_BASE+35) // column type to send on the wire for datetime types
|
||||||
|
|
||||||
|
#define SQL_CA_SS_MAX_USED (SQL_CA_SS_BASE+36)
|
||||||
|
|
||||||
|
// Defines returned by SQL_ATTR_CURSOR_TYPE/SQL_CURSOR_TYPE
|
||||||
|
#define SQL_CURSOR_FAST_FORWARD_ONLY 8 // Only returned by SQLGetStmtAttr/Option
|
||||||
|
// Defines for use with SQL_COPT_SS_USE_PROC_FOR_PREP
|
||||||
|
#define SQL_UP_OFF 0L // Procedures won't be used for prepare
|
||||||
|
#define SQL_UP_ON 1L // Procedures will be used for prepare
|
||||||
|
#define SQL_UP_ON_DROP 2L // Temp procedures will be explicitly dropped
|
||||||
|
#define SQL_UP_DEFAULT SQL_UP_ON
|
||||||
|
// Defines for use with SQL_COPT_SS_INTEGRATED_SECURITY - Pre-Connect Option only
|
||||||
|
#define SQL_IS_OFF 0L // Integrated security isn't used
|
||||||
|
#define SQL_IS_ON 1L // Integrated security is used
|
||||||
|
#define SQL_IS_DEFAULT SQL_IS_OFF
|
||||||
|
// Defines for use with SQL_COPT_SS_PRESERVE_CURSORS
|
||||||
|
#define SQL_PC_OFF 0L // Cursors are closed on SQLTransact
|
||||||
|
#define SQL_PC_ON 1L // Cursors remain open on SQLTransact
|
||||||
|
#define SQL_PC_DEFAULT SQL_PC_OFF
|
||||||
|
// Defines for use with SQL_COPT_SS_USER_DATA
|
||||||
|
#define SQL_UD_NOTSET NULL // No user data pointer set
|
||||||
|
// Defines for use with SQL_COPT_SS_TRANSLATE
|
||||||
|
#define SQL_XL_OFF 0L // Code page translation is not performed
|
||||||
|
#define SQL_XL_ON 1L // Code page translation is performed
|
||||||
|
#define SQL_XL_DEFAULT SQL_XL_ON
|
||||||
|
// Defines for use with SQL_COPT_SS_FALLBACK_CONNECT - Pre-Connect Option only
|
||||||
|
#define SQL_FB_OFF 0L // FallBack connections are disabled
|
||||||
|
#define SQL_FB_ON 1L // FallBack connections are enabled
|
||||||
|
#define SQL_FB_DEFAULT SQL_FB_OFF
|
||||||
|
// Defines for use with SQL_COPT_SS_BCP - Pre-Connect Option only
|
||||||
|
#define SQL_BCP_OFF 0L // BCP is not allowed on connection
|
||||||
|
#define SQL_BCP_ON 1L // BCP is allowed on connection
|
||||||
|
#define SQL_BCP_DEFAULT SQL_BCP_OFF
|
||||||
|
// Defines for use with SQL_COPT_SS_QUOTED_IDENT
|
||||||
|
#define SQL_QI_OFF 0L // Quoted identifiers are enable
|
||||||
|
#define SQL_QI_ON 1L // Quoted identifiers are disabled
|
||||||
|
#define SQL_QI_DEFAULT SQL_QI_ON
|
||||||
|
// Defines for use with SQL_COPT_SS_ANSI_NPW - Pre-Connect Option only
|
||||||
|
#define SQL_AD_OFF 0L // ANSI NULLs, Padding and Warnings are enabled
|
||||||
|
#define SQL_AD_ON 1L // ANSI NULLs, Padding and Warnings are disabled
|
||||||
|
#define SQL_AD_DEFAULT SQL_AD_ON
|
||||||
|
// Defines for use with SQL_COPT_SS_CONCAT_NULL - Pre-Connect Option only
|
||||||
|
#define SQL_CN_OFF 0L // CONCAT_NULL_YIELDS_NULL is off
|
||||||
|
#define SQL_CN_ON 1L // CONCAT_NULL_YIELDS_NULL is on
|
||||||
|
#define SQL_CN_DEFAULT SQL_CN_ON
|
||||||
|
// Defines for use with SQL_SOPT_SS_TEXTPTR_LOGGING
|
||||||
|
#define SQL_TL_OFF 0L // No logging on text pointer ops
|
||||||
|
#define SQL_TL_ON 1L // Logging occurs on text pointer ops
|
||||||
|
#define SQL_TL_DEFAULT SQL_TL_ON
|
||||||
|
// Defines for use with SQL_SOPT_SS_HIDDEN_COLUMNS
|
||||||
|
#define SQL_HC_OFF 0L // FOR BROWSE columns are hidden
|
||||||
|
#define SQL_HC_ON 1L // FOR BROWSE columns are exposed
|
||||||
|
#define SQL_HC_DEFAULT SQL_HC_OFF
|
||||||
|
// Defines for use with SQL_SOPT_SS_NOBROWSETABLE
|
||||||
|
#define SQL_NB_OFF 0L // NO_BROWSETABLE is off
|
||||||
|
#define SQL_NB_ON 1L // NO_BROWSETABLE is on
|
||||||
|
#define SQL_NB_DEFAULT SQL_NB_OFF
|
||||||
|
// Defines for use with SQL_SOPT_SS_REGIONALIZE
|
||||||
|
#define SQL_RE_OFF 0L // No regionalization occurs on output character conversions
|
||||||
|
#define SQL_RE_ON 1L // Regionalization occurs on output character conversions
|
||||||
|
#define SQL_RE_DEFAULT SQL_RE_OFF
|
||||||
|
// Defines for use with SQL_SOPT_SS_CURSOR_OPTIONS
|
||||||
|
#define SQL_CO_OFF 0L // Clear all cursor options
|
||||||
|
#define SQL_CO_FFO 1L // Fast-forward cursor will be used
|
||||||
|
#define SQL_CO_AF 2L // Autofetch on cursor open
|
||||||
|
#define SQL_CO_FFO_AF (SQL_CO_FFO|SQL_CO_AF) // Fast-forward cursor with autofetch
|
||||||
|
#define SQL_CO_FIREHOSE_AF 4L // Auto fetch on fire-hose cursors
|
||||||
|
#define SQL_CO_DEFAULT SQL_CO_OFF
|
||||||
|
//SQL_SOPT_SS_NOCOUNT_STATUS
|
||||||
|
#define SQL_NC_OFF 0L
|
||||||
|
#define SQL_NC_ON 1L
|
||||||
|
//SQL_SOPT_SS_DEFER_PREPARE
|
||||||
|
#define SQL_DP_OFF 0L
|
||||||
|
#define SQL_DP_ON 1L
|
||||||
|
//SQL_SOPT_SS_NAME_SCOPE
|
||||||
|
#define SQL_SS_NAME_SCOPE_TABLE 0L
|
||||||
|
#define SQL_SS_NAME_SCOPE_TABLE_TYPE 1L
|
||||||
|
#define SQL_SS_NAME_SCOPE_EXTENDED 2L
|
||||||
|
#define SQL_SS_NAME_SCOPE_SPARSE_COLUMN_SET 3L
|
||||||
|
#define SQL_SS_NAME_SCOPE_DEFAULT SQL_SS_NAME_SCOPE_TABLE
|
||||||
|
//SQL_COPT_SS_ENCRYPT
|
||||||
|
#define SQL_EN_OFF 0L
|
||||||
|
#define SQL_EN_ON 1L
|
||||||
|
//SQL_COPT_SS_TRUST_SERVER_CERTIFICATE
|
||||||
|
#define SQL_TRUST_SERVER_CERTIFICATE_NO 0L
|
||||||
|
#define SQL_TRUST_SERVER_CERTIFICATE_YES 1L
|
||||||
|
//SQL_COPT_SS_BROWSE_CONNECT
|
||||||
|
#define SQL_MORE_INFO_NO 0L
|
||||||
|
#define SQL_MORE_INFO_YES 1L
|
||||||
|
//SQL_COPT_SS_BROWSE_CACHE_DATA
|
||||||
|
#define SQL_CACHE_DATA_NO 0L
|
||||||
|
#define SQL_CACHE_DATA_YES 1L
|
||||||
|
//SQL_COPT_SS_RESET_CONNECTION
|
||||||
|
#define SQL_RESET_YES 1L
|
||||||
|
//SQL_COPT_SS_WARN_ON_CP_ERROR
|
||||||
|
#define SQL_WARN_NO 0L
|
||||||
|
#define SQL_WARN_YES 1L
|
||||||
|
//SQL_COPT_SS_MARS_ENABLED
|
||||||
|
#define SQL_MARS_ENABLED_NO 0L
|
||||||
|
#define SQL_MARS_ENABLED_YES 1L
|
||||||
|
/* SQL_TXN_ISOLATION_OPTION bitmasks */
|
||||||
|
#define SQL_TXN_SS_SNAPSHOT 0x00000020L
|
||||||
|
|
||||||
|
// The following are defines for SQL_CA_SS_COLUMN_SORT_ORDER
|
||||||
|
#define SQL_SS_ORDER_UNSPECIFIED 0L
|
||||||
|
#define SQL_SS_DESCENDING_ORDER 1L
|
||||||
|
#define SQL_SS_ASCENDING_ORDER 2L
|
||||||
|
#define SQL_SS_ORDER_DEFAULT SQL_SS_ORDER_UNSPECIFIED
|
||||||
|
|
||||||
|
// Driver specific SQL data type defines.
|
||||||
|
// Microsoft has -150 thru -199 reserved for Microsoft SQL Server Native Client driver usage.
|
||||||
|
#define SQL_SS_VARIANT (-150)
|
||||||
|
#define SQL_SS_UDT (-151)
|
||||||
|
#define SQL_SS_XML (-152)
|
||||||
|
#define SQL_SS_TABLE (-153)
|
||||||
|
#define SQL_SS_TIME2 (-154)
|
||||||
|
#define SQL_SS_TIMESTAMPOFFSET (-155)
|
||||||
|
|
||||||
|
// Local types to be used with SQL_CA_SS_SERVER_TYPE
|
||||||
|
#define SQL_SS_TYPE_DEFAULT 0L
|
||||||
|
#define SQL_SS_TYPE_SMALLDATETIME 1L
|
||||||
|
#define SQL_SS_TYPE_DATETIME 2L
|
||||||
|
|
||||||
|
// Extended C Types range 4000 and above. Range of -100 thru 200 is reserved by Driver Manager.
|
||||||
|
#define SQL_C_TYPES_EXTENDED 0x04000L
|
||||||
|
#define SQL_C_SS_TIME2 (SQL_C_TYPES_EXTENDED+0)
|
||||||
|
#define SQL_C_SS_TIMESTAMPOFFSET (SQL_C_TYPES_EXTENDED+1)
|
||||||
|
|
||||||
|
#ifndef SQLNCLI_NO_BCP
|
||||||
|
// Define the symbol SQLNCLI_NO_BCP if you are not using BCP in your application
|
||||||
|
// and you want to exclude the BCP-related definitions in this header file.
|
||||||
|
|
||||||
|
// SQL Server Data Type defines.
|
||||||
|
// New types for SQL 6.0 and later servers
|
||||||
|
#define SQLTEXT 0x23
|
||||||
|
#define SQLVARBINARY 0x25
|
||||||
|
#define SQLINTN 0x26
|
||||||
|
#define SQLVARCHAR 0x27
|
||||||
|
#define SQLBINARY 0x2d
|
||||||
|
#define SQLIMAGE 0x22
|
||||||
|
#define SQLCHARACTER 0x2f
|
||||||
|
#define SQLINT1 0x30
|
||||||
|
#define SQLBIT 0x32
|
||||||
|
#define SQLINT2 0x34
|
||||||
|
#define SQLINT4 0x38
|
||||||
|
#define SQLMONEY 0x3c
|
||||||
|
#define SQLDATETIME 0x3d
|
||||||
|
#define SQLFLT8 0x3e
|
||||||
|
#define SQLFLTN 0x6d
|
||||||
|
#define SQLMONEYN 0x6e
|
||||||
|
#define SQLDATETIMN 0x6f
|
||||||
|
#define SQLFLT4 0x3b
|
||||||
|
#define SQLMONEY4 0x7a
|
||||||
|
#define SQLDATETIM4 0x3a
|
||||||
|
// New types for SQL 6.0 and later servers
|
||||||
|
#define SQLDECIMAL 0x6a
|
||||||
|
#define SQLNUMERIC 0x6c
|
||||||
|
// New types for SQL 7.0 and later servers
|
||||||
|
#define SQLUNIQUEID 0x24
|
||||||
|
#define SQLBIGCHAR 0xaf
|
||||||
|
#define SQLBIGVARCHAR 0xa7
|
||||||
|
#define SQLBIGBINARY 0xad
|
||||||
|
#define SQLBIGVARBINARY 0xa5
|
||||||
|
#define SQLBITN 0x68
|
||||||
|
#define SQLNCHAR 0xef
|
||||||
|
#define SQLNVARCHAR 0xe7
|
||||||
|
#define SQLNTEXT 0x63
|
||||||
|
// New types for SQL 2000 and later servers
|
||||||
|
#define SQLINT8 0x7f
|
||||||
|
#define SQLVARIANT 0x62
|
||||||
|
// New types for SQL 2005 and later servers
|
||||||
|
#define SQLUDT 0xf0
|
||||||
|
#define SQLXML 0xf1
|
||||||
|
// New types for SQL 2008 and later servers
|
||||||
|
#define SQLTABLE 0xf3
|
||||||
|
#define SQLDATEN 0x28
|
||||||
|
#define SQLTIMEN 0x29
|
||||||
|
#define SQLDATETIME2N 0x2a
|
||||||
|
#define SQLDATETIMEOFFSETN 0x2b
|
||||||
|
// Define old names
|
||||||
|
#define SQLDECIMALN 0x6a
|
||||||
|
#define SQLNUMERICN 0x6c
|
||||||
|
#endif // SQLNCLI_NO_BCP
|
||||||
|
|
||||||
|
// SQL_SS_LENGTH_UNLIMITED is used to describe the max length of
|
||||||
|
// VARCHAR(max), VARBINARY(max), NVARCHAR(max), and XML columns
|
||||||
|
#define SQL_SS_LENGTH_UNLIMITED 0
|
||||||
|
|
||||||
|
// User Data Type definitions.
|
||||||
|
// Returned by SQLColAttributes/SQL_CA_SS_COLUMN_UTYPE.
|
||||||
|
#define SQLudtBINARY 3
|
||||||
|
#define SQLudtBIT 16
|
||||||
|
#define SQLudtBITN 0
|
||||||
|
#define SQLudtCHAR 1
|
||||||
|
#define SQLudtDATETIM4 22
|
||||||
|
#define SQLudtDATETIME 12
|
||||||
|
#define SQLudtDATETIMN 15
|
||||||
|
#define SQLudtDECML 24
|
||||||
|
#define SQLudtDECMLN 26
|
||||||
|
#define SQLudtFLT4 23
|
||||||
|
#define SQLudtFLT8 8
|
||||||
|
#define SQLudtFLTN 14
|
||||||
|
#define SQLudtIMAGE 20
|
||||||
|
#define SQLudtINT1 5
|
||||||
|
#define SQLudtINT2 6
|
||||||
|
#define SQLudtINT4 7
|
||||||
|
#define SQLudtINTN 13
|
||||||
|
#define SQLudtMONEY 11
|
||||||
|
#define SQLudtMONEY4 21
|
||||||
|
#define SQLudtMONEYN 17
|
||||||
|
#define SQLudtNUM 10
|
||||||
|
#define SQLudtNUMN 25
|
||||||
|
#define SQLudtSYSNAME 18
|
||||||
|
#define SQLudtTEXT 19
|
||||||
|
#define SQLudtTIMESTAMP 80
|
||||||
|
#define SQLudtUNIQUEIDENTIFIER 0
|
||||||
|
#define SQLudtVARBINARY 4
|
||||||
|
#define SQLudtVARCHAR 2
|
||||||
|
#define MIN_USER_DATATYPE 256
|
||||||
|
// Aggregate operator types.
|
||||||
|
// Returned by SQLColAttributes/SQL_CA_SS_COLUMN_OP.
|
||||||
|
#define SQLAOPSTDEV 0x30 // Standard deviation
|
||||||
|
#define SQLAOPSTDEVP 0x31 // Standard deviation population
|
||||||
|
#define SQLAOPVAR 0x32 // Variance
|
||||||
|
#define SQLAOPVARP 0x33 // Variance population
|
||||||
|
#define SQLAOPCNT 0x4b // Count
|
||||||
|
#define SQLAOPSUM 0x4d // Sum
|
||||||
|
#define SQLAOPAVG 0x4f // Average
|
||||||
|
#define SQLAOPMIN 0x51 // Min
|
||||||
|
#define SQLAOPMAX 0x52 // Max
|
||||||
|
#define SQLAOPANY 0x53 // Any
|
||||||
|
#define SQLAOPNOOP 0x56 // None
|
||||||
|
// SQLGetInfo driver specific defines.
|
||||||
|
// Microsoft has 1151 thru 1200 reserved for Microsoft SQL Server Native Client driver usage.
|
||||||
|
#define SQL_INFO_SS_FIRST 1199
|
||||||
|
#define SQL_INFO_SS_NETLIB_NAMEW (SQL_INFO_SS_FIRST+0) // dbprocinfo
|
||||||
|
#define SQL_INFO_SS_NETLIB_NAMEA (SQL_INFO_SS_FIRST+1) // dbprocinfo
|
||||||
|
#define SQL_INFO_SS_MAX_USED SQL_INFO_SS_NETLIB_NAMEA
|
||||||
|
#ifdef UNICODE
|
||||||
|
#define SQL_INFO_SS_NETLIB_NAME SQL_INFO_SS_NETLIB_NAMEW
|
||||||
|
#else
|
||||||
|
#define SQL_INFO_SS_NETLIB_NAME SQL_INFO_SS_NETLIB_NAMEA
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// SQLGetDiagField driver specific defines.
|
||||||
|
// Microsoft has -1150 thru -1199 reserved for Microsoft SQL Server Native Client driver usage.
|
||||||
|
#define SQL_DIAG_SS_BASE (-1150)
|
||||||
|
#define SQL_DIAG_SS_MSGSTATE (SQL_DIAG_SS_BASE)
|
||||||
|
#define SQL_DIAG_SS_SEVERITY (SQL_DIAG_SS_BASE-1)
|
||||||
|
#define SQL_DIAG_SS_SRVNAME (SQL_DIAG_SS_BASE-2)
|
||||||
|
#define SQL_DIAG_SS_PROCNAME (SQL_DIAG_SS_BASE-3)
|
||||||
|
#define SQL_DIAG_SS_LINE (SQL_DIAG_SS_BASE-4)
|
||||||
|
// SQLGetDiagField/SQL_DIAG_DYNAMIC_FUNCTION_CODE driver specific defines.
|
||||||
|
// Microsoft has -200 thru -299 reserved for Microsoft SQL Server Native Client driver usage.
|
||||||
|
#define SQL_DIAG_DFC_SS_BASE (-200)
|
||||||
|
#define SQL_DIAG_DFC_SS_ALTER_DATABASE (SQL_DIAG_DFC_SS_BASE-0)
|
||||||
|
#define SQL_DIAG_DFC_SS_CHECKPOINT (SQL_DIAG_DFC_SS_BASE-1)
|
||||||
|
#define SQL_DIAG_DFC_SS_CONDITION (SQL_DIAG_DFC_SS_BASE-2)
|
||||||
|
#define SQL_DIAG_DFC_SS_CREATE_DATABASE (SQL_DIAG_DFC_SS_BASE-3)
|
||||||
|
#define SQL_DIAG_DFC_SS_CREATE_DEFAULT (SQL_DIAG_DFC_SS_BASE-4)
|
||||||
|
#define SQL_DIAG_DFC_SS_CREATE_PROCEDURE (SQL_DIAG_DFC_SS_BASE-5)
|
||||||
|
#define SQL_DIAG_DFC_SS_CREATE_RULE (SQL_DIAG_DFC_SS_BASE-6)
|
||||||
|
#define SQL_DIAG_DFC_SS_CREATE_TRIGGER (SQL_DIAG_DFC_SS_BASE-7)
|
||||||
|
#define SQL_DIAG_DFC_SS_CURSOR_DECLARE (SQL_DIAG_DFC_SS_BASE-8)
|
||||||
|
#define SQL_DIAG_DFC_SS_CURSOR_OPEN (SQL_DIAG_DFC_SS_BASE-9)
|
||||||
|
#define SQL_DIAG_DFC_SS_CURSOR_FETCH (SQL_DIAG_DFC_SS_BASE-10)
|
||||||
|
#define SQL_DIAG_DFC_SS_CURSOR_CLOSE (SQL_DIAG_DFC_SS_BASE-11)
|
||||||
|
#define SQL_DIAG_DFC_SS_DEALLOCATE_CURSOR (SQL_DIAG_DFC_SS_BASE-12)
|
||||||
|
#define SQL_DIAG_DFC_SS_DBCC (SQL_DIAG_DFC_SS_BASE-13)
|
||||||
|
#define SQL_DIAG_DFC_SS_DISK (SQL_DIAG_DFC_SS_BASE-14)
|
||||||
|
#define SQL_DIAG_DFC_SS_DROP_DATABASE (SQL_DIAG_DFC_SS_BASE-15)
|
||||||
|
#define SQL_DIAG_DFC_SS_DROP_DEFAULT (SQL_DIAG_DFC_SS_BASE-16)
|
||||||
|
#define SQL_DIAG_DFC_SS_DROP_PROCEDURE (SQL_DIAG_DFC_SS_BASE-17)
|
||||||
|
#define SQL_DIAG_DFC_SS_DROP_RULE (SQL_DIAG_DFC_SS_BASE-18)
|
||||||
|
#define SQL_DIAG_DFC_SS_DROP_TRIGGER (SQL_DIAG_DFC_SS_BASE-19)
|
||||||
|
#define SQL_DIAG_DFC_SS_DUMP_DATABASE (SQL_DIAG_DFC_SS_BASE-20)
|
||||||
|
#define SQL_DIAG_DFC_SS_BACKUP_DATABASE (SQL_DIAG_DFC_SS_BASE-20)
|
||||||
|
#define SQL_DIAG_DFC_SS_DUMP_TABLE (SQL_DIAG_DFC_SS_BASE-21)
|
||||||
|
#define SQL_DIAG_DFC_SS_DUMP_TRANSACTION (SQL_DIAG_DFC_SS_BASE-22)
|
||||||
|
#define SQL_DIAG_DFC_SS_BACKUP_TRANSACTION (SQL_DIAG_DFC_SS_BASE-22)
|
||||||
|
#define SQL_DIAG_DFC_SS_GOTO (SQL_DIAG_DFC_SS_BASE-23)
|
||||||
|
#define SQL_DIAG_DFC_SS_INSERT_BULK (SQL_DIAG_DFC_SS_BASE-24)
|
||||||
|
#define SQL_DIAG_DFC_SS_KILL (SQL_DIAG_DFC_SS_BASE-25)
|
||||||
|
#define SQL_DIAG_DFC_SS_LOAD_DATABASE (SQL_DIAG_DFC_SS_BASE-26)
|
||||||
|
#define SQL_DIAG_DFC_SS_RESTORE_DATABASE (SQL_DIAG_DFC_SS_BASE-26)
|
||||||
|
#define SQL_DIAG_DFC_SS_LOAD_HEADERONLY (SQL_DIAG_DFC_SS_BASE-27)
|
||||||
|
#define SQL_DIAG_DFC_SS_RESTORE_HEADERONLY (SQL_DIAG_DFC_SS_BASE-27)
|
||||||
|
#define SQL_DIAG_DFC_SS_LOAD_TABLE (SQL_DIAG_DFC_SS_BASE-28)
|
||||||
|
#define SQL_DIAG_DFC_SS_LOAD_TRANSACTION (SQL_DIAG_DFC_SS_BASE-29)
|
||||||
|
#define SQL_DIAG_DFC_SS_RESTORE_TRANSACTION (SQL_DIAG_DFC_SS_BASE-29)
|
||||||
|
#define SQL_DIAG_DFC_SS_PRINT (SQL_DIAG_DFC_SS_BASE-30)
|
||||||
|
#define SQL_DIAG_DFC_SS_RAISERROR (SQL_DIAG_DFC_SS_BASE-31)
|
||||||
|
#define SQL_DIAG_DFC_SS_READTEXT (SQL_DIAG_DFC_SS_BASE-32)
|
||||||
|
#define SQL_DIAG_DFC_SS_RECONFIGURE (SQL_DIAG_DFC_SS_BASE-33)
|
||||||
|
#define SQL_DIAG_DFC_SS_RETURN (SQL_DIAG_DFC_SS_BASE-34)
|
||||||
|
#define SQL_DIAG_DFC_SS_SELECT_INTO (SQL_DIAG_DFC_SS_BASE-35)
|
||||||
|
#define SQL_DIAG_DFC_SS_SET (SQL_DIAG_DFC_SS_BASE-36)
|
||||||
|
#define SQL_DIAG_DFC_SS_SET_IDENTITY_INSERT (SQL_DIAG_DFC_SS_BASE-37)
|
||||||
|
#define SQL_DIAG_DFC_SS_SET_ROW_COUNT (SQL_DIAG_DFC_SS_BASE-38)
|
||||||
|
#define SQL_DIAG_DFC_SS_SET_STATISTICS (SQL_DIAG_DFC_SS_BASE-39)
|
||||||
|
#define SQL_DIAG_DFC_SS_SET_TEXTSIZE (SQL_DIAG_DFC_SS_BASE-40)
|
||||||
|
#define SQL_DIAG_DFC_SS_SETUSER (SQL_DIAG_DFC_SS_BASE-41)
|
||||||
|
#define SQL_DIAG_DFC_SS_SHUTDOWN (SQL_DIAG_DFC_SS_BASE-42)
|
||||||
|
#define SQL_DIAG_DFC_SS_TRANS_BEGIN (SQL_DIAG_DFC_SS_BASE-43)
|
||||||
|
#define SQL_DIAG_DFC_SS_TRANS_COMMIT (SQL_DIAG_DFC_SS_BASE-44)
|
||||||
|
#define SQL_DIAG_DFC_SS_TRANS_PREPARE (SQL_DIAG_DFC_SS_BASE-45)
|
||||||
|
#define SQL_DIAG_DFC_SS_TRANS_ROLLBACK (SQL_DIAG_DFC_SS_BASE-46)
|
||||||
|
#define SQL_DIAG_DFC_SS_TRANS_SAVE (SQL_DIAG_DFC_SS_BASE-47)
|
||||||
|
#define SQL_DIAG_DFC_SS_TRUNCATE_TABLE (SQL_DIAG_DFC_SS_BASE-48)
|
||||||
|
#define SQL_DIAG_DFC_SS_UPDATE_STATISTICS (SQL_DIAG_DFC_SS_BASE-49)
|
||||||
|
#define SQL_DIAG_DFC_SS_UPDATETEXT (SQL_DIAG_DFC_SS_BASE-50)
|
||||||
|
#define SQL_DIAG_DFC_SS_USE (SQL_DIAG_DFC_SS_BASE-51)
|
||||||
|
#define SQL_DIAG_DFC_SS_WAITFOR (SQL_DIAG_DFC_SS_BASE-52)
|
||||||
|
#define SQL_DIAG_DFC_SS_WRITETEXT (SQL_DIAG_DFC_SS_BASE-53)
|
||||||
|
#define SQL_DIAG_DFC_SS_DENY (SQL_DIAG_DFC_SS_BASE-54)
|
||||||
|
#define SQL_DIAG_DFC_SS_SET_XCTLVL (SQL_DIAG_DFC_SS_BASE-55)
|
||||||
|
#define SQL_DIAG_DFC_SS_MERGE (SQL_DIAG_DFC_SS_BASE-56)
|
||||||
|
|
||||||
|
// Severity codes for SQL_DIAG_SS_SEVERITY
|
||||||
|
#define EX_ANY 0
|
||||||
|
#define EX_INFO 10
|
||||||
|
#define EX_MAXISEVERITY EX_INFO
|
||||||
|
#define EX_MISSING 11
|
||||||
|
#define EX_TYPE 12
|
||||||
|
#define EX_DEADLOCK 13
|
||||||
|
#define EX_PERMIT 14
|
||||||
|
#define EX_SYNTAX 15
|
||||||
|
#define EX_USER 16
|
||||||
|
#define EX_RESOURCE 17
|
||||||
|
#define EX_INTOK 18
|
||||||
|
#define MAXUSEVERITY EX_INTOK
|
||||||
|
#define EX_LIMIT 19
|
||||||
|
#define EX_CMDFATAL 20
|
||||||
|
#define MINFATALERR EX_CMDFATAL
|
||||||
|
#define EX_DBFATAL 21
|
||||||
|
#define EX_TABCORRUPT 22
|
||||||
|
#define EX_DBCORRUPT 23
|
||||||
|
#define EX_HARDWARE 24
|
||||||
|
#define EX_CONTROL 25
|
||||||
|
// Internal server datatypes - used when binding to SQL_C_BINARY
|
||||||
|
#ifndef MAXNUMERICLEN // Resolve ODS/DBLib conflicts
|
||||||
|
// DB-Library datatypes
|
||||||
|
#define DBMAXCHAR (8000+1) // Max length of DBVARBINARY and DBVARCHAR, etc. +1 for zero byte
|
||||||
|
#define MAXNAME (SQL_MAX_SQLSERVERNAME+1) // Max server identifier length including zero byte
|
||||||
|
#ifdef UNICODE
|
||||||
|
typedef wchar_t DBCHAR;
|
||||||
|
#else
|
||||||
|
typedef char DBCHAR;
|
||||||
|
|
||||||
|
#endif
|
||||||
|
typedef short SQLSMALLINT;
|
||||||
|
|
||||||
|
typedef unsigned short SQLUSMALLINT;
|
||||||
|
|
||||||
|
typedef unsigned char DBBINARY;
|
||||||
|
|
||||||
|
typedef unsigned char DBTINYINT;
|
||||||
|
|
||||||
|
typedef short DBSMALLINT;
|
||||||
|
|
||||||
|
typedef unsigned short DBUSMALLINT;
|
||||||
|
|
||||||
|
typedef double DBFLT8;
|
||||||
|
|
||||||
|
typedef unsigned char DBBIT;
|
||||||
|
|
||||||
|
typedef unsigned char DBBOOL;
|
||||||
|
|
||||||
|
typedef float DBFLT4;
|
||||||
|
|
||||||
|
typedef DBFLT4 DBREAL;
|
||||||
|
|
||||||
|
typedef UINT DBUBOOL;
|
||||||
|
|
||||||
|
typedef struct dbmoney
|
||||||
|
{
|
||||||
|
LONG mnyhigh;
|
||||||
|
ULONG mnylow;
|
||||||
|
} DBMONEY;
|
||||||
|
|
||||||
|
typedef struct dbdatetime
|
||||||
|
{
|
||||||
|
LONG dtdays;
|
||||||
|
ULONG dttime;
|
||||||
|
} DBDATETIME;
|
||||||
|
|
||||||
|
typedef struct dbdatetime4
|
||||||
|
{
|
||||||
|
USHORT numdays;
|
||||||
|
USHORT nummins;
|
||||||
|
} DBDATETIM4;
|
||||||
|
|
||||||
|
typedef LONG DBMONEY4;
|
||||||
|
|
||||||
|
#include <pshpack8.h> // 8-byte structure packing
|
||||||
|
|
||||||
|
// New Date Time Structures
|
||||||
|
// New Structure for TIME2
|
||||||
|
typedef struct tagSS_TIME2_STRUCT
|
||||||
|
{
|
||||||
|
SQLUSMALLINT hour;
|
||||||
|
SQLUSMALLINT minute;
|
||||||
|
SQLUSMALLINT second;
|
||||||
|
SQLUINTEGER fraction;
|
||||||
|
} SQL_SS_TIME2_STRUCT;
|
||||||
|
// New Structure for TIMESTAMPOFFSET
|
||||||
|
typedef struct tagSS_TIMESTAMPOFFSET_STRUCT
|
||||||
|
{
|
||||||
|
SQLSMALLINT year;
|
||||||
|
SQLUSMALLINT month;
|
||||||
|
SQLUSMALLINT day;
|
||||||
|
SQLUSMALLINT hour;
|
||||||
|
SQLUSMALLINT minute;
|
||||||
|
SQLUSMALLINT second;
|
||||||
|
SQLUINTEGER fraction;
|
||||||
|
SQLSMALLINT timezone_hour;
|
||||||
|
SQLSMALLINT timezone_minute;
|
||||||
|
} SQL_SS_TIMESTAMPOFFSET_STRUCT;
|
||||||
|
|
||||||
|
typedef struct tagDBTIME2
|
||||||
|
{
|
||||||
|
USHORT hour;
|
||||||
|
USHORT minute;
|
||||||
|
USHORT second;
|
||||||
|
ULONG fraction;
|
||||||
|
} DBTIME2;
|
||||||
|
|
||||||
|
typedef struct tagDBTIMESTAMPOFFSET
|
||||||
|
{
|
||||||
|
SHORT year;
|
||||||
|
USHORT month;
|
||||||
|
USHORT day;
|
||||||
|
USHORT hour;
|
||||||
|
USHORT minute;
|
||||||
|
USHORT second;
|
||||||
|
ULONG fraction;
|
||||||
|
SHORT timezone_hour;
|
||||||
|
SHORT timezone_minute;
|
||||||
|
} DBTIMESTAMPOFFSET;
|
||||||
|
|
||||||
|
#include <poppack.h> // restore original structure packing
|
||||||
|
|
||||||
|
// Money value *10,000
|
||||||
|
#define DBNUM_PREC_TYPE BYTE
|
||||||
|
#define DBNUM_SCALE_TYPE BYTE
|
||||||
|
#define DBNUM_VAL_TYPE BYTE
|
||||||
|
|
||||||
|
#if (ODBCVER < 0x0300)
|
||||||
|
#define MAXNUMERICLEN 16
|
||||||
|
typedef struct dbnumeric // Internal representation of NUMERIC data type
|
||||||
|
{
|
||||||
|
DBNUM_PREC_TYPE precision; // Precision
|
||||||
|
DBNUM_SCALE_TYPE scale; // Scale
|
||||||
|
BYTE sign; // Sign (1 if positive, 0 if negative)
|
||||||
|
DBNUM_VAL_TYPE val[MAXNUMERICLEN];// Value
|
||||||
|
} DBNUMERIC;
|
||||||
|
typedef DBNUMERIC DBDECIMAL;// Internal representation of DECIMAL data type
|
||||||
|
#else // Use ODBC 3.0 definitions since same as DBLib
|
||||||
|
#define MAXNUMERICLEN SQL_MAX_NUMERIC_LEN
|
||||||
|
typedef SQL_NUMERIC_STRUCT DBNUMERIC;
|
||||||
|
typedef SQL_NUMERIC_STRUCT DBDECIMAL;
|
||||||
|
#endif // ODCBVER
|
||||||
|
#endif // MAXNUMERICLEN
|
||||||
|
|
||||||
|
#ifndef INT
|
||||||
|
typedef int INT;
|
||||||
|
typedef LONG DBINT;
|
||||||
|
typedef DBINT * LPDBINT;
|
||||||
|
#ifndef _LPCBYTE_DEFINED
|
||||||
|
#define _LPCBYTE_DEFINED
|
||||||
|
typedef BYTE const* LPCBYTE;
|
||||||
|
#endif //_LPCBYTE_DEFINED
|
||||||
|
#endif // INT
|
||||||
|
/**************************************************************************
|
||||||
|
This struct is a global used for gathering statistical data on the driver.
|
||||||
|
Access to this structure is controlled via the pStatCrit;
|
||||||
|
***************************************************************************/
|
||||||
|
typedef struct sqlperf
|
||||||
|
{
|
||||||
|
// Application Profile Statistics
|
||||||
|
DWORD TimerResolution;
|
||||||
|
DWORD SQLidu;
|
||||||
|
DWORD SQLiduRows;
|
||||||
|
DWORD SQLSelects;
|
||||||
|
DWORD SQLSelectRows;
|
||||||
|
DWORD Transactions;
|
||||||
|
DWORD SQLPrepares;
|
||||||
|
DWORD ExecDirects;
|
||||||
|
DWORD SQLExecutes;
|
||||||
|
DWORD CursorOpens;
|
||||||
|
DWORD CursorSize;
|
||||||
|
DWORD CursorUsed;
|
||||||
|
LDOUBLE PercentCursorUsed;
|
||||||
|
LDOUBLE AvgFetchTime;
|
||||||
|
LDOUBLE AvgCursorSize;
|
||||||
|
LDOUBLE AvgCursorUsed;
|
||||||
|
DWORD SQLFetchTime;
|
||||||
|
DWORD SQLFetchCount;
|
||||||
|
DWORD CurrentStmtCount;
|
||||||
|
DWORD MaxOpenStmt;
|
||||||
|
DWORD SumOpenStmt;
|
||||||
|
// Connection Statistics
|
||||||
|
DWORD CurrentConnectionCount;
|
||||||
|
DWORD MaxConnectionsOpened;
|
||||||
|
DWORD SumConnectionsOpened;
|
||||||
|
DWORD SumConnectiontime;
|
||||||
|
LDOUBLE AvgTimeOpened;
|
||||||
|
// Network Statistics
|
||||||
|
DWORD ServerRndTrips;
|
||||||
|
DWORD BuffersSent;
|
||||||
|
DWORD BuffersRec;
|
||||||
|
DWORD BytesSent;
|
||||||
|
DWORD BytesRec;
|
||||||
|
// Time Statistics;
|
||||||
|
DWORD msExecutionTime;
|
||||||
|
DWORD msNetWorkServerTime;
|
||||||
|
} SQLPERF;
|
||||||
|
// The following are options for SQL_COPT_SS_PERF_DATA and SQL_COPT_SS_PERF_QUERY
|
||||||
|
#define SQL_PERF_START 1 // Starts the driver sampling performance data.
|
||||||
|
#define SQL_PERF_STOP 2 // Stops the counters from sampling performance data.
|
||||||
|
// The following are defines for SQL_COPT_SS_PERF_DATA_LOG
|
||||||
|
#define SQL_SS_DL_DEFAULT TEXT("STATS.LOG")
|
||||||
|
// The following are defines for SQL_COPT_SS_PERF_QUERY_LOG
|
||||||
|
#define SQL_SS_QL_DEFAULT TEXT("QUERY.LOG")
|
||||||
|
// The following are defines for SQL_COPT_SS_PERF_QUERY_INTERVAL
|
||||||
|
#define SQL_SS_QI_DEFAULT 30000 // 30,000 milliseconds
|
||||||
|
|
||||||
|
#ifndef SQLNCLI_NO_BCP
|
||||||
|
// Define the symbol SQLNCLI_NO_BCP if you are not using BCP in your application
|
||||||
|
// and you want to exclude the BCP-related definitions in this header file.
|
||||||
|
|
||||||
|
// ODBC BCP prototypes and defines
|
||||||
|
// Return codes
|
||||||
|
#define SUCCEED 1
|
||||||
|
#define FAIL 0
|
||||||
|
#define SUCCEED_ABORT 2
|
||||||
|
#define SUCCEED_ASYNC 3
|
||||||
|
// Transfer directions
|
||||||
|
#define DB_IN 1 // Transfer from client to server
|
||||||
|
#define DB_OUT 2 // Transfer from server to client
|
||||||
|
// bcp_control option
|
||||||
|
#define BCPMAXERRS 1 // Sets max errors allowed
|
||||||
|
#define BCPFIRST 2 // Sets first row to be copied out
|
||||||
|
#define BCPLAST 3 // Sets number of rows to be copied out
|
||||||
|
#define BCPBATCH 4 // Sets input batch size
|
||||||
|
#define BCPKEEPNULLS 5 // Sets to insert NULLs for empty input values
|
||||||
|
#define BCPABORT 6 // Sets to have bcpexec return SUCCEED_ABORT
|
||||||
|
#define BCPODBC 7 // Sets ODBC canonical character output
|
||||||
|
#define BCPKEEPIDENTITY 8 // Sets IDENTITY_INSERT on
|
||||||
|
#if SQLNCLI_VER < 1000
|
||||||
|
#define BCP6xFILEFMT 9 // DEPRECATED: Sets 6x file format on
|
||||||
|
#endif
|
||||||
|
#define BCPHINTSA 10 // Sets server BCP hints (ANSI string)
|
||||||
|
#define BCPHINTSW 11 // Sets server BCP hints (UNICODE string)
|
||||||
|
#define BCPFILECP 12 // Sets clients code page for the file
|
||||||
|
#define BCPUNICODEFILE 13 // Sets that the file contains unicode header
|
||||||
|
#define BCPTEXTFILE 14 // Sets BCP mode to expect a text file and to detect Unicode or ANSI automatically
|
||||||
|
#define BCPFILEFMT 15 // Sets file format version
|
||||||
|
#define BCPFMTXML 16 // Sets the format file type to xml
|
||||||
|
#define BCPFIRSTEX 17 // Starting Row for BCP operation (64 bit)
|
||||||
|
#define BCPLASTEX 18 // Ending Row for BCP operation (64 bit)
|
||||||
|
#define BCPROWCOUNT 19 // Total Number of Rows Copied (64 bit)
|
||||||
|
#define BCPDELAYREADFMT 20 // Delay reading format file unil bcp_exec
|
||||||
|
// BCPFILECP values
|
||||||
|
// Any valid code page that is installed on the client can be passed plus:
|
||||||
|
#define BCPFILECP_ACP 0 // Data in file is in Windows code page
|
||||||
|
#define BCPFILECP_OEMCP 1 // Data in file is in OEM code page (default)
|
||||||
|
#define BCPFILECP_RAW (-1)// Data in file is in Server code page (no conversion)
|
||||||
|
// bcp_collen definition
|
||||||
|
#define SQL_VARLEN_DATA (-10) // Use default length for column
|
||||||
|
// BCP column format properties
|
||||||
|
#define BCP_FMT_TYPE 0x01
|
||||||
|
#define BCP_FMT_INDICATOR_LEN 0x02
|
||||||
|
#define BCP_FMT_DATA_LEN 0x03
|
||||||
|
#define BCP_FMT_TERMINATOR 0x04
|
||||||
|
#define BCP_FMT_SERVER_COL 0x05
|
||||||
|
#define BCP_FMT_COLLATION 0x06
|
||||||
|
#define BCP_FMT_COLLATION_ID 0x07
|
||||||
|
// bcp_setbulkmode properties
|
||||||
|
#define BCP_OUT_CHARACTER_MODE 0x01
|
||||||
|
#define BCP_OUT_WIDE_CHARACTER_MODE 0x02
|
||||||
|
#define BCP_OUT_NATIVE_TEXT_MODE 0x03
|
||||||
|
#define BCP_OUT_NATIVE_MODE 0x04
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// BCP functions
|
||||||
|
DBINT SQL_API bcp_batch (HDBC);
|
||||||
|
RETCODE SQL_API bcp_bind (HDBC, LPCBYTE, INT, DBINT, LPCBYTE, INT, INT, INT);
|
||||||
|
RETCODE SQL_API bcp_colfmt (HDBC, INT, BYTE, INT, DBINT, LPCBYTE, INT, INT);
|
||||||
|
RETCODE SQL_API bcp_collen (HDBC, DBINT, INT);
|
||||||
|
RETCODE SQL_API bcp_colptr (HDBC, LPCBYTE, INT);
|
||||||
|
RETCODE SQL_API bcp_columns (HDBC, INT);
|
||||||
|
RETCODE SQL_API bcp_control (HDBC, INT, void *);
|
||||||
|
DBINT SQL_API bcp_done (HDBC);
|
||||||
|
RETCODE SQL_API bcp_exec (HDBC, LPDBINT);
|
||||||
|
RETCODE SQL_API bcp_getcolfmt (HDBC, INT, INT, void *, INT, INT *);
|
||||||
|
RETCODE SQL_API bcp_initA (HDBC, LPCSTR, LPCSTR, LPCSTR, INT);
|
||||||
|
RETCODE SQL_API bcp_initW (HDBC, LPCWSTR, LPCWSTR, LPCWSTR, INT);
|
||||||
|
RETCODE SQL_API bcp_moretext (HDBC, DBINT, LPCBYTE);
|
||||||
|
RETCODE SQL_API bcp_readfmtA (HDBC, LPCSTR);
|
||||||
|
RETCODE SQL_API bcp_readfmtW (HDBC, LPCWSTR);
|
||||||
|
RETCODE SQL_API bcp_sendrow (HDBC);
|
||||||
|
RETCODE SQL_API bcp_setbulkmode (HDBC, INT, __in_bcount(cbField) void*, INT cbField, __in_bcount(cbRow) void *, INT cbRow);
|
||||||
|
RETCODE SQL_API bcp_setcolfmt (HDBC, INT, INT, void *, INT);
|
||||||
|
RETCODE SQL_API bcp_writefmtA (HDBC, LPCSTR);
|
||||||
|
RETCODE SQL_API bcp_writefmtW (HDBC, LPCWSTR);
|
||||||
|
CHAR* SQL_API dbprtypeA (INT);
|
||||||
|
WCHAR* SQL_API dbprtypeW (INT);
|
||||||
|
CHAR* SQL_API bcp_gettypenameA (INT, DBBOOL);
|
||||||
|
WCHAR* SQL_API bcp_gettypenameW (INT, DBBOOL);
|
||||||
|
|
||||||
|
#ifdef UNICODE
|
||||||
|
#define bcp_init bcp_initW
|
||||||
|
#define bcp_readfmt bcp_readfmtW
|
||||||
|
#define bcp_writefmt bcp_writefmtW
|
||||||
|
#define dbprtype dbprtypeW
|
||||||
|
#define bcp_gettypename bcp_gettypenameW
|
||||||
|
#define BCPHINTS BCPHINTSW
|
||||||
|
#else
|
||||||
|
#define bcp_init bcp_initA
|
||||||
|
#define bcp_readfmt bcp_readfmtA
|
||||||
|
#define bcp_writefmt bcp_writefmtA
|
||||||
|
#define dbprtype dbprtypeA
|
||||||
|
#define bcp_gettypename bcp_gettypenameA
|
||||||
|
#define BCPHINTS BCPHINTSA
|
||||||
|
#endif // UNICODE
|
||||||
|
|
||||||
|
#endif // SQLNCLI_NO_BCP
|
||||||
|
|
||||||
|
// The following options have been deprecated
|
||||||
|
#define SQL_FAST_CONNECT (SQL_COPT_SS_BASE+0)
|
||||||
|
// Defines for use with SQL_FAST_CONNECT - only useable before connecting
|
||||||
|
#define SQL_FC_OFF 0L // Fast connect is off
|
||||||
|
#define SQL_FC_ON 1L // Fast connect is on
|
||||||
|
#define SQL_FC_DEFAULT SQL_FC_OFF
|
||||||
|
#define SQL_COPT_SS_ANSI_OEM (SQL_COPT_SS_BASE+6)
|
||||||
|
#define SQL_AO_OFF 0L
|
||||||
|
#define SQL_AO_ON 1L
|
||||||
|
#define SQL_AO_DEFAULT SQL_AO_OFF
|
||||||
|
#define SQL_CA_SS_BASE_COLUMN_NAME SQL_DESC_BASE_COLUMN_NAME
|
||||||
|
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
} // extern "C"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif // ODBCVER
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
extern "C" {
|
||||||
|
#endif
|
||||||
|
#include <windows.h>
|
||||||
|
|
||||||
|
//The following facilitates opening a handle to a SQL filestream
|
||||||
|
typedef enum _SQL_FILESTREAM_DESIRED_ACCESS {
|
||||||
|
SQL_FILESTREAM_READ = 0,
|
||||||
|
SQL_FILESTREAM_WRITE = 1,
|
||||||
|
SQL_FILESTREAM_READWRITE = 2
|
||||||
|
} SQL_FILESTREAM_DESIRED_ACCESS;
|
||||||
|
#define SQL_FILESTREAM_OPEN_FLAG_ASYNC 0x00000001L
|
||||||
|
#define SQL_FILESTREAM_OPEN_FLAG_NO_BUFFERING 0x00000002L
|
||||||
|
#define SQL_FILESTREAM_OPEN_FLAG_NO_WRITE_THROUGH 0x00000004L
|
||||||
|
#define SQL_FILESTREAM_OPEN_FLAG_SEQUENTIAL_SCAN 0x00000008L
|
||||||
|
#define SQL_FILESTREAM_OPEN_FLAG_RANDOM_ACCESS 0x00000010L
|
||||||
|
|
||||||
|
|
||||||
|
HANDLE __stdcall OpenSqlFilestream (
|
||||||
|
LPCWSTR FilestreamPath,
|
||||||
|
SQL_FILESTREAM_DESIRED_ACCESS DesiredAccess,
|
||||||
|
ULONG OpenOptions,
|
||||||
|
__in_bcount(FilestreamTransactionContextLength)
|
||||||
|
LPBYTE FilestreamTransactionContext,
|
||||||
|
SSIZE_T FilestreamTransactionContextLength,
|
||||||
|
PLARGE_INTEGER AllocationSize);
|
||||||
|
#define FSCTL_SQL_FILESTREAM_FETCH_OLD_CONTENT CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 2392, METHOD_BUFFERED, FILE_ANY_ACCESS)
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
} // extern "C"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
#endif //__sqlncli_h__
|
||||||
|
|
||||||
|
#define SQL_COPT_SS_CONNECT_RETRY_COUNT (SQL_COPT_SS_BASE+34) // Post connection attribute used to get ConnectRetryCount
|
||||||
|
#define SQL_COPT_SS_CONNECT_RETRY_INTERVAL (SQL_COPT_SS_BASE+35) // Post connection attribute used to get ConnectRetryInterval
|
||||||
|
#ifdef SQL_COPT_SS_MAX_USED
|
||||||
|
#undef SQL_COPT_SS_MAX_USED
|
||||||
|
#endif // SQL_COPT_SS_MAX_USED
|
||||||
|
#define SQL_COPT_SS_MAX_USED SQL_COPT_SS_CONNECT_RETRY_INTERVAL
|
||||||
|
|
||||||
|
|
||||||
|
#ifndef _SQLUSERINSTANCE_H_
|
||||||
|
#define _SQLUSERINSTANCE_H_
|
||||||
|
|
||||||
|
#include <windows.h>
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
extern "C" {
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
// Recommended buffer size to store a LocalDB connection string
|
||||||
|
#define LOCALDB_MAX_SQLCONNECTION_BUFFER_SIZE 260
|
||||||
|
|
||||||
|
// type definition for LocalDBCreateInstance function
|
||||||
|
typedef HRESULT __cdecl FnLocalDBCreateInstance (
|
||||||
|
// I the LocalDB version (e.g. 11.0 or 11.0.1094.2)
|
||||||
|
__in_z PCWSTR wszVersion,
|
||||||
|
// I the instance name
|
||||||
|
__in_z PCWSTR pInstanceName,
|
||||||
|
// I reserved for the future use. Currently should be set to 0.
|
||||||
|
__in DWORD dwFlags
|
||||||
|
);
|
||||||
|
|
||||||
|
// type definition for pointer to LocalDBCreateInstance function
|
||||||
|
typedef FnLocalDBCreateInstance* PFnLocalDBCreateInstance;
|
||||||
|
|
||||||
|
// type definition for LocalDBStartInstance function
|
||||||
|
typedef HRESULT __cdecl FnLocalDBStartInstance (
|
||||||
|
// I the LocalDB instance name
|
||||||
|
__in_z PCWSTR pInstanceName,
|
||||||
|
// I reserved for the future use. Currently should be set to 0.
|
||||||
|
__in DWORD dwFlags,
|
||||||
|
// O the buffer to store the connection string to the LocalDB instance
|
||||||
|
__out_ecount_z_opt(*lpcchSqlConnection) LPWSTR wszSqlConnection,
|
||||||
|
// I/O on input has the size of the wszSqlConnection buffer in characters. On output, if the given buffer size is
|
||||||
|
// too small, has the buffer size required, in characters, including trailing null.
|
||||||
|
__inout_opt LPDWORD lpcchSqlConnection
|
||||||
|
);
|
||||||
|
|
||||||
|
// type definition for pointer to LocalDBStartInstance function
|
||||||
|
typedef FnLocalDBStartInstance* PFnLocalDBStartInstance;
|
||||||
|
|
||||||
|
// Flags for the LocalDBFormatMessage function
|
||||||
|
#define LOCALDB_TRUNCATE_ERR_MESSAGE 0x0001L
|
||||||
|
|
||||||
|
// type definition for LocalDBFormatMessage function
|
||||||
|
typedef HRESULT __cdecl FnLocalDBFormatMessage(
|
||||||
|
// I the LocalDB error code
|
||||||
|
__in HRESULT hrLocalDB,
|
||||||
|
// I Available flags:
|
||||||
|
// LOCALDB_TRUNCATE_ERR_MESSAGE - if the input buffer is too short,
|
||||||
|
// the error message will be truncated to fit into the buffer
|
||||||
|
__in DWORD dwFlags,
|
||||||
|
// I Language desired (LCID) or 0 (in which case Win32 FormatMessage order is used)
|
||||||
|
__in DWORD dwLanguageId,
|
||||||
|
// O the buffer to store the LocalDB error message
|
||||||
|
__out_ecount_z(*lpcchMessage) LPWSTR wszMessage,
|
||||||
|
// I/O on input has the size of the wszMessage buffer in characters. On output, if the given buffer size is
|
||||||
|
// too small, has the buffer size required, in characters, including trailing null. If the function succeeds
|
||||||
|
// contains the number of characters in the message, excluding the trailing null
|
||||||
|
__inout LPDWORD lpcchMessage
|
||||||
|
);
|
||||||
|
|
||||||
|
// type definition for function pointer to LocalDBFormatMessage function
|
||||||
|
typedef FnLocalDBFormatMessage* PFnLocalDBFormatMessage;
|
||||||
|
|
||||||
|
|
||||||
|
// MessageId: LOCALDB_ERROR_NOT_INSTALLED
|
||||||
|
//
|
||||||
|
// MessageText:
|
||||||
|
//
|
||||||
|
// LocalDB is not installed.
|
||||||
|
//
|
||||||
|
#define LOCALDB_ERROR_NOT_INSTALLED ((HRESULT)0x89C50116L)
|
||||||
|
|
||||||
|
//---------------------------------------------------------------------
|
||||||
|
// Function: LocalDBCreateInstance
|
||||||
|
//
|
||||||
|
// Description: This function will create the new LocalDB instance.
|
||||||
|
//
|
||||||
|
// Available Flags:
|
||||||
|
// No flags available. Reserved for future use.
|
||||||
|
//
|
||||||
|
// Return Values:
|
||||||
|
// S_OK, if the function succeeds
|
||||||
|
// LOCALDB_ERROR_INVALID_PARAM_INSTANCE_NAME, if the instance name parameter is invalid
|
||||||
|
// LOCALDB_ERROR_INVALID_PARAM_VERSION, if the version parameter is invalid
|
||||||
|
// LOCALDB_ERROR_INVALID_PARAM_FLAGS, if the flags are invalid
|
||||||
|
// LOCALDB_ERROR_INVALID_OPERATION, if the user tries to create a default instance
|
||||||
|
// LOCALDB_ERROR_INSTANCE_FOLDER_PATH_TOO_LONG, if the path where instance should be stored is longer than MAX_PATH
|
||||||
|
// LOCALDB_ERROR_VERSION_REQUESTED_NOT_INSTALLED, if the specified service level is not installed
|
||||||
|
// LOCALDB_ERROR_INSTANCE_FOLDER_ALREADY_EXISTS, if the instance folder already exists and is not empty
|
||||||
|
// LOCALDB_ERROR_INSTANCE_EXISTS_WITH_LOWER_VERSION, if the specified instance already exists but with lower version
|
||||||
|
// LOCALDB_ERROR_CANNOT_CREATE_INSTANCE_FOLDER, if a folder cannot be created under %userprofile%
|
||||||
|
// LOCALDB_ERROR_CANNOT_GET_USER_PROFILE_FOLDER, if a user profile folder cannot be retrieved
|
||||||
|
// LOCALDB_ERROR_CANNOT_ACCESS_INSTANCE_FOLDER, if a instance folder cannot be accessed
|
||||||
|
// LOCALDB_ERROR_CANNOT_ACCESS_INSTANCE_REGISTRY, if a instance registry cannot be accessed
|
||||||
|
// LOCALDB_ERROR_INTERNAL_ERROR, if an unexpected error occurred. See event log for details
|
||||||
|
// LOCALDB_ERROR_CANNOT_MODIFY_INSTANCE_REGISTRY, if an instance registry cannot be modified
|
||||||
|
// LOCALDB_ERROR_CANNOT_CREATE_SQL_PROCESS, if a process for Sql Server cannot be created
|
||||||
|
// LOCALDB_ERROR_SQL_SERVER_STARTUP_FAILED, if a Sql Server process is started but Sql Server startup failed.
|
||||||
|
// LOCALDB_ERROR_INSTANCE_CONFIGURATION_CORRUPT, if a instance configuration is corrupted
|
||||||
|
//
|
||||||
|
FnLocalDBCreateInstance LocalDBCreateInstance;
|
||||||
|
|
||||||
|
//---------------------------------------------------------------------
|
||||||
|
// Function: LocalDBStartInstance
|
||||||
|
//
|
||||||
|
// Description: This function will start the given LocalDB instance.
|
||||||
|
//
|
||||||
|
// Return Values:
|
||||||
|
// S_OK, if the function succeeds
|
||||||
|
// LOCALDB_ERROR_UNKNOWN_INSTANCE, if the specified instance doesn't exist
|
||||||
|
// LOCALDB_ERROR_INVALID_PARAM_INSTANCE_NAME, if the instance name parameter is invalid
|
||||||
|
// LOCALDB_ERROR_INVALID_PARAM_CONNECTION, if the wszSqlConnection parameter is NULL
|
||||||
|
// LOCALDB_ERROR_INVALID_PARAM_FLAGS, if the flags are invalid
|
||||||
|
// LOCALDB_ERROR_INSUFFICIENT_BUFFER, if the buffer wszSqlConnection is too small
|
||||||
|
// LOCALDB_ERROR_INSTANCE_FOLDER_PATH_TOO_LONG, if the path where instance should be stored is longer than MAX_PATH
|
||||||
|
|
||||||
|
// LOCALDB_ERROR_CANNOT_GET_USER_PROFILE_FOLDER, if a user profile folder cannot be retrieved
|
||||||
|
// LOCALDB_ERROR_CANNOT_ACCESS_INSTANCE_FOLDER, if a instance folder cannot be accessed
|
||||||
|
// LOCALDB_ERROR_CANNOT_ACCESS_INSTANCE_REGISTRY, if a instance registry cannot be accessed
|
||||||
|
// LOCALDB_ERROR_INTERNAL_ERROR, if an unexpected error occurred. See event log for details
|
||||||
|
// LOCALDB_ERROR_CANNOT_MODIFY_INSTANCE_REGISTRY, if an instance registry cannot be modified
|
||||||
|
// LOCALDB_ERROR_CANNOT_CREATE_SQL_PROCESS, if a process for Sql Server cannot be created
|
||||||
|
// LOCALDB_ERROR_SQL_SERVER_STARTUP_FAILED, if a Sql Server process is started but Sql Server startup failed.
|
||||||
|
// LOCALDB_ERROR_INSTANCE_CONFIGURATION_CORRUPT, if a instance configuration is corrupted
|
||||||
|
//
|
||||||
|
FnLocalDBStartInstance LocalDBStartInstance;
|
||||||
|
|
||||||
|
// type definition for LocalDBStopInstance function
|
||||||
|
typedef HRESULT __cdecl FnLocalDBStopInstance (
|
||||||
|
// I the LocalDB instance name
|
||||||
|
__in_z PCWSTR pInstanceName,
|
||||||
|
// I Available flags:
|
||||||
|
// LOCALDB_SHUTDOWN_KILL_PROCESS - force the instance to stop immediately
|
||||||
|
// LOCALDB_SHUTDOWN_WITH_NOWAIT - shutdown the instance with NOWAIT option
|
||||||
|
__in DWORD dwFlags,
|
||||||
|
// I the time in seconds to wait this operation to complete. If this value is 0, this function will return immediately
|
||||||
|
// without waiting for LocalDB instance to stop
|
||||||
|
__in ULONG ulTimeout
|
||||||
|
);
|
||||||
|
|
||||||
|
// type definition for pointer to LocalDBStopInstance function
|
||||||
|
typedef FnLocalDBStopInstance* PFnLocalDBStopInstance;
|
||||||
|
|
||||||
|
// Flags for the StopLocalDBInstance function
|
||||||
|
#define LOCALDB_SHUTDOWN_KILL_PROCESS 0x0001L
|
||||||
|
#define LOCALDB_SHUTDOWN_WITH_NOWAIT 0x0002L
|
||||||
|
|
||||||
|
//---------------------------------------------------------------------
|
||||||
|
// Function: LocalDBStopInstance
|
||||||
|
//
|
||||||
|
// Description: This function will shutdown the given LocalDB instance.
|
||||||
|
// If the flag LOCALDB_SHUTDOWN_KILL_PROCESS is set, the LocalDB instance will be killed immediately.
|
||||||
|
// IF the flag LOCALDB_SHUTDOWN_WITH_NOWAIT is set, the LocalDB instance will shutdown with NOWAIT option.
|
||||||
|
//
|
||||||
|
// Return Values:
|
||||||
|
// S_OK, if the function succeeds
|
||||||
|
// LOCALDB_ERROR_UNKNOWN_INSTANCE, if the specified instance doesn't exist
|
||||||
|
// LOCALDB_ERROR_INVALID_PARAM_INSTANCE_NAME, if the instance name parameter is invalid
|
||||||
|
// LOCALDB_ERROR_INVALID_PARAM_FLAGS, if the flags are invalid
|
||||||
|
// LOCALDB_ERROR_WAIT_TIMEOUT - if this function has not finished in given time
|
||||||
|
// LOCALDB_ERROR_INTERNAL_ERROR, if an unexpected error occurred. See event log for details
|
||||||
|
//
|
||||||
|
FnLocalDBStopInstance LocalDBStopInstance;
|
||||||
|
|
||||||
|
// type definition for LocalDBDeleteInstance function
|
||||||
|
typedef HRESULT __cdecl FnLocalDBDeleteInstance (
|
||||||
|
// I the LocalDB instance name
|
||||||
|
__in_z PCWSTR pInstanceName,
|
||||||
|
// I reserved for the future use. Currently should be set to 0.
|
||||||
|
__in DWORD dwFlags
|
||||||
|
);
|
||||||
|
|
||||||
|
// type definition for pointer to LocalDBDeleteInstance function
|
||||||
|
typedef FnLocalDBDeleteInstance* PFnLocalDBDeleteInstance;
|
||||||
|
|
||||||
|
//---------------------------------------------------------------------
|
||||||
|
// Function: LocalDBDeleteInstance
|
||||||
|
//
|
||||||
|
// Description: This function will remove the given LocalDB instance. If the given instance is running this function will
|
||||||
|
// fail with the error code LOCALDB_ERROR_INSTANCE_BUSY.
|
||||||
|
//
|
||||||
|
// Return Values:
|
||||||
|
// S_OK, if the function succeeds
|
||||||
|
// LOCALDB_ERROR_INVALID_PARAM_INSTANCE_NAME, if the instance name parameter is invalid
|
||||||
|
// LOCALDB_ERROR_INVALID_PARAM_FLAGS, if the flags are invalid
|
||||||
|
// LOCALDB_ERROR_UNKNOWN_INSTANCE, if the specified instance doesn't exist
|
||||||
|
// LOCALDB_ERROR_INSTANCE_BUSY, if the given instance is running
|
||||||
|
// LOCALDB_ERROR_INTERNAL_ERROR, if an unexpected error occurred. See event log for details
|
||||||
|
//
|
||||||
|
FnLocalDBDeleteInstance LocalDBDeleteInstance;
|
||||||
|
|
||||||
|
// Function: LocalDBFormatMessage
|
||||||
|
//
|
||||||
|
// Description: This function will return the localized textual description for the given LocalDB error
|
||||||
|
//
|
||||||
|
// Available Flags:
|
||||||
|
// LOCALDB_TRUNCATE_ERR_MESSAGE - the error message should be truncated to fit into the provided buffer
|
||||||
|
//
|
||||||
|
// Return Value:
|
||||||
|
// S_OK, if the function succeeds
|
||||||
|
//
|
||||||
|
// LOCALDB_ERROR_UNKNOWN_HRESULT, if the given HRESULT is unknown
|
||||||
|
// LOCALDB_ERROR_UNKNOWN_LANGUAGE_ID, if the given language id is unknown (0 is recommended for the // default language)
|
||||||
|
// LOCALDB_ERROR_UNKNOWN_ERROR_CODE, if the LocalDB error code is unknown
|
||||||
|
// LOCALDB_ERROR_INVALID_PARAM_FLAGS, if the flags are invalid
|
||||||
|
// LOCALDB_ERROR_INSUFFICIENT_BUFFER, if the input buffer is too short and LOCALDB_TRUNCATE_ERR_MESSAGE flag
|
||||||
|
// is not set
|
||||||
|
// LOCALDB_ERROR_INTERNAL_ERROR, if an unexpected error occurred. See event log for details
|
||||||
|
//
|
||||||
|
FnLocalDBFormatMessage LocalDBFormatMessage;
|
||||||
|
|
||||||
|
#define MAX_LOCALDB_INSTANCE_NAME_LENGTH 128
|
||||||
|
#define MAX_LOCALDB_PARENT_INSTANCE_LENGTH MAX_INSTANCE_NAME
|
||||||
|
|
||||||
|
typedef WCHAR TLocalDBInstanceName[MAX_LOCALDB_INSTANCE_NAME_LENGTH + 1];
|
||||||
|
typedef TLocalDBInstanceName* PTLocalDBInstanceName;
|
||||||
|
|
||||||
|
// type definition for LocalDBGetInstances function
|
||||||
|
typedef HRESULT __cdecl FnLocalDBGetInstances(
|
||||||
|
// O buffer for a LocalDB instance names
|
||||||
|
__out PTLocalDBInstanceName pInstanceNames,
|
||||||
|
// I/O on input has the number slots for instance names in the pInstanceNames buffer. On output,
|
||||||
|
// has the number of existing LocalDB instances
|
||||||
|
__inout LPDWORD lpdwNumberOfInstances
|
||||||
|
);
|
||||||
|
|
||||||
|
// type definition for pointer to LocalDBGetInstances function
|
||||||
|
typedef FnLocalDBGetInstances* PFnLocalDBGetInstances;
|
||||||
|
|
||||||
|
// Function: LocalDBGetInstances
|
||||||
|
//
|
||||||
|
// Description: This function returns names for all existing Local DB instances
|
||||||
|
//
|
||||||
|
// Usage Example:
|
||||||
|
// DWORD dwN = 0;
|
||||||
|
// LocalDBGetInstances(NULL, &dwN);
|
||||||
|
|
||||||
|
// PTLocalDBInstanceName insts = (PTLocalDBInstanceName) malloc(dwN * sizeof(TLocalDBInstanceName));
|
||||||
|
// LocalDBGetInstances(insts, &dwN);
|
||||||
|
|
||||||
|
// for (int i = 0; i < dwN; i++)
|
||||||
|
// wprintf(L"%s\n", insts[i]);
|
||||||
|
//
|
||||||
|
// Return values:
|
||||||
|
// S_OK, if the function succeeds
|
||||||
|
//
|
||||||
|
// LOCALDB_ERROR_INSUFFICIENT_BUFFER, the given buffer is to small
|
||||||
|
// LOCALDB_ERROR_INTERNAL_ERROR, if an unexpected error occurred. See event log for details
|
||||||
|
//
|
||||||
|
FnLocalDBGetInstances LocalDBGetInstances;
|
||||||
|
|
||||||
|
// SID string format: S - Revision(1B) - Authority ID (6B) {- Sub authority ID (4B)} * max 15 sub-authorities = 1 + 1 + 3 + 1 + 15 + (1 + 10) * 15
|
||||||
|
#define MAX_STRING_SID_LENGTH 186
|
||||||
|
|
||||||
|
#pragma pack(push)
|
||||||
|
#pragma pack(8)
|
||||||
|
|
||||||
|
// DEVNOTE: If you want to modify this structure please read DEVNOTEs on top of function LocalDBGetInstanceInfo in sqluserinstance.cpp file.
|
||||||
|
//
|
||||||
|
typedef struct _LocalDBInstanceInfo
|
||||||
|
{
|
||||||
|
DWORD cbLocalDBInstanceInfoSize;
|
||||||
|
TLocalDBInstanceName wszInstanceName;
|
||||||
|
BOOL bExists;
|
||||||
|
BOOL bConfigurationCorrupted;
|
||||||
|
BOOL bIsRunning;
|
||||||
|
DWORD dwMajor;
|
||||||
|
DWORD dwMinor;
|
||||||
|
DWORD dwBuild;
|
||||||
|
DWORD dwRevision;
|
||||||
|
FILETIME ftLastStartDateUTC;
|
||||||
|
WCHAR wszConnection[LOCALDB_MAX_SQLCONNECTION_BUFFER_SIZE];
|
||||||
|
BOOL bIsShared;
|
||||||
|
TLocalDBInstanceName wszSharedInstanceName;
|
||||||
|
WCHAR wszOwnerSID[MAX_STRING_SID_LENGTH + 1];
|
||||||
|
BOOL bIsAutomatic;
|
||||||
|
} LocalDBInstanceInfo;
|
||||||
|
|
||||||
|
#pragma pack(pop)
|
||||||
|
|
||||||
|
typedef LocalDBInstanceInfo* PLocalDBInstanceInfo;
|
||||||
|
|
||||||
|
// type definition for LocalDBGetInstanceInfo function
|
||||||
|
typedef HRESULT __cdecl FnLocalDBGetInstanceInfo(
|
||||||
|
// I the LocalDB instance name
|
||||||
|
__in_z PCWSTR wszInstanceName,
|
||||||
|
// O instance information
|
||||||
|
__out PLocalDBInstanceInfo pInfo,
|
||||||
|
// I Size of LocalDBInstanceInfo structure in bytes
|
||||||
|
__in DWORD cbInfo);
|
||||||
|
|
||||||
|
// type definition for pointer to LocalDBGetInstances function
|
||||||
|
typedef FnLocalDBGetInstanceInfo* PFnLocalDBGetInstanceInfo;
|
||||||
|
|
||||||
|
// Function: LocalDBGetInstanceInfo
|
||||||
|
//
|
||||||
|
// Description: This function returns information about the given instance.
|
||||||
|
//
|
||||||
|
// Return values:
|
||||||
|
// S_OK, if the function succeeds
|
||||||
|
//
|
||||||
|
// ERROR_INVALID_PARAMETER, if some of the parameters is invalid
|
||||||
|
// LOCALDB_ERROR_INTERNAL_ERROR, if an unexpected error occurred. See event log for details
|
||||||
|
//
|
||||||
|
FnLocalDBGetInstanceInfo LocalDBGetInstanceInfo;
|
||||||
|
|
||||||
|
// Version has format: Major.Minor[.Build[.Revision]]. Each of components is 32bit integer which is at most 40 digits and 3 dots
|
||||||
|
//
|
||||||
|
#define MAX_LOCALDB_VERSION_LENGTH 43
|
||||||
|
|
||||||
|
typedef WCHAR TLocalDBVersion[MAX_LOCALDB_VERSION_LENGTH + 1];
|
||||||
|
typedef TLocalDBVersion* PTLocalDBVersion;
|
||||||
|
|
||||||
|
// type definition for LocalDBGetVersions function
|
||||||
|
typedef HRESULT __cdecl FnLocalDBGetVersions(
|
||||||
|
// O buffer for installed LocalDB versions
|
||||||
|
__out PTLocalDBVersion pVersions,
|
||||||
|
// I/O on input has the number slots for versions in the pVersions buffer. On output,
|
||||||
|
// has the number of existing LocalDB versions
|
||||||
|
__inout LPDWORD lpdwNumberOfVersions
|
||||||
|
);
|
||||||
|
|
||||||
|
// type definition for pointer to LocalDBGetVersions function
|
||||||
|
typedef FnLocalDBGetVersions* PFnLocalDBGetVersions;
|
||||||
|
|
||||||
|
// Function: LocalDBGetVersions
|
||||||
|
//
|
||||||
|
// Description: This function returns all installed LocalDB versions. Returned versions will be in format Major.Minor
|
||||||
|
//
|
||||||
|
// Usage Example:
|
||||||
|
// DWORD dwN = 0;
|
||||||
|
// LocalDBGetVersions(NULL, &dwN);
|
||||||
|
|
||||||
|
// PTLocalDBVersion versions = (PTLocalDBVersion) malloc(dwN * sizeof(TLocalDBVersion));
|
||||||
|
// LocalDBGetVersions(insts, &dwN);
|
||||||
|
|
||||||
|
// for (int i = 0; i < dwN; i++)
|
||||||
|
// wprintf(L"%s\n", insts[i]);
|
||||||
|
//
|
||||||
|
// Return values:
|
||||||
|
// S_OK, if the function succeeds
|
||||||
|
//
|
||||||
|
// LOCALDB_ERROR_INSUFFICIENT_BUFFER, the given buffer is to small
|
||||||
|
// LOCALDB_ERROR_INTERNAL_ERROR, if an unexpected error occurs.
|
||||||
|
//
|
||||||
|
FnLocalDBGetVersions LocalDBGetVersions;
|
||||||
|
|
||||||
|
#pragma pack(push)
|
||||||
|
#pragma pack(8)
|
||||||
|
|
||||||
|
// DEVNOTE: If you want to modify this structure please read DEVNOTEs on top of function LocalDBGetVersionInfo in sqluserinstance.cpp file.
|
||||||
|
//
|
||||||
|
typedef struct _LocalDBVersionInfo
|
||||||
|
{
|
||||||
|
DWORD cbLocalDBVersionInfoSize;
|
||||||
|
TLocalDBVersion wszVersion;
|
||||||
|
BOOL bExists;
|
||||||
|
DWORD dwMajor;
|
||||||
|
DWORD dwMinor;
|
||||||
|
DWORD dwBuild;
|
||||||
|
DWORD dwRevision;
|
||||||
|
} LocalDBVersionInfo;
|
||||||
|
|
||||||
|
#pragma pack(pop)
|
||||||
|
|
||||||
|
typedef LocalDBVersionInfo* PLocalDBVersionInfo;
|
||||||
|
|
||||||
|
// type definition for LocalDBGetVersionInfo function
|
||||||
|
typedef HRESULT __cdecl FnLocalDBGetVersionInfo(
|
||||||
|
// I LocalDB version string
|
||||||
|
__in_z PCWSTR wszVersion,
|
||||||
|
// O version information
|
||||||
|
__out PLocalDBVersionInfo pVersionInfo,
|
||||||
|
// I Size of LocalDBVersionInfo structure in bytes
|
||||||
|
__in DWORD cbVersionInfo
|
||||||
|
);
|
||||||
|
|
||||||
|
// type definition for pointer to LocalDBGetVersionInfo function
|
||||||
|
typedef FnLocalDBGetVersionInfo* PFnLocalDBGetVersionInfo;
|
||||||
|
|
||||||
|
// Function: LocalDBGetVersionInfo
|
||||||
|
//
|
||||||
|
// Description: This function returns information about the given LocalDB version
|
||||||
|
//
|
||||||
|
// Return values:
|
||||||
|
// S_OK, if the function succeeds
|
||||||
|
// LOCALDB_ERROR_INTERNAL_ERROR, if some internal error occurred
|
||||||
|
// LOCALDB_ERROR_INVALID_PARAMETER, if a input parameter is invalid
|
||||||
|
//
|
||||||
|
FnLocalDBGetVersionInfo LocalDBGetVersionInfo;
|
||||||
|
|
||||||
|
typedef HRESULT __cdecl FnLocalDBStartTracing();
|
||||||
|
typedef FnLocalDBStartTracing* PFnLocalDBStartTracing;
|
||||||
|
|
||||||
|
// Function: LocalDBStartTracing
|
||||||
|
//
|
||||||
|
// Description: This function will write in registry that Tracing sessions should be started for the current user.
|
||||||
|
//
|
||||||
|
// Return values:
|
||||||
|
// S_OK - on success
|
||||||
|
// Propper HRESULT in case of failure
|
||||||
|
//
|
||||||
|
FnLocalDBStartTracing LocalDBStartTracing;
|
||||||
|
|
||||||
|
typedef HRESULT __cdecl FnLocalDBStopTracing();
|
||||||
|
typedef FnLocalDBStopTracing* PFnFnLocalDBStopTracing;
|
||||||
|
|
||||||
|
// Function: LocalDBStopTracing
|
||||||
|
//
|
||||||
|
// Description: This function will write in registry that Tracing sessions should be stopped for the current user.
|
||||||
|
//
|
||||||
|
// Return values:
|
||||||
|
// S_OK - on success
|
||||||
|
// Propper HRESULT in case of failure
|
||||||
|
//
|
||||||
|
FnLocalDBStopTracing LocalDBStopTracing;
|
||||||
|
|
||||||
|
// type definition for LocalDBShareInstance function
|
||||||
|
typedef HRESULT __cdecl FnLocalDBShareInstance(
|
||||||
|
// I the SID of the LocalDB instance owner
|
||||||
|
__in_opt PSID pOwnerSID,
|
||||||
|
// I the private name of LocalDB instance which should be shared
|
||||||
|
__in_z PCWSTR wszPrivateLocalDBInstanceName,
|
||||||
|
// I the public shared name
|
||||||
|
__in_z PCWSTR wszSharedName,
|
||||||
|
// I reserved for the future use. Currently should be set to 0.
|
||||||
|
__in DWORD dwFlags);
|
||||||
|
|
||||||
|
// type definition for pointer to LocalDBShareInstance function
|
||||||
|
typedef FnLocalDBShareInstance* PFnLocalDBShareInstance;
|
||||||
|
|
||||||
|
// Function: LocalDBShareInstance
|
||||||
|
//
|
||||||
|
// Description: This function will share the given private instance of the given user with the given shared name.
|
||||||
|
// This function has to be executed elevated.
|
||||||
|
//
|
||||||
|
// Return values:
|
||||||
|
// HRESULT
|
||||||
|
//
|
||||||
|
FnLocalDBShareInstance LocalDBShareInstance;
|
||||||
|
|
||||||
|
// type definition for LocalDBUnshareInstance function
|
||||||
|
typedef HRESULT __cdecl FnLocalDBUnshareInstance(
|
||||||
|
// I the LocalDB instance name
|
||||||
|
__in_z PCWSTR pInstanceName,
|
||||||
|
// I reserved for the future use. Currently should be set to 0.
|
||||||
|
__in DWORD dwFlags);
|
||||||
|
|
||||||
|
// type definition for pointer to LocalDBUnshareInstance function
|
||||||
|
typedef FnLocalDBUnshareInstance* PFnLocalDBUnshareInstance;
|
||||||
|
|
||||||
|
// Function: LocalDBUnshareInstance
|
||||||
|
//
|
||||||
|
// Description: This function unshares the given LocalDB instance.
|
||||||
|
// If a shared name is given then that shared instance will be unshared.
|
||||||
|
// If a private name is given then we will check if the caller
|
||||||
|
// shares a private instance with the given private name and unshare it.
|
||||||
|
//
|
||||||
|
// Return values:
|
||||||
|
// HRESULT
|
||||||
|
//
|
||||||
|
FnLocalDBUnshareInstance LocalDBUnshareInstance;
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
} // extern "C"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(LOCALDB_DEFINE_PROXY_FUNCTIONS)
|
||||||
|
//---------------------------------------------------------------------
|
||||||
|
// The following section is enabled only if the constant LOCALDB_DEFINE_PROXY_FUNCTIONS
|
||||||
|
// is defined. It provides an implementation of proxies for each of the LocalDB APIs.
|
||||||
|
// The proxy implementations use a common function to bind to entry points in the
|
||||||
|
// latest installed SqlUserInstance DLL, and then forward the requests.
|
||||||
|
//
|
||||||
|
// The current implementation loads the SqlUserInstance DLL on the first call into
|
||||||
|
// a proxy function. There is no provision for unloading the DLL. Note that if the
|
||||||
|
// process includes multiple binaries (EXE and one or more DLLs), each of them could
|
||||||
|
// load a separate instance of the SqlUserInstance DLL.
|
||||||
|
//
|
||||||
|
// For future consideration: allow the SqlUserInstance DLL to be unloaded dynamically.
|
||||||
|
//
|
||||||
|
// WARNING: these functions must not be called in DLL initialization, since a deadlock
|
||||||
|
// could result loading dependent DLLs.
|
||||||
|
//---------------------------------------------------------------------
|
||||||
|
|
||||||
|
// This macro provides the body for each proxy function.
|
||||||
|
//
|
||||||
|
#define LOCALDB_PROXY(LocalDBFn) static Fn##LocalDBFn* pfn##LocalDBFn = NULL; if (!pfn##LocalDBFn) {HRESULT hr = LocalDBGetPFn(#LocalDBFn, (FARPROC *)&pfn##LocalDBFn); if (FAILED(hr)) return hr;} return (*pfn##LocalDBFn)
|
||||||
|
|
||||||
|
// Structure and function to parse the "Installed Versions" registry subkeys
|
||||||
|
//
|
||||||
|
typedef struct {
|
||||||
|
DWORD dwComponent[2];
|
||||||
|
WCHAR wszKeyName[256];
|
||||||
|
} Version;
|
||||||
|
|
||||||
|
// The following algorithm is intended to match, in part, the .NET Version class.
|
||||||
|
// A maximum of two components are allowed, which must be separated with a period.
|
||||||
|
// Valid: "11", "11.0"
|
||||||
|
// Invalid: "", ".0", "11.", "11.0."
|
||||||
|
//
|
||||||
|
static BOOL ParseVersion(Version * pVersion)
|
||||||
|
{
|
||||||
|
pVersion->dwComponent[0] = 0;
|
||||||
|
pVersion->dwComponent[1] = 0;
|
||||||
|
WCHAR * pwch = pVersion->wszKeyName;
|
||||||
|
|
||||||
|
for (int i = 0; i<2; i++)
|
||||||
|
{
|
||||||
|
LONGLONG llVal = 0;
|
||||||
|
BOOL fHaveDigit = FALSE;
|
||||||
|
|
||||||
|
while (*pwch >= L'0' && *pwch <= L'9')
|
||||||
|
{
|
||||||
|
llVal = llVal * 10 + (*pwch++ - L'0');
|
||||||
|
fHaveDigit = TRUE;
|
||||||
|
|
||||||
|
if (llVal > 0x7fffffff)
|
||||||
|
{
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!fHaveDigit)
|
||||||
|
return FALSE;
|
||||||
|
|
||||||
|
pVersion->dwComponent[i] = (DWORD) llVal;
|
||||||
|
|
||||||
|
if (*pwch == L'\0')
|
||||||
|
return TRUE;
|
||||||
|
|
||||||
|
if (*pwch != L'.')
|
||||||
|
return FALSE;
|
||||||
|
|
||||||
|
pwch++;
|
||||||
|
}
|
||||||
|
// If we get here, the version string was terminated with L'.', which is not valid
|
||||||
|
//
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
#include <assert.h>
|
||||||
|
|
||||||
|
// This function loads the correct LocalDB API DLL (if required) and returns a pointer to a procedure.
|
||||||
|
// Note that the first-loaded API DLL for the process will be used until process termination: installation of
|
||||||
|
// a new version of the API will not be recognized after first load.
|
||||||
|
//
|
||||||
|
static HRESULT LocalDBGetPFn(LPCSTR szLocalDBFn, FARPROC *pfnLocalDBFn)
|
||||||
|
{
|
||||||
|
static volatile HMODULE hLocalDBDll = NULL;
|
||||||
|
|
||||||
|
if (!hLocalDBDll)
|
||||||
|
{
|
||||||
|
LONG ec;
|
||||||
|
HKEY hkeyVersions = NULL;
|
||||||
|
HKEY hkeyVersion = NULL;
|
||||||
|
Version verHigh = {0};
|
||||||
|
Version verCurrent;
|
||||||
|
DWORD cchKeyName;
|
||||||
|
DWORD dwValueType;
|
||||||
|
WCHAR wszLocalDBDll[MAX_PATH+1];
|
||||||
|
DWORD cbLocalDBDll = sizeof(wszLocalDBDll) - sizeof(WCHAR); // to deal with RegQueryValueEx null-termination quirk
|
||||||
|
HMODULE hLocalDBDllTemp = NULL;
|
||||||
|
|
||||||
|
if (ERROR_SUCCESS != (ec = RegOpenKeyExW(HKEY_LOCAL_MACHINE, L"SOFTWARE\\Microsoft\\Microsoft SQL Server Local DB\\Installed Versions", 0, KEY_READ, &hkeyVersions)))
|
||||||
|
{
|
||||||
|
goto Cleanup;
|
||||||
|
}
|
||||||
|
|
||||||
|
for (int i = 0; ; i++)
|
||||||
|
{
|
||||||
|
cchKeyName = 256;
|
||||||
|
if (ERROR_SUCCESS != (ec = RegEnumKeyExW(hkeyVersions, i, verCurrent.wszKeyName, &cchKeyName, 0, NULL, NULL, NULL)))
|
||||||
|
{
|
||||||
|
if (ERROR_NO_MORE_ITEMS == ec)
|
||||||
|
{
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
goto Cleanup;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!ParseVersion(&verCurrent))
|
||||||
|
{
|
||||||
|
continue; // invalid version syntax
|
||||||
|
}
|
||||||
|
|
||||||
|
if (verCurrent.dwComponent[0] > verHigh.dwComponent[0] ||
|
||||||
|
(verCurrent.dwComponent[0] == verHigh.dwComponent[0] && verCurrent.dwComponent[1] > verHigh.dwComponent[1]))
|
||||||
|
{
|
||||||
|
verHigh = verCurrent;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (!verHigh.wszKeyName[0])
|
||||||
|
{
|
||||||
|
// ec must be ERROR_NO_MORE_ITEMS here
|
||||||
|
//
|
||||||
|
assert(ec == ERROR_NO_MORE_ITEMS);
|
||||||
|
|
||||||
|
// We will change the error code to ERROR_FILE_NOT_FOUND in order to indicate that
|
||||||
|
// LocalDB instalation is not found. Registry key "SOFTWARE\\Microsoft\\Microsoft SQL Server Local DB\\Installed Versions" exists
|
||||||
|
// but it is empty.
|
||||||
|
//
|
||||||
|
ec = ERROR_FILE_NOT_FOUND;
|
||||||
|
goto Cleanup;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (ERROR_SUCCESS != (ec = RegOpenKeyExW(hkeyVersions, verHigh.wszKeyName, 0, KEY_READ, &hkeyVersion)))
|
||||||
|
{
|
||||||
|
goto Cleanup;
|
||||||
|
}
|
||||||
|
if (ERROR_SUCCESS != (ec = RegQueryValueExW(hkeyVersion, L"InstanceAPIPath", NULL, &dwValueType, (PBYTE) wszLocalDBDll, &cbLocalDBDll)))
|
||||||
|
{
|
||||||
|
goto Cleanup;
|
||||||
|
}
|
||||||
|
if (dwValueType != REG_SZ)
|
||||||
|
{
|
||||||
|
ec = ERROR_INVALID_DATA;
|
||||||
|
goto Cleanup;
|
||||||
|
}
|
||||||
|
// Ensure string value null-terminated
|
||||||
|
// Note that we left a spare character in the output buffer for RegQueryValueEx for this purpose
|
||||||
|
//
|
||||||
|
wszLocalDBDll[cbLocalDBDll/sizeof(WCHAR)] = L'\0';
|
||||||
|
|
||||||
|
hLocalDBDllTemp = LoadLibraryW(wszLocalDBDll);
|
||||||
|
if (NULL == hLocalDBDllTemp)
|
||||||
|
{
|
||||||
|
ec = GetLastError();
|
||||||
|
goto Cleanup;
|
||||||
|
}
|
||||||
|
if (NULL == InterlockedCompareExchangePointer((volatile PVOID *)&hLocalDBDll, hLocalDBDllTemp, NULL))
|
||||||
|
{
|
||||||
|
// We were the winner: we gave away our DLL handle
|
||||||
|
//
|
||||||
|
hLocalDBDllTemp = NULL;
|
||||||
|
}
|
||||||
|
ec = ERROR_SUCCESS;
|
||||||
|
Cleanup:
|
||||||
|
if (hLocalDBDllTemp)
|
||||||
|
FreeLibrary(hLocalDBDllTemp);
|
||||||
|
if (hkeyVersion)
|
||||||
|
RegCloseKey(hkeyVersion);
|
||||||
|
if (hkeyVersions)
|
||||||
|
RegCloseKey(hkeyVersions);
|
||||||
|
|
||||||
|
// Error code ERROR_FILE_NOT_FOUND can occure if registry hive with installed LocalDB versions is missing.
|
||||||
|
// In that case we should return the LocalDB specific error code
|
||||||
|
//
|
||||||
|
if (ec == ERROR_FILE_NOT_FOUND)
|
||||||
|
return LOCALDB_ERROR_NOT_INSTALLED;
|
||||||
|
|
||||||
|
if (ec != ERROR_SUCCESS)
|
||||||
|
return HRESULT_FROM_WIN32(ec);
|
||||||
|
}
|
||||||
|
|
||||||
|
FARPROC pfn = GetProcAddress(hLocalDBDll, szLocalDBFn);
|
||||||
|
|
||||||
|
if (!pfn)
|
||||||
|
{
|
||||||
|
return HRESULT_FROM_WIN32(GetLastError());
|
||||||
|
}
|
||||||
|
*pfnLocalDBFn = pfn;
|
||||||
|
return S_OK;
|
||||||
|
}
|
||||||
|
|
||||||
|
// The following proxy functions forward calls to the latest LocalDB API DLL.
|
||||||
|
//
|
||||||
|
|
||||||
|
HRESULT __cdecl
|
||||||
|
LocalDBCreateInstance (
|
||||||
|
// I the LocalDB version (e.g. 11.0 or 11.0.1094.2)
|
||||||
|
__in_z PCWSTR wszVersion,
|
||||||
|
// I the instance name
|
||||||
|
__in_z PCWSTR pInstanceName,
|
||||||
|
// I reserved for the future use. Currently should be set to 0.
|
||||||
|
__in DWORD dwFlags
|
||||||
|
)
|
||||||
|
{
|
||||||
|
LOCALDB_PROXY(LocalDBCreateInstance)(wszVersion, pInstanceName, dwFlags);
|
||||||
|
}
|
||||||
|
|
||||||
|
HRESULT __cdecl
|
||||||
|
LocalDBStartInstance(
|
||||||
|
// I the instance name
|
||||||
|
__in_z PCWSTR pInstanceName,
|
||||||
|
// I reserved for the future use. Currently should be set to 0.
|
||||||
|
__in DWORD dwFlags,
|
||||||
|
// O the buffer to store the connection string to the LocalDB instance
|
||||||
|
__out_ecount_z_opt(*lpcchSqlConnection) LPWSTR wszSqlConnection,
|
||||||
|
// I/O on input has the size of the wszSqlConnection buffer in characters. On output, if the given buffer size is
|
||||||
|
// too small, has the buffer size required, in characters, including trailing null.
|
||||||
|
__inout_opt LPDWORD lpcchSqlConnection
|
||||||
|
)
|
||||||
|
{
|
||||||
|
LOCALDB_PROXY(LocalDBStartInstance)(pInstanceName, dwFlags, wszSqlConnection, lpcchSqlConnection);
|
||||||
|
}
|
||||||
|
|
||||||
|
HRESULT __cdecl
|
||||||
|
LocalDBStopInstance (
|
||||||
|
// I the instance name
|
||||||
|
__in_z PCWSTR pInstanceName,
|
||||||
|
// I Available flags:
|
||||||
|
// LOCALDB_SHUTDOWN_KILL_PROCESS - force the instance to stop immediately
|
||||||
|
// LOCALDB_SHUTDOWN_WITH_NOWAIT - shutdown the instance with NOWAIT option
|
||||||
|
__in DWORD dwFlags,
|
||||||
|
// I the time in seconds to wait this operation to complete. If this value is 0, this function will return immediately
|
||||||
|
// without waiting for LocalDB instance to stop
|
||||||
|
__in ULONG ulTimeout
|
||||||
|
)
|
||||||
|
{
|
||||||
|
LOCALDB_PROXY(LocalDBStopInstance)(pInstanceName, dwFlags, ulTimeout);
|
||||||
|
}
|
||||||
|
|
||||||
|
HRESULT __cdecl
|
||||||
|
LocalDBDeleteInstance (
|
||||||
|
// I the instance name
|
||||||
|
__in_z PCWSTR pInstanceName,
|
||||||
|
// reserved for the future use. Currently should be set to 0.
|
||||||
|
__in DWORD dwFlags
|
||||||
|
)
|
||||||
|
{
|
||||||
|
LOCALDB_PROXY(LocalDBDeleteInstance)(pInstanceName, dwFlags);
|
||||||
|
}
|
||||||
|
|
||||||
|
HRESULT __cdecl
|
||||||
|
LocalDBFormatMessage(
|
||||||
|
// I the LocalDB error code
|
||||||
|
__in HRESULT hrLocalDB,
|
||||||
|
// I Available flags:
|
||||||
|
// LOCALDB_TRUNCATE_ERR_MESSAGE - if the input buffer is too short,
|
||||||
|
// the error message will be truncated to fit into the buffer
|
||||||
|
__in DWORD dwFlags,
|
||||||
|
// I Language desired (LCID) or 0 (in which case Win32 FormatMessage order is used)
|
||||||
|
__in DWORD dwLanguageId,
|
||||||
|
// O the buffer to store the LocalDB error message
|
||||||
|
__out_ecount_z(*lpcchMessage) LPWSTR wszMessage,
|
||||||
|
// I/O on input has the size of the wszMessage buffer in characters. On output, if the given buffer size is
|
||||||
|
// too small, has the buffer size required, in characters, including trailing null. If the function succeeds
|
||||||
|
// contains the number of characters in the message, excluding the trailing null
|
||||||
|
__inout LPDWORD lpcchMessage
|
||||||
|
)
|
||||||
|
{
|
||||||
|
LOCALDB_PROXY(LocalDBFormatMessage)(hrLocalDB, dwFlags, dwLanguageId, wszMessage, lpcchMessage);
|
||||||
|
}
|
||||||
|
|
||||||
|
HRESULT __cdecl
|
||||||
|
LocalDBGetInstances(
|
||||||
|
// O buffer with instance names
|
||||||
|
__out PTLocalDBInstanceName pInstanceNames,
|
||||||
|
// I/O on input has the number slots for instance names in the pInstanceNames buffer. On output,
|
||||||
|
// has the number of existing LocalDB instances
|
||||||
|
__inout LPDWORD lpdwNumberOfInstances
|
||||||
|
)
|
||||||
|
{
|
||||||
|
LOCALDB_PROXY(LocalDBGetInstances)(pInstanceNames, lpdwNumberOfInstances);
|
||||||
|
}
|
||||||
|
|
||||||
|
HRESULT __cdecl
|
||||||
|
LocalDBGetInstanceInfo(
|
||||||
|
// I the instance name
|
||||||
|
__in_z PCWSTR wszInstanceName,
|
||||||
|
// O instance information
|
||||||
|
__out PLocalDBInstanceInfo pInfo,
|
||||||
|
// I Size of LocalDBInstanceInfo structure in bytes
|
||||||
|
__in DWORD cbInfo
|
||||||
|
)
|
||||||
|
{
|
||||||
|
LOCALDB_PROXY(LocalDBGetInstanceInfo)(wszInstanceName, pInfo, cbInfo);
|
||||||
|
}
|
||||||
|
|
||||||
|
HRESULT __cdecl
|
||||||
|
LocalDBStartTracing()
|
||||||
|
{
|
||||||
|
LOCALDB_PROXY(LocalDBStartTracing)();
|
||||||
|
}
|
||||||
|
|
||||||
|
HRESULT __cdecl
|
||||||
|
LocalDBStopTracing()
|
||||||
|
{
|
||||||
|
LOCALDB_PROXY(LocalDBStopTracing)();
|
||||||
|
}
|
||||||
|
|
||||||
|
HRESULT __cdecl
|
||||||
|
LocalDBShareInstance(
|
||||||
|
// I the SID of the LocalDB instance owner
|
||||||
|
__in_opt PSID pOwnerSID,
|
||||||
|
// I the private name of LocalDB instance which should be shared
|
||||||
|
__in_z PCWSTR wszLocalDBInstancePrivateName,
|
||||||
|
// I the public shared name
|
||||||
|
__in_z PCWSTR wszSharedName,
|
||||||
|
// I reserved for the future use. Currently should be set to 0.
|
||||||
|
__in DWORD dwFlags)
|
||||||
|
{
|
||||||
|
LOCALDB_PROXY(LocalDBShareInstance)(pOwnerSID, wszLocalDBInstancePrivateName, wszSharedName, dwFlags);
|
||||||
|
}
|
||||||
|
|
||||||
|
HRESULT __cdecl
|
||||||
|
LocalDBGetVersions(
|
||||||
|
// O buffer for installed LocalDB versions
|
||||||
|
__out PTLocalDBVersion pVersions,
|
||||||
|
// I/O on input has the number slots for versions in the pVersions buffer. On output,
|
||||||
|
// has the number of existing LocalDB versions
|
||||||
|
__inout LPDWORD lpdwNumberOfVersions
|
||||||
|
)
|
||||||
|
{
|
||||||
|
LOCALDB_PROXY(LocalDBGetVersions)(pVersions, lpdwNumberOfVersions);
|
||||||
|
}
|
||||||
|
|
||||||
|
HRESULT __cdecl
|
||||||
|
LocalDBUnshareInstance(
|
||||||
|
// I the LocalDB instance name
|
||||||
|
__in_z PCWSTR pInstanceName,
|
||||||
|
// I reserved for the future use. Currently should be set to 0.
|
||||||
|
__in DWORD dwFlags)
|
||||||
|
{
|
||||||
|
LOCALDB_PROXY(LocalDBUnshareInstance)(pInstanceName, dwFlags);
|
||||||
|
}
|
||||||
|
|
||||||
|
HRESULT __cdecl
|
||||||
|
LocalDBGetVersionInfo(
|
||||||
|
// I LocalDB version string
|
||||||
|
__in_z PCWSTR wszVersion,
|
||||||
|
// O version information
|
||||||
|
__out PLocalDBVersionInfo pVersionInfo,
|
||||||
|
// I Size of LocalDBVersionInfo structure in bytes
|
||||||
|
__in DWORD cbVersionInfo)
|
||||||
|
{
|
||||||
|
LOCALDB_PROXY(LocalDBGetVersionInfo)(wszVersion, pVersionInfo, cbVersionInfo);
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif // _SQLUSERINSTANCE_H_
|
||||||
|
|
||||||
|
//-----------------------------------------------------------------------------
|
||||||
|
// File: sqluserinstancemsgs.mc
|
||||||
|
//
|
||||||
|
// Copyright: Copyright (c) Microsoft Corporation
|
||||||
|
//-----------------------------------------------------------------------------
|
||||||
|
#ifndef _LOCALDB_MESSAGES_H_
|
||||||
|
#define _LOCALDB_MESSAGES_H_
|
||||||
|
// Header section
|
||||||
|
//
|
||||||
|
// Section with the LocalDB messages
|
||||||
|
//
|
||||||
|
//
|
||||||
|
// Values are 32 bit values laid out as follows:
|
||||||
|
//
|
||||||
|
// 3 3 2 2 2 2 2 2 2 2 2 2 1 1 1 1 1 1 1 1 1 1
|
||||||
|
// 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0
|
||||||
|
// +-+-+-+-+-+---------------------+-------------------------------+
|
||||||
|
// |S|R|C|N|r| Facility | Code |
|
||||||
|
// +-+-+-+-+-+---------------------+-------------------------------+
|
||||||
|
//
|
||||||
|
// where
|
||||||
|
//
|
||||||
|
// S - Severity - indicates success/fail
|
||||||
|
//
|
||||||
|
// 0 - Success
|
||||||
|
// 1 - Fail (COERROR)
|
||||||
|
//
|
||||||
|
// R - reserved portion of the facility code, corresponds to NT's
|
||||||
|
// second severity bit.
|
||||||
|
//
|
||||||
|
// C - reserved portion of the facility code, corresponds to NT's
|
||||||
|
// C field.
|
||||||
|
//
|
||||||
|
// N - reserved portion of the facility code. Used to indicate a
|
||||||
|
// mapped NT status value.
|
||||||
|
//
|
||||||
|
// r - reserved portion of the facility code. Reserved for internal
|
||||||
|
// use. Used to indicate HRESULT values that are not status
|
||||||
|
// values, but are instead message ids for display strings.
|
||||||
|
//
|
||||||
|
// Facility - is the facility code
|
||||||
|
//
|
||||||
|
// Code - is the facility's status code
|
||||||
|
//
|
||||||
|
//
|
||||||
|
// Define the facility codes
|
||||||
|
//
|
||||||
|
#define FACILITY_LOCALDB 0x9C5
|
||||||
|
|
||||||
|
|
||||||
|
//
|
||||||
|
// Define the severity codes
|
||||||
|
//
|
||||||
|
#define LOCALDB_SEVERITY_SUCCESS 0x0
|
||||||
|
#define LOCALDB_SEVERITY_ERROR 0x2
|
||||||
|
|
||||||
|
|
||||||
|
//
|
||||||
|
// MessageId: LOCALDB_ERROR_CANNOT_CREATE_INSTANCE_FOLDER
|
||||||
|
//
|
||||||
|
// MessageText:
|
||||||
|
//
|
||||||
|
// Cannot create folder for the LocalDB instance at: %%LOCALAPPDATA%%\Microsoft\Microsoft SQL Server Local DB\Instances\<instance name>.
|
||||||
|
//
|
||||||
|
#define LOCALDB_ERROR_CANNOT_CREATE_INSTANCE_FOLDER ((HRESULT)0x89C50100L)
|
||||||
|
|
||||||
|
//
|
||||||
|
// MessageId: LOCALDB_ERROR_INVALID_PARAMETER
|
||||||
|
//
|
||||||
|
// MessageText:
|
||||||
|
//
|
||||||
|
// The parameter for the LocalDB Instance API method is incorrect. Consult the API documentation.
|
||||||
|
//
|
||||||
|
#define LOCALDB_ERROR_INVALID_PARAMETER ((HRESULT)0x89C50101L)
|
||||||
|
|
||||||
|
//
|
||||||
|
// MessageId: LOCALDB_ERROR_INSTANCE_EXISTS_WITH_LOWER_VERSION
|
||||||
|
//
|
||||||
|
// MessageText:
|
||||||
|
//
|
||||||
|
// Unable to create the LocalDB instance with specified version. An instance with the same name already exists, but it has lower version than the specified version.
|
||||||
|
//
|
||||||
|
#define LOCALDB_ERROR_INSTANCE_EXISTS_WITH_LOWER_VERSION ((HRESULT)0x89C50102L)
|
||||||
|
|
||||||
|
//
|
||||||
|
// MessageId: LOCALDB_ERROR_CANNOT_GET_USER_PROFILE_FOLDER
|
||||||
|
//
|
||||||
|
// MessageText:
|
||||||
|
//
|
||||||
|
// Cannot access the user profile folder for local application data (%%LOCALAPPDATA%%).
|
||||||
|
//
|
||||||
|
#define LOCALDB_ERROR_CANNOT_GET_USER_PROFILE_FOLDER ((HRESULT)0x89C50103L)
|
||||||
|
|
||||||
|
//
|
||||||
|
// MessageId: LOCALDB_ERROR_INSTANCE_FOLDER_PATH_TOO_LONG
|
||||||
|
//
|
||||||
|
// MessageText:
|
||||||
|
//
|
||||||
|
// The full path length of the LocalDB instance folder is longer than MAX_PATH. The instance must be stored in folder: %%LOCALAPPDATA%%\Microsoft\Microsoft SQL Server Local DB\Instances\<instance name>.
|
||||||
|
//
|
||||||
|
#define LOCALDB_ERROR_INSTANCE_FOLDER_PATH_TOO_LONG ((HRESULT)0x89C50104L)
|
||||||
|
|
||||||
|
//
|
||||||
|
// MessageId: LOCALDB_ERROR_CANNOT_ACCESS_INSTANCE_FOLDER
|
||||||
|
//
|
||||||
|
// MessageText:
|
||||||
|
//
|
||||||
|
// Cannot access LocalDB instance folder: %%LOCALAPPDATA%%\Microsoft\Microsoft SQL Server Local DB\Instances\<instance name>.
|
||||||
|
//
|
||||||
|
#define LOCALDB_ERROR_CANNOT_ACCESS_INSTANCE_FOLDER ((HRESULT)0x89C50105L)
|
||||||
|
|
||||||
|
//
|
||||||
|
// MessageId: LOCALDB_ERROR_CANNOT_ACCESS_INSTANCE_REGISTRY
|
||||||
|
//
|
||||||
|
// MessageText:
|
||||||
|
//
|
||||||
|
// Unexpected error occurred while trying to access the LocalDB instance registry configuration. See the Windows Application event log for error details.
|
||||||
|
//
|
||||||
|
#define LOCALDB_ERROR_CANNOT_ACCESS_INSTANCE_REGISTRY ((HRESULT)0x89C50106L)
|
||||||
|
|
||||||
|
//
|
||||||
|
// MessageId: LOCALDB_ERROR_UNKNOWN_INSTANCE
|
||||||
|
//
|
||||||
|
// MessageText:
|
||||||
|
//
|
||||||
|
// The specified LocalDB instance does not exist.
|
||||||
|
//
|
||||||
|
#define LOCALDB_ERROR_UNKNOWN_INSTANCE ((HRESULT)0x89C50107L)
|
||||||
|
|
||||||
|
//
|
||||||
|
// MessageId: LOCALDB_ERROR_INTERNAL_ERROR
|
||||||
|
//
|
||||||
|
// MessageText:
|
||||||
|
//
|
||||||
|
// Unexpected error occurred inside a LocalDB instance API method call. See the Windows Application event log for error details.
|
||||||
|
//
|
||||||
|
#define LOCALDB_ERROR_INTERNAL_ERROR ((HRESULT)0x89C50108L)
|
||||||
|
|
||||||
|
//
|
||||||
|
// MessageId: LOCALDB_ERROR_CANNOT_MODIFY_INSTANCE_REGISTRY
|
||||||
|
//
|
||||||
|
// MessageText:
|
||||||
|
//
|
||||||
|
// Unexpected error occurred while trying to modify the registry configuration for the LocalDB instance. See the Windows Application event log for error details.
|
||||||
|
//
|
||||||
|
#define LOCALDB_ERROR_CANNOT_MODIFY_INSTANCE_REGISTRY ((HRESULT)0x89C50109L)
|
||||||
|
|
||||||
|
//
|
||||||
|
// MessageId: LOCALDB_ERROR_SQL_SERVER_STARTUP_FAILED
|
||||||
|
//
|
||||||
|
// MessageText:
|
||||||
|
//
|
||||||
|
// Error occurred during LocalDB instance startup: SQL Server process failed to start.
|
||||||
|
//
|
||||||
|
#define LOCALDB_ERROR_SQL_SERVER_STARTUP_FAILED ((HRESULT)0x89C5010AL)
|
||||||
|
|
||||||
|
//
|
||||||
|
// MessageId: LOCALDB_ERROR_INSTANCE_CONFIGURATION_CORRUPT
|
||||||
|
//
|
||||||
|
// MessageText:
|
||||||
|
//
|
||||||
|
// LocalDB instance is corrupted. See the Windows Application event log for error details.
|
||||||
|
//
|
||||||
|
#define LOCALDB_ERROR_INSTANCE_CONFIGURATION_CORRUPT ((HRESULT)0x89C5010BL)
|
||||||
|
|
||||||
|
//
|
||||||
|
// MessageId: LOCALDB_ERROR_CANNOT_CREATE_SQL_PROCESS
|
||||||
|
//
|
||||||
|
// MessageText:
|
||||||
|
//
|
||||||
|
// Error occurred during LocalDB instance startup: unable to create the SQL Server process.
|
||||||
|
//
|
||||||
|
#define LOCALDB_ERROR_CANNOT_CREATE_SQL_PROCESS ((HRESULT)0x89C5010CL)
|
||||||
|
|
||||||
|
//
|
||||||
|
// MessageId: LOCALDB_ERROR_UNKNOWN_VERSION
|
||||||
|
//
|
||||||
|
// MessageText:
|
||||||
|
//
|
||||||
|
// The specified LocalDB version is not available on this computer.
|
||||||
|
//
|
||||||
|
#define LOCALDB_ERROR_UNKNOWN_VERSION ((HRESULT)0x89C5010DL)
|
||||||
|
|
||||||
|
//
|
||||||
|
// MessageId: LOCALDB_ERROR_UNKNOWN_LANGUAGE_ID
|
||||||
|
//
|
||||||
|
// MessageText:
|
||||||
|
//
|
||||||
|
// Error getting the localized error message. The language specified by 'Language ID' parameter is unknown.
|
||||||
|
//
|
||||||
|
#define LOCALDB_ERROR_UNKNOWN_LANGUAGE_ID ((HRESULT)0x89C5010EL)
|
||||||
|
|
||||||
|
//
|
||||||
|
// MessageId: LOCALDB_ERROR_INSTANCE_STOP_FAILED
|
||||||
|
//
|
||||||
|
// MessageText:
|
||||||
|
//
|
||||||
|
// Stop operation for LocalDB instance failed to complete within the specified time.
|
||||||
|
//
|
||||||
|
#define LOCALDB_ERROR_INSTANCE_STOP_FAILED ((HRESULT)0x89C5010FL)
|
||||||
|
|
||||||
|
//
|
||||||
|
// MessageId: LOCALDB_ERROR_UNKNOWN_ERROR_CODE
|
||||||
|
//
|
||||||
|
// MessageText:
|
||||||
|
//
|
||||||
|
// Error getting the localized error message. The specified error code is unknown.
|
||||||
|
//
|
||||||
|
#define LOCALDB_ERROR_UNKNOWN_ERROR_CODE ((HRESULT)0x89C50110L)
|
||||||
|
|
||||||
|
//
|
||||||
|
// MessageId: LOCALDB_ERROR_VERSION_REQUESTED_NOT_INSTALLED
|
||||||
|
//
|
||||||
|
// MessageText:
|
||||||
|
//
|
||||||
|
// The LocalDB version available on this workstation is lower than the requested LocalDB version.
|
||||||
|
//
|
||||||
|
#define LOCALDB_ERROR_VERSION_REQUESTED_NOT_INSTALLED ((HRESULT)0x89C50111L)
|
||||||
|
|
||||||
|
//
|
||||||
|
// MessageId: LOCALDB_ERROR_INSTANCE_BUSY
|
||||||
|
//
|
||||||
|
// MessageText:
|
||||||
|
//
|
||||||
|
// Requested operation on LocalDB instance cannot be performed because specified instance is currently in use. Stop the instance and try again.
|
||||||
|
//
|
||||||
|
#define LOCALDB_ERROR_INSTANCE_BUSY ((HRESULT)0x89C50112L)
|
||||||
|
|
||||||
|
//
|
||||||
|
// MessageId: LOCALDB_ERROR_INVALID_OPERATION
|
||||||
|
//
|
||||||
|
// MessageText:
|
||||||
|
//
|
||||||
|
// Default LocalDB instances cannot be created, stopped or deleted manually.
|
||||||
|
//
|
||||||
|
#define LOCALDB_ERROR_INVALID_OPERATION ((HRESULT)0x89C50113L)
|
||||||
|
|
||||||
|
//
|
||||||
|
// MessageId: LOCALDB_ERROR_INSUFFICIENT_BUFFER
|
||||||
|
//
|
||||||
|
// MessageText:
|
||||||
|
//
|
||||||
|
// The buffer passed to the LocalDB instance API method has insufficient size.
|
||||||
|
//
|
||||||
|
#define LOCALDB_ERROR_INSUFFICIENT_BUFFER ((HRESULT)0x89C50114L)
|
||||||
|
|
||||||
|
//
|
||||||
|
// MessageId: LOCALDB_ERROR_WAIT_TIMEOUT
|
||||||
|
//
|
||||||
|
// MessageText:
|
||||||
|
//
|
||||||
|
// Timeout occurred inside the LocalDB instance API method.
|
||||||
|
//
|
||||||
|
#define LOCALDB_ERROR_WAIT_TIMEOUT ((HRESULT)0x89C50115L)
|
||||||
|
|
||||||
|
// MessageId=0x0116 message id is reserved. This message ID will be used for error LOCALDB_ERROR_NOT_INSTALLED.
|
||||||
|
// This message is specific since it has to be present in SqlUserIntsnace.h because it can be returned by discovery API.
|
||||||
|
//
|
||||||
|
//
|
||||||
|
// MessageId: LOCALDB_ERROR_XEVENT_FAILED
|
||||||
|
//
|
||||||
|
// MessageText:
|
||||||
|
//
|
||||||
|
// Failed to start XEvent engine within the LocalDB Instance API.
|
||||||
|
//
|
||||||
|
#define LOCALDB_ERROR_XEVENT_FAILED ((HRESULT)0x89C50117L)
|
||||||
|
|
||||||
|
//
|
||||||
|
// MessageId: LOCALDB_ERROR_AUTO_INSTANCE_CREATE_FAILED
|
||||||
|
//
|
||||||
|
// MessageText:
|
||||||
|
//
|
||||||
|
// Cannot create an automatic instance. See the Windows Application event log for error details.
|
||||||
|
//
|
||||||
|
#define LOCALDB_ERROR_AUTO_INSTANCE_CREATE_FAILED ((HRESULT)0x89C50118L)
|
||||||
|
|
||||||
|
//
|
||||||
|
// MessageId: LOCALDB_ERROR_SHARED_NAME_TAKEN
|
||||||
|
//
|
||||||
|
// MessageText:
|
||||||
|
//
|
||||||
|
// Cannot create a shared instance. The specified shared instance name is already in use.
|
||||||
|
//
|
||||||
|
#define LOCALDB_ERROR_SHARED_NAME_TAKEN ((HRESULT)0x89C50119L)
|
||||||
|
|
||||||
|
//
|
||||||
|
// MessageId: LOCALDB_ERROR_CALLER_IS_NOT_OWNER
|
||||||
|
//
|
||||||
|
// MessageText:
|
||||||
|
//
|
||||||
|
// API caller is not LocalDB instance owner.
|
||||||
|
//
|
||||||
|
#define LOCALDB_ERROR_CALLER_IS_NOT_OWNER ((HRESULT)0x89C5011AL)
|
||||||
|
|
||||||
|
//
|
||||||
|
// MessageId: LOCALDB_ERROR_INVALID_INSTANCE_NAME
|
||||||
|
//
|
||||||
|
// MessageText:
|
||||||
|
//
|
||||||
|
// Specified LocalDB instance name is invalid.
|
||||||
|
//
|
||||||
|
#define LOCALDB_ERROR_INVALID_INSTANCE_NAME ((HRESULT)0x89C5011BL)
|
||||||
|
|
||||||
|
//
|
||||||
|
// MessageId: LOCALDB_ERROR_INSTANCE_ALREADY_SHARED
|
||||||
|
//
|
||||||
|
// MessageText:
|
||||||
|
//
|
||||||
|
// The specified LocalDB instance is already shared with different shared name.
|
||||||
|
//
|
||||||
|
#define LOCALDB_ERROR_INSTANCE_ALREADY_SHARED ((HRESULT)0x89C5011CL)
|
||||||
|
|
||||||
|
//
|
||||||
|
// MessageId: LOCALDB_ERROR_INSTANCE_NOT_SHARED
|
||||||
|
//
|
||||||
|
// MessageText:
|
||||||
|
//
|
||||||
|
// The specified LocalDB instance is not shared.
|
||||||
|
//
|
||||||
|
#define LOCALDB_ERROR_INSTANCE_NOT_SHARED ((HRESULT)0x89C5011DL)
|
||||||
|
|
||||||
|
//
|
||||||
|
// MessageId: LOCALDB_ERROR_ADMIN_RIGHTS_REQUIRED
|
||||||
|
//
|
||||||
|
// MessageText:
|
||||||
|
//
|
||||||
|
// Administrator privileges are required in order to execute this operation.
|
||||||
|
//
|
||||||
|
#define LOCALDB_ERROR_ADMIN_RIGHTS_REQUIRED ((HRESULT)0x89C5011EL)
|
||||||
|
|
||||||
|
//
|
||||||
|
// MessageId: LOCALDB_ERROR_TOO_MANY_SHARED_INSTANCES
|
||||||
|
//
|
||||||
|
// MessageText:
|
||||||
|
//
|
||||||
|
// There are too many shared instance and we cannot generate unique User Instance Name. Unshare some of the existing shared instances.
|
||||||
|
//
|
||||||
|
#define LOCALDB_ERROR_TOO_MANY_SHARED_INSTANCES ((HRESULT)0x89C5011FL)
|
||||||
|
|
||||||
|
//
|
||||||
|
// MessageId: LOCALDB_ERROR_CANNOT_GET_LOCAL_APP_DATA_PATH
|
||||||
|
//
|
||||||
|
// MessageText:
|
||||||
|
//
|
||||||
|
// Cannot get a local application data path. Most probably a user profile is not loaded. If LocalDB is executed under IIS, make sure that profile loading is enabled for the current user.
|
||||||
|
//
|
||||||
|
#define LOCALDB_ERROR_CANNOT_GET_LOCAL_APP_DATA_PATH ((HRESULT)0x89C50120L)
|
||||||
|
|
||||||
|
//
|
||||||
|
// MessageId: LOCALDB_ERROR_CANNOT_LOAD_RESOURCES
|
||||||
|
//
|
||||||
|
// MessageText:
|
||||||
|
//
|
||||||
|
// Cannot load resources for this DLL. Resources for this DLL should be stored in a subfolder Resources, with the same file name as this DLL and the extension ".RLL".
|
||||||
|
//
|
||||||
|
#define LOCALDB_ERROR_CANNOT_LOAD_RESOURCES ((HRESULT)0x89C50121L)
|
||||||
|
|
||||||
|
// Detailed error descriptions
|
||||||
|
//
|
||||||
|
// MessageId: LOCALDB_EDETAIL_DATADIRECTORY_IS_MISSING
|
||||||
|
//
|
||||||
|
// MessageText:
|
||||||
|
//
|
||||||
|
// The "DataDirectory" registry value is missing in the LocalDB instance registry key: %1
|
||||||
|
//
|
||||||
|
#define LOCALDB_EDETAIL_DATADIRECTORY_IS_MISSING ((HRESULT)0x89C50200L)
|
||||||
|
|
||||||
|
//
|
||||||
|
// MessageId: LOCALDB_EDETAIL_CANNOT_ACCESS_INSTANCE_FOLDER
|
||||||
|
//
|
||||||
|
// MessageText:
|
||||||
|
//
|
||||||
|
// Cannot access LocalDB instance folder: %1
|
||||||
|
//
|
||||||
|
#define LOCALDB_EDETAIL_CANNOT_ACCESS_INSTANCE_FOLDER ((HRESULT)0x89C50201L)
|
||||||
|
|
||||||
|
//
|
||||||
|
// MessageId: LOCALDB_EDETAIL_DATADIRECTORY_IS_TOO_LONG
|
||||||
|
//
|
||||||
|
// MessageText:
|
||||||
|
//
|
||||||
|
// The "DataDirectory" registry value is too long in the LocalDB instance registry key: %1
|
||||||
|
//
|
||||||
|
#define LOCALDB_EDETAIL_DATADIRECTORY_IS_TOO_LONG ((HRESULT)0x89C50202L)
|
||||||
|
|
||||||
|
//
|
||||||
|
// MessageId: LOCALDB_EDETAIL_PARENT_INSTANCE_IS_MISSING
|
||||||
|
//
|
||||||
|
// MessageText:
|
||||||
|
//
|
||||||
|
// The "Parent Instance" registry value is missing in the LocalDB instance registry key: %1
|
||||||
|
//
|
||||||
|
#define LOCALDB_EDETAIL_PARENT_INSTANCE_IS_MISSING ((HRESULT)0x89C50203L)
|
||||||
|
|
||||||
|
//
|
||||||
|
// MessageId: LOCALDB_EDETAIL_PARENT_INSTANCE_IS_TOO_LONG
|
||||||
|
//
|
||||||
|
// MessageText:
|
||||||
|
//
|
||||||
|
// The "Parent Instance" registry value is too long in the LocalDB instance registry key: %1
|
||||||
|
//
|
||||||
|
#define LOCALDB_EDETAIL_PARENT_INSTANCE_IS_TOO_LONG ((HRESULT)0x89C50204L)
|
||||||
|
|
||||||
|
//
|
||||||
|
// MessageId: LOCALDB_EDETAIL_DATA_DIRECTORY_INVALID
|
||||||
|
//
|
||||||
|
// MessageText:
|
||||||
|
//
|
||||||
|
// Data directory for LocalDB instance is invalid: %1
|
||||||
|
//
|
||||||
|
#define LOCALDB_EDETAIL_DATA_DIRECTORY_INVALID ((HRESULT)0x89C50205L)
|
||||||
|
|
||||||
|
//
|
||||||
|
// MessageId: LOCALDB_EDETAIL_XEVENT_ASSERT
|
||||||
|
//
|
||||||
|
// MessageText:
|
||||||
|
//
|
||||||
|
// LocalDB instance API: XEvent engine assert: %1 in %2:%3 (%4)
|
||||||
|
//
|
||||||
|
#define LOCALDB_EDETAIL_XEVENT_ASSERT ((HRESULT)0x89C50206L)
|
||||||
|
|
||||||
|
//
|
||||||
|
// MessageId: LOCALDB_EDETAIL_XEVENT_ERROR
|
||||||
|
//
|
||||||
|
// MessageText:
|
||||||
|
//
|
||||||
|
// LocalDB instance API: XEvent error: %1
|
||||||
|
//
|
||||||
|
#define LOCALDB_EDETAIL_XEVENT_ERROR ((HRESULT)0x89C50207L)
|
||||||
|
|
||||||
|
//
|
||||||
|
// MessageId: LOCALDB_EDETAIL_INSTALLATION_CORRUPTED
|
||||||
|
//
|
||||||
|
// MessageText:
|
||||||
|
//
|
||||||
|
// LocalDB installation is corrupted. Reinstall the LocalDB.
|
||||||
|
//
|
||||||
|
#define LOCALDB_EDETAIL_INSTALLATION_CORRUPTED ((HRESULT)0x89C50208L)
|
||||||
|
|
||||||
|
//
|
||||||
|
// MessageId: LOCALDB_EDETAIL_CANNOT_GET_PROGRAM_FILES_LOCATION
|
||||||
|
//
|
||||||
|
// MessageText:
|
||||||
|
//
|
||||||
|
// LocalDB XEvent error: cannot determine %ProgramFiles% folder location.
|
||||||
|
//
|
||||||
|
#define LOCALDB_EDETAIL_CANNOT_GET_PROGRAM_FILES_LOCATION ((HRESULT)0x89C50209L)
|
||||||
|
|
||||||
|
//
|
||||||
|
// MessageId: LOCALDB_EDETAIL_XEVENT_CANNOT_INITIALIZE
|
||||||
|
//
|
||||||
|
// MessageText:
|
||||||
|
//
|
||||||
|
// LocalDB XEvent error: Cannot initialize XEvent engine.
|
||||||
|
//
|
||||||
|
#define LOCALDB_EDETAIL_XEVENT_CANNOT_INITIALIZE ((HRESULT)0x89C5020AL)
|
||||||
|
|
||||||
|
//
|
||||||
|
// MessageId: LOCALDB_EDETAIL_XEVENT_CANNOT_FIND_CONF_FILE
|
||||||
|
//
|
||||||
|
// MessageText:
|
||||||
|
//
|
||||||
|
// LocalDB XEvent error: Cannot find XEvents configuration file: %1
|
||||||
|
//
|
||||||
|
#define LOCALDB_EDETAIL_XEVENT_CANNOT_FIND_CONF_FILE ((HRESULT)0x89C5020BL)
|
||||||
|
|
||||||
|
//
|
||||||
|
// MessageId: LOCALDB_EDETAIL_XEVENT_CANNOT_CONFIGURE
|
||||||
|
//
|
||||||
|
// MessageText:
|
||||||
|
//
|
||||||
|
// LocalDB XEvent error: Cannot configure XEvents engine with the configuration file: %1
|
||||||
|
// HRESULT returned: %2
|
||||||
|
//
|
||||||
|
#define LOCALDB_EDETAIL_XEVENT_CANNOT_CONFIGURE ((HRESULT)0x89C5020CL)
|
||||||
|
|
||||||
|
//
|
||||||
|
// MessageId: LOCALDB_EDETAIL_XEVENT_CONF_FILE_NAME_TOO_LONG
|
||||||
|
//
|
||||||
|
// MessageText:
|
||||||
|
//
|
||||||
|
// LocalDB XEvent error: XEvents engine configuration file too long
|
||||||
|
//
|
||||||
|
#define LOCALDB_EDETAIL_XEVENT_CONF_FILE_NAME_TOO_LONG ((HRESULT)0x89C5020DL)
|
||||||
|
|
||||||
|
//
|
||||||
|
// MessageId: LOCALDB_EDETAIL_COINITIALIZEEX_FAILED
|
||||||
|
//
|
||||||
|
// MessageText:
|
||||||
|
//
|
||||||
|
// CoInitializeEx API failed. HRESULT returned: %1
|
||||||
|
//
|
||||||
|
#define LOCALDB_EDETAIL_COINITIALIZEEX_FAILED ((HRESULT)0x89C5020EL)
|
||||||
|
|
||||||
|
//
|
||||||
|
// MessageId: LOCALDB_EDETAIL_PARENT_INSTANCE_VERSION_INVALID
|
||||||
|
//
|
||||||
|
// MessageText:
|
||||||
|
//
|
||||||
|
// LocalDB parent instance version is invalid: %1
|
||||||
|
//
|
||||||
|
#define LOCALDB_EDETAIL_PARENT_INSTANCE_VERSION_INVALID ((HRESULT)0x89C5020FL)
|
||||||
|
|
||||||
|
//
|
||||||
|
// MessageId: LOCALDB_EDETAIL_WINAPI_ERROR
|
||||||
|
//
|
||||||
|
// MessageText:
|
||||||
|
//
|
||||||
|
// Windows API call %1 returned error code: %2. Windows system error message is: %3Reported at line: %4. %5
|
||||||
|
//
|
||||||
|
#define LOCALDB_EDETAIL_WINAPI_ERROR ((HRESULT)0xC9C50210L)
|
||||||
|
|
||||||
|
//
|
||||||
|
// MessageId: LOCALDB_EDETAIL_UNEXPECTED_RESULT
|
||||||
|
//
|
||||||
|
// MessageText:
|
||||||
|
//
|
||||||
|
// Function %1 returned %2 at line %3.
|
||||||
|
//
|
||||||
|
#define LOCALDB_EDETAIL_UNEXPECTED_RESULT ((HRESULT)0x89C50211L)
|
||||||
|
|
||||||
|
//
|
||||||
|
#endif // _LOCALDB_MESSAGES_H_
|
||||||
|
|
||||||
|
#endif //__msodbcsql_h__
|
|
@ -6,20 +6,21 @@
|
||||||
//
|
//
|
||||||
// Contents: Declarations for the extension
|
// Contents: Declarations for the extension
|
||||||
//
|
//
|
||||||
// Copyright Microsoft Corporation
|
// Microsoft Drivers for PHP for SQL Server
|
||||||
|
// Copyright (c) Microsoft Corporation. All rights reserved.
|
||||||
//
|
//
|
||||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
// you may not use this file except in compliance with the License.
|
// you may not use these files except in compliance with the License.
|
||||||
//
|
|
||||||
// You may obtain a copy of the License at:
|
// You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0
|
||||||
// http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
//
|
|
||||||
// Unless required by applicable law or agreed to in writing, software
|
// Unless required by applicable law or agreed to in writing, software
|
||||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
// See the License for the specific language governing permissions and
|
// See the License for the specific language governing permissions and
|
||||||
// limitations under the License.
|
// limitations under the License.
|
||||||
//---------------------------------------------------------------------------------------------------------------------------------
|
//
|
||||||
|
//----------------------------------------------------------------------------------------------------------------------------------
|
||||||
|
|
||||||
#include "core_sqlsrv.h"
|
#include "core_sqlsrv.h"
|
||||||
#include "version.h"
|
#include "version.h"
|
||||||
|
|
|
@ -51,9 +51,9 @@ pdo_error PDO_ERRORS[] = {
|
||||||
|
|
||||||
{
|
{
|
||||||
SQLSRV_ERROR_DRIVER_NOT_INSTALLED,
|
SQLSRV_ERROR_DRIVER_NOT_INSTALLED,
|
||||||
{ IMSSP, (SQLCHAR*) "This extension requires the Microsoft SQL Server 2012 Native Client ODBC Driver to "
|
{ IMSSP, (SQLCHAR*) "This extension requires the ODBC Driver 11 for SQL Server to "
|
||||||
"communicate with SQL Server. Access the following URL to download the Microsoft SQL Server 2012 Native Client "
|
"communicate with SQL Server. Access the following URL to download the ODBC Driver 11 for SQL Server "
|
||||||
"ODBC driver for %1!s!: "
|
"for %1!s!: "
|
||||||
"http://go.microsoft.com/fwlink/?LinkId=163712", -1, true }
|
"http://go.microsoft.com/fwlink/?LinkId=163712", -1, true }
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
|
3043
pdo_sqlsrv/sqlncli.h
3043
pdo_sqlsrv/sqlncli.h
|
@ -1,3043 +0,0 @@
|
||||||
|
|
||||||
|
|
||||||
/* this ALWAYS GENERATED file contains the definitions for the interfaces */
|
|
||||||
|
|
||||||
|
|
||||||
/* File created by MIDL compiler version 7.00.0474 */
|
|
||||||
/* Compiler settings for sqlncli.idl:
|
|
||||||
Oicf, W1, Zp8, env=Win32 (32b run)
|
|
||||||
protocol : dce , ms_ext, c_ext, robust
|
|
||||||
error checks: allocation ref bounds_check enum stub_data
|
|
||||||
VC __declspec() decoration level:
|
|
||||||
__declspec(uuid()), __declspec(selectany), __declspec(novtable)
|
|
||||||
DECLSPEC_UUID(), MIDL_INTERFACE()
|
|
||||||
*/
|
|
||||||
//@@MIDL_FILE_HEADING( )
|
|
||||||
|
|
||||||
#pragma warning( disable: 4049 ) /* more than 64k source lines */
|
|
||||||
|
|
||||||
|
|
||||||
/* verify that the <rpcndr.h> version is high enough to compile this file*/
|
|
||||||
#ifndef __REQUIRED_RPCNDR_H_VERSION__
|
|
||||||
#define __REQUIRED_RPCNDR_H_VERSION__ 475
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#include "rpc.h"
|
|
||||||
#include "rpcndr.h"
|
|
||||||
|
|
||||||
#ifndef __RPCNDR_H_VERSION__
|
|
||||||
#error this stub requires an updated version of <rpcndr.h>
|
|
||||||
#endif // __RPCNDR_H_VERSION__
|
|
||||||
|
|
||||||
#ifndef COM_NO_WINDOWS_H
|
|
||||||
#include "windows.h"
|
|
||||||
#include "ole2.h"
|
|
||||||
#endif /*COM_NO_WINDOWS_H*/
|
|
||||||
|
|
||||||
#ifndef __sqlncli_h__
|
|
||||||
#define __sqlncli_h__
|
|
||||||
|
|
||||||
#if defined(_MSC_VER) && (_MSC_VER >= 1020)
|
|
||||||
#pragma once
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* Forward Declarations */
|
|
||||||
|
|
||||||
#ifndef __ICommandWithParameters_FWD_DEFINED__
|
|
||||||
#define __ICommandWithParameters_FWD_DEFINED__
|
|
||||||
typedef interface ICommandWithParameters ICommandWithParameters;
|
|
||||||
#endif /* __ICommandWithParameters_FWD_DEFINED__ */
|
|
||||||
|
|
||||||
|
|
||||||
#ifndef __IUMSInitialize_FWD_DEFINED__
|
|
||||||
#define __IUMSInitialize_FWD_DEFINED__
|
|
||||||
typedef interface IUMSInitialize IUMSInitialize;
|
|
||||||
#endif /* __IUMSInitialize_FWD_DEFINED__ */
|
|
||||||
|
|
||||||
|
|
||||||
#ifndef __ISQLServerErrorInfo_FWD_DEFINED__
|
|
||||||
#define __ISQLServerErrorInfo_FWD_DEFINED__
|
|
||||||
typedef interface ISQLServerErrorInfo ISQLServerErrorInfo;
|
|
||||||
#endif /* __ISQLServerErrorInfo_FWD_DEFINED__ */
|
|
||||||
|
|
||||||
|
|
||||||
#ifndef __IRowsetFastLoad_FWD_DEFINED__
|
|
||||||
#define __IRowsetFastLoad_FWD_DEFINED__
|
|
||||||
typedef interface IRowsetFastLoad IRowsetFastLoad;
|
|
||||||
#endif /* __IRowsetFastLoad_FWD_DEFINED__ */
|
|
||||||
|
|
||||||
|
|
||||||
#ifndef __ISchemaLock_FWD_DEFINED__
|
|
||||||
#define __ISchemaLock_FWD_DEFINED__
|
|
||||||
typedef interface ISchemaLock ISchemaLock;
|
|
||||||
#endif /* __ISchemaLock_FWD_DEFINED__ */
|
|
||||||
|
|
||||||
|
|
||||||
#ifndef __IBCPSession_FWD_DEFINED__
|
|
||||||
#define __IBCPSession_FWD_DEFINED__
|
|
||||||
typedef interface IBCPSession IBCPSession;
|
|
||||||
#endif /* __IBCPSession_FWD_DEFINED__ */
|
|
||||||
|
|
||||||
|
|
||||||
#ifndef __ISSAbort_FWD_DEFINED__
|
|
||||||
#define __ISSAbort_FWD_DEFINED__
|
|
||||||
typedef interface ISSAbort ISSAbort;
|
|
||||||
#endif /* __ISSAbort_FWD_DEFINED__ */
|
|
||||||
|
|
||||||
|
|
||||||
#ifndef __ISSCommandWithParameters_FWD_DEFINED__
|
|
||||||
#define __ISSCommandWithParameters_FWD_DEFINED__
|
|
||||||
typedef interface ISSCommandWithParameters ISSCommandWithParameters;
|
|
||||||
#endif /* __ISSCommandWithParameters_FWD_DEFINED__ */
|
|
||||||
|
|
||||||
|
|
||||||
#ifndef __IDBAsynchStatus_FWD_DEFINED__
|
|
||||||
#define __IDBAsynchStatus_FWD_DEFINED__
|
|
||||||
typedef interface IDBAsynchStatus IDBAsynchStatus;
|
|
||||||
#endif /* __IDBAsynchStatus_FWD_DEFINED__ */
|
|
||||||
|
|
||||||
|
|
||||||
#ifndef __ISSAsynchStatus_FWD_DEFINED__
|
|
||||||
#define __ISSAsynchStatus_FWD_DEFINED__
|
|
||||||
typedef interface ISSAsynchStatus ISSAsynchStatus;
|
|
||||||
#endif /* __ISSAsynchStatus_FWD_DEFINED__ */
|
|
||||||
|
|
||||||
|
|
||||||
/* header files for imported files */
|
|
||||||
#include "unknwn.h"
|
|
||||||
#include "oaidl.h"
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
|
||||||
extern "C"{
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
/* interface __MIDL_itf_sqlncli_0000_0000 */
|
|
||||||
/* [local] */
|
|
||||||
|
|
||||||
//-----------------------------------------------------------------------------
|
|
||||||
// File: sqlncli.h
|
|
||||||
//
|
|
||||||
// Copyright: Copyright (c) Microsoft Corporation
|
|
||||||
//
|
|
||||||
// Contents: SQL Server Native Client OLEDB provider and ODBC driver specific
|
|
||||||
// definitions.
|
|
||||||
//
|
|
||||||
//-----------------------------------------------------------------------------
|
|
||||||
|
|
||||||
#if !defined(SQLNCLI_VER)
|
|
||||||
#define SQLNCLI_VER 1000
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if SQLNCLI_VER >= 1000
|
|
||||||
|
|
||||||
#define SQLNCLI_PRODUCT_NAME_FULL_VER_ANSI "Microsoft SQL Server Native Client 10.0"
|
|
||||||
#define SQLNCLI_PRODUCT_NAME_FULL_ANSI "Microsoft SQL Server Native Client"
|
|
||||||
#define SQLNCLI_PRODUCT_NAME_SHORT_VER_ANSI "SQL Server Native Client 10.0"
|
|
||||||
#define SQLNCLI_PRODUCT_NAME_SHORT_ANSI "SQL Server Native Client"
|
|
||||||
|
|
||||||
#define SQLNCLI_FILE_NAME_ANSI "sqlncli"
|
|
||||||
#define SQLNCLI_FILE_NAME_VER_ANSI "sqlncli10"
|
|
||||||
#define SQLNCLI_FILE_NAME_FULL_ANSI "sqlncli10.dll"
|
|
||||||
|
|
||||||
#define SQLNCLI_PRODUCT_NAME_FULL_VER_UNICODE L"Microsoft SQL Server Native Client 10.0"
|
|
||||||
#define SQLNCLI_PRODUCT_NAME_FULL_UNICODE L"Microsoft SQL Server Native Client"
|
|
||||||
#define SQLNCLI_PRODUCT_NAME_SHORT_VER_UNICODE L"SQL Server Native Client 10.0"
|
|
||||||
#define SQLNCLI_PRODUCT_NAME_SHORT_UNICODE L"SQL Server Native Client"
|
|
||||||
|
|
||||||
#define SQLNCLI_FILE_NAME_UNICODE L"sqlncli"
|
|
||||||
#define SQLNCLI_FILE_NAME_VER_UNICODE L"sqlncli10"
|
|
||||||
#define SQLNCLI_FILE_NAME_FULL_UNICODE L"sqlncli10.dll"
|
|
||||||
|
|
||||||
#if defined(_SQLNCLI_OLEDB_) || !defined(_SQLNCLI_ODBC_)
|
|
||||||
|
|
||||||
#define SQLNCLI_VI_PROG_ID_ANSI "SQLNCLI10"
|
|
||||||
#define SQLNCLI_VI_ERROR_LOOKUP_PROG_ID_ANSI "SQLNCLI10 ErrorLookup"
|
|
||||||
#define SQLNCLI_VI_ENUMERATOR_PROG_ID_ANSI "SQLNCLI10 Enumerator"
|
|
||||||
|
|
||||||
#define SQLNCLI_PROG_ID_ANSI "SQLNCLI10.1"
|
|
||||||
#define SQLNCLI_ERROR_LOOKUP_PROG_ID_ANSI "SQLNCLI10 ErrorLookup.1"
|
|
||||||
#define SQLNCLI_ENUMERATOR_PROG_ID_ANSI "SQLNCLI10 Enumerator.1"
|
|
||||||
|
|
||||||
#define SQLNCLI_VI_PROG_ID_UNICODE L"SQLNCLI10"
|
|
||||||
#define SQLNCLI_VI_ERROR_LOOKUP_PROG_ID_UNICODE L"SQLNCLI10 ErrorLookup"
|
|
||||||
#define SQLNCLI_VI_ENUMERATOR_PROG_ID_UNICODE L"SQLNCLI10 Enumerator"
|
|
||||||
|
|
||||||
#define SQLNCLI_PROG_ID_UNICODE L"SQLNCLI10.1"
|
|
||||||
#define SQLNCLI_ERROR_LOOKUP_PROG_ID_UNICODE L"SQLNCLI10 ErrorLookup.1"
|
|
||||||
#define SQLNCLI_ENUMERATOR_PROG_ID_UNICODE L"SQLNCLI10 Enumerator.1"
|
|
||||||
|
|
||||||
#define SQLNCLI_CLSID CLSID_SQLNCLI10
|
|
||||||
#define SQLNCLI_ERROR_CLSID CLSID_SQLNCLI10_ERROR
|
|
||||||
#define SQLNCLI_ENUMERATOR_CLSID CLSID_SQLNCLI10_ENUMERATOR
|
|
||||||
|
|
||||||
#endif // defined(_SQLNCLI_OLEDB_) || !defined(_SQLNCLI_ODBC_)
|
|
||||||
|
|
||||||
#else // SQLNCLI_VER >= 1000
|
|
||||||
|
|
||||||
#define SQLNCLI_PRODUCT_NAME_FULL_VER_ANSI "Microsoft SQL Server Native Client"
|
|
||||||
#define SQLNCLI_PRODUCT_NAME_FULL_ANSI "Microsoft SQL Server Native Client"
|
|
||||||
#define SQLNCLI_PRODUCT_NAME_SHORT_VER_ANSI "SQL Native Client"
|
|
||||||
#define SQLNCLI_PRODUCT_NAME_SHORT_ANSI "SQL Native Client"
|
|
||||||
|
|
||||||
#define SQLNCLI_FILE_NAME_ANSI "sqlncli"
|
|
||||||
#define SQLNCLI_FILE_NAME_VER_ANSI "sqlncli"
|
|
||||||
#define SQLNCLI_FILE_NAME_FULL_ANSI "sqlncli.dll"
|
|
||||||
|
|
||||||
#define SQLNCLI_PRODUCT_NAME_FULL_VER_UNICODE L"Microsoft SQL Server Native Client"
|
|
||||||
#define SQLNCLI_PRODUCT_NAME_FULL_UNICODE L"Microsoft SQL Server Native Client"
|
|
||||||
#define SQLNCLI_PRODUCT_NAME_SHORT_VER_UNICODE L"SQL Native Client"
|
|
||||||
#define SQLNCLI_PRODUCT_NAME_SHORT_UNICODE L"SQL Native Client"
|
|
||||||
|
|
||||||
#define SQLNCLI_FILE_NAME_UNICODE L"sqlncli"
|
|
||||||
#define SQLNCLI_FILE_NAME_VER_UNICODE L"sqlncli"
|
|
||||||
#define SQLNCLI_FILE_NAME_FULL_UNICODE L"sqlncli.dll"
|
|
||||||
|
|
||||||
#if defined(_SQLNCLI_OLEDB_) || !defined(_SQLNCLI_ODBC_)
|
|
||||||
|
|
||||||
#define SQLNCLI_VI_PROG_ID_ANSI "SQLNCLI"
|
|
||||||
#define SQLNCLI_VI_ERROR_LOOKUP_PROG_ID_ANSI "SQLNCLI ErrorLookup"
|
|
||||||
#define SQLNCLI_VI_ENUMERATOR_PROG_ID_ANSI "SQLNCLI Enumerator"
|
|
||||||
|
|
||||||
#define SQLNCLI_PROG_ID_ANSI "SQLNCLI.1"
|
|
||||||
#define SQLNCLI_ERROR_LOOKUP_PROG_ID_ANSI "SQLNCLI ErrorLookup.1"
|
|
||||||
#define SQLNCLI_ENUMERATOR_PROG_ID_ANSI "SQLNCLI Enumerator.1"
|
|
||||||
|
|
||||||
#define SQLNCLI_VI_PROG_ID_UNICODE L"SQLNCLI"
|
|
||||||
#define SQLNCLI_VI_ERROR_LOOKUP_PROG_ID_UNICODE L"SQLNCLI ErrorLookup"
|
|
||||||
#define SQLNCLI_VI_ENUMERATOR_PROG_ID_UNICODE L"SQLNCLI Enumerator"
|
|
||||||
|
|
||||||
#define SQLNCLI_PROG_ID_UNICODE L"SQLNCLI.1"
|
|
||||||
#define SQLNCLI_ERROR_LOOKUP_PROG_ID_UNICODE L"SQLNCLI ErrorLookup.1"
|
|
||||||
#define SQLNCLI_ENUMERATOR_PROG_ID_UNICODE L"SQLNCLI Enumerator.1"
|
|
||||||
|
|
||||||
#define SQLNCLI_CLSID CLSID_SQLNCLI
|
|
||||||
#define SQLNCLI_ERROR_CLSID CLSID_SQLNCLI_ERROR
|
|
||||||
#define SQLNCLI_ENUMERATOR_CLSID CLSID_SQLNCLI_ENUMERATOR
|
|
||||||
|
|
||||||
#endif // defined(_SQLNCLI_OLEDB_) || !defined(_SQLNCLI_ODBC_)
|
|
||||||
|
|
||||||
#endif // SQLNCLI_VER >= 1000
|
|
||||||
|
|
||||||
// define the character type agnostic constants
|
|
||||||
#if defined(_UNICODE) || defined(UNICODE)
|
|
||||||
|
|
||||||
#define SQLNCLI_PRODUCT_NAME_FULL_VER SQLNCLI_PRODUCT_NAME_FULL_VER_UNICODE
|
|
||||||
#define SQLNCLI_PRODUCT_NAME_FULL SQLNCLI_PRODUCT_NAME_FULL_UNICODE
|
|
||||||
#define SQLNCLI_PRODUCT_NAME_SHORT_VER SQLNCLI_PRODUCT_NAME_SHORT_VER_UNICODE
|
|
||||||
#define SQLNCLI_PRODUCT_NAME_SHORT SQLNCLI_PRODUCT_NAME_SHORT_UNICODE
|
|
||||||
|
|
||||||
#define SQLNCLI_FILE_NAME SQLNCLI_FILE_NAME_UNICODE
|
|
||||||
#define SQLNCLI_FILE_NAME_VER SQLNCLI_FILE_NAME_VER_UNICODE
|
|
||||||
#define SQLNCLI_FILE_NAME_FULL SQLNCLI_FILE_NAME_FULL_UNICODE
|
|
||||||
|
|
||||||
#if defined(_SQLNCLI_OLEDB_) || !defined(_SQLNCLI_ODBC_)
|
|
||||||
|
|
||||||
#define SQLNCLI_VI_PROG_ID SQLNCLI_VI_PROG_ID_UNICODE
|
|
||||||
#define SQLNCLI_VI_ERROR_LOOKUP_PROG_ID SQLNCLI_VI_ERROR_LOOKUP_PROG_ID_UNICODE
|
|
||||||
#define SQLNCLI_VI_ENUMERATOR_PROG_ID SQLNCLI_VI_ENUMERATOR_PROG_ID_UNICODE
|
|
||||||
|
|
||||||
#define SQLNCLI_PROG_ID SQLNCLI_PROG_ID_UNICODE
|
|
||||||
#define SQLNCLI_ERROR_LOOKUP_PROG_ID SQLNCLI_ERROR_LOOKUP_PROG_ID_UNICODE
|
|
||||||
#define SQLNCLI_ENUMERATOR_PROG_ID SQLNCLI_ENUMERATOR_PROG_ID_UNICODE
|
|
||||||
|
|
||||||
#endif // defined(_SQLNCLI_OLEDB_) || !defined(_SQLNCLI_ODBC_)
|
|
||||||
|
|
||||||
#else // _UNICODE || UNICODE
|
|
||||||
|
|
||||||
#define SQLNCLI_PRODUCT_NAME_FULL_VER SQLNCLI_PRODUCT_NAME_FULL_VER_ANSI
|
|
||||||
#define SQLNCLI_PRODUCT_NAME_FULL SQLNCLI_PRODUCT_NAME_FULL_ANSI
|
|
||||||
#define SQLNCLI_PRODUCT_NAME_SHORT_VER SQLNCLI_PRODUCT_NAME_SHORT_VER_ANSI
|
|
||||||
#define SQLNCLI_PRODUCT_NAME_SHORT SQLNCLI_PRODUCT_NAME_SHORT_ANSI
|
|
||||||
|
|
||||||
#define SQLNCLI_FILE_NAME SQLNCLI_FILE_NAME_ANSI
|
|
||||||
#define SQLNCLI_FILE_NAME_VER SQLNCLI_FILE_NAME_VER_ANSI
|
|
||||||
#define SQLNCLI_FILE_NAME_FULL SQLNCLI_FILE_NAME_FULL_ANSI
|
|
||||||
|
|
||||||
#if defined(_SQLNCLI_OLEDB_) || !defined(_SQLNCLI_ODBC_)
|
|
||||||
|
|
||||||
#define SQLNCLI_VI_PROG_ID SQLNCLI_VI_PROG_ID_ANSI
|
|
||||||
#define SQLNCLI_VI_ERROR_LOOKUP_PROG_ID SQLNCLI_VI_ERROR_LOOKUP_PROG_ID_ANSI
|
|
||||||
#define SQLNCLI_VI_ENUMERATOR_PROG_ID SQLNCLI_VI_ENUMERATOR_PROG_ID_ANSI
|
|
||||||
|
|
||||||
#define SQLNCLI_PROG_ID SQLNCLI_PROG_ID_ANSI
|
|
||||||
#define SQLNCLI_ERROR_LOOKUP_PROG_ID SQLNCLI_ERROR_LOOKUP_PROG_ID_ANSI
|
|
||||||
#define SQLNCLI_ENUMERATOR_PROG_ID SQLNCLI_ENUMERATOR_PROG_ID_ANSI
|
|
||||||
|
|
||||||
#endif // defined(_SQLNCLI_OLEDB_) || !defined(_SQLNCLI_ODBC_)
|
|
||||||
|
|
||||||
#endif // _UNICODE || UNICODE
|
|
||||||
|
|
||||||
#if defined(_SQLNCLI_ODBC_) || !defined(_SQLNCLI_OLEDB_)
|
|
||||||
|
|
||||||
#define SQLNCLI_DRIVER_NAME SQLNCLI_PRODUCT_NAME_SHORT_VER
|
|
||||||
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// OLEDB part of SQL Server Native Client header - begin here
|
|
||||||
#if defined(_SQLNCLI_OLEDB_) || !defined(_SQLNCLI_ODBC_)
|
|
||||||
#ifndef __oledb_h__
|
|
||||||
#include <oledb.h>
|
|
||||||
#endif /*__oledb_h__*/
|
|
||||||
|
|
||||||
#if 0 // This is already defined in oledb.h
|
|
||||||
|
|
||||||
#ifdef _WIN64
|
|
||||||
|
|
||||||
// Length of a non-character object, size
|
|
||||||
typedef ULONGLONG DBLENGTH;
|
|
||||||
|
|
||||||
// Offset within a rowset
|
|
||||||
typedef LONGLONG DBROWOFFSET;
|
|
||||||
|
|
||||||
// Number of rows
|
|
||||||
typedef LONGLONG DBROWCOUNT;
|
|
||||||
|
|
||||||
typedef ULONGLONG DBCOUNTITEM;
|
|
||||||
|
|
||||||
// Ordinal (column number, etc.)
|
|
||||||
typedef ULONGLONG DBORDINAL;
|
|
||||||
|
|
||||||
typedef LONGLONG DB_LORDINAL;
|
|
||||||
|
|
||||||
// Bookmarks
|
|
||||||
typedef ULONGLONG DBBKMARK;
|
|
||||||
// Offset in the buffer
|
|
||||||
|
|
||||||
typedef ULONGLONG DBBYTEOFFSET;
|
|
||||||
// Reference count of each row/accessor handle
|
|
||||||
|
|
||||||
typedef ULONG DBREFCOUNT;
|
|
||||||
|
|
||||||
// Parameters
|
|
||||||
typedef ULONGLONG DB_UPARAMS;
|
|
||||||
|
|
||||||
typedef LONGLONG DB_LPARAMS;
|
|
||||||
|
|
||||||
// hash values corresponding to the elements (bookmarks)
|
|
||||||
typedef DWORDLONG DBHASHVALUE;
|
|
||||||
|
|
||||||
// For reserve
|
|
||||||
typedef DWORDLONG DB_DWRESERVE;
|
|
||||||
|
|
||||||
typedef LONGLONG DB_LRESERVE;
|
|
||||||
|
|
||||||
typedef ULONGLONG DB_URESERVE;
|
|
||||||
|
|
||||||
#else //_WIN64
|
|
||||||
|
|
||||||
// Length of a non-character object, size
|
|
||||||
typedef ULONG DBLENGTH;
|
|
||||||
|
|
||||||
// Offset within a rowset
|
|
||||||
typedef LONG DBROWOFFSET;
|
|
||||||
|
|
||||||
// Number of rows
|
|
||||||
typedef LONG DBROWCOUNT;
|
|
||||||
|
|
||||||
typedef ULONG DBCOUNTITEM;
|
|
||||||
|
|
||||||
// Ordinal (column number, etc.)
|
|
||||||
typedef ULONG DBORDINAL;
|
|
||||||
|
|
||||||
typedef LONG DB_LORDINAL;
|
|
||||||
|
|
||||||
// Bookmarks
|
|
||||||
typedef ULONG DBBKMARK;
|
|
||||||
|
|
||||||
// Offset in the buffer
|
|
||||||
typedef ULONG DBBYTEOFFSET;
|
|
||||||
|
|
||||||
// Reference count of each row handle
|
|
||||||
typedef ULONG DBREFCOUNT;
|
|
||||||
|
|
||||||
// Parameters
|
|
||||||
typedef ULONG DB_UPARAMS;
|
|
||||||
|
|
||||||
typedef LONG DB_LPARAMS;
|
|
||||||
|
|
||||||
// hash values corresponding to the elements (bookmarks)
|
|
||||||
typedef DWORD DBHASHVALUE;
|
|
||||||
|
|
||||||
// For reserve
|
|
||||||
typedef DWORD DB_DWRESERVE;
|
|
||||||
|
|
||||||
typedef LONG DB_LRESERVE;
|
|
||||||
|
|
||||||
typedef ULONG DB_URESERVE;
|
|
||||||
|
|
||||||
#endif // _WIN64
|
|
||||||
typedef DWORD DBKIND;
|
|
||||||
|
|
||||||
|
|
||||||
enum DBKINDENUM
|
|
||||||
{ DBKIND_GUID_NAME = 0,
|
|
||||||
DBKIND_GUID_PROPID = ( DBKIND_GUID_NAME + 1 ) ,
|
|
||||||
DBKIND_NAME = ( DBKIND_GUID_PROPID + 1 ) ,
|
|
||||||
DBKIND_PGUID_NAME = ( DBKIND_NAME + 1 ) ,
|
|
||||||
DBKIND_PGUID_PROPID = ( DBKIND_PGUID_NAME + 1 ) ,
|
|
||||||
DBKIND_PROPID = ( DBKIND_PGUID_PROPID + 1 ) ,
|
|
||||||
DBKIND_GUID = ( DBKIND_PROPID + 1 )
|
|
||||||
} ;
|
|
||||||
typedef struct tagDBID
|
|
||||||
{
|
|
||||||
union
|
|
||||||
{
|
|
||||||
GUID guid;
|
|
||||||
GUID *pguid;
|
|
||||||
/* Empty union arm */
|
|
||||||
} uGuid;
|
|
||||||
DBKIND eKind;
|
|
||||||
union
|
|
||||||
{
|
|
||||||
LPOLESTR pwszName;
|
|
||||||
ULONG ulPropid;
|
|
||||||
/* Empty union arm */
|
|
||||||
} uName;
|
|
||||||
} DBID;
|
|
||||||
|
|
||||||
typedef struct tagDB_NUMERIC
|
|
||||||
{
|
|
||||||
BYTE precision;
|
|
||||||
BYTE scale;
|
|
||||||
BYTE sign;
|
|
||||||
BYTE val[ 16 ];
|
|
||||||
} DB_NUMERIC;
|
|
||||||
|
|
||||||
typedef struct tagDBDATE
|
|
||||||
{
|
|
||||||
SHORT year;
|
|
||||||
USHORT month;
|
|
||||||
USHORT day;
|
|
||||||
} DBDATE;
|
|
||||||
|
|
||||||
typedef struct tagDBTIME
|
|
||||||
{
|
|
||||||
USHORT hour;
|
|
||||||
USHORT minute;
|
|
||||||
USHORT second;
|
|
||||||
} DBTIME;
|
|
||||||
|
|
||||||
typedef struct tagDBTIMESTAMP
|
|
||||||
{
|
|
||||||
SHORT year;
|
|
||||||
USHORT month;
|
|
||||||
USHORT day;
|
|
||||||
USHORT hour;
|
|
||||||
USHORT minute;
|
|
||||||
USHORT second;
|
|
||||||
ULONG fraction;
|
|
||||||
} DBTIMESTAMP;
|
|
||||||
|
|
||||||
typedef struct tagDBOBJECT
|
|
||||||
{
|
|
||||||
DWORD dwFlags;
|
|
||||||
IID iid;
|
|
||||||
} DBOBJECT;
|
|
||||||
|
|
||||||
typedef WORD DBTYPE;
|
|
||||||
|
|
||||||
typedef ULONG_PTR HACCESSOR;
|
|
||||||
|
|
||||||
typedef ULONG_PTR HCHAPTER;
|
|
||||||
|
|
||||||
typedef DWORD DBPARAMFLAGS;
|
|
||||||
|
|
||||||
typedef struct tagDBPARAMINFO
|
|
||||||
{
|
|
||||||
DBPARAMFLAGS dwFlags;
|
|
||||||
DBORDINAL iOrdinal;
|
|
||||||
LPOLESTR pwszName;
|
|
||||||
ITypeInfo *pTypeInfo;
|
|
||||||
DBLENGTH ulParamSize;
|
|
||||||
DBTYPE wType;
|
|
||||||
BYTE bPrecision;
|
|
||||||
BYTE bScale;
|
|
||||||
} DBPARAMINFO;
|
|
||||||
|
|
||||||
typedef DWORD DBPROPID;
|
|
||||||
|
|
||||||
typedef struct tagDBPROPIDSET
|
|
||||||
{
|
|
||||||
DBPROPID *rgPropertyIDs;
|
|
||||||
ULONG cPropertyIDs;
|
|
||||||
GUID guidPropertySet;
|
|
||||||
} DBPROPIDSET;
|
|
||||||
|
|
||||||
typedef DWORD DBPROPFLAGS;
|
|
||||||
|
|
||||||
typedef DWORD DBPROPOPTIONS;
|
|
||||||
|
|
||||||
typedef DWORD DBPROPSTATUS;
|
|
||||||
|
|
||||||
typedef struct tagDBPROP
|
|
||||||
{
|
|
||||||
DBPROPID dwPropertyID;
|
|
||||||
DBPROPOPTIONS dwOptions;
|
|
||||||
DBPROPSTATUS dwStatus;
|
|
||||||
DBID colid;
|
|
||||||
VARIANT vValue;
|
|
||||||
} DBPROP;
|
|
||||||
|
|
||||||
typedef struct tagDBPROPSET
|
|
||||||
{
|
|
||||||
DBPROP *rgProperties;
|
|
||||||
ULONG cProperties;
|
|
||||||
GUID guidPropertySet;
|
|
||||||
} DBPROPSET;
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
extern RPC_IF_HANDLE __MIDL_itf_sqlncli_0000_0000_v0_0_c_ifspec;
|
|
||||||
extern RPC_IF_HANDLE __MIDL_itf_sqlncli_0000_0000_v0_0_s_ifspec;
|
|
||||||
|
|
||||||
#ifndef __ICommandWithParameters_INTERFACE_DEFINED__
|
|
||||||
#define __ICommandWithParameters_INTERFACE_DEFINED__
|
|
||||||
|
|
||||||
/* interface ICommandWithParameters */
|
|
||||||
/* [unique][uuid][object][local] */
|
|
||||||
|
|
||||||
typedef struct tagDBPARAMBINDINFO
|
|
||||||
{
|
|
||||||
LPOLESTR pwszDataSourceType;
|
|
||||||
LPOLESTR pwszName;
|
|
||||||
DBLENGTH ulParamSize;
|
|
||||||
DBPARAMFLAGS dwFlags;
|
|
||||||
BYTE bPrecision;
|
|
||||||
BYTE bScale;
|
|
||||||
} DBPARAMBINDINFO;
|
|
||||||
|
|
||||||
|
|
||||||
EXTERN_C const IID IID_ICommandWithParameters;
|
|
||||||
|
|
||||||
#if defined(__cplusplus) && !defined(CINTERFACE)
|
|
||||||
|
|
||||||
MIDL_INTERFACE("0c733a64-2a1c-11ce-ade5-00aa0044773d")
|
|
||||||
ICommandWithParameters : public IUnknown
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
virtual /* [local] */ HRESULT STDMETHODCALLTYPE GetParameterInfo(
|
|
||||||
/* [out][in] */ DB_UPARAMS *pcParams,
|
|
||||||
/* [size_is][size_is][out] */ DBPARAMINFO **prgParamInfo,
|
|
||||||
/* [out] */ OLECHAR **ppNamesBuffer) = 0;
|
|
||||||
|
|
||||||
virtual /* [local] */ HRESULT STDMETHODCALLTYPE MapParameterNames(
|
|
||||||
/* [in] */ DB_UPARAMS cParamNames,
|
|
||||||
/* [size_is][in] */ const OLECHAR *rgParamNames[ ],
|
|
||||||
/* [size_is][out] */ DB_LPARAMS rgParamOrdinals[ ]) = 0;
|
|
||||||
|
|
||||||
virtual /* [local] */ HRESULT STDMETHODCALLTYPE SetParameterInfo(
|
|
||||||
/* [in] */ DB_UPARAMS cParams,
|
|
||||||
/* [size_is][unique][in] */ const DB_UPARAMS rgParamOrdinals[ ],
|
|
||||||
/* [size_is][unique][in] */ const DBPARAMBINDINFO rgParamBindInfo[ ]) = 0;
|
|
||||||
|
|
||||||
};
|
|
||||||
|
|
||||||
#else /* C style interface */
|
|
||||||
|
|
||||||
typedef struct ICommandWithParametersVtbl
|
|
||||||
{
|
|
||||||
BEGIN_INTERFACE
|
|
||||||
|
|
||||||
HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
|
|
||||||
ICommandWithParameters * This,
|
|
||||||
/* [in] */ REFIID riid,
|
|
||||||
/* [iid_is][out] */
|
|
||||||
__RPC__deref_out void **ppvObject);
|
|
||||||
|
|
||||||
ULONG ( STDMETHODCALLTYPE *AddRef )(
|
|
||||||
ICommandWithParameters * This);
|
|
||||||
|
|
||||||
ULONG ( STDMETHODCALLTYPE *Release )(
|
|
||||||
ICommandWithParameters * This);
|
|
||||||
|
|
||||||
/* [local] */ HRESULT ( STDMETHODCALLTYPE *GetParameterInfo )(
|
|
||||||
ICommandWithParameters * This,
|
|
||||||
/* [out][in] */ DB_UPARAMS *pcParams,
|
|
||||||
/* [size_is][size_is][out] */ DBPARAMINFO **prgParamInfo,
|
|
||||||
/* [out] */ OLECHAR **ppNamesBuffer);
|
|
||||||
|
|
||||||
/* [local] */ HRESULT ( STDMETHODCALLTYPE *MapParameterNames )(
|
|
||||||
ICommandWithParameters * This,
|
|
||||||
/* [in] */ DB_UPARAMS cParamNames,
|
|
||||||
/* [size_is][in] */ const OLECHAR *rgParamNames[ ],
|
|
||||||
/* [size_is][out] */ DB_LPARAMS rgParamOrdinals[ ]);
|
|
||||||
|
|
||||||
/* [local] */ HRESULT ( STDMETHODCALLTYPE *SetParameterInfo )(
|
|
||||||
ICommandWithParameters * This,
|
|
||||||
/* [in] */ DB_UPARAMS cParams,
|
|
||||||
/* [size_is][unique][in] */ const DB_UPARAMS rgParamOrdinals[ ],
|
|
||||||
/* [size_is][unique][in] */ const DBPARAMBINDINFO rgParamBindInfo[ ]);
|
|
||||||
|
|
||||||
END_INTERFACE
|
|
||||||
} ICommandWithParametersVtbl;
|
|
||||||
|
|
||||||
interface ICommandWithParameters
|
|
||||||
{
|
|
||||||
CONST_VTBL struct ICommandWithParametersVtbl *lpVtbl;
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#ifdef COBJMACROS
|
|
||||||
|
|
||||||
|
|
||||||
#define ICommandWithParameters_QueryInterface(This,riid,ppvObject) \
|
|
||||||
( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
|
|
||||||
|
|
||||||
#define ICommandWithParameters_AddRef(This) \
|
|
||||||
( (This)->lpVtbl -> AddRef(This) )
|
|
||||||
|
|
||||||
#define ICommandWithParameters_Release(This) \
|
|
||||||
( (This)->lpVtbl -> Release(This) )
|
|
||||||
|
|
||||||
|
|
||||||
#define ICommandWithParameters_GetParameterInfo(This,pcParams,prgParamInfo,ppNamesBuffer) \
|
|
||||||
( (This)->lpVtbl -> GetParameterInfo(This,pcParams,prgParamInfo,ppNamesBuffer) )
|
|
||||||
|
|
||||||
#define ICommandWithParameters_MapParameterNames(This,cParamNames,rgParamNames,rgParamOrdinals) \
|
|
||||||
( (This)->lpVtbl -> MapParameterNames(This,cParamNames,rgParamNames,rgParamOrdinals) )
|
|
||||||
|
|
||||||
#define ICommandWithParameters_SetParameterInfo(This,cParams,rgParamOrdinals,rgParamBindInfo) \
|
|
||||||
( (This)->lpVtbl -> SetParameterInfo(This,cParams,rgParamOrdinals,rgParamBindInfo) )
|
|
||||||
|
|
||||||
#endif /* COBJMACROS */
|
|
||||||
|
|
||||||
|
|
||||||
#endif /* C style interface */
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/* [call_as] */ HRESULT STDMETHODCALLTYPE ICommandWithParameters_RemoteGetParameterInfo_Proxy(
|
|
||||||
ICommandWithParameters * This,
|
|
||||||
/* [out][in] */ DB_UPARAMS *pcParams,
|
|
||||||
/* [size_is][size_is][out] */ DBPARAMINFO **prgParamInfo,
|
|
||||||
/* [size_is][size_is][out] */ DBBYTEOFFSET **prgNameOffsets,
|
|
||||||
/* [out][in] */ DBLENGTH *pcbNamesBuffer,
|
|
||||||
/* [size_is][size_is][unique][out][in] */ OLECHAR **ppNamesBuffer,
|
|
||||||
/* [out] */ IErrorInfo **ppErrorInfoRem);
|
|
||||||
|
|
||||||
|
|
||||||
void __RPC_STUB ICommandWithParameters_RemoteGetParameterInfo_Stub(
|
|
||||||
IRpcStubBuffer *This,
|
|
||||||
IRpcChannelBuffer *_pRpcChannelBuffer,
|
|
||||||
PRPC_MESSAGE _pRpcMessage,
|
|
||||||
DWORD *_pdwStubPhase);
|
|
||||||
|
|
||||||
|
|
||||||
/* [call_as] */ HRESULT STDMETHODCALLTYPE ICommandWithParameters_RemoteMapParameterNames_Proxy(
|
|
||||||
ICommandWithParameters * This,
|
|
||||||
/* [in] */ DB_UPARAMS cParamNames,
|
|
||||||
/* [size_is][in] */ LPCOLESTR *rgParamNames,
|
|
||||||
/* [size_is][out] */ DB_LPARAMS *rgParamOrdinals,
|
|
||||||
/* [out] */ IErrorInfo **ppErrorInfoRem);
|
|
||||||
|
|
||||||
|
|
||||||
void __RPC_STUB ICommandWithParameters_RemoteMapParameterNames_Stub(
|
|
||||||
IRpcStubBuffer *This,
|
|
||||||
IRpcChannelBuffer *_pRpcChannelBuffer,
|
|
||||||
PRPC_MESSAGE _pRpcMessage,
|
|
||||||
DWORD *_pdwStubPhase);
|
|
||||||
|
|
||||||
|
|
||||||
/* [call_as] */ HRESULT STDMETHODCALLTYPE ICommandWithParameters_RemoteSetParameterInfo_Proxy(
|
|
||||||
ICommandWithParameters * This,
|
|
||||||
/* [in] */ DB_UPARAMS cParams,
|
|
||||||
/* [size_is][unique][in] */ const DB_UPARAMS *rgParamOrdinals,
|
|
||||||
/* [size_is][unique][in] */ const DBPARAMBINDINFO *rgParamBindInfo,
|
|
||||||
/* [out] */ IErrorInfo **ppErrorInfoRem);
|
|
||||||
|
|
||||||
|
|
||||||
void __RPC_STUB ICommandWithParameters_RemoteSetParameterInfo_Stub(
|
|
||||||
IRpcStubBuffer *This,
|
|
||||||
IRpcChannelBuffer *_pRpcChannelBuffer,
|
|
||||||
PRPC_MESSAGE _pRpcMessage,
|
|
||||||
DWORD *_pdwStubPhase);
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#endif /* __ICommandWithParameters_INTERFACE_DEFINED__ */
|
|
||||||
|
|
||||||
|
|
||||||
/* interface __MIDL_itf_sqlncli_0000_0001 */
|
|
||||||
/* [local] */
|
|
||||||
|
|
||||||
typedef DWORD DBASYNCHOP;
|
|
||||||
|
|
||||||
typedef DWORD DBASYNCHPHASE;
|
|
||||||
|
|
||||||
#endif // This is already defined in oledb.h
|
|
||||||
|
|
||||||
//-------------------------------------------------------------------
|
|
||||||
// Variant Access macros, similar to ole automation.
|
|
||||||
//-------------------------------------------------------------------
|
|
||||||
#define V_SS_VT(X) ((X)->vt)
|
|
||||||
#define V_SS_UNION(X, Y) ((X)->Y)
|
|
||||||
|
|
||||||
#define V_SS_UI1(X) V_SS_UNION(X, bTinyIntVal)
|
|
||||||
#define V_SS_I2(X) V_SS_UNION(X, sShortIntVal)
|
|
||||||
#define V_SS_I4(X) V_SS_UNION(X, lIntVal)
|
|
||||||
#define V_SS_I8(X) V_SS_UNION(X, llBigIntVal)
|
|
||||||
|
|
||||||
#define V_SS_R4(X) V_SS_UNION(X, fltRealVal)
|
|
||||||
#define V_SS_R8(X) V_SS_UNION(X, dblFloatVal)
|
|
||||||
#define V_SS_UI4(X) V_SS_UNION(X, ulVal)
|
|
||||||
|
|
||||||
#define V_SS_MONEY(X) V_SS_UNION(X, cyMoneyVal)
|
|
||||||
#define V_SS_SMALLMONEY(X) V_SS_UNION(X, cyMoneyVal)
|
|
||||||
|
|
||||||
#define V_SS_WSTRING(X) V_SS_UNION(X, NCharVal)
|
|
||||||
#define V_SS_WVARSTRING(X) V_SS_UNION(X, NCharVal)
|
|
||||||
|
|
||||||
#define V_SS_STRING(X) V_SS_UNION(X, CharVal)
|
|
||||||
#define V_SS_VARSTRING(X) V_SS_UNION(X, CharVal)
|
|
||||||
|
|
||||||
#define V_SS_BIT(X) V_SS_UNION(X, fBitVal)
|
|
||||||
#define V_SS_GUID(X) V_SS_UNION(X, rgbGuidVal)
|
|
||||||
|
|
||||||
#define V_SS_NUMERIC(X) V_SS_UNION(X, numNumericVal)
|
|
||||||
#define V_SS_DECIMAL(X) V_SS_UNION(X, numNumericVal)
|
|
||||||
|
|
||||||
#define V_SS_BINARY(X) V_SS_UNION(X, BinaryVal)
|
|
||||||
#define V_SS_VARBINARY(X) V_SS_UNION(X, BinaryVal)
|
|
||||||
|
|
||||||
#define V_SS_DATETIME(X) V_SS_UNION(X, tsDateTimeVal)
|
|
||||||
#define V_SS_SMALLDATETIME(X) V_SS_UNION(X, tsDateTimeVal)
|
|
||||||
|
|
||||||
#define V_SS_UNKNOWN(X) V_SS_UNION(X, UnknownType)
|
|
||||||
|
|
||||||
//Text and image types.
|
|
||||||
#define V_SS_IMAGE(X) V_SS_UNION(X, ImageVal)
|
|
||||||
#define V_SS_TEXT(X) V_SS_UNION(X, TextVal)
|
|
||||||
#define V_SS_NTEXT(X) V_SS_UNION(X, NTextVal)
|
|
||||||
|
|
||||||
//Microsoft SQL Server 2008 datetime.
|
|
||||||
#define V_SS_DATE(X) V_SS_UNION(X, dDateVal)
|
|
||||||
#define V_SS_TIME2(X) V_SS_UNION(X, Time2Val)
|
|
||||||
#define V_SS_DATETIME2(X) V_SS_UNION(X, DateTimeVal)
|
|
||||||
#define V_SS_DATETIMEOFFSET(X) V_SS_UNION(X, DateTimeOffsetVal)
|
|
||||||
|
|
||||||
//-------------------------------------------------------------------
|
|
||||||
// define SQL Server specific types.
|
|
||||||
//-------------------------------------------------------------------
|
|
||||||
typedef enum DBTYPEENUM EOledbTypes;
|
|
||||||
#define DBTYPE_XML ((EOledbTypes) 141) // introduced in SQL 2005
|
|
||||||
#define DBTYPE_TABLE ((EOledbTypes) 143) // introduced in SQL 2008
|
|
||||||
#define DBTYPE_DBTIME2 ((EOledbTypes) 145) // introduced in SQL 2008
|
|
||||||
#define DBTYPE_DBTIMESTAMPOFFSET ((EOledbTypes) 146) // introduced in SQL 2008
|
|
||||||
#ifdef _SQLOLEDB_H_
|
|
||||||
#undef DBTYPE_SQLVARIANT
|
|
||||||
#endif //_SQLOLEDB_H_
|
|
||||||
#define DBTYPE_SQLVARIANT ((EOledbTypes) 144) // introduced in MDAC 2.5
|
|
||||||
|
|
||||||
|
|
||||||
#ifndef _SQLOLEDB_H_
|
|
||||||
enum SQLVARENUM
|
|
||||||
{
|
|
||||||
VT_SS_EMPTY = DBTYPE_EMPTY,
|
|
||||||
VT_SS_NULL = DBTYPE_NULL,
|
|
||||||
VT_SS_UI1 = DBTYPE_UI1,
|
|
||||||
VT_SS_I2 = DBTYPE_I2,
|
|
||||||
VT_SS_I4 = DBTYPE_I4,
|
|
||||||
VT_SS_I8 = DBTYPE_I8,
|
|
||||||
|
|
||||||
//Floats
|
|
||||||
VT_SS_R4 = DBTYPE_R4,
|
|
||||||
VT_SS_R8 = DBTYPE_R8,
|
|
||||||
|
|
||||||
//Money
|
|
||||||
VT_SS_MONEY = DBTYPE_CY,
|
|
||||||
VT_SS_SMALLMONEY = 200,
|
|
||||||
|
|
||||||
//Strings
|
|
||||||
VT_SS_WSTRING = 201,
|
|
||||||
VT_SS_WVARSTRING = 202,
|
|
||||||
|
|
||||||
VT_SS_STRING = 203,
|
|
||||||
VT_SS_VARSTRING = 204,
|
|
||||||
|
|
||||||
//Bit
|
|
||||||
VT_SS_BIT = DBTYPE_BOOL,
|
|
||||||
|
|
||||||
//Guid
|
|
||||||
VT_SS_GUID = DBTYPE_GUID,
|
|
||||||
|
|
||||||
//Exact precision
|
|
||||||
VT_SS_NUMERIC = DBTYPE_NUMERIC,
|
|
||||||
VT_SS_DECIMAL = 205,
|
|
||||||
|
|
||||||
//Datetime
|
|
||||||
VT_SS_DATETIME = DBTYPE_DBTIMESTAMP,
|
|
||||||
VT_SS_SMALLDATETIME =206,
|
|
||||||
|
|
||||||
//Binary
|
|
||||||
VT_SS_BINARY =207,
|
|
||||||
VT_SS_VARBINARY = 208,
|
|
||||||
//Future
|
|
||||||
VT_SS_UNKNOWN = 209,
|
|
||||||
|
|
||||||
//Additional datetime
|
|
||||||
VT_SS_DATE = DBTYPE_DBDATE,
|
|
||||||
VT_SS_TIME2 = DBTYPE_DBTIME2,
|
|
||||||
VT_SS_DATETIME2 = 212,
|
|
||||||
VT_SS_DATETIMEOFFSET = DBTYPE_DBTIMESTAMPOFFSET,
|
|
||||||
};
|
|
||||||
typedef unsigned short SSVARTYPE;
|
|
||||||
|
|
||||||
|
|
||||||
enum DBPARAMFLAGSENUM_SS_100
|
|
||||||
{ DBPARAMFLAGS_SS_ISVARIABLESCALE = 0x40000000
|
|
||||||
} ;
|
|
||||||
enum DBCOLUMNFLAGSENUM_SS_100
|
|
||||||
{ DBCOLUMNFLAGS_SS_ISVARIABLESCALE = 0x40000000,
|
|
||||||
DBCOLUMNFLAGS_SS_ISCOLUMNSET = 0x80000000
|
|
||||||
} ;
|
|
||||||
|
|
||||||
//-------------------------------------------------------------------
|
|
||||||
// Class Factory Interface used to initialize pointer to UMS.
|
|
||||||
//-------------------------------------------------------------------
|
|
||||||
|
|
||||||
|
|
||||||
extern RPC_IF_HANDLE __MIDL_itf_sqlncli_0000_0001_v0_0_c_ifspec;
|
|
||||||
extern RPC_IF_HANDLE __MIDL_itf_sqlncli_0000_0001_v0_0_s_ifspec;
|
|
||||||
|
|
||||||
#ifndef __IUMSInitialize_INTERFACE_DEFINED__
|
|
||||||
#define __IUMSInitialize_INTERFACE_DEFINED__
|
|
||||||
|
|
||||||
/* interface IUMSInitialize */
|
|
||||||
/* [unique][uuid][object][local] */
|
|
||||||
|
|
||||||
|
|
||||||
EXTERN_C const IID IID_IUMSInitialize;
|
|
||||||
|
|
||||||
#if defined(__cplusplus) && !defined(CINTERFACE)
|
|
||||||
|
|
||||||
MIDL_INTERFACE("5cf4ca14-ef21-11d0-97e7-00c04fc2ad98")
|
|
||||||
IUMSInitialize : public IUnknown
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
virtual HRESULT STDMETHODCALLTYPE Initialize(
|
|
||||||
/* [in] */ void *pUMS) = 0;
|
|
||||||
|
|
||||||
};
|
|
||||||
|
|
||||||
#else /* C style interface */
|
|
||||||
|
|
||||||
typedef struct IUMSInitializeVtbl
|
|
||||||
{
|
|
||||||
BEGIN_INTERFACE
|
|
||||||
|
|
||||||
HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
|
|
||||||
IUMSInitialize * This,
|
|
||||||
/* [in] */ REFIID riid,
|
|
||||||
/* [iid_is][out] */
|
|
||||||
__RPC__deref_out void **ppvObject);
|
|
||||||
|
|
||||||
ULONG ( STDMETHODCALLTYPE *AddRef )(
|
|
||||||
IUMSInitialize * This);
|
|
||||||
|
|
||||||
ULONG ( STDMETHODCALLTYPE *Release )(
|
|
||||||
IUMSInitialize * This);
|
|
||||||
|
|
||||||
HRESULT ( STDMETHODCALLTYPE *Initialize )(
|
|
||||||
IUMSInitialize * This,
|
|
||||||
/* [in] */ void *pUMS);
|
|
||||||
|
|
||||||
END_INTERFACE
|
|
||||||
} IUMSInitializeVtbl;
|
|
||||||
|
|
||||||
interface IUMSInitialize
|
|
||||||
{
|
|
||||||
CONST_VTBL struct IUMSInitializeVtbl *lpVtbl;
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#ifdef COBJMACROS
|
|
||||||
|
|
||||||
|
|
||||||
#define IUMSInitialize_QueryInterface(This,riid,ppvObject) \
|
|
||||||
( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
|
|
||||||
|
|
||||||
#define IUMSInitialize_AddRef(This) \
|
|
||||||
( (This)->lpVtbl -> AddRef(This) )
|
|
||||||
|
|
||||||
#define IUMSInitialize_Release(This) \
|
|
||||||
( (This)->lpVtbl -> Release(This) )
|
|
||||||
|
|
||||||
|
|
||||||
#define IUMSInitialize_Initialize(This,pUMS) \
|
|
||||||
( (This)->lpVtbl -> Initialize(This,pUMS) )
|
|
||||||
|
|
||||||
#endif /* COBJMACROS */
|
|
||||||
|
|
||||||
|
|
||||||
#endif /* C style interface */
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#endif /* __IUMSInitialize_INTERFACE_DEFINED__ */
|
|
||||||
|
|
||||||
|
|
||||||
/* interface __MIDL_itf_sqlncli_0000_0002 */
|
|
||||||
/* [local] */
|
|
||||||
|
|
||||||
|
|
||||||
// the structure returned by ISQLServerErrorInfo::GetSQLServerInfo
|
|
||||||
typedef struct tagSSErrorInfo
|
|
||||||
{
|
|
||||||
LPOLESTR pwszMessage;
|
|
||||||
LPOLESTR pwszServer;
|
|
||||||
LPOLESTR pwszProcedure;
|
|
||||||
LONG lNative;
|
|
||||||
BYTE bState;
|
|
||||||
BYTE bClass;
|
|
||||||
WORD wLineNumber;
|
|
||||||
} SSERRORINFO;
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
extern RPC_IF_HANDLE __MIDL_itf_sqlncli_0000_0002_v0_0_c_ifspec;
|
|
||||||
extern RPC_IF_HANDLE __MIDL_itf_sqlncli_0000_0002_v0_0_s_ifspec;
|
|
||||||
|
|
||||||
#ifndef __ISQLServerErrorInfo_INTERFACE_DEFINED__
|
|
||||||
#define __ISQLServerErrorInfo_INTERFACE_DEFINED__
|
|
||||||
|
|
||||||
/* interface ISQLServerErrorInfo */
|
|
||||||
/* [unique][uuid][object][local] */
|
|
||||||
|
|
||||||
|
|
||||||
EXTERN_C const IID IID_ISQLServerErrorInfo;
|
|
||||||
|
|
||||||
#if defined(__cplusplus) && !defined(CINTERFACE)
|
|
||||||
|
|
||||||
MIDL_INTERFACE("5CF4CA12-EF21-11d0-97E7-00C04FC2AD98")
|
|
||||||
ISQLServerErrorInfo : public IUnknown
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
virtual HRESULT STDMETHODCALLTYPE GetErrorInfo(
|
|
||||||
/* [out] */ SSERRORINFO **ppErrorInfo,
|
|
||||||
/* [out] */ OLECHAR **ppStringsBuffer) = 0;
|
|
||||||
|
|
||||||
};
|
|
||||||
|
|
||||||
#else /* C style interface */
|
|
||||||
|
|
||||||
typedef struct ISQLServerErrorInfoVtbl
|
|
||||||
{
|
|
||||||
BEGIN_INTERFACE
|
|
||||||
|
|
||||||
HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
|
|
||||||
ISQLServerErrorInfo * This,
|
|
||||||
/* [in] */ REFIID riid,
|
|
||||||
/* [iid_is][out] */
|
|
||||||
__RPC__deref_out void **ppvObject);
|
|
||||||
|
|
||||||
ULONG ( STDMETHODCALLTYPE *AddRef )(
|
|
||||||
ISQLServerErrorInfo * This);
|
|
||||||
|
|
||||||
ULONG ( STDMETHODCALLTYPE *Release )(
|
|
||||||
ISQLServerErrorInfo * This);
|
|
||||||
|
|
||||||
HRESULT ( STDMETHODCALLTYPE *GetErrorInfo )(
|
|
||||||
ISQLServerErrorInfo * This,
|
|
||||||
/* [out] */ SSERRORINFO **ppErrorInfo,
|
|
||||||
/* [out] */ OLECHAR **ppStringsBuffer);
|
|
||||||
|
|
||||||
END_INTERFACE
|
|
||||||
} ISQLServerErrorInfoVtbl;
|
|
||||||
|
|
||||||
interface ISQLServerErrorInfo
|
|
||||||
{
|
|
||||||
CONST_VTBL struct ISQLServerErrorInfoVtbl *lpVtbl;
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#ifdef COBJMACROS
|
|
||||||
|
|
||||||
|
|
||||||
#define ISQLServerErrorInfo_QueryInterface(This,riid,ppvObject) \
|
|
||||||
( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
|
|
||||||
|
|
||||||
#define ISQLServerErrorInfo_AddRef(This) \
|
|
||||||
( (This)->lpVtbl -> AddRef(This) )
|
|
||||||
|
|
||||||
#define ISQLServerErrorInfo_Release(This) \
|
|
||||||
( (This)->lpVtbl -> Release(This) )
|
|
||||||
|
|
||||||
|
|
||||||
#define ISQLServerErrorInfo_GetErrorInfo(This,ppErrorInfo,ppStringsBuffer) \
|
|
||||||
( (This)->lpVtbl -> GetErrorInfo(This,ppErrorInfo,ppStringsBuffer) )
|
|
||||||
|
|
||||||
#endif /* COBJMACROS */
|
|
||||||
|
|
||||||
|
|
||||||
#endif /* C style interface */
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#endif /* __ISQLServerErrorInfo_INTERFACE_DEFINED__ */
|
|
||||||
|
|
||||||
|
|
||||||
#ifndef __IRowsetFastLoad_INTERFACE_DEFINED__
|
|
||||||
#define __IRowsetFastLoad_INTERFACE_DEFINED__
|
|
||||||
|
|
||||||
/* interface IRowsetFastLoad */
|
|
||||||
/* [unique][uuid][object][local] */
|
|
||||||
|
|
||||||
|
|
||||||
EXTERN_C const IID IID_IRowsetFastLoad;
|
|
||||||
|
|
||||||
#if defined(__cplusplus) && !defined(CINTERFACE)
|
|
||||||
|
|
||||||
MIDL_INTERFACE("5CF4CA13-EF21-11d0-97E7-00C04FC2AD98")
|
|
||||||
IRowsetFastLoad : public IUnknown
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
virtual HRESULT STDMETHODCALLTYPE InsertRow(
|
|
||||||
/* [in] */ HACCESSOR hAccessor,
|
|
||||||
/* [in] */ void *pData) = 0;
|
|
||||||
|
|
||||||
virtual HRESULT STDMETHODCALLTYPE Commit(
|
|
||||||
/* [in] */ BOOL fDone) = 0;
|
|
||||||
|
|
||||||
};
|
|
||||||
|
|
||||||
#else /* C style interface */
|
|
||||||
|
|
||||||
typedef struct IRowsetFastLoadVtbl
|
|
||||||
{
|
|
||||||
BEGIN_INTERFACE
|
|
||||||
|
|
||||||
HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
|
|
||||||
IRowsetFastLoad * This,
|
|
||||||
/* [in] */ REFIID riid,
|
|
||||||
/* [iid_is][out] */
|
|
||||||
__RPC__deref_out void **ppvObject);
|
|
||||||
|
|
||||||
ULONG ( STDMETHODCALLTYPE *AddRef )(
|
|
||||||
IRowsetFastLoad * This);
|
|
||||||
|
|
||||||
ULONG ( STDMETHODCALLTYPE *Release )(
|
|
||||||
IRowsetFastLoad * This);
|
|
||||||
|
|
||||||
HRESULT ( STDMETHODCALLTYPE *InsertRow )(
|
|
||||||
IRowsetFastLoad * This,
|
|
||||||
/* [in] */ HACCESSOR hAccessor,
|
|
||||||
/* [in] */ void *pData);
|
|
||||||
|
|
||||||
HRESULT ( STDMETHODCALLTYPE *Commit )(
|
|
||||||
IRowsetFastLoad * This,
|
|
||||||
/* [in] */ BOOL fDone);
|
|
||||||
|
|
||||||
END_INTERFACE
|
|
||||||
} IRowsetFastLoadVtbl;
|
|
||||||
|
|
||||||
interface IRowsetFastLoad
|
|
||||||
{
|
|
||||||
CONST_VTBL struct IRowsetFastLoadVtbl *lpVtbl;
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#ifdef COBJMACROS
|
|
||||||
|
|
||||||
|
|
||||||
#define IRowsetFastLoad_QueryInterface(This,riid,ppvObject) \
|
|
||||||
( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
|
|
||||||
|
|
||||||
#define IRowsetFastLoad_AddRef(This) \
|
|
||||||
( (This)->lpVtbl -> AddRef(This) )
|
|
||||||
|
|
||||||
#define IRowsetFastLoad_Release(This) \
|
|
||||||
( (This)->lpVtbl -> Release(This) )
|
|
||||||
|
|
||||||
|
|
||||||
#define IRowsetFastLoad_InsertRow(This,hAccessor,pData) \
|
|
||||||
( (This)->lpVtbl -> InsertRow(This,hAccessor,pData) )
|
|
||||||
|
|
||||||
#define IRowsetFastLoad_Commit(This,fDone) \
|
|
||||||
( (This)->lpVtbl -> Commit(This,fDone) )
|
|
||||||
|
|
||||||
#endif /* COBJMACROS */
|
|
||||||
|
|
||||||
|
|
||||||
#endif /* C style interface */
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#endif /* __IRowsetFastLoad_INTERFACE_DEFINED__ */
|
|
||||||
|
|
||||||
|
|
||||||
/* interface __MIDL_itf_sqlncli_0000_0004 */
|
|
||||||
/* [local] */
|
|
||||||
|
|
||||||
#include <pshpack8.h> // 8-byte structure packing
|
|
||||||
|
|
||||||
typedef struct tagDBTIME2
|
|
||||||
{
|
|
||||||
USHORT hour;
|
|
||||||
USHORT minute;
|
|
||||||
USHORT second;
|
|
||||||
ULONG fraction;
|
|
||||||
} DBTIME2;
|
|
||||||
|
|
||||||
typedef struct tagDBTIMESTAMPOFFSET
|
|
||||||
{
|
|
||||||
SHORT year;
|
|
||||||
USHORT month;
|
|
||||||
USHORT day;
|
|
||||||
USHORT hour;
|
|
||||||
USHORT minute;
|
|
||||||
USHORT second;
|
|
||||||
ULONG fraction;
|
|
||||||
SHORT timezone_hour;
|
|
||||||
SHORT timezone_minute;
|
|
||||||
} DBTIMESTAMPOFFSET;
|
|
||||||
|
|
||||||
#include <poppack.h> // restore original structure packing
|
|
||||||
|
|
||||||
struct SSVARIANT
|
|
||||||
{
|
|
||||||
SSVARTYPE vt;
|
|
||||||
DWORD dwReserved1;
|
|
||||||
DWORD dwReserved2;
|
|
||||||
union
|
|
||||||
{
|
|
||||||
BYTE bTinyIntVal;
|
|
||||||
SHORT sShortIntVal;
|
|
||||||
LONG lIntVal;
|
|
||||||
LONGLONG llBigIntVal;
|
|
||||||
FLOAT fltRealVal;
|
|
||||||
DOUBLE dblFloatVal;
|
|
||||||
CY cyMoneyVal;
|
|
||||||
VARIANT_BOOL fBitVal;
|
|
||||||
BYTE rgbGuidVal[ 16 ];
|
|
||||||
DB_NUMERIC numNumericVal;
|
|
||||||
DBDATE dDateVal;
|
|
||||||
DBTIMESTAMP tsDateTimeVal;
|
|
||||||
struct _Time2Val
|
|
||||||
{
|
|
||||||
DBTIME2 tTime2Val;
|
|
||||||
BYTE bScale;
|
|
||||||
} Time2Val;
|
|
||||||
struct _DateTimeVal
|
|
||||||
{
|
|
||||||
DBTIMESTAMP tsDateTimeVal;
|
|
||||||
BYTE bScale;
|
|
||||||
} DateTimeVal;
|
|
||||||
struct _DateTimeOffsetVal
|
|
||||||
{
|
|
||||||
DBTIMESTAMPOFFSET tsoDateTimeOffsetVal;
|
|
||||||
BYTE bScale;
|
|
||||||
} DateTimeOffsetVal;
|
|
||||||
struct _NCharVal
|
|
||||||
{
|
|
||||||
SHORT sActualLength;
|
|
||||||
SHORT sMaxLength;
|
|
||||||
WCHAR *pwchNCharVal;
|
|
||||||
BYTE rgbReserved[ 5 ];
|
|
||||||
DWORD dwReserved;
|
|
||||||
WCHAR *pwchReserved;
|
|
||||||
} NCharVal;
|
|
||||||
struct _CharVal
|
|
||||||
{
|
|
||||||
SHORT sActualLength;
|
|
||||||
SHORT sMaxLength;
|
|
||||||
CHAR *pchCharVal;
|
|
||||||
BYTE rgbReserved[ 5 ];
|
|
||||||
DWORD dwReserved;
|
|
||||||
WCHAR *pwchReserved;
|
|
||||||
} CharVal;
|
|
||||||
struct _BinaryVal
|
|
||||||
{
|
|
||||||
SHORT sActualLength;
|
|
||||||
SHORT sMaxLength;
|
|
||||||
BYTE *prgbBinaryVal;
|
|
||||||
DWORD dwReserved;
|
|
||||||
} BinaryVal;
|
|
||||||
struct _UnknownType
|
|
||||||
{
|
|
||||||
DWORD dwActualLength;
|
|
||||||
BYTE rgMetadata[ 16 ];
|
|
||||||
BYTE *pUnknownData;
|
|
||||||
} UnknownType;
|
|
||||||
struct _BLOBType
|
|
||||||
{
|
|
||||||
DBOBJECT dbobj;
|
|
||||||
IUnknown *pUnk;
|
|
||||||
} BLOBType;
|
|
||||||
} ;
|
|
||||||
} ;
|
|
||||||
typedef DWORD LOCKMODE;
|
|
||||||
|
|
||||||
|
|
||||||
enum LOCKMODEENUM
|
|
||||||
{ LOCKMODE_INVALID = 0,
|
|
||||||
LOCKMODE_EXCLUSIVE = ( LOCKMODE_INVALID + 1 ) ,
|
|
||||||
LOCKMODE_SHARED = ( LOCKMODE_EXCLUSIVE + 1 )
|
|
||||||
} ;
|
|
||||||
|
|
||||||
|
|
||||||
extern RPC_IF_HANDLE __MIDL_itf_sqlncli_0000_0004_v0_0_c_ifspec;
|
|
||||||
extern RPC_IF_HANDLE __MIDL_itf_sqlncli_0000_0004_v0_0_s_ifspec;
|
|
||||||
|
|
||||||
#ifndef __ISchemaLock_INTERFACE_DEFINED__
|
|
||||||
#define __ISchemaLock_INTERFACE_DEFINED__
|
|
||||||
|
|
||||||
/* interface ISchemaLock */
|
|
||||||
/* [unique][uuid][object][local] */
|
|
||||||
|
|
||||||
|
|
||||||
EXTERN_C const IID IID_ISchemaLock;
|
|
||||||
|
|
||||||
#if defined(__cplusplus) && !defined(CINTERFACE)
|
|
||||||
|
|
||||||
MIDL_INTERFACE("4C2389FB-2511-11d4-B258-00C04F7971CE")
|
|
||||||
ISchemaLock : public IUnknown
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
virtual HRESULT STDMETHODCALLTYPE GetSchemaLock(
|
|
||||||
/* [in] */ DBID *pTableID,
|
|
||||||
/* [in] */ LOCKMODE lmMode,
|
|
||||||
/* [out] */ HANDLE *phLockHandle,
|
|
||||||
/* [out] */ ULONGLONG *pTableVersion) = 0;
|
|
||||||
|
|
||||||
virtual HRESULT STDMETHODCALLTYPE ReleaseSchemaLock(
|
|
||||||
/* [in] */ HANDLE hLockHandle) = 0;
|
|
||||||
|
|
||||||
};
|
|
||||||
|
|
||||||
#else /* C style interface */
|
|
||||||
|
|
||||||
typedef struct ISchemaLockVtbl
|
|
||||||
{
|
|
||||||
BEGIN_INTERFACE
|
|
||||||
|
|
||||||
HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
|
|
||||||
ISchemaLock * This,
|
|
||||||
/* [in] */ REFIID riid,
|
|
||||||
/* [iid_is][out] */
|
|
||||||
__RPC__deref_out void **ppvObject);
|
|
||||||
|
|
||||||
ULONG ( STDMETHODCALLTYPE *AddRef )(
|
|
||||||
ISchemaLock * This);
|
|
||||||
|
|
||||||
ULONG ( STDMETHODCALLTYPE *Release )(
|
|
||||||
ISchemaLock * This);
|
|
||||||
|
|
||||||
HRESULT ( STDMETHODCALLTYPE *GetSchemaLock )(
|
|
||||||
ISchemaLock * This,
|
|
||||||
/* [in] */ DBID *pTableID,
|
|
||||||
/* [in] */ LOCKMODE lmMode,
|
|
||||||
/* [out] */ HANDLE *phLockHandle,
|
|
||||||
/* [out] */ ULONGLONG *pTableVersion);
|
|
||||||
|
|
||||||
HRESULT ( STDMETHODCALLTYPE *ReleaseSchemaLock )(
|
|
||||||
ISchemaLock * This,
|
|
||||||
/* [in] */ HANDLE hLockHandle);
|
|
||||||
|
|
||||||
END_INTERFACE
|
|
||||||
} ISchemaLockVtbl;
|
|
||||||
|
|
||||||
interface ISchemaLock
|
|
||||||
{
|
|
||||||
CONST_VTBL struct ISchemaLockVtbl *lpVtbl;
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#ifdef COBJMACROS
|
|
||||||
|
|
||||||
|
|
||||||
#define ISchemaLock_QueryInterface(This,riid,ppvObject) \
|
|
||||||
( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
|
|
||||||
|
|
||||||
#define ISchemaLock_AddRef(This) \
|
|
||||||
( (This)->lpVtbl -> AddRef(This) )
|
|
||||||
|
|
||||||
#define ISchemaLock_Release(This) \
|
|
||||||
( (This)->lpVtbl -> Release(This) )
|
|
||||||
|
|
||||||
|
|
||||||
#define ISchemaLock_GetSchemaLock(This,pTableID,lmMode,phLockHandle,pTableVersion) \
|
|
||||||
( (This)->lpVtbl -> GetSchemaLock(This,pTableID,lmMode,phLockHandle,pTableVersion) )
|
|
||||||
|
|
||||||
#define ISchemaLock_ReleaseSchemaLock(This,hLockHandle) \
|
|
||||||
( (This)->lpVtbl -> ReleaseSchemaLock(This,hLockHandle) )
|
|
||||||
|
|
||||||
#endif /* COBJMACROS */
|
|
||||||
|
|
||||||
|
|
||||||
#endif /* C style interface */
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#endif /* __ISchemaLock_INTERFACE_DEFINED__ */
|
|
||||||
|
|
||||||
|
|
||||||
#ifndef __IBCPSession_INTERFACE_DEFINED__
|
|
||||||
#define __IBCPSession_INTERFACE_DEFINED__
|
|
||||||
|
|
||||||
/* interface IBCPSession */
|
|
||||||
/* [unique][uuid][object][local] */
|
|
||||||
|
|
||||||
|
|
||||||
EXTERN_C const IID IID_IBCPSession;
|
|
||||||
|
|
||||||
#if defined(__cplusplus) && !defined(CINTERFACE)
|
|
||||||
|
|
||||||
MIDL_INTERFACE("88352D80-42D1-42f0-A170-AB0F8B45B939")
|
|
||||||
IBCPSession : public IUnknown
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
virtual HRESULT STDMETHODCALLTYPE BCPColFmt(
|
|
||||||
/* [in] */ DBORDINAL idxUserDataCol,
|
|
||||||
/* [in] */ int eUserDataType,
|
|
||||||
/* [in] */ int cbIndicator,
|
|
||||||
/* [in] */ int cbUserData,
|
|
||||||
/* [size_is][in] */ BYTE *pbUserDataTerm,
|
|
||||||
/* [in] */ int cbUserDataTerm,
|
|
||||||
/* [in] */ DBORDINAL idxServerCol) = 0;
|
|
||||||
|
|
||||||
virtual HRESULT STDMETHODCALLTYPE BCPColumns(
|
|
||||||
/* [in] */ DBCOUNTITEM nColumns) = 0;
|
|
||||||
|
|
||||||
virtual HRESULT STDMETHODCALLTYPE BCPControl(
|
|
||||||
/* [in] */ int eOption,
|
|
||||||
/* [in] */ void *iValue) = 0;
|
|
||||||
|
|
||||||
virtual HRESULT STDMETHODCALLTYPE BCPDone( void) = 0;
|
|
||||||
|
|
||||||
virtual HRESULT STDMETHODCALLTYPE BCPExec(
|
|
||||||
/* [out] */ DBROWCOUNT *pRowsCopied) = 0;
|
|
||||||
|
|
||||||
virtual HRESULT STDMETHODCALLTYPE BCPInit(
|
|
||||||
/* [string][in] */ const wchar_t *pwszTable,
|
|
||||||
/* [string][in] */ const wchar_t *pwszDataFile,
|
|
||||||
/* [string][in] */ const wchar_t *pwszErrorFile,
|
|
||||||
/* [in] */ int eDirection) = 0;
|
|
||||||
|
|
||||||
virtual HRESULT STDMETHODCALLTYPE BCPReadFmt(
|
|
||||||
/* [string][in] */ const wchar_t *pwszFormatFile) = 0;
|
|
||||||
|
|
||||||
virtual HRESULT STDMETHODCALLTYPE BCPWriteFmt(
|
|
||||||
/* [string][in] */ const wchar_t *pwszFormatFile) = 0;
|
|
||||||
|
|
||||||
};
|
|
||||||
|
|
||||||
#else /* C style interface */
|
|
||||||
|
|
||||||
typedef struct IBCPSessionVtbl
|
|
||||||
{
|
|
||||||
BEGIN_INTERFACE
|
|
||||||
|
|
||||||
HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
|
|
||||||
IBCPSession * This,
|
|
||||||
/* [in] */ REFIID riid,
|
|
||||||
/* [iid_is][out] */
|
|
||||||
__RPC__deref_out void **ppvObject);
|
|
||||||
|
|
||||||
ULONG ( STDMETHODCALLTYPE *AddRef )(
|
|
||||||
IBCPSession * This);
|
|
||||||
|
|
||||||
ULONG ( STDMETHODCALLTYPE *Release )(
|
|
||||||
IBCPSession * This);
|
|
||||||
|
|
||||||
HRESULT ( STDMETHODCALLTYPE *BCPColFmt )(
|
|
||||||
IBCPSession * This,
|
|
||||||
/* [in] */ DBORDINAL idxUserDataCol,
|
|
||||||
/* [in] */ int eUserDataType,
|
|
||||||
/* [in] */ int cbIndicator,
|
|
||||||
/* [in] */ int cbUserData,
|
|
||||||
/* [size_is][in] */ BYTE *pbUserDataTerm,
|
|
||||||
/* [in] */ int cbUserDataTerm,
|
|
||||||
/* [in] */ DBORDINAL idxServerCol);
|
|
||||||
|
|
||||||
HRESULT ( STDMETHODCALLTYPE *BCPColumns )(
|
|
||||||
IBCPSession * This,
|
|
||||||
/* [in] */ DBCOUNTITEM nColumns);
|
|
||||||
|
|
||||||
HRESULT ( STDMETHODCALLTYPE *BCPControl )(
|
|
||||||
IBCPSession * This,
|
|
||||||
/* [in] */ int eOption,
|
|
||||||
/* [in] */ void *iValue);
|
|
||||||
|
|
||||||
HRESULT ( STDMETHODCALLTYPE *BCPDone )(
|
|
||||||
IBCPSession * This);
|
|
||||||
|
|
||||||
HRESULT ( STDMETHODCALLTYPE *BCPExec )(
|
|
||||||
IBCPSession * This,
|
|
||||||
/* [out] */ DBROWCOUNT *pRowsCopied);
|
|
||||||
|
|
||||||
HRESULT ( STDMETHODCALLTYPE *BCPInit )(
|
|
||||||
IBCPSession * This,
|
|
||||||
/* [string][in] */ const wchar_t *pwszTable,
|
|
||||||
/* [string][in] */ const wchar_t *pwszDataFile,
|
|
||||||
/* [string][in] */ const wchar_t *pwszErrorFile,
|
|
||||||
/* [in] */ int eDirection);
|
|
||||||
|
|
||||||
HRESULT ( STDMETHODCALLTYPE *BCPReadFmt )(
|
|
||||||
IBCPSession * This,
|
|
||||||
/* [string][in] */ const wchar_t *pwszFormatFile);
|
|
||||||
|
|
||||||
HRESULT ( STDMETHODCALLTYPE *BCPWriteFmt )(
|
|
||||||
IBCPSession * This,
|
|
||||||
/* [string][in] */ const wchar_t *pwszFormatFile);
|
|
||||||
|
|
||||||
END_INTERFACE
|
|
||||||
} IBCPSessionVtbl;
|
|
||||||
|
|
||||||
interface IBCPSession
|
|
||||||
{
|
|
||||||
CONST_VTBL struct IBCPSessionVtbl *lpVtbl;
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#ifdef COBJMACROS
|
|
||||||
|
|
||||||
|
|
||||||
#define IBCPSession_QueryInterface(This,riid,ppvObject) \
|
|
||||||
( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
|
|
||||||
|
|
||||||
#define IBCPSession_AddRef(This) \
|
|
||||||
( (This)->lpVtbl -> AddRef(This) )
|
|
||||||
|
|
||||||
#define IBCPSession_Release(This) \
|
|
||||||
( (This)->lpVtbl -> Release(This) )
|
|
||||||
|
|
||||||
|
|
||||||
#define IBCPSession_BCPColFmt(This,idxUserDataCol,eUserDataType,cbIndicator,cbUserData,pbUserDataTerm,cbUserDataTerm,idxServerCol) \
|
|
||||||
( (This)->lpVtbl -> BCPColFmt(This,idxUserDataCol,eUserDataType,cbIndicator,cbUserData,pbUserDataTerm,cbUserDataTerm,idxServerCol) )
|
|
||||||
|
|
||||||
#define IBCPSession_BCPColumns(This,nColumns) \
|
|
||||||
( (This)->lpVtbl -> BCPColumns(This,nColumns) )
|
|
||||||
|
|
||||||
#define IBCPSession_BCPControl(This,eOption,iValue) \
|
|
||||||
( (This)->lpVtbl -> BCPControl(This,eOption,iValue) )
|
|
||||||
|
|
||||||
#define IBCPSession_BCPDone(This) \
|
|
||||||
( (This)->lpVtbl -> BCPDone(This) )
|
|
||||||
|
|
||||||
#define IBCPSession_BCPExec(This,pRowsCopied) \
|
|
||||||
( (This)->lpVtbl -> BCPExec(This,pRowsCopied) )
|
|
||||||
|
|
||||||
#define IBCPSession_BCPInit(This,pwszTable,pwszDataFile,pwszErrorFile,eDirection) \
|
|
||||||
( (This)->lpVtbl -> BCPInit(This,pwszTable,pwszDataFile,pwszErrorFile,eDirection) )
|
|
||||||
|
|
||||||
#define IBCPSession_BCPReadFmt(This,pwszFormatFile) \
|
|
||||||
( (This)->lpVtbl -> BCPReadFmt(This,pwszFormatFile) )
|
|
||||||
|
|
||||||
#define IBCPSession_BCPWriteFmt(This,pwszFormatFile) \
|
|
||||||
( (This)->lpVtbl -> BCPWriteFmt(This,pwszFormatFile) )
|
|
||||||
|
|
||||||
#endif /* COBJMACROS */
|
|
||||||
|
|
||||||
|
|
||||||
#endif /* C style interface */
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#endif /* __IBCPSession_INTERFACE_DEFINED__ */
|
|
||||||
|
|
||||||
|
|
||||||
/* interface __MIDL_itf_sqlncli_0000_0006 */
|
|
||||||
/* [local] */
|
|
||||||
|
|
||||||
|
|
||||||
#endif //_SQLOLEDB_H_
|
|
||||||
|
|
||||||
#define ISOLATIONLEVEL_SNAPSHOT ((ISOLATIONLEVEL)(0x01000000)) // Changes made in other transactions can not be seen.
|
|
||||||
|
|
||||||
#define DBPROPVAL_TI_SNAPSHOT 0x01000000L
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
extern RPC_IF_HANDLE __MIDL_itf_sqlncli_0000_0006_v0_0_c_ifspec;
|
|
||||||
extern RPC_IF_HANDLE __MIDL_itf_sqlncli_0000_0006_v0_0_s_ifspec;
|
|
||||||
|
|
||||||
#ifndef __ISSAbort_INTERFACE_DEFINED__
|
|
||||||
#define __ISSAbort_INTERFACE_DEFINED__
|
|
||||||
|
|
||||||
/* interface ISSAbort */
|
|
||||||
/* [unique][uuid][object][local] */
|
|
||||||
|
|
||||||
|
|
||||||
EXTERN_C const IID IID_ISSAbort;
|
|
||||||
|
|
||||||
#if defined(__cplusplus) && !defined(CINTERFACE)
|
|
||||||
|
|
||||||
MIDL_INTERFACE("5CF4CA15-EF21-11d0-97E7-00C04FC2AD98")
|
|
||||||
ISSAbort : public IUnknown
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
virtual HRESULT STDMETHODCALLTYPE Abort( void) = 0;
|
|
||||||
|
|
||||||
};
|
|
||||||
|
|
||||||
#else /* C style interface */
|
|
||||||
|
|
||||||
typedef struct ISSAbortVtbl
|
|
||||||
{
|
|
||||||
BEGIN_INTERFACE
|
|
||||||
|
|
||||||
HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
|
|
||||||
ISSAbort * This,
|
|
||||||
/* [in] */ REFIID riid,
|
|
||||||
/* [iid_is][out] */
|
|
||||||
__RPC__deref_out void **ppvObject);
|
|
||||||
|
|
||||||
ULONG ( STDMETHODCALLTYPE *AddRef )(
|
|
||||||
ISSAbort * This);
|
|
||||||
|
|
||||||
ULONG ( STDMETHODCALLTYPE *Release )(
|
|
||||||
ISSAbort * This);
|
|
||||||
|
|
||||||
HRESULT ( STDMETHODCALLTYPE *Abort )(
|
|
||||||
ISSAbort * This);
|
|
||||||
|
|
||||||
END_INTERFACE
|
|
||||||
} ISSAbortVtbl;
|
|
||||||
|
|
||||||
interface ISSAbort
|
|
||||||
{
|
|
||||||
CONST_VTBL struct ISSAbortVtbl *lpVtbl;
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#ifdef COBJMACROS
|
|
||||||
|
|
||||||
|
|
||||||
#define ISSAbort_QueryInterface(This,riid,ppvObject) \
|
|
||||||
( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
|
|
||||||
|
|
||||||
#define ISSAbort_AddRef(This) \
|
|
||||||
( (This)->lpVtbl -> AddRef(This) )
|
|
||||||
|
|
||||||
#define ISSAbort_Release(This) \
|
|
||||||
( (This)->lpVtbl -> Release(This) )
|
|
||||||
|
|
||||||
|
|
||||||
#define ISSAbort_Abort(This) \
|
|
||||||
( (This)->lpVtbl -> Abort(This) )
|
|
||||||
|
|
||||||
#endif /* COBJMACROS */
|
|
||||||
|
|
||||||
|
|
||||||
#endif /* C style interface */
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#endif /* __ISSAbort_INTERFACE_DEFINED__ */
|
|
||||||
|
|
||||||
|
|
||||||
/* interface __MIDL_itf_sqlncli_0000_0007 */
|
|
||||||
/* [local] */
|
|
||||||
|
|
||||||
|
|
||||||
enum DBBINDFLAGENUM90
|
|
||||||
{ DBBINDFLAG_OBJECT = 0x2
|
|
||||||
} ;
|
|
||||||
|
|
||||||
enum SSACCESSORFLAGS
|
|
||||||
{ SSACCESSOR_ROWDATA = 0x100
|
|
||||||
} ;
|
|
||||||
|
|
||||||
enum DBPROPFLAGSENUM90
|
|
||||||
{ DBPROPFLAGS_PARAMETER = 0x10000
|
|
||||||
} ;
|
|
||||||
typedef struct tagSSPARAMPROPS
|
|
||||||
{
|
|
||||||
DBORDINAL iOrdinal;
|
|
||||||
ULONG cPropertySets;
|
|
||||||
DBPROPSET *rgPropertySets;
|
|
||||||
} SSPARAMPROPS;
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
extern RPC_IF_HANDLE __MIDL_itf_sqlncli_0000_0007_v0_0_c_ifspec;
|
|
||||||
extern RPC_IF_HANDLE __MIDL_itf_sqlncli_0000_0007_v0_0_s_ifspec;
|
|
||||||
|
|
||||||
#ifndef __ISSCommandWithParameters_INTERFACE_DEFINED__
|
|
||||||
#define __ISSCommandWithParameters_INTERFACE_DEFINED__
|
|
||||||
|
|
||||||
/* interface ISSCommandWithParameters */
|
|
||||||
/* [unique][uuid][object][local] */
|
|
||||||
|
|
||||||
|
|
||||||
EXTERN_C const IID IID_ISSCommandWithParameters;
|
|
||||||
|
|
||||||
#if defined(__cplusplus) && !defined(CINTERFACE)
|
|
||||||
|
|
||||||
MIDL_INTERFACE("eec30162-6087-467c-b995-7c523ce96561")
|
|
||||||
ISSCommandWithParameters : public ICommandWithParameters
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
virtual /* [local] */ HRESULT STDMETHODCALLTYPE GetParameterProperties(
|
|
||||||
/* [out][in] */ DB_UPARAMS *pcParams,
|
|
||||||
/* [size_is][size_is][out] */ SSPARAMPROPS **prgParamProperties) = 0;
|
|
||||||
|
|
||||||
virtual /* [local] */ HRESULT STDMETHODCALLTYPE SetParameterProperties(
|
|
||||||
/* [in] */ DB_UPARAMS cParams,
|
|
||||||
/* [size_is][unique][in] */ SSPARAMPROPS rgParamProperties[ ]) = 0;
|
|
||||||
|
|
||||||
};
|
|
||||||
|
|
||||||
#else /* C style interface */
|
|
||||||
|
|
||||||
typedef struct ISSCommandWithParametersVtbl
|
|
||||||
{
|
|
||||||
BEGIN_INTERFACE
|
|
||||||
|
|
||||||
HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
|
|
||||||
ISSCommandWithParameters * This,
|
|
||||||
/* [in] */ REFIID riid,
|
|
||||||
/* [iid_is][out] */
|
|
||||||
__RPC__deref_out void **ppvObject);
|
|
||||||
|
|
||||||
ULONG ( STDMETHODCALLTYPE *AddRef )(
|
|
||||||
ISSCommandWithParameters * This);
|
|
||||||
|
|
||||||
ULONG ( STDMETHODCALLTYPE *Release )(
|
|
||||||
ISSCommandWithParameters * This);
|
|
||||||
|
|
||||||
/* [local] */ HRESULT ( STDMETHODCALLTYPE *GetParameterInfo )(
|
|
||||||
ISSCommandWithParameters * This,
|
|
||||||
/* [out][in] */ DB_UPARAMS *pcParams,
|
|
||||||
/* [size_is][size_is][out] */ DBPARAMINFO **prgParamInfo,
|
|
||||||
/* [out] */ OLECHAR **ppNamesBuffer);
|
|
||||||
|
|
||||||
/* [local] */ HRESULT ( STDMETHODCALLTYPE *MapParameterNames )(
|
|
||||||
ISSCommandWithParameters * This,
|
|
||||||
/* [in] */ DB_UPARAMS cParamNames,
|
|
||||||
/* [size_is][in] */ const OLECHAR *rgParamNames[ ],
|
|
||||||
/* [size_is][out] */ DB_LPARAMS rgParamOrdinals[ ]);
|
|
||||||
|
|
||||||
/* [local] */ HRESULT ( STDMETHODCALLTYPE *SetParameterInfo )(
|
|
||||||
ISSCommandWithParameters * This,
|
|
||||||
/* [in] */ DB_UPARAMS cParams,
|
|
||||||
/* [size_is][unique][in] */ const DB_UPARAMS rgParamOrdinals[ ],
|
|
||||||
/* [size_is][unique][in] */ const DBPARAMBINDINFO rgParamBindInfo[ ]);
|
|
||||||
|
|
||||||
/* [local] */ HRESULT ( STDMETHODCALLTYPE *GetParameterProperties )(
|
|
||||||
ISSCommandWithParameters * This,
|
|
||||||
/* [out][in] */ DB_UPARAMS *pcParams,
|
|
||||||
/* [size_is][size_is][out] */ SSPARAMPROPS **prgParamProperties);
|
|
||||||
|
|
||||||
/* [local] */ HRESULT ( STDMETHODCALLTYPE *SetParameterProperties )(
|
|
||||||
ISSCommandWithParameters * This,
|
|
||||||
/* [in] */ DB_UPARAMS cParams,
|
|
||||||
/* [size_is][unique][in] */ SSPARAMPROPS rgParamProperties[ ]);
|
|
||||||
|
|
||||||
END_INTERFACE
|
|
||||||
} ISSCommandWithParametersVtbl;
|
|
||||||
|
|
||||||
interface ISSCommandWithParameters
|
|
||||||
{
|
|
||||||
CONST_VTBL struct ISSCommandWithParametersVtbl *lpVtbl;
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#ifdef COBJMACROS
|
|
||||||
|
|
||||||
|
|
||||||
#define ISSCommandWithParameters_QueryInterface(This,riid,ppvObject) \
|
|
||||||
( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
|
|
||||||
|
|
||||||
#define ISSCommandWithParameters_AddRef(This) \
|
|
||||||
( (This)->lpVtbl -> AddRef(This) )
|
|
||||||
|
|
||||||
#define ISSCommandWithParameters_Release(This) \
|
|
||||||
( (This)->lpVtbl -> Release(This) )
|
|
||||||
|
|
||||||
|
|
||||||
#define ISSCommandWithParameters_GetParameterInfo(This,pcParams,prgParamInfo,ppNamesBuffer) \
|
|
||||||
( (This)->lpVtbl -> GetParameterInfo(This,pcParams,prgParamInfo,ppNamesBuffer) )
|
|
||||||
|
|
||||||
#define ISSCommandWithParameters_MapParameterNames(This,cParamNames,rgParamNames,rgParamOrdinals) \
|
|
||||||
( (This)->lpVtbl -> MapParameterNames(This,cParamNames,rgParamNames,rgParamOrdinals) )
|
|
||||||
|
|
||||||
#define ISSCommandWithParameters_SetParameterInfo(This,cParams,rgParamOrdinals,rgParamBindInfo) \
|
|
||||||
( (This)->lpVtbl -> SetParameterInfo(This,cParams,rgParamOrdinals,rgParamBindInfo) )
|
|
||||||
|
|
||||||
|
|
||||||
#define ISSCommandWithParameters_GetParameterProperties(This,pcParams,prgParamProperties) \
|
|
||||||
( (This)->lpVtbl -> GetParameterProperties(This,pcParams,prgParamProperties) )
|
|
||||||
|
|
||||||
#define ISSCommandWithParameters_SetParameterProperties(This,cParams,rgParamProperties) \
|
|
||||||
( (This)->lpVtbl -> SetParameterProperties(This,cParams,rgParamProperties) )
|
|
||||||
|
|
||||||
#endif /* COBJMACROS */
|
|
||||||
|
|
||||||
|
|
||||||
#endif /* C style interface */
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#endif /* __ISSCommandWithParameters_INTERFACE_DEFINED__ */
|
|
||||||
|
|
||||||
|
|
||||||
#ifndef __IDBAsynchStatus_INTERFACE_DEFINED__
|
|
||||||
#define __IDBAsynchStatus_INTERFACE_DEFINED__
|
|
||||||
|
|
||||||
/* interface IDBAsynchStatus */
|
|
||||||
/* [unique][uuid][object][local] */
|
|
||||||
|
|
||||||
|
|
||||||
EXTERN_C const IID IID_IDBAsynchStatus;
|
|
||||||
|
|
||||||
#if defined(__cplusplus) && !defined(CINTERFACE)
|
|
||||||
|
|
||||||
MIDL_INTERFACE("0c733a95-2a1c-11ce-ade5-00aa0044773d")
|
|
||||||
IDBAsynchStatus : public IUnknown
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
virtual /* [local] */ HRESULT STDMETHODCALLTYPE Abort(
|
|
||||||
/* [in] */ HCHAPTER hChapter,
|
|
||||||
/* [in] */ DBASYNCHOP eOperation) = 0;
|
|
||||||
|
|
||||||
virtual /* [local] */ HRESULT STDMETHODCALLTYPE GetStatus(
|
|
||||||
/* [in] */ HCHAPTER hChapter,
|
|
||||||
/* [in] */ DBASYNCHOP eOperation,
|
|
||||||
/* [out] */ DBCOUNTITEM *pulProgress,
|
|
||||||
/* [out] */ DBCOUNTITEM *pulProgressMax,
|
|
||||||
/* [out] */ DBASYNCHPHASE *peAsynchPhase,
|
|
||||||
/* [out] */ LPOLESTR *ppwszStatusText) = 0;
|
|
||||||
|
|
||||||
};
|
|
||||||
|
|
||||||
#else /* C style interface */
|
|
||||||
|
|
||||||
typedef struct IDBAsynchStatusVtbl
|
|
||||||
{
|
|
||||||
BEGIN_INTERFACE
|
|
||||||
|
|
||||||
HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
|
|
||||||
IDBAsynchStatus * This,
|
|
||||||
/* [in] */ REFIID riid,
|
|
||||||
/* [iid_is][out] */
|
|
||||||
__RPC__deref_out void **ppvObject);
|
|
||||||
|
|
||||||
ULONG ( STDMETHODCALLTYPE *AddRef )(
|
|
||||||
IDBAsynchStatus * This);
|
|
||||||
|
|
||||||
ULONG ( STDMETHODCALLTYPE *Release )(
|
|
||||||
IDBAsynchStatus * This);
|
|
||||||
|
|
||||||
/* [local] */ HRESULT ( STDMETHODCALLTYPE *Abort )(
|
|
||||||
IDBAsynchStatus * This,
|
|
||||||
/* [in] */ HCHAPTER hChapter,
|
|
||||||
/* [in] */ DBASYNCHOP eOperation);
|
|
||||||
|
|
||||||
/* [local] */ HRESULT ( STDMETHODCALLTYPE *GetStatus )(
|
|
||||||
IDBAsynchStatus * This,
|
|
||||||
/* [in] */ HCHAPTER hChapter,
|
|
||||||
/* [in] */ DBASYNCHOP eOperation,
|
|
||||||
/* [out] */ DBCOUNTITEM *pulProgress,
|
|
||||||
/* [out] */ DBCOUNTITEM *pulProgressMax,
|
|
||||||
/* [out] */ DBASYNCHPHASE *peAsynchPhase,
|
|
||||||
/* [out] */ LPOLESTR *ppwszStatusText);
|
|
||||||
|
|
||||||
END_INTERFACE
|
|
||||||
} IDBAsynchStatusVtbl;
|
|
||||||
|
|
||||||
interface IDBAsynchStatus
|
|
||||||
{
|
|
||||||
CONST_VTBL struct IDBAsynchStatusVtbl *lpVtbl;
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#ifdef COBJMACROS
|
|
||||||
|
|
||||||
|
|
||||||
#define IDBAsynchStatus_QueryInterface(This,riid,ppvObject) \
|
|
||||||
( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
|
|
||||||
|
|
||||||
#define IDBAsynchStatus_AddRef(This) \
|
|
||||||
( (This)->lpVtbl -> AddRef(This) )
|
|
||||||
|
|
||||||
#define IDBAsynchStatus_Release(This) \
|
|
||||||
( (This)->lpVtbl -> Release(This) )
|
|
||||||
|
|
||||||
|
|
||||||
#define IDBAsynchStatus_Abort(This,hChapter,eOperation) \
|
|
||||||
( (This)->lpVtbl -> Abort(This,hChapter,eOperation) )
|
|
||||||
|
|
||||||
#define IDBAsynchStatus_GetStatus(This,hChapter,eOperation,pulProgress,pulProgressMax,peAsynchPhase,ppwszStatusText) \
|
|
||||||
( (This)->lpVtbl -> GetStatus(This,hChapter,eOperation,pulProgress,pulProgressMax,peAsynchPhase,ppwszStatusText) )
|
|
||||||
|
|
||||||
#endif /* COBJMACROS */
|
|
||||||
|
|
||||||
|
|
||||||
#endif /* C style interface */
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/* [call_as] */ HRESULT STDMETHODCALLTYPE IDBAsynchStatus_RemoteAbort_Proxy(
|
|
||||||
IDBAsynchStatus * This,
|
|
||||||
/* [in] */ HCHAPTER hChapter,
|
|
||||||
/* [in] */ DBASYNCHOP eOperation,
|
|
||||||
/* [out] */ IErrorInfo **ppErrorInfoRem);
|
|
||||||
|
|
||||||
|
|
||||||
void __RPC_STUB IDBAsynchStatus_RemoteAbort_Stub(
|
|
||||||
IRpcStubBuffer *This,
|
|
||||||
IRpcChannelBuffer *_pRpcChannelBuffer,
|
|
||||||
PRPC_MESSAGE _pRpcMessage,
|
|
||||||
DWORD *_pdwStubPhase);
|
|
||||||
|
|
||||||
|
|
||||||
/* [call_as] */ HRESULT STDMETHODCALLTYPE IDBAsynchStatus_RemoteGetStatus_Proxy(
|
|
||||||
IDBAsynchStatus * This,
|
|
||||||
/* [in] */ HCHAPTER hChapter,
|
|
||||||
/* [in] */ DBASYNCHOP eOperation,
|
|
||||||
/* [unique][out][in] */ DBCOUNTITEM *pulProgress,
|
|
||||||
/* [unique][out][in] */ DBCOUNTITEM *pulProgressMax,
|
|
||||||
/* [unique][out][in] */ DBASYNCHPHASE *peAsynchPhase,
|
|
||||||
/* [unique][out][in] */ LPOLESTR *ppwszStatusText,
|
|
||||||
/* [out] */ IErrorInfo **ppErrorInfoRem);
|
|
||||||
|
|
||||||
|
|
||||||
void __RPC_STUB IDBAsynchStatus_RemoteGetStatus_Stub(
|
|
||||||
IRpcStubBuffer *This,
|
|
||||||
IRpcChannelBuffer *_pRpcChannelBuffer,
|
|
||||||
PRPC_MESSAGE _pRpcMessage,
|
|
||||||
DWORD *_pdwStubPhase);
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#endif /* __IDBAsynchStatus_INTERFACE_DEFINED__ */
|
|
||||||
|
|
||||||
|
|
||||||
#ifndef __ISSAsynchStatus_INTERFACE_DEFINED__
|
|
||||||
#define __ISSAsynchStatus_INTERFACE_DEFINED__
|
|
||||||
|
|
||||||
/* interface ISSAsynchStatus */
|
|
||||||
/* [unique][uuid][object][local] */
|
|
||||||
|
|
||||||
|
|
||||||
EXTERN_C const IID IID_ISSAsynchStatus;
|
|
||||||
|
|
||||||
#if defined(__cplusplus) && !defined(CINTERFACE)
|
|
||||||
|
|
||||||
MIDL_INTERFACE("1FF1F743-8BB0-4c00-ACC4-C10E43B08FC1")
|
|
||||||
ISSAsynchStatus : public IDBAsynchStatus
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
virtual /* [local] */ HRESULT STDMETHODCALLTYPE WaitForAsynchCompletion(
|
|
||||||
/* [in] */ DWORD dwMillisecTimeOut) = 0;
|
|
||||||
|
|
||||||
};
|
|
||||||
|
|
||||||
#else /* C style interface */
|
|
||||||
|
|
||||||
typedef struct ISSAsynchStatusVtbl
|
|
||||||
{
|
|
||||||
BEGIN_INTERFACE
|
|
||||||
|
|
||||||
HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
|
|
||||||
ISSAsynchStatus * This,
|
|
||||||
/* [in] */ REFIID riid,
|
|
||||||
/* [iid_is][out] */
|
|
||||||
__RPC__deref_out void **ppvObject);
|
|
||||||
|
|
||||||
ULONG ( STDMETHODCALLTYPE *AddRef )(
|
|
||||||
ISSAsynchStatus * This);
|
|
||||||
|
|
||||||
ULONG ( STDMETHODCALLTYPE *Release )(
|
|
||||||
ISSAsynchStatus * This);
|
|
||||||
|
|
||||||
/* [local] */ HRESULT ( STDMETHODCALLTYPE *Abort )(
|
|
||||||
ISSAsynchStatus * This,
|
|
||||||
/* [in] */ HCHAPTER hChapter,
|
|
||||||
/* [in] */ DBASYNCHOP eOperation);
|
|
||||||
|
|
||||||
/* [local] */ HRESULT ( STDMETHODCALLTYPE *GetStatus )(
|
|
||||||
ISSAsynchStatus * This,
|
|
||||||
/* [in] */ HCHAPTER hChapter,
|
|
||||||
/* [in] */ DBASYNCHOP eOperation,
|
|
||||||
/* [out] */ DBCOUNTITEM *pulProgress,
|
|
||||||
/* [out] */ DBCOUNTITEM *pulProgressMax,
|
|
||||||
/* [out] */ DBASYNCHPHASE *peAsynchPhase,
|
|
||||||
/* [out] */ LPOLESTR *ppwszStatusText);
|
|
||||||
|
|
||||||
/* [local] */ HRESULT ( STDMETHODCALLTYPE *WaitForAsynchCompletion )(
|
|
||||||
ISSAsynchStatus * This,
|
|
||||||
/* [in] */ DWORD dwMillisecTimeOut);
|
|
||||||
|
|
||||||
END_INTERFACE
|
|
||||||
} ISSAsynchStatusVtbl;
|
|
||||||
|
|
||||||
interface ISSAsynchStatus
|
|
||||||
{
|
|
||||||
CONST_VTBL struct ISSAsynchStatusVtbl *lpVtbl;
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#ifdef COBJMACROS
|
|
||||||
|
|
||||||
|
|
||||||
#define ISSAsynchStatus_QueryInterface(This,riid,ppvObject) \
|
|
||||||
( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
|
|
||||||
|
|
||||||
#define ISSAsynchStatus_AddRef(This) \
|
|
||||||
( (This)->lpVtbl -> AddRef(This) )
|
|
||||||
|
|
||||||
#define ISSAsynchStatus_Release(This) \
|
|
||||||
( (This)->lpVtbl -> Release(This) )
|
|
||||||
|
|
||||||
|
|
||||||
#define ISSAsynchStatus_Abort(This,hChapter,eOperation) \
|
|
||||||
( (This)->lpVtbl -> Abort(This,hChapter,eOperation) )
|
|
||||||
|
|
||||||
#define ISSAsynchStatus_GetStatus(This,hChapter,eOperation,pulProgress,pulProgressMax,peAsynchPhase,ppwszStatusText) \
|
|
||||||
( (This)->lpVtbl -> GetStatus(This,hChapter,eOperation,pulProgress,pulProgressMax,peAsynchPhase,ppwszStatusText) )
|
|
||||||
|
|
||||||
|
|
||||||
#define ISSAsynchStatus_WaitForAsynchCompletion(This,dwMillisecTimeOut) \
|
|
||||||
( (This)->lpVtbl -> WaitForAsynchCompletion(This,dwMillisecTimeOut) )
|
|
||||||
|
|
||||||
#endif /* COBJMACROS */
|
|
||||||
|
|
||||||
|
|
||||||
#endif /* C style interface */
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#endif /* __ISSAsynchStatus_INTERFACE_DEFINED__ */
|
|
||||||
|
|
||||||
|
|
||||||
/* interface __MIDL_itf_sqlncli_0000_0010 */
|
|
||||||
/* [local] */
|
|
||||||
|
|
||||||
//----------------------------------------------------------------------------
|
|
||||||
// Values for STATUS bitmask for DBSCHEMA_TABLES & DBSCHEMA_TABLES_INFO
|
|
||||||
#define TABLE_HAS_UPDATE_INSTEAD_OF_TRIGGER 0x00000001 //table has IOT defined
|
|
||||||
#define TABLE_HAS_DELETE_INSTEAD_OF_TRIGGER 0x00000002 //table has IOT defined
|
|
||||||
#define TABLE_HAS_INSERT_INSTEAD_OF_TRIGGER 0x00000004 //table has IOT defined
|
|
||||||
#define TABLE_HAS_AFTER_UPDATE_TRIGGER 0x00000008 //table has update trigger
|
|
||||||
#define TABLE_HAS_AFTER_DELETE_TRIGGER 0x00000010 //table has delete trigger
|
|
||||||
#define TABLE_HAS_AFTER_INSERT_TRIGGER 0x00000020 //table has insert trigger
|
|
||||||
#define TABLE_HAS_CASCADE_UPDATE 0x00000040 //table has cascade update
|
|
||||||
#define TABLE_HAS_CASCADE_DELETE 0x00000080 //table has cascade delete
|
|
||||||
|
|
||||||
//----------------------------------------------------------------------------
|
|
||||||
// PropIds for DBPROP_INIT_GENERALTIMEOUT
|
|
||||||
#if (OLEDBVER >= 0x0210)
|
|
||||||
#define DBPROP_INIT_GENERALTIMEOUT 0x11cL
|
|
||||||
#endif
|
|
||||||
|
|
||||||
//----------------------------------------------------------------------------
|
|
||||||
// PropIds for DBPROPSET_SQLSERVERDATASOURCE
|
|
||||||
#define SSPROP_ENABLEFASTLOAD 2
|
|
||||||
#define SSPROP_ENABLEBULKCOPY 3
|
|
||||||
|
|
||||||
//----------------------------------------------------------------------------
|
|
||||||
// PropIds for DBPROPSET_SQLSERVERDATASOURCEINFO
|
|
||||||
#define SSPROP_UNICODELCID 2
|
|
||||||
#define SSPROP_UNICODECOMPARISONSTYLE 3
|
|
||||||
#define SSPROP_COLUMNLEVELCOLLATION 4
|
|
||||||
#define SSPROP_CHARACTERSET 5
|
|
||||||
#define SSPROP_SORTORDER 6
|
|
||||||
#define SSPROP_CURRENTCOLLATION 7
|
|
||||||
#define SSPROP_INTEGRATEDAUTHENTICATIONMETHOD 8
|
|
||||||
#define SSPROP_MUTUALLYAUTHENTICATED 9
|
|
||||||
|
|
||||||
//----------------------------------------------------------------------------
|
|
||||||
// PropIds for DBPROPSET_SQLSERVERDBINIT
|
|
||||||
#define SSPROP_INIT_CURRENTLANGUAGE 4
|
|
||||||
#define SSPROP_INIT_NETWORKADDRESS 5
|
|
||||||
#define SSPROP_INIT_NETWORKLIBRARY 6
|
|
||||||
#define SSPROP_INIT_USEPROCFORPREP 7
|
|
||||||
#define SSPROP_INIT_AUTOTRANSLATE 8
|
|
||||||
#define SSPROP_INIT_PACKETSIZE 9
|
|
||||||
#define SSPROP_INIT_APPNAME 10
|
|
||||||
#define SSPROP_INIT_WSID 11
|
|
||||||
#define SSPROP_INIT_FILENAME 12
|
|
||||||
#define SSPROP_INIT_ENCRYPT 13
|
|
||||||
#define SSPROP_AUTH_REPL_SERVER_NAME 14
|
|
||||||
#define SSPROP_INIT_TAGCOLUMNCOLLATION 15
|
|
||||||
#define SSPROP_INIT_MARSCONNECTION 16
|
|
||||||
#define SSPROP_INIT_FAILOVERPARTNER 18
|
|
||||||
#define SSPROP_AUTH_OLD_PASSWORD 19
|
|
||||||
#define SSPROP_INIT_DATATYPECOMPATIBILITY 20
|
|
||||||
#define SSPROP_INIT_TRUST_SERVER_CERTIFICATE 21
|
|
||||||
#define SSPROP_INIT_SERVERSPN 22
|
|
||||||
#define SSPROP_INIT_FAILOVERPARTNERSPN 23
|
|
||||||
|
|
||||||
//-----------------------------------------------------------------------------
|
|
||||||
// Values for SSPROP_INIT_USEPROCFORPREP
|
|
||||||
#define SSPROPVAL_USEPROCFORPREP_OFF 0
|
|
||||||
#define SSPROPVAL_USEPROCFORPREP_ON 1
|
|
||||||
#define SSPROPVAL_USEPROCFORPREP_ON_DROP 2
|
|
||||||
|
|
||||||
//-----------------------------------------------------------------------------
|
|
||||||
// Values for SSPROP_INIT_DATATYPECOMPATIBILITY
|
|
||||||
#define SSPROPVAL_DATATYPECOMPATIBILITY_SQL2000 80
|
|
||||||
#define SSPROPVAL_DATATYPECOMPATIBILITY_DEFAULT 0
|
|
||||||
|
|
||||||
//----------------------------------------------------------------------------
|
|
||||||
// PropIds for DBPROPSET_SQLSERVERSESSION
|
|
||||||
#define SSPROP_QUOTEDCATALOGNAMES 2
|
|
||||||
#define SSPROP_ALLOWNATIVEVARIANT 3
|
|
||||||
#define SSPROP_SQLXMLXPROGID 4
|
|
||||||
#define SSPROP_ASYNCH_BULKCOPY 5
|
|
||||||
|
|
||||||
//----------------------------------------------------------------------------
|
|
||||||
// PropIds for DBPROPSET_SQLSERVERROWSET
|
|
||||||
#define SSPROP_MAXBLOBLENGTH 8
|
|
||||||
#define SSPROP_FASTLOADOPTIONS 9
|
|
||||||
#define SSPROP_FASTLOADKEEPNULLS 10
|
|
||||||
#define SSPROP_FASTLOADKEEPIDENTITY 11
|
|
||||||
#define SSPROP_CURSORAUTOFETCH 12
|
|
||||||
#define SSPROP_DEFERPREPARE 13
|
|
||||||
#define SSPROP_IRowsetFastLoad 14
|
|
||||||
#define SSPROP_QP_NOTIFICATION_TIMEOUT 17
|
|
||||||
#define SSPROP_QP_NOTIFICATION_MSGTEXT 18
|
|
||||||
#define SSPROP_QP_NOTIFICATION_OPTIONS 19
|
|
||||||
#define SSPROP_NOCOUNT_STATUS 20
|
|
||||||
#define SSPROP_COMPUTE_ID 21
|
|
||||||
#define SSPROP_COLUMN_ID 22
|
|
||||||
#define SSPROP_COMPUTE_BYLIST 23
|
|
||||||
#define SSPROP_ISSAsynchStatus 24
|
|
||||||
|
|
||||||
//-----------------------------------------------------------------------------
|
|
||||||
// Values for SSPROP_QP_NOTIFICATION_TIMEOUT
|
|
||||||
#define SSPROPVAL_DEFAULT_NOTIFICATION_TIMEOUT 432000 /* in sec */
|
|
||||||
#define SSPROPVAL_MAX_NOTIFICATION_TIMEOUT 0x7FFFFFFF /* in sec */
|
|
||||||
#define MAX_NOTIFICATION_LEN 2000 /* NVARCHAR [2000] for both ID & DELIVERY_QUEUE */
|
|
||||||
|
|
||||||
//----------------------------------------------------------------------------
|
|
||||||
// PropIds for DBPROPSET_SQLSERVERCOLUMN
|
|
||||||
#define SSPROP_COL_COLLATIONNAME 14
|
|
||||||
#define SSPROP_COL_UDT_CATALOGNAME 31
|
|
||||||
#define SSPROP_COL_UDT_SCHEMANAME 32
|
|
||||||
#define SSPROP_COL_UDT_NAME 33
|
|
||||||
#define SSPROP_COL_XML_SCHEMACOLLECTION_CATALOGNAME 34
|
|
||||||
#define SSPROP_COL_XML_SCHEMACOLLECTION_SCHEMANAME 35
|
|
||||||
#define SSPROP_COL_XML_SCHEMACOLLECTIONNAME 36
|
|
||||||
#define SSPROP_COL_COMPUTED 37
|
|
||||||
|
|
||||||
|
|
||||||
//----------------------------------------------------------------------------
|
|
||||||
// PropIds for DBPROPSET_SQLSERVERSTREAM
|
|
||||||
#define SSPROP_STREAM_XMLROOT 19
|
|
||||||
|
|
||||||
//----------------------------------------------------------------------------
|
|
||||||
// PropIds for DBPROPSET_SQLSERVERPARAMETER
|
|
||||||
#define SSPROP_PARAM_XML_SCHEMACOLLECTION_CATALOGNAME 24
|
|
||||||
#define SSPROP_PARAM_XML_SCHEMACOLLECTION_SCHEMANAME 25
|
|
||||||
#define SSPROP_PARAM_XML_SCHEMACOLLECTIONNAME 26
|
|
||||||
#define SSPROP_PARAM_UDT_CATALOGNAME 27
|
|
||||||
#define SSPROP_PARAM_UDT_SCHEMANAME 28
|
|
||||||
#define SSPROP_PARAM_UDT_NAME 29
|
|
||||||
#define SSPROP_PARAM_TYPE_CATALOGNAME 38
|
|
||||||
#define SSPROP_PARAM_TYPE_SCHEMANAME 39
|
|
||||||
#define SSPROP_PARAM_TYPE_TYPENAME 40
|
|
||||||
#define SSPROP_PARAM_TABLE_DEFAULT_COLUMNS 41
|
|
||||||
#define SSPROP_PARAM_TABLE_COLUMN_SORT_ORDER 42
|
|
||||||
|
|
||||||
//----------------------------------------------------------------------------
|
|
||||||
// PropIds for DBPROPSET_SQLSERVERINDEX
|
|
||||||
#define SSPROP_INDEX_XML 1
|
|
||||||
|
|
||||||
//-----------------------------------------------------------------------------
|
|
||||||
//
|
|
||||||
#define BCP_TYPE_DEFAULT 0x00
|
|
||||||
#define BCP_TYPE_SQLTEXT 0x23
|
|
||||||
#define BCP_TYPE_SQLVARBINARY 0x25
|
|
||||||
#define BCP_TYPE_SQLINTN 0x26
|
|
||||||
#define BCP_TYPE_SQLVARCHAR 0x27
|
|
||||||
#define BCP_TYPE_SQLBINARY 0x2d
|
|
||||||
#define BCP_TYPE_SQLIMAGE 0x22
|
|
||||||
#define BCP_TYPE_SQLCHARACTER 0x2f
|
|
||||||
#define BCP_TYPE_SQLINT1 0x30
|
|
||||||
#define BCP_TYPE_SQLBIT 0x32
|
|
||||||
#define BCP_TYPE_SQLINT2 0x34
|
|
||||||
#define BCP_TYPE_SQLINT4 0x38
|
|
||||||
#define BCP_TYPE_SQLMONEY 0x3c
|
|
||||||
#define BCP_TYPE_SQLDATETIME 0x3d
|
|
||||||
#define BCP_TYPE_SQLFLT8 0x3e
|
|
||||||
#define BCP_TYPE_SQLFLTN 0x6d
|
|
||||||
#define BCP_TYPE_SQLMONEYN 0x6e
|
|
||||||
#define BCP_TYPE_SQLDATETIMN 0x6f
|
|
||||||
#define BCP_TYPE_SQLFLT4 0x3b
|
|
||||||
#define BCP_TYPE_SQLMONEY4 0x7a
|
|
||||||
#define BCP_TYPE_SQLDATETIM4 0x3a
|
|
||||||
#define BCP_TYPE_SQLDECIMAL 0x6a
|
|
||||||
#define BCP_TYPE_SQLNUMERIC 0x6c
|
|
||||||
#define BCP_TYPE_SQLUNIQUEID 0x24
|
|
||||||
#define BCP_TYPE_SQLBIGCHAR 0xaf
|
|
||||||
#define BCP_TYPE_SQLBIGVARCHAR 0xa7
|
|
||||||
#define BCP_TYPE_SQLBIGBINARY 0xad
|
|
||||||
#define BCP_TYPE_SQLBIGVARBINARY 0xa5
|
|
||||||
#define BCP_TYPE_SQLBITN 0x68
|
|
||||||
#define BCP_TYPE_SQLNCHAR 0xef
|
|
||||||
#define BCP_TYPE_SQLNVARCHAR 0xe7
|
|
||||||
#define BCP_TYPE_SQLNTEXT 0x63
|
|
||||||
#define BCP_TYPE_SQLDECIMALN 0x6a
|
|
||||||
#define BCP_TYPE_SQLNUMERICN 0x6c
|
|
||||||
#define BCP_TYPE_SQLINT8 0x7f
|
|
||||||
#define BCP_TYPE_SQLVARIANT 0x62
|
|
||||||
#define BCP_TYPE_SQLUDT 0xf0
|
|
||||||
#define BCP_TYPE_SQLXML 0xf1
|
|
||||||
#define BCP_TYPE_SQLDATE 0x28
|
|
||||||
#define BCP_TYPE_SQLTIME 0x29
|
|
||||||
#define BCP_TYPE_SQLDATETIME2 0x2a
|
|
||||||
#define BCP_TYPE_SQLDATETIMEOFFSET 0x2b
|
|
||||||
|
|
||||||
#define BCP_DIRECTION_IN 1
|
|
||||||
#define BCP_DIRECTION_OUT 2
|
|
||||||
|
|
||||||
#define BCP_OPTION_MAXERRS 1
|
|
||||||
#define BCP_OPTION_FIRST 2
|
|
||||||
#define BCP_OPTION_LAST 3
|
|
||||||
#define BCP_OPTION_BATCH 4
|
|
||||||
#define BCP_OPTION_KEEPNULLS 5
|
|
||||||
#define BCP_OPTION_ABORT 6
|
|
||||||
#define BCP_OPTION_KEEPIDENTITY 8
|
|
||||||
#define BCP_OPTION_HINTSA 10
|
|
||||||
#define BCP_OPTION_HINTSW 11
|
|
||||||
#define BCP_OPTION_FILECP 12
|
|
||||||
#define BCP_OPTION_UNICODEFILE 13
|
|
||||||
#define BCP_OPTION_TEXTFILE 14
|
|
||||||
#define BCP_OPTION_FILEFMT 15
|
|
||||||
#define BCP_OPTION_FMTXML 16
|
|
||||||
#define BCP_OPTION_FIRSTEX 17
|
|
||||||
#define BCP_OPTION_LASTEX 18
|
|
||||||
#define BCP_OPTION_ROWCOUNT 19
|
|
||||||
|
|
||||||
#define BCP_FILECP_ACP 0
|
|
||||||
#define BCP_FILECP_OEMCP 1
|
|
||||||
#define BCP_FILECP_RAW (-1)
|
|
||||||
|
|
||||||
#ifdef UNICODE
|
|
||||||
#define BCP_OPTION_HINTS BCP_OPTION_HINTSW
|
|
||||||
#else
|
|
||||||
#define BCP_OPTION_HINTS BCP_OPTION_HINTSA
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#define BCP_PREFIX_DEFAULT (-10)
|
|
||||||
|
|
||||||
#define BCP_LENGTH_NULL (-1)
|
|
||||||
#define BCP_LENGTH_VARIABLE (-10)
|
|
||||||
//
|
|
||||||
//-----------------------------------------------------------------------------
|
|
||||||
|
|
||||||
|
|
||||||
//----------------------------------------------------------------------------
|
|
||||||
// Provider-specific Class Ids
|
|
||||||
//
|
|
||||||
|
|
||||||
#if SQLNCLI_VER >= 1000
|
|
||||||
|
|
||||||
extern const GUID OLEDBDECLSPEC CLSID_SQLNCLI10 = {0x8F4A6B68L,0x4F36,0x4e3c,{0xBE,0x81,0xBC,0x7C,0xA4,0xE9,0xC4,0x5C}};
|
|
||||||
extern const GUID OLEDBDECLSPEC CLSID_SQLNCLI10_ERROR = {0x53F9C3BCL,0x275F,0x4FA5,{0xB3,0xE6,0x25,0xED,0xCD,0x51,0x20,0x23}};
|
|
||||||
extern const GUID OLEDBDECLSPEC CLSID_SQLNCLI10_ENUMERATOR = {0x91E4F2A5L,0x1B07,0x45f6,{0x86,0xBF,0x92,0x03,0xC7,0xC7,0x2B,0xE3}};
|
|
||||||
|
|
||||||
#endif
|
|
||||||
|
|
||||||
extern const GUID OLEDBDECLSPEC CLSID_SQLNCLI = {0x85ecafccL,0xbdd9,0x4b03,{0x97,0xa8,0xfa,0x65,0xcb,0xe3,0x85,0x9b}};
|
|
||||||
extern const GUID OLEDBDECLSPEC CLSID_SQLNCLI_ERROR = {0xe8bc0a7aL,0xea71,0x4263,{0x8c,0xda,0x94,0xf3,0x88,0xb8,0xed,0x10}};
|
|
||||||
extern const GUID OLEDBDECLSPEC CLSID_SQLNCLI_ENUMERATOR = {0x4898ad37L,0xfe05,0x42df,{0x92,0xf9,0xe8,0x57,0xdd,0xfe,0xe7,0x30}};
|
|
||||||
extern const GUID OLEDBDECLSPEC CLSID_ROWSET_TVP = {0xc7ef28d5L,0x7bee,0x443f,{0x86,0xda,0xe3,0x98,0x4f,0xcd,0x4d,0xf9}};
|
|
||||||
|
|
||||||
//----------------------------------------------------------------------------
|
|
||||||
// Provider-specific Interface Ids
|
|
||||||
//
|
|
||||||
#ifndef _SQLOLEDB_H_
|
|
||||||
extern const GUID OLEDBDECLSPEC IID_ISQLServerErrorInfo = {0x5cf4ca12,0xef21,0x11d0,{0x97,0xe7,0x0,0xc0,0x4f,0xc2,0xad,0x98}};
|
|
||||||
extern const GUID OLEDBDECLSPEC IID_IRowsetFastLoad = {0x5cf4ca13,0xef21,0x11d0,{0x97,0xe7,0x0,0xc0,0x4f,0xc2,0xad,0x98}};
|
|
||||||
extern const GUID OLEDBDECLSPEC IID_IUMSInitialize = {0x5cf4ca14,0xef21,0x11d0,{0x97,0xe7,0x0,0xc0,0x4f,0xc2,0xad,0x98}};
|
|
||||||
extern const GUID OLEDBDECLSPEC IID_ISchemaLock = {0x4c2389fb,0x2511,0x11d4,{0xb2,0x58,0x0,0xc0,0x4f,0x79,0x71,0xce}};
|
|
||||||
extern const GUID OLEDBDECLSPEC IID_ISQLXMLHelper = {0xd22a7678L,0xf860,0x40cd,{0xa5,0x67,0x15,0x63,0xde,0xb4,0x6d,0x49}};
|
|
||||||
#endif //_SQLOLEDB_H_
|
|
||||||
extern const GUID OLEDBDECLSPEC IID_ISSAbort = {0x5cf4ca15,0xef21,0x11d0,{0x97,0xe7,0x0,0xc0,0x4f,0xc2,0xad,0x98}};
|
|
||||||
extern const GUID OLEDBDECLSPEC IID_IBCPSession = {0x88352D80,0x42D1,0x42f0,{0xA1,0x70,0xAB,0x0F,0x8B,0x45,0xB9,0x39}};
|
|
||||||
extern const GUID OLEDBDECLSPEC IID_ISSCommandWithParameters = {0xeec30162,0x6087,0x467c,{0xb9,0x95,0x7c,0x52,0x3c,0xe9,0x65,0x61}};
|
|
||||||
extern const GUID OLEDBDECLSPEC IID_ISSAsynchStatus = {0x1FF1F743,0x8BB0, 0x4c00,{0xAC,0xC4,0xC1,0x0E,0x43,0xB0,0x8F,0xC1}};
|
|
||||||
|
|
||||||
|
|
||||||
//----------------------------------------------------------------------------
|
|
||||||
// Provider-specific schema rowsets
|
|
||||||
//
|
|
||||||
#ifndef _SQLOLEDB_H_
|
|
||||||
extern const GUID OLEDBDECLSPEC DBSCHEMA_LINKEDSERVERS = {0x9093caf4,0x2eac,0x11d1,{0x98,0x9,0x0,0xc0,0x4f,0xc2,0xad,0x98}};
|
|
||||||
#endif //_SQLOLEDB_H_
|
|
||||||
extern const GUID OLEDBDECLSPEC DBSCHEMA_SQL_ASSEMBLIES = {0x7c1112c8, 0xc2d3, 0x4f6e, {0x94, 0x9a, 0x98, 0x3d, 0x38, 0xa5, 0x8f, 0x46}};
|
|
||||||
extern const GUID OLEDBDECLSPEC DBSCHEMA_SQL_ASSEMBLY_DEPENDENCIES = {0xcb0f837b, 0x974c, 0x41b8, {0x90, 0x9d, 0x64, 0x9c, 0xaf, 0x45, 0xad, 0x2f}};
|
|
||||||
extern const GUID OLEDBDECLSPEC DBSCHEMA_SQL_USER_TYPES = {0xf1198bd8, 0xa424, 0x4ea3, {0x8d, 0x4c, 0x60, 0x7e, 0xee, 0x2b, 0xab, 0x60}};
|
|
||||||
extern const GUID OLEDBDECLSPEC DBSCHEMA_XML_COLLECTIONS = {0x56bfad8c, 0x6e8f, 0x480d, {0x91, 0xde, 0x35, 0x16, 0xd9, 0x9a, 0x5d, 0x10}};
|
|
||||||
extern const GUID OLEDBDECLSPEC DBSCHEMA_SQL_TABLE_TYPES = {0x4e26cde7, 0xaaa4, 0x41ed, {0x93, 0xdd, 0x37, 0x6e, 0x6d, 0x40, 0x9c, 0x17}};
|
|
||||||
extern const GUID OLEDBDECLSPEC DBSCHEMA_SQL_TABLE_TYPE_PRIMARY_KEYS = {0x9738faea, 0x31e8, 0x4f63, {0xae, 0xd, 0x61, 0x33, 0x16, 0x41, 0x8c, 0xdd}};
|
|
||||||
extern const GUID OLEDBDECLSPEC DBSCHEMA_SQL_TABLE_TYPE_COLUMNS = {0xa663d94b, 0xddf7, 0x4a7f, {0xa5, 0x37, 0xd6, 0x1f, 0x12, 0x36, 0x5d, 0x7c}};
|
|
||||||
extern const GUID OLEDBDECLSPEC DBSCHEMA_COLUMNS_EXTENDED = {0x66462f01, 0x633a, 0x44d9, {0xb0, 0xd0, 0xfe, 0x66, 0xf2, 0x1a, 0x0d, 0x24}};
|
|
||||||
extern const GUID OLEDBDECLSPEC DBSCHEMA_SPARSE_COLUMN_SET = {0x31a4837c, 0xf9ff, 0x405f, {0x89, 0x82, 0x02, 0x19, 0xaa, 0xaa, 0x4a, 0x12}};
|
|
||||||
|
|
||||||
|
|
||||||
#ifndef CRESTRICTIONS_DBSCHEMA_LINKEDSERVERS
|
|
||||||
#define CRESTRICTIONS_DBSCHEMA_LINKEDSERVERS 1
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifndef CRESTRICTIONS_DBSCHEMA_ASSEMBLIES
|
|
||||||
#define CRESTRICTIONS_DBSCHEMA_SQL_ASSEMBLIES 4
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifndef CRESTRICTIONS_DBSCHEMA_ASSEMBLY_DEPENDENCIES
|
|
||||||
#define CRESTRICTIONS_DBSCHEMA_SQL_ASSEMBLY_DEPENDENCIES 4
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifndef CRESTRICTIONS_DBSCHEMA_USER_TYPES
|
|
||||||
#define CRESTRICTIONS_DBSCHEMA_SQL_USER_TYPES 3
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifndef CRESTRICTIONS_DBSCHEMA_XML_COLLECTIONS
|
|
||||||
#define CRESTRICTIONS_DBSCHEMA_XML_COLLECTIONS 4
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifndef CRESTRICTIONS_DBSCHEMA_SQL_TABLE_TYPES
|
|
||||||
#define CRESTRICTIONS_DBSCHEMA_SQL_TABLE_TYPES 3
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifndef CRESTRICTIONS_DBSCHEMA_SQL_TABLE_TYPE_PRIMARY_KEYS
|
|
||||||
#define CRESTRICTIONS_DBSCHEMA_SQL_TABLE_TYPE_PRIMARY_KEYS 3
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifndef CRESTRICTIONS_DBSCHEMA_SQL_TABLE_TYPE_COLUMNS
|
|
||||||
#define CRESTRICTIONS_DBSCHEMA_SQL_TABLE_TYPE_COLUMNS 4
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifndef CRESTRICTIONS_DBSCHEMA_COLUMNS_EXTENDED
|
|
||||||
#define CRESTRICTIONS_DBSCHEMA_COLUMNS_EXTENDED 4
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifndef CRESTRICTIONS_DBSCHEMA_SPARSE_COLUMN_SET
|
|
||||||
#define CRESTRICTIONS_DBSCHEMA_SPARSE_COLUMN_SET 4
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
//----------------------------------------------------------------------------
|
|
||||||
// Provider-specific property sets
|
|
||||||
//
|
|
||||||
#ifndef _SQLOLEDB_H_
|
|
||||||
extern const GUID OLEDBDECLSPEC DBPROPSET_SQLSERVERDATASOURCE = {0x28efaee4,0x2d2c,0x11d1,{0x98,0x7,0x0,0xc0,0x4f,0xc2,0xad,0x98}};
|
|
||||||
extern const GUID OLEDBDECLSPEC DBPROPSET_SQLSERVERDATASOURCEINFO= {0xdf10cb94,0x35f6,0x11d2,{0x9c,0x54,0x0,0xc0,0x4f,0x79,0x71,0xd3}};
|
|
||||||
extern const GUID OLEDBDECLSPEC DBPROPSET_SQLSERVERDBINIT = {0x5cf4ca10,0xef21,0x11d0,{0x97,0xe7,0x0,0xc0,0x4f,0xc2,0xad,0x98}};
|
|
||||||
extern const GUID OLEDBDECLSPEC DBPROPSET_SQLSERVERROWSET = {0x5cf4ca11,0xef21,0x11d0,{0x97,0xe7,0x0,0xc0,0x4f,0xc2,0xad,0x98}};
|
|
||||||
extern const GUID OLEDBDECLSPEC DBPROPSET_SQLSERVERSESSION = {0x28efaee5,0x2d2c,0x11d1,{0x98,0x7,0x0,0xc0,0x4f,0xc2,0xad,0x98}};
|
|
||||||
extern const GUID OLEDBDECLSPEC DBPROPSET_SQLSERVERCOLUMN = {0x3b63fb5e,0x3fbb,0x11d3,{0x9f,0x29,0x0,0xc0,0x4f,0x8e,0xe9,0xdc}};
|
|
||||||
extern const GUID OLEDBDECLSPEC DBPROPSET_SQLSERVERSTREAM = {0x9f79c073,0x8a6d,0x4bca,{0xa8,0xa8,0xc9,0xb7,0x9a,0x9b,0x96,0x2d}};
|
|
||||||
#endif //_SQLOLEDB_H_
|
|
||||||
extern const GUID OLEDBDECLSPEC DBPROPSET_SQLSERVERPARAMETER = {0xfee09128,0xa67d,0x47ea,{0x8d,0x40,0x24,0xa1,0xd4,0x73,0x7e,0x8d}};
|
|
||||||
extern const GUID OLEDBDECLSPEC DBPROPSET_SQLSERVERINDEX = {0xE428B84E,0xA6B7,0x413a,{0x94,0x65,0x56,0x23,0x2E,0x0D,0x2B,0xEB}};
|
|
||||||
extern const GUID OLEDBDECLSPEC DBPROPSET_PARAMETERALL = {0x2cd2b7d8,0xe7c2,0x4f6c,{0x9b,0x30,0x75,0xe2,0x58,0x46,0x10,0x97}};
|
|
||||||
|
|
||||||
|
|
||||||
//----------------------------------------------------------------------------
|
|
||||||
// Provider-specific columns for IColumnsRowset
|
|
||||||
//
|
|
||||||
#define DBCOLUMN_SS_X_GUID {0x627bd890,0xed54,0x11d2,{0xb9,0x94,0x0,0xc0,0x4f,0x8c,0xa8,0x2c}}
|
|
||||||
//
|
|
||||||
#ifndef _SQLOLEDB_H_
|
|
||||||
extern const DBID OLEDBDECLSPEC DBCOLUMN_SS_COMPFLAGS = {DBCOLUMN_SS_X_GUID, DBKIND_GUID_PROPID, (LPOLESTR)100};
|
|
||||||
extern const DBID OLEDBDECLSPEC DBCOLUMN_SS_SORTID = {DBCOLUMN_SS_X_GUID, DBKIND_GUID_PROPID, (LPOLESTR)101};
|
|
||||||
extern const DBID OLEDBDECLSPEC DBCOLUMN_BASETABLEINSTANCE = {DBCOLUMN_SS_X_GUID, DBKIND_GUID_PROPID, (LPOLESTR)102};
|
|
||||||
extern const DBID OLEDBDECLSPEC DBCOLUMN_SS_TDSCOLLATION = {DBCOLUMN_SS_X_GUID, DBKIND_GUID_PROPID, (LPOLESTR)103};
|
|
||||||
#endif //_SQLOLEDB_H_
|
|
||||||
extern const DBID OLEDBDECLSPEC DBCOLUMN_BASESERVERNAME = {DBCOLUMN_SS_X_GUID, DBKIND_GUID_PROPID, (LPOLESTR)104};
|
|
||||||
extern const DBID OLEDBDECLSPEC DBCOLUMN_SS_XML_SCHEMACOLLECTION_CATALOGNAME= {DBCOLUMN_SS_X_GUID, DBKIND_GUID_PROPID, (LPOLESTR)105};
|
|
||||||
extern const DBID OLEDBDECLSPEC DBCOLUMN_SS_XML_SCHEMACOLLECTION_SCHEMANAME = {DBCOLUMN_SS_X_GUID, DBKIND_GUID_PROPID, (LPOLESTR)106};
|
|
||||||
extern const DBID OLEDBDECLSPEC DBCOLUMN_SS_XML_SCHEMACOLLECTIONNAME = {DBCOLUMN_SS_X_GUID, DBKIND_GUID_PROPID, (LPOLESTR)107};
|
|
||||||
extern const DBID OLEDBDECLSPEC DBCOLUMN_SS_UDT_CATALOGNAME = {DBCOLUMN_SS_X_GUID, DBKIND_GUID_PROPID, (LPOLESTR)108};
|
|
||||||
extern const DBID OLEDBDECLSPEC DBCOLUMN_SS_UDT_SCHEMANAME = {DBCOLUMN_SS_X_GUID, DBKIND_GUID_PROPID, (LPOLESTR)109};
|
|
||||||
extern const DBID OLEDBDECLSPEC DBCOLUMN_SS_UDT_NAME = {DBCOLUMN_SS_X_GUID, DBKIND_GUID_PROPID, (LPOLESTR)110};
|
|
||||||
extern const DBID OLEDBDECLSPEC DBCOLUMN_SS_ASSEMBLY_TYPENAME= {DBCOLUMN_SS_X_GUID, DBKIND_GUID_PROPID, (LPOLESTR)111};
|
|
||||||
|
|
||||||
// OLEDB part of SQL Server Native Client header - end here!
|
|
||||||
#endif // defined(_SQLNCLI_OLEDB_) || !defined(_SQLNCLI_ODBC_)
|
|
||||||
|
|
||||||
// ODBC part of SQL Server Native Client header - begin here!
|
|
||||||
#if defined(_SQLNCLI_ODBC_) || !defined(_SQLNCLI_OLEDB_)
|
|
||||||
#ifdef ODBCVER
|
|
||||||
|
|
||||||
// max SQL Server identifier length
|
|
||||||
#define SQL_MAX_SQLSERVERNAME 128
|
|
||||||
|
|
||||||
// SQLSetConnectAttr driver specific defines.
|
|
||||||
// Microsoft has 1200 thru 1249 reserved for Microsoft SQL Server Native Client driver usage.
|
|
||||||
// Connection attributes
|
|
||||||
#define SQL_COPT_SS_BASE 1200
|
|
||||||
#define SQL_COPT_SS_REMOTE_PWD (SQL_COPT_SS_BASE+1) // dbrpwset SQLSetConnectOption only
|
|
||||||
#define SQL_COPT_SS_USE_PROC_FOR_PREP (SQL_COPT_SS_BASE+2) // Use create proc for SQLPrepare
|
|
||||||
#define SQL_COPT_SS_INTEGRATED_SECURITY (SQL_COPT_SS_BASE+3) // Force integrated security on login
|
|
||||||
#define SQL_COPT_SS_PRESERVE_CURSORS (SQL_COPT_SS_BASE+4) // Preserve server cursors after SQLTransact
|
|
||||||
#define SQL_COPT_SS_USER_DATA (SQL_COPT_SS_BASE+5) // dbgetuserdata/dbsetuserdata
|
|
||||||
#define SQL_COPT_SS_ENLIST_IN_DTC SQL_ATTR_ENLIST_IN_DTC // Enlist in a DTC transaction
|
|
||||||
#define SQL_COPT_SS_ENLIST_IN_XA SQL_ATTR_ENLIST_IN_XA // Enlist in a XA transaction
|
|
||||||
#define SQL_COPT_SS_FALLBACK_CONNECT (SQL_COPT_SS_BASE+10) // Enables FallBack connections
|
|
||||||
#define SQL_COPT_SS_PERF_DATA (SQL_COPT_SS_BASE+11) // Used to access SQL Server ODBC driver performance data
|
|
||||||
#define SQL_COPT_SS_PERF_DATA_LOG (SQL_COPT_SS_BASE+12) // Used to set the logfile name for the Performance data
|
|
||||||
#define SQL_COPT_SS_PERF_QUERY_INTERVAL (SQL_COPT_SS_BASE+13) // Used to set the query logging threshold in milliseconds.
|
|
||||||
#define SQL_COPT_SS_PERF_QUERY_LOG (SQL_COPT_SS_BASE+14) // Used to set the logfile name for saving queryies.
|
|
||||||
#define SQL_COPT_SS_PERF_QUERY (SQL_COPT_SS_BASE+15) // Used to start and stop query logging.
|
|
||||||
#define SQL_COPT_SS_PERF_DATA_LOG_NOW (SQL_COPT_SS_BASE+16) // Used to make a statistics log entry to disk.
|
|
||||||
#define SQL_COPT_SS_QUOTED_IDENT (SQL_COPT_SS_BASE+17) // Enable/Disable Quoted Identifiers
|
|
||||||
#define SQL_COPT_SS_ANSI_NPW (SQL_COPT_SS_BASE+18) // Enable/Disable ANSI NULL, Padding and Warnings
|
|
||||||
#define SQL_COPT_SS_BCP (SQL_COPT_SS_BASE+19) // Allow BCP usage on connection
|
|
||||||
#define SQL_COPT_SS_TRANSLATE (SQL_COPT_SS_BASE+20) // Perform code page translation
|
|
||||||
#define SQL_COPT_SS_ATTACHDBFILENAME (SQL_COPT_SS_BASE+21) // File name to be attached as a database
|
|
||||||
#define SQL_COPT_SS_CONCAT_NULL (SQL_COPT_SS_BASE+22) // Enable/Disable CONCAT_NULL_YIELDS_NULL
|
|
||||||
#define SQL_COPT_SS_ENCRYPT (SQL_COPT_SS_BASE+23) // Allow strong encryption for data
|
|
||||||
#define SQL_COPT_SS_MARS_ENABLED (SQL_COPT_SS_BASE+24) // Multiple active result set per connection
|
|
||||||
#define SQL_COPT_SS_FAILOVER_PARTNER (SQL_COPT_SS_BASE+25) // Failover partner server
|
|
||||||
#define SQL_COPT_SS_OLDPWD (SQL_COPT_SS_BASE+26) // Old Password, used when changing password during login
|
|
||||||
#define SQL_COPT_SS_TXN_ISOLATION (SQL_COPT_SS_BASE+27) // Used to set/get any driver-specific or ODBC-defined TXN iso level
|
|
||||||
#define SQL_COPT_SS_TRUST_SERVER_CERTIFICATE (SQL_COPT_SS_BASE+28) // Trust server certificate
|
|
||||||
#define SQL_COPT_SS_SERVER_SPN (SQL_COPT_SS_BASE+29) // Server SPN
|
|
||||||
#define SQL_COPT_SS_FAILOVER_PARTNER_SPN (SQL_COPT_SS_BASE+30) // Failover partner server SPN
|
|
||||||
#define SQL_COPT_SS_INTEGRATED_AUTHENTICATION_METHOD (SQL_COPT_SS_BASE+31) // The integrated authentication method used for the connection
|
|
||||||
#define SQL_COPT_SS_MUTUALLY_AUTHENTICATED (SQL_COPT_SS_BASE+32) // Used to decide if the connection is mutually authenticated
|
|
||||||
#define SQL_COPT_SS_MAX_USED SQL_COPT_SS_MUTUALLY_AUTHENTICATED
|
|
||||||
// Define old names
|
|
||||||
#define SQL_REMOTE_PWD SQL_COPT_SS_REMOTE_PWD
|
|
||||||
#define SQL_USE_PROCEDURE_FOR_PREPARE SQL_COPT_SS_USE_PROC_FOR_PREP
|
|
||||||
#define SQL_INTEGRATED_SECURITY SQL_COPT_SS_INTEGRATED_SECURITY
|
|
||||||
#define SQL_PRESERVE_CURSORS SQL_COPT_SS_PRESERVE_CURSORS
|
|
||||||
|
|
||||||
// SQLSetStmtAttr SQL Server Native Client driver specific defines.
|
|
||||||
// Statement attributes
|
|
||||||
#define SQL_SOPT_SS_BASE 1225
|
|
||||||
#define SQL_SOPT_SS_TEXTPTR_LOGGING (SQL_SOPT_SS_BASE+0) // Text pointer logging
|
|
||||||
#define SQL_SOPT_SS_CURRENT_COMMAND (SQL_SOPT_SS_BASE+1) // dbcurcmd SQLGetStmtOption only
|
|
||||||
#define SQL_SOPT_SS_HIDDEN_COLUMNS (SQL_SOPT_SS_BASE+2) // Expose FOR BROWSE hidden columns
|
|
||||||
#define SQL_SOPT_SS_NOBROWSETABLE (SQL_SOPT_SS_BASE+3) // Set NOBROWSETABLE option
|
|
||||||
#define SQL_SOPT_SS_REGIONALIZE (SQL_SOPT_SS_BASE+4) // Regionalize output character conversions
|
|
||||||
#define SQL_SOPT_SS_CURSOR_OPTIONS (SQL_SOPT_SS_BASE+5) // Server cursor options
|
|
||||||
#define SQL_SOPT_SS_NOCOUNT_STATUS (SQL_SOPT_SS_BASE+6) // Real vs. Not Real row count indicator
|
|
||||||
#define SQL_SOPT_SS_DEFER_PREPARE (SQL_SOPT_SS_BASE+7) // Defer prepare until necessary
|
|
||||||
#define SQL_SOPT_SS_QUERYNOTIFICATION_TIMEOUT (SQL_SOPT_SS_BASE+8) // Notification timeout
|
|
||||||
#define SQL_SOPT_SS_QUERYNOTIFICATION_MSGTEXT (SQL_SOPT_SS_BASE+9) // Notification message text
|
|
||||||
#define SQL_SOPT_SS_QUERYNOTIFICATION_OPTIONS (SQL_SOPT_SS_BASE+10)// SQL service broker name
|
|
||||||
#define SQL_SOPT_SS_PARAM_FOCUS (SQL_SOPT_SS_BASE+11)// Direct subsequent calls to parameter related methods to set properties on constituent columns/parameters of container types
|
|
||||||
#define SQL_SOPT_SS_NAME_SCOPE (SQL_SOPT_SS_BASE+12)// Sets name scope for subsequent catalog function calls
|
|
||||||
#define SQL_SOPT_SS_MAX_USED SQL_SOPT_SS_NAME_SCOPE
|
|
||||||
// Define old names
|
|
||||||
#define SQL_TEXTPTR_LOGGING SQL_SOPT_SS_TEXTPTR_LOGGING
|
|
||||||
#define SQL_COPT_SS_BASE_EX 1240
|
|
||||||
#define SQL_COPT_SS_BROWSE_CONNECT (SQL_COPT_SS_BASE_EX+1) // Browse connect mode of operation
|
|
||||||
#define SQL_COPT_SS_BROWSE_SERVER (SQL_COPT_SS_BASE_EX+2) // Single Server browse request.
|
|
||||||
#define SQL_COPT_SS_WARN_ON_CP_ERROR (SQL_COPT_SS_BASE_EX+3) // Issues warning when data from the server had a loss during code page conversion.
|
|
||||||
#define SQL_COPT_SS_CONNECTION_DEAD (SQL_COPT_SS_BASE_EX+4) // dbdead SQLGetConnectOption only. It will try to ping the server. Expensive connection check
|
|
||||||
#define SQL_COPT_SS_BROWSE_CACHE_DATA (SQL_COPT_SS_BASE_EX+5) // Determines if we should cache browse info. Used when returned buffer is greater then ODBC limit (32K)
|
|
||||||
#define SQL_COPT_SS_RESET_CONNECTION (SQL_COPT_SS_BASE_EX+6) // When this option is set, we will perform connection reset on next packet
|
|
||||||
#define SQL_COPT_SS_EX_MAX_USED SQL_COPT_SS_RESET_CONNECTION
|
|
||||||
|
|
||||||
// SQLColAttributes driver specific defines.
|
|
||||||
// SQLSetDescField/SQLGetDescField driver specific defines.
|
|
||||||
// Microsoft has 1200 thru 1249 reserved for Microsoft SQL Server Native Client driver usage.
|
|
||||||
#define SQL_CA_SS_BASE 1200
|
|
||||||
#define SQL_CA_SS_COLUMN_SSTYPE (SQL_CA_SS_BASE+0) // dbcoltype/dbalttype
|
|
||||||
#define SQL_CA_SS_COLUMN_UTYPE (SQL_CA_SS_BASE+1) // dbcolutype/dbaltutype
|
|
||||||
#define SQL_CA_SS_NUM_ORDERS (SQL_CA_SS_BASE+2) // dbnumorders
|
|
||||||
#define SQL_CA_SS_COLUMN_ORDER (SQL_CA_SS_BASE+3) // dbordercol
|
|
||||||
#define SQL_CA_SS_COLUMN_VARYLEN (SQL_CA_SS_BASE+4) // dbvarylen
|
|
||||||
#define SQL_CA_SS_NUM_COMPUTES (SQL_CA_SS_BASE+5) // dbnumcompute
|
|
||||||
#define SQL_CA_SS_COMPUTE_ID (SQL_CA_SS_BASE+6) // dbnextrow status return
|
|
||||||
#define SQL_CA_SS_COMPUTE_BYLIST (SQL_CA_SS_BASE+7) // dbbylist
|
|
||||||
#define SQL_CA_SS_COLUMN_ID (SQL_CA_SS_BASE+8) // dbaltcolid
|
|
||||||
#define SQL_CA_SS_COLUMN_OP (SQL_CA_SS_BASE+9) // dbaltop
|
|
||||||
#define SQL_CA_SS_COLUMN_SIZE (SQL_CA_SS_BASE+10) // dbcollen
|
|
||||||
#define SQL_CA_SS_COLUMN_HIDDEN (SQL_CA_SS_BASE+11) // Column is hidden (FOR BROWSE)
|
|
||||||
#define SQL_CA_SS_COLUMN_KEY (SQL_CA_SS_BASE+12) // Column is key column (FOR BROWSE)
|
|
||||||
//#define SQL_DESC_BASE_COLUMN_NAME_OLD (SQL_CA_SS_BASE+13) // This is defined at another location.
|
|
||||||
#define SQL_CA_SS_COLUMN_COLLATION (SQL_CA_SS_BASE+14) // Column collation (only for chars)
|
|
||||||
#define SQL_CA_SS_VARIANT_TYPE (SQL_CA_SS_BASE+15)
|
|
||||||
#define SQL_CA_SS_VARIANT_SQL_TYPE (SQL_CA_SS_BASE+16)
|
|
||||||
#define SQL_CA_SS_VARIANT_SERVER_TYPE (SQL_CA_SS_BASE+17)
|
|
||||||
|
|
||||||
// XML, CLR UDT, and table valued parameter related metadata
|
|
||||||
#define SQL_CA_SS_UDT_CATALOG_NAME (SQL_CA_SS_BASE+18) // UDT catalog name
|
|
||||||
#define SQL_CA_SS_UDT_SCHEMA_NAME (SQL_CA_SS_BASE+19) // UDT schema name
|
|
||||||
#define SQL_CA_SS_UDT_TYPE_NAME (SQL_CA_SS_BASE+20) // UDT type name
|
|
||||||
#define SQL_CA_SS_UDT_ASSEMBLY_TYPE_NAME (SQL_CA_SS_BASE+21) // Qualified name of the assembly containing the UDT class
|
|
||||||
#define SQL_CA_SS_XML_SCHEMACOLLECTION_CATALOG_NAME (SQL_CA_SS_BASE+22) // Name of the catalog that contains XML Schema collection
|
|
||||||
#define SQL_CA_SS_XML_SCHEMACOLLECTION_SCHEMA_NAME (SQL_CA_SS_BASE+23) // Name of the schema that contains XML Schema collection
|
|
||||||
#define SQL_CA_SS_XML_SCHEMACOLLECTION_NAME (SQL_CA_SS_BASE+24) // Name of the XML Schema collection
|
|
||||||
#define SQL_CA_SS_CATALOG_NAME (SQL_CA_SS_BASE+25) // Catalog name
|
|
||||||
#define SQL_CA_SS_SCHEMA_NAME (SQL_CA_SS_BASE+26) // Schema name
|
|
||||||
#define SQL_CA_SS_TYPE_NAME (SQL_CA_SS_BASE+27) // Type name
|
|
||||||
|
|
||||||
// table valued parameter related metadata
|
|
||||||
#define SQL_CA_SS_COLUMN_COMPUTED (SQL_CA_SS_BASE+29) // column is computed
|
|
||||||
#define SQL_CA_SS_COLUMN_IN_UNIQUE_KEY (SQL_CA_SS_BASE+30) // column is part of a unique key
|
|
||||||
#define SQL_CA_SS_COLUMN_SORT_ORDER (SQL_CA_SS_BASE+31) // column sort order
|
|
||||||
#define SQL_CA_SS_COLUMN_SORT_ORDINAL (SQL_CA_SS_BASE+32) // column sort ordinal
|
|
||||||
#define SQL_CA_SS_COLUMN_HAS_DEFAULT_VALUE (SQL_CA_SS_BASE+33) // column has default value for all rows of the table valued parameter
|
|
||||||
|
|
||||||
// sparse column related metadata
|
|
||||||
#define SQL_CA_SS_IS_COLUMN_SET (SQL_CA_SS_BASE+34) // column is a column-set column for sparse columns
|
|
||||||
|
|
||||||
// Legacy datetime related metadata
|
|
||||||
#define SQL_CA_SS_SERVER_TYPE (SQL_CA_SS_BASE+35) // column type to send on the wire for datetime types
|
|
||||||
|
|
||||||
#define SQL_CA_SS_MAX_USED (SQL_CA_SS_BASE+36)
|
|
||||||
|
|
||||||
// Defines returned by SQL_ATTR_CURSOR_TYPE/SQL_CURSOR_TYPE
|
|
||||||
#define SQL_CURSOR_FAST_FORWARD_ONLY 8 // Only returned by SQLGetStmtAttr/Option
|
|
||||||
// Defines for use with SQL_COPT_SS_USE_PROC_FOR_PREP
|
|
||||||
#define SQL_UP_OFF 0L // Procedures won't be used for prepare
|
|
||||||
#define SQL_UP_ON 1L // Procedures will be used for prepare
|
|
||||||
#define SQL_UP_ON_DROP 2L // Temp procedures will be explicitly dropped
|
|
||||||
#define SQL_UP_DEFAULT SQL_UP_ON
|
|
||||||
// Defines for use with SQL_COPT_SS_INTEGRATED_SECURITY - Pre-Connect Option only
|
|
||||||
#define SQL_IS_OFF 0L // Integrated security isn't used
|
|
||||||
#define SQL_IS_ON 1L // Integrated security is used
|
|
||||||
#define SQL_IS_DEFAULT SQL_IS_OFF
|
|
||||||
// Defines for use with SQL_COPT_SS_PRESERVE_CURSORS
|
|
||||||
#define SQL_PC_OFF 0L // Cursors are closed on SQLTransact
|
|
||||||
#define SQL_PC_ON 1L // Cursors remain open on SQLTransact
|
|
||||||
#define SQL_PC_DEFAULT SQL_PC_OFF
|
|
||||||
// Defines for use with SQL_COPT_SS_USER_DATA
|
|
||||||
#define SQL_UD_NOTSET NULL // No user data pointer set
|
|
||||||
// Defines for use with SQL_COPT_SS_TRANSLATE
|
|
||||||
#define SQL_XL_OFF 0L // Code page translation is not performed
|
|
||||||
#define SQL_XL_ON 1L // Code page translation is performed
|
|
||||||
#define SQL_XL_DEFAULT SQL_XL_ON
|
|
||||||
// Defines for use with SQL_COPT_SS_FALLBACK_CONNECT - Pre-Connect Option only
|
|
||||||
#define SQL_FB_OFF 0L // FallBack connections are disabled
|
|
||||||
#define SQL_FB_ON 1L // FallBack connections are enabled
|
|
||||||
#define SQL_FB_DEFAULT SQL_FB_OFF
|
|
||||||
// Defines for use with SQL_COPT_SS_BCP - Pre-Connect Option only
|
|
||||||
#define SQL_BCP_OFF 0L // BCP is not allowed on connection
|
|
||||||
#define SQL_BCP_ON 1L // BCP is allowed on connection
|
|
||||||
#define SQL_BCP_DEFAULT SQL_BCP_OFF
|
|
||||||
// Defines for use with SQL_COPT_SS_QUOTED_IDENT
|
|
||||||
#define SQL_QI_OFF 0L // Quoted identifiers are enable
|
|
||||||
#define SQL_QI_ON 1L // Quoted identifiers are disabled
|
|
||||||
#define SQL_QI_DEFAULT SQL_QI_ON
|
|
||||||
// Defines for use with SQL_COPT_SS_ANSI_NPW - Pre-Connect Option only
|
|
||||||
#define SQL_AD_OFF 0L // ANSI NULLs, Padding and Warnings are enabled
|
|
||||||
#define SQL_AD_ON 1L // ANSI NULLs, Padding and Warnings are disabled
|
|
||||||
#define SQL_AD_DEFAULT SQL_AD_ON
|
|
||||||
// Defines for use with SQL_COPT_SS_CONCAT_NULL - Pre-Connect Option only
|
|
||||||
#define SQL_CN_OFF 0L // CONCAT_NULL_YIELDS_NULL is off
|
|
||||||
#define SQL_CN_ON 1L // CONCAT_NULL_YIELDS_NULL is on
|
|
||||||
#define SQL_CN_DEFAULT SQL_CN_ON
|
|
||||||
// Defines for use with SQL_SOPT_SS_TEXTPTR_LOGGING
|
|
||||||
#define SQL_TL_OFF 0L // No logging on text pointer ops
|
|
||||||
#define SQL_TL_ON 1L // Logging occurs on text pointer ops
|
|
||||||
#define SQL_TL_DEFAULT SQL_TL_ON
|
|
||||||
// Defines for use with SQL_SOPT_SS_HIDDEN_COLUMNS
|
|
||||||
#define SQL_HC_OFF 0L // FOR BROWSE columns are hidden
|
|
||||||
#define SQL_HC_ON 1L // FOR BROWSE columns are exposed
|
|
||||||
#define SQL_HC_DEFAULT SQL_HC_OFF
|
|
||||||
// Defines for use with SQL_SOPT_SS_NOBROWSETABLE
|
|
||||||
#define SQL_NB_OFF 0L // NO_BROWSETABLE is off
|
|
||||||
#define SQL_NB_ON 1L // NO_BROWSETABLE is on
|
|
||||||
#define SQL_NB_DEFAULT SQL_NB_OFF
|
|
||||||
// Defines for use with SQL_SOPT_SS_REGIONALIZE
|
|
||||||
#define SQL_RE_OFF 0L // No regionalization occurs on output character conversions
|
|
||||||
#define SQL_RE_ON 1L // Regionalization occurs on output character conversions
|
|
||||||
#define SQL_RE_DEFAULT SQL_RE_OFF
|
|
||||||
// Defines for use with SQL_SOPT_SS_CURSOR_OPTIONS
|
|
||||||
#define SQL_CO_OFF 0L // Clear all cursor options
|
|
||||||
#define SQL_CO_FFO 1L // Fast-forward cursor will be used
|
|
||||||
#define SQL_CO_AF 2L // Autofetch on cursor open
|
|
||||||
#define SQL_CO_FFO_AF (SQL_CO_FFO|SQL_CO_AF) // Fast-forward cursor with autofetch
|
|
||||||
#define SQL_CO_FIREHOSE_AF 4L // Auto fetch on fire-hose cursors
|
|
||||||
#define SQL_CO_DEFAULT SQL_CO_OFF
|
|
||||||
//SQL_SOPT_SS_NOCOUNT_STATUS
|
|
||||||
#define SQL_NC_OFF 0L
|
|
||||||
#define SQL_NC_ON 1L
|
|
||||||
//SQL_SOPT_SS_DEFER_PREPARE
|
|
||||||
#define SQL_DP_OFF 0L
|
|
||||||
#define SQL_DP_ON 1L
|
|
||||||
//SQL_SOPT_SS_NAME_SCOPE
|
|
||||||
#define SQL_SS_NAME_SCOPE_TABLE 0L
|
|
||||||
#define SQL_SS_NAME_SCOPE_TABLE_TYPE 1L
|
|
||||||
#define SQL_SS_NAME_SCOPE_EXTENDED 2L
|
|
||||||
#define SQL_SS_NAME_SCOPE_SPARSE_COLUMN_SET 3L
|
|
||||||
#define SQL_SS_NAME_SCOPE_DEFAULT SQL_SS_NAME_SCOPE_TABLE
|
|
||||||
//SQL_COPT_SS_ENCRYPT
|
|
||||||
#define SQL_EN_OFF 0L
|
|
||||||
#define SQL_EN_ON 1L
|
|
||||||
//SQL_COPT_SS_TRUST_SERVER_CERTIFICATE
|
|
||||||
#define SQL_TRUST_SERVER_CERTIFICATE_NO 0L
|
|
||||||
#define SQL_TRUST_SERVER_CERTIFICATE_YES 1L
|
|
||||||
//SQL_COPT_SS_BROWSE_CONNECT
|
|
||||||
#define SQL_MORE_INFO_NO 0L
|
|
||||||
#define SQL_MORE_INFO_YES 1L
|
|
||||||
//SQL_COPT_SS_BROWSE_CACHE_DATA
|
|
||||||
#define SQL_CACHE_DATA_NO 0L
|
|
||||||
#define SQL_CACHE_DATA_YES 1L
|
|
||||||
//SQL_COPT_SS_RESET_CONNECTION
|
|
||||||
#define SQL_RESET_YES 1L
|
|
||||||
//SQL_COPT_SS_WARN_ON_CP_ERROR
|
|
||||||
#define SQL_WARN_NO 0L
|
|
||||||
#define SQL_WARN_YES 1L
|
|
||||||
//SQL_COPT_SS_MARS_ENABLED
|
|
||||||
#define SQL_MARS_ENABLED_NO 0L
|
|
||||||
#define SQL_MARS_ENABLED_YES 1L
|
|
||||||
/* SQL_TXN_ISOLATION_OPTION bitmasks */
|
|
||||||
#define SQL_TXN_SS_SNAPSHOT 0x00000020L
|
|
||||||
|
|
||||||
// The following are defines for SQL_CA_SS_COLUMN_SORT_ORDER
|
|
||||||
#define SQL_SS_ORDER_UNSPECIFIED 0L
|
|
||||||
#define SQL_SS_DESCENDING_ORDER 1L
|
|
||||||
#define SQL_SS_ASCENDING_ORDER 2L
|
|
||||||
#define SQL_SS_ORDER_DEFAULT SQL_SS_ORDER_UNSPECIFIED
|
|
||||||
|
|
||||||
// Driver specific SQL data type defines.
|
|
||||||
// Microsoft has -150 thru -199 reserved for Microsoft SQL Server Native Client driver usage.
|
|
||||||
#define SQL_SS_VARIANT (-150)
|
|
||||||
#define SQL_SS_UDT (-151)
|
|
||||||
#define SQL_SS_XML (-152)
|
|
||||||
#define SQL_SS_TABLE (-153)
|
|
||||||
#define SQL_SS_TIME2 (-154)
|
|
||||||
#define SQL_SS_TIMESTAMPOFFSET (-155)
|
|
||||||
|
|
||||||
// Local types to be used with SQL_CA_SS_SERVER_TYPE
|
|
||||||
#define SQL_SS_TYPE_DEFAULT 0L
|
|
||||||
#define SQL_SS_TYPE_SMALLDATETIME 1L
|
|
||||||
#define SQL_SS_TYPE_DATETIME 2L
|
|
||||||
|
|
||||||
#ifndef SQLNCLI_NO_BCP
|
|
||||||
// Define the symbol SQLNCLI_NO_BCP if you are not using BCP in your application
|
|
||||||
// and you want to exclude the BCP-related definitions in this header file.
|
|
||||||
|
|
||||||
// SQL Server Data Type defines.
|
|
||||||
// New types for SQL 6.0 and later servers
|
|
||||||
#define SQLTEXT 0x23
|
|
||||||
#define SQLVARBINARY 0x25
|
|
||||||
#define SQLINTN 0x26
|
|
||||||
#define SQLVARCHAR 0x27
|
|
||||||
#define SQLBINARY 0x2d
|
|
||||||
#define SQLIMAGE 0x22
|
|
||||||
#define SQLCHARACTER 0x2f
|
|
||||||
#define SQLINT1 0x30
|
|
||||||
#define SQLBIT 0x32
|
|
||||||
#define SQLINT2 0x34
|
|
||||||
#define SQLINT4 0x38
|
|
||||||
#define SQLMONEY 0x3c
|
|
||||||
#define SQLDATETIME 0x3d
|
|
||||||
#define SQLFLT8 0x3e
|
|
||||||
#define SQLFLTN 0x6d
|
|
||||||
#define SQLMONEYN 0x6e
|
|
||||||
#define SQLDATETIMN 0x6f
|
|
||||||
#define SQLFLT4 0x3b
|
|
||||||
#define SQLMONEY4 0x7a
|
|
||||||
#define SQLDATETIM4 0x3a
|
|
||||||
// New types for SQL 6.0 and later servers
|
|
||||||
#define SQLDECIMAL 0x6a
|
|
||||||
#define SQLNUMERIC 0x6c
|
|
||||||
// New types for SQL 7.0 and later servers
|
|
||||||
#define SQLUNIQUEID 0x24
|
|
||||||
#define SQLBIGCHAR 0xaf
|
|
||||||
#define SQLBIGVARCHAR 0xa7
|
|
||||||
#define SQLBIGBINARY 0xad
|
|
||||||
#define SQLBIGVARBINARY 0xa5
|
|
||||||
#define SQLBITN 0x68
|
|
||||||
#define SQLNCHAR 0xef
|
|
||||||
#define SQLNVARCHAR 0xe7
|
|
||||||
#define SQLNTEXT 0x63
|
|
||||||
// New types for SQL 2000 and later servers
|
|
||||||
#define SQLINT8 0x7f
|
|
||||||
#define SQLVARIANT 0x62
|
|
||||||
// New types for SQL 2005 and later servers
|
|
||||||
#define SQLUDT 0xf0
|
|
||||||
#define SQLXML 0xf1
|
|
||||||
// New types for SQL 2008 and later servers
|
|
||||||
#define SQLTABLE 0xf3
|
|
||||||
#define SQLDATEN 0x28
|
|
||||||
#define SQLTIMEN 0x29
|
|
||||||
#define SQLDATETIME2N 0x2a
|
|
||||||
#define SQLDATETIMEOFFSETN 0x2b
|
|
||||||
// Define old names
|
|
||||||
#define SQLDECIMALN 0x6a
|
|
||||||
#define SQLNUMERICN 0x6c
|
|
||||||
#endif // SQLNCLI_NO_BCP
|
|
||||||
|
|
||||||
// SQL_SS_LENGTH_UNLIMITED is used to describe the max length of
|
|
||||||
// VARCHAR(max), VARBINARY(max), NVARCHAR(max), and XML columns
|
|
||||||
#define SQL_SS_LENGTH_UNLIMITED 0
|
|
||||||
|
|
||||||
// User Data Type definitions.
|
|
||||||
// Returned by SQLColAttributes/SQL_CA_SS_COLUMN_UTYPE.
|
|
||||||
#define SQLudtBINARY 3
|
|
||||||
#define SQLudtBIT 16
|
|
||||||
#define SQLudtBITN 0
|
|
||||||
#define SQLudtCHAR 1
|
|
||||||
#define SQLudtDATETIM4 22
|
|
||||||
#define SQLudtDATETIME 12
|
|
||||||
#define SQLudtDATETIMN 15
|
|
||||||
#define SQLudtDECML 24
|
|
||||||
#define SQLudtDECMLN 26
|
|
||||||
#define SQLudtFLT4 23
|
|
||||||
#define SQLudtFLT8 8
|
|
||||||
#define SQLudtFLTN 14
|
|
||||||
#define SQLudtIMAGE 20
|
|
||||||
#define SQLudtINT1 5
|
|
||||||
#define SQLudtINT2 6
|
|
||||||
#define SQLudtINT4 7
|
|
||||||
#define SQLudtINTN 13
|
|
||||||
#define SQLudtMONEY 11
|
|
||||||
#define SQLudtMONEY4 21
|
|
||||||
#define SQLudtMONEYN 17
|
|
||||||
#define SQLudtNUM 10
|
|
||||||
#define SQLudtNUMN 25
|
|
||||||
#define SQLudtSYSNAME 18
|
|
||||||
#define SQLudtTEXT 19
|
|
||||||
#define SQLudtTIMESTAMP 80
|
|
||||||
#define SQLudtUNIQUEIDENTIFIER 0
|
|
||||||
#define SQLudtVARBINARY 4
|
|
||||||
#define SQLudtVARCHAR 2
|
|
||||||
#define MIN_USER_DATATYPE 256
|
|
||||||
// Aggregate operator types.
|
|
||||||
// Returned by SQLColAttributes/SQL_CA_SS_COLUMN_OP.
|
|
||||||
#define SQLAOPSTDEV 0x30 // Standard deviation
|
|
||||||
#define SQLAOPSTDEVP 0x31 // Standard deviation population
|
|
||||||
#define SQLAOPVAR 0x32 // Variance
|
|
||||||
#define SQLAOPVARP 0x33 // Variance population
|
|
||||||
#define SQLAOPCNT 0x4b // Count
|
|
||||||
#define SQLAOPSUM 0x4d // Sum
|
|
||||||
#define SQLAOPAVG 0x4f // Average
|
|
||||||
#define SQLAOPMIN 0x51 // Min
|
|
||||||
#define SQLAOPMAX 0x52 // Max
|
|
||||||
#define SQLAOPANY 0x53 // Any
|
|
||||||
#define SQLAOPNOOP 0x56 // None
|
|
||||||
// SQLGetInfo driver specific defines.
|
|
||||||
// Microsoft has 1151 thru 1200 reserved for Microsoft SQL Server Native Client driver usage.
|
|
||||||
#define SQL_INFO_SS_FIRST 1199
|
|
||||||
#define SQL_INFO_SS_NETLIB_NAMEW (SQL_INFO_SS_FIRST+0) // dbprocinfo
|
|
||||||
#define SQL_INFO_SS_NETLIB_NAMEA (SQL_INFO_SS_FIRST+1) // dbprocinfo
|
|
||||||
#define SQL_INFO_SS_MAX_USED SQL_INFO_SS_NETLIB_NAMEA
|
|
||||||
#ifdef UNICODE
|
|
||||||
#define SQL_INFO_SS_NETLIB_NAME SQL_INFO_SS_NETLIB_NAMEW
|
|
||||||
#else
|
|
||||||
#define SQL_INFO_SS_NETLIB_NAME SQL_INFO_SS_NETLIB_NAMEA
|
|
||||||
#endif
|
|
||||||
// SQLGetDiagField driver specific defines.
|
|
||||||
// Microsoft has -1150 thru -1199 reserved for Microsoft SQL Server Native Client driver usage.
|
|
||||||
#define SQL_DIAG_SS_BASE (-1150)
|
|
||||||
#define SQL_DIAG_SS_MSGSTATE (SQL_DIAG_SS_BASE)
|
|
||||||
#define SQL_DIAG_SS_SEVERITY (SQL_DIAG_SS_BASE-1)
|
|
||||||
#define SQL_DIAG_SS_SRVNAME (SQL_DIAG_SS_BASE-2)
|
|
||||||
#define SQL_DIAG_SS_PROCNAME (SQL_DIAG_SS_BASE-3)
|
|
||||||
#define SQL_DIAG_SS_LINE (SQL_DIAG_SS_BASE-4)
|
|
||||||
// SQLGetDiagField/SQL_DIAG_DYNAMIC_FUNCTION_CODE driver specific defines.
|
|
||||||
// Microsoft has -200 thru -299 reserved for Microsoft SQL Server Native Client driver usage.
|
|
||||||
#define SQL_DIAG_DFC_SS_BASE (-200)
|
|
||||||
#define SQL_DIAG_DFC_SS_ALTER_DATABASE (SQL_DIAG_DFC_SS_BASE-0)
|
|
||||||
#define SQL_DIAG_DFC_SS_CHECKPOINT (SQL_DIAG_DFC_SS_BASE-1)
|
|
||||||
#define SQL_DIAG_DFC_SS_CONDITION (SQL_DIAG_DFC_SS_BASE-2)
|
|
||||||
#define SQL_DIAG_DFC_SS_CREATE_DATABASE (SQL_DIAG_DFC_SS_BASE-3)
|
|
||||||
#define SQL_DIAG_DFC_SS_CREATE_DEFAULT (SQL_DIAG_DFC_SS_BASE-4)
|
|
||||||
#define SQL_DIAG_DFC_SS_CREATE_PROCEDURE (SQL_DIAG_DFC_SS_BASE-5)
|
|
||||||
#define SQL_DIAG_DFC_SS_CREATE_RULE (SQL_DIAG_DFC_SS_BASE-6)
|
|
||||||
#define SQL_DIAG_DFC_SS_CREATE_TRIGGER (SQL_DIAG_DFC_SS_BASE-7)
|
|
||||||
#define SQL_DIAG_DFC_SS_CURSOR_DECLARE (SQL_DIAG_DFC_SS_BASE-8)
|
|
||||||
#define SQL_DIAG_DFC_SS_CURSOR_OPEN (SQL_DIAG_DFC_SS_BASE-9)
|
|
||||||
#define SQL_DIAG_DFC_SS_CURSOR_FETCH (SQL_DIAG_DFC_SS_BASE-10)
|
|
||||||
#define SQL_DIAG_DFC_SS_CURSOR_CLOSE (SQL_DIAG_DFC_SS_BASE-11)
|
|
||||||
#define SQL_DIAG_DFC_SS_DEALLOCATE_CURSOR (SQL_DIAG_DFC_SS_BASE-12)
|
|
||||||
#define SQL_DIAG_DFC_SS_DBCC (SQL_DIAG_DFC_SS_BASE-13)
|
|
||||||
#define SQL_DIAG_DFC_SS_DISK (SQL_DIAG_DFC_SS_BASE-14)
|
|
||||||
#define SQL_DIAG_DFC_SS_DROP_DATABASE (SQL_DIAG_DFC_SS_BASE-15)
|
|
||||||
#define SQL_DIAG_DFC_SS_DROP_DEFAULT (SQL_DIAG_DFC_SS_BASE-16)
|
|
||||||
#define SQL_DIAG_DFC_SS_DROP_PROCEDURE (SQL_DIAG_DFC_SS_BASE-17)
|
|
||||||
#define SQL_DIAG_DFC_SS_DROP_RULE (SQL_DIAG_DFC_SS_BASE-18)
|
|
||||||
#define SQL_DIAG_DFC_SS_DROP_TRIGGER (SQL_DIAG_DFC_SS_BASE-19)
|
|
||||||
#define SQL_DIAG_DFC_SS_DUMP_DATABASE (SQL_DIAG_DFC_SS_BASE-20)
|
|
||||||
#define SQL_DIAG_DFC_SS_BACKUP_DATABASE (SQL_DIAG_DFC_SS_BASE-20)
|
|
||||||
#define SQL_DIAG_DFC_SS_DUMP_TABLE (SQL_DIAG_DFC_SS_BASE-21)
|
|
||||||
#define SQL_DIAG_DFC_SS_DUMP_TRANSACTION (SQL_DIAG_DFC_SS_BASE-22)
|
|
||||||
#define SQL_DIAG_DFC_SS_BACKUP_TRANSACTION (SQL_DIAG_DFC_SS_BASE-22)
|
|
||||||
#define SQL_DIAG_DFC_SS_GOTO (SQL_DIAG_DFC_SS_BASE-23)
|
|
||||||
#define SQL_DIAG_DFC_SS_INSERT_BULK (SQL_DIAG_DFC_SS_BASE-24)
|
|
||||||
#define SQL_DIAG_DFC_SS_KILL (SQL_DIAG_DFC_SS_BASE-25)
|
|
||||||
#define SQL_DIAG_DFC_SS_LOAD_DATABASE (SQL_DIAG_DFC_SS_BASE-26)
|
|
||||||
#define SQL_DIAG_DFC_SS_RESTORE_DATABASE (SQL_DIAG_DFC_SS_BASE-26)
|
|
||||||
#define SQL_DIAG_DFC_SS_LOAD_HEADERONLY (SQL_DIAG_DFC_SS_BASE-27)
|
|
||||||
#define SQL_DIAG_DFC_SS_RESTORE_HEADERONLY (SQL_DIAG_DFC_SS_BASE-27)
|
|
||||||
#define SQL_DIAG_DFC_SS_LOAD_TABLE (SQL_DIAG_DFC_SS_BASE-28)
|
|
||||||
#define SQL_DIAG_DFC_SS_LOAD_TRANSACTION (SQL_DIAG_DFC_SS_BASE-29)
|
|
||||||
#define SQL_DIAG_DFC_SS_RESTORE_TRANSACTION (SQL_DIAG_DFC_SS_BASE-29)
|
|
||||||
#define SQL_DIAG_DFC_SS_PRINT (SQL_DIAG_DFC_SS_BASE-30)
|
|
||||||
#define SQL_DIAG_DFC_SS_RAISERROR (SQL_DIAG_DFC_SS_BASE-31)
|
|
||||||
#define SQL_DIAG_DFC_SS_READTEXT (SQL_DIAG_DFC_SS_BASE-32)
|
|
||||||
#define SQL_DIAG_DFC_SS_RECONFIGURE (SQL_DIAG_DFC_SS_BASE-33)
|
|
||||||
#define SQL_DIAG_DFC_SS_RETURN (SQL_DIAG_DFC_SS_BASE-34)
|
|
||||||
#define SQL_DIAG_DFC_SS_SELECT_INTO (SQL_DIAG_DFC_SS_BASE-35)
|
|
||||||
#define SQL_DIAG_DFC_SS_SET (SQL_DIAG_DFC_SS_BASE-36)
|
|
||||||
#define SQL_DIAG_DFC_SS_SET_IDENTITY_INSERT (SQL_DIAG_DFC_SS_BASE-37)
|
|
||||||
#define SQL_DIAG_DFC_SS_SET_ROW_COUNT (SQL_DIAG_DFC_SS_BASE-38)
|
|
||||||
#define SQL_DIAG_DFC_SS_SET_STATISTICS (SQL_DIAG_DFC_SS_BASE-39)
|
|
||||||
#define SQL_DIAG_DFC_SS_SET_TEXTSIZE (SQL_DIAG_DFC_SS_BASE-40)
|
|
||||||
#define SQL_DIAG_DFC_SS_SETUSER (SQL_DIAG_DFC_SS_BASE-41)
|
|
||||||
#define SQL_DIAG_DFC_SS_SHUTDOWN (SQL_DIAG_DFC_SS_BASE-42)
|
|
||||||
#define SQL_DIAG_DFC_SS_TRANS_BEGIN (SQL_DIAG_DFC_SS_BASE-43)
|
|
||||||
#define SQL_DIAG_DFC_SS_TRANS_COMMIT (SQL_DIAG_DFC_SS_BASE-44)
|
|
||||||
#define SQL_DIAG_DFC_SS_TRANS_PREPARE (SQL_DIAG_DFC_SS_BASE-45)
|
|
||||||
#define SQL_DIAG_DFC_SS_TRANS_ROLLBACK (SQL_DIAG_DFC_SS_BASE-46)
|
|
||||||
#define SQL_DIAG_DFC_SS_TRANS_SAVE (SQL_DIAG_DFC_SS_BASE-47)
|
|
||||||
#define SQL_DIAG_DFC_SS_TRUNCATE_TABLE (SQL_DIAG_DFC_SS_BASE-48)
|
|
||||||
#define SQL_DIAG_DFC_SS_UPDATE_STATISTICS (SQL_DIAG_DFC_SS_BASE-49)
|
|
||||||
#define SQL_DIAG_DFC_SS_UPDATETEXT (SQL_DIAG_DFC_SS_BASE-50)
|
|
||||||
#define SQL_DIAG_DFC_SS_USE (SQL_DIAG_DFC_SS_BASE-51)
|
|
||||||
#define SQL_DIAG_DFC_SS_WAITFOR (SQL_DIAG_DFC_SS_BASE-52)
|
|
||||||
#define SQL_DIAG_DFC_SS_WRITETEXT (SQL_DIAG_DFC_SS_BASE-53)
|
|
||||||
#define SQL_DIAG_DFC_SS_DENY (SQL_DIAG_DFC_SS_BASE-54)
|
|
||||||
#define SQL_DIAG_DFC_SS_SET_XCTLVL (SQL_DIAG_DFC_SS_BASE-55)
|
|
||||||
#define SQL_DIAG_DFC_SS_MERGE (SQL_DIAG_DFC_SS_BASE-56)
|
|
||||||
|
|
||||||
// Severity codes for SQL_DIAG_SS_SEVERITY
|
|
||||||
#define EX_ANY 0
|
|
||||||
#define EX_INFO 10
|
|
||||||
#define EX_MAXISEVERITY EX_INFO
|
|
||||||
#define EX_MISSING 11
|
|
||||||
#define EX_TYPE 12
|
|
||||||
#define EX_DEADLOCK 13
|
|
||||||
#define EX_PERMIT 14
|
|
||||||
#define EX_SYNTAX 15
|
|
||||||
#define EX_USER 16
|
|
||||||
#define EX_RESOURCE 17
|
|
||||||
#define EX_INTOK 18
|
|
||||||
#define MAXUSEVERITY EX_INTOK
|
|
||||||
#define EX_LIMIT 19
|
|
||||||
#define EX_CMDFATAL 20
|
|
||||||
#define MINFATALERR EX_CMDFATAL
|
|
||||||
#define EX_DBFATAL 21
|
|
||||||
#define EX_TABCORRUPT 22
|
|
||||||
#define EX_DBCORRUPT 23
|
|
||||||
#define EX_HARDWARE 24
|
|
||||||
#define EX_CONTROL 25
|
|
||||||
// Internal server datatypes - used when binding to SQL_C_BINARY
|
|
||||||
#ifndef MAXNUMERICLEN // Resolve ODS/DBLib conflicts
|
|
||||||
// DB-Library datatypes
|
|
||||||
#define DBMAXCHAR (8000+1) // Max length of DBVARBINARY and DBVARCHAR, etc. +1 for zero byte
|
|
||||||
#define MAXNAME (SQL_MAX_SQLSERVERNAME+1) // Max server identifier length including zero byte
|
|
||||||
#ifdef UNICODE
|
|
||||||
typedef wchar_t DBCHAR;
|
|
||||||
#else
|
|
||||||
typedef char DBCHAR;
|
|
||||||
|
|
||||||
#endif
|
|
||||||
typedef short SQLSMALLINT;
|
|
||||||
|
|
||||||
typedef unsigned short SQLUSMALLINT;
|
|
||||||
|
|
||||||
typedef long SQLINTEGER;
|
|
||||||
|
|
||||||
typedef unsigned long SQLUINTEGER;
|
|
||||||
|
|
||||||
typedef unsigned char DBBINARY;
|
|
||||||
|
|
||||||
typedef unsigned char DBTINYINT;
|
|
||||||
|
|
||||||
typedef short DBSMALLINT;
|
|
||||||
|
|
||||||
typedef unsigned short DBUSMALLINT;
|
|
||||||
|
|
||||||
typedef double DBFLT8;
|
|
||||||
|
|
||||||
typedef unsigned char DBBIT;
|
|
||||||
|
|
||||||
typedef unsigned char DBBOOL;
|
|
||||||
|
|
||||||
typedef float DBFLT4;
|
|
||||||
|
|
||||||
typedef DBFLT4 DBREAL;
|
|
||||||
|
|
||||||
typedef UINT DBUBOOL;
|
|
||||||
|
|
||||||
typedef struct dbmoney
|
|
||||||
{
|
|
||||||
LONG mnyhigh;
|
|
||||||
ULONG mnylow;
|
|
||||||
} DBMONEY;
|
|
||||||
|
|
||||||
typedef struct dbdatetime
|
|
||||||
{
|
|
||||||
LONG dtdays;
|
|
||||||
ULONG dttime;
|
|
||||||
} DBDATETIME;
|
|
||||||
|
|
||||||
typedef struct dbdatetime4
|
|
||||||
{
|
|
||||||
USHORT numdays;
|
|
||||||
USHORT nummins;
|
|
||||||
} DBDATETIM4;
|
|
||||||
|
|
||||||
typedef LONG DBMONEY4;
|
|
||||||
|
|
||||||
#include <pshpack8.h> // 8-byte structure packing
|
|
||||||
|
|
||||||
// New Date Time Structures
|
|
||||||
// New Structure for TIME2
|
|
||||||
typedef struct tagSS_TIME2_STRUCT
|
|
||||||
{
|
|
||||||
SQLUSMALLINT hour;
|
|
||||||
SQLUSMALLINT minute;
|
|
||||||
SQLUSMALLINT second;
|
|
||||||
SQLUINTEGER fraction;
|
|
||||||
} SQL_SS_TIME2_STRUCT;
|
|
||||||
|
|
||||||
// New Structure for TIMESTAMPOFFSET
|
|
||||||
typedef struct tagSS_TIMESTAMPOFFSET_STRUCT
|
|
||||||
{
|
|
||||||
SQLSMALLINT year;
|
|
||||||
SQLUSMALLINT month;
|
|
||||||
SQLUSMALLINT day;
|
|
||||||
SQLUSMALLINT hour;
|
|
||||||
SQLUSMALLINT minute;
|
|
||||||
SQLUSMALLINT second;
|
|
||||||
SQLUINTEGER fraction;
|
|
||||||
SQLSMALLINT timezone_hour;
|
|
||||||
SQLSMALLINT timezone_minute;
|
|
||||||
} SQL_SS_TIMESTAMPOFFSET_STRUCT;
|
|
||||||
|
|
||||||
#include <poppack.h> // restore original structure packing
|
|
||||||
|
|
||||||
// Money value *10,000
|
|
||||||
#define DBNUM_PREC_TYPE BYTE
|
|
||||||
#define DBNUM_SCALE_TYPE BYTE
|
|
||||||
#define DBNUM_VAL_TYPE BYTE
|
|
||||||
|
|
||||||
#if (ODBCVER < 0x0300)
|
|
||||||
#define MAXNUMERICLEN 16
|
|
||||||
typedef struct dbnumeric // Internal representation of NUMERIC data type
|
|
||||||
{
|
|
||||||
DBNUM_PREC_TYPE precision; // Precision
|
|
||||||
DBNUM_SCALE_TYPE scale; // Scale
|
|
||||||
BYTE sign; // Sign (1 if positive, 0 if negative)
|
|
||||||
DBNUM_VAL_TYPE val[MAXNUMERICLEN];// Value
|
|
||||||
} DBNUMERIC;
|
|
||||||
typedef DBNUMERIC DBDECIMAL;// Internal representation of DECIMAL data type
|
|
||||||
#else // Use ODBC 3.0 definitions since same as DBLib
|
|
||||||
#define MAXNUMERICLEN SQL_MAX_NUMERIC_LEN
|
|
||||||
typedef SQL_NUMERIC_STRUCT DBNUMERIC;
|
|
||||||
typedef SQL_NUMERIC_STRUCT DBDECIMAL;
|
|
||||||
#endif // ODCBVER
|
|
||||||
#endif // MAXNUMERICLEN
|
|
||||||
|
|
||||||
#ifndef INT
|
|
||||||
typedef int INT;
|
|
||||||
typedef long DBINT;
|
|
||||||
typedef DBINT * LPDBINT;
|
|
||||||
#ifndef _LPCBYTE_DEFINED
|
|
||||||
#define _LPCBYTE_DEFINED
|
|
||||||
typedef BYTE const* LPCBYTE;
|
|
||||||
#endif //_LPCBYTE_DEFINED
|
|
||||||
#endif // INT
|
|
||||||
/**************************************************************************
|
|
||||||
This struct is a global used for gathering statistical data on the driver.
|
|
||||||
Access to this structure is controlled via the pStatCrit;
|
|
||||||
***************************************************************************/
|
|
||||||
typedef struct sqlperf
|
|
||||||
{
|
|
||||||
// Application Profile Statistics
|
|
||||||
DWORD TimerResolution;
|
|
||||||
DWORD SQLidu;
|
|
||||||
DWORD SQLiduRows;
|
|
||||||
DWORD SQLSelects;
|
|
||||||
DWORD SQLSelectRows;
|
|
||||||
DWORD Transactions;
|
|
||||||
DWORD SQLPrepares;
|
|
||||||
DWORD ExecDirects;
|
|
||||||
DWORD SQLExecutes;
|
|
||||||
DWORD CursorOpens;
|
|
||||||
DWORD CursorSize;
|
|
||||||
DWORD CursorUsed;
|
|
||||||
LDOUBLE PercentCursorUsed;
|
|
||||||
LDOUBLE AvgFetchTime;
|
|
||||||
LDOUBLE AvgCursorSize;
|
|
||||||
LDOUBLE AvgCursorUsed;
|
|
||||||
DWORD SQLFetchTime;
|
|
||||||
DWORD SQLFetchCount;
|
|
||||||
DWORD CurrentStmtCount;
|
|
||||||
DWORD MaxOpenStmt;
|
|
||||||
DWORD SumOpenStmt;
|
|
||||||
// Connection Statistics
|
|
||||||
DWORD CurrentConnectionCount;
|
|
||||||
DWORD MaxConnectionsOpened;
|
|
||||||
DWORD SumConnectionsOpened;
|
|
||||||
DWORD SumConnectiontime;
|
|
||||||
LDOUBLE AvgTimeOpened;
|
|
||||||
// Network Statistics
|
|
||||||
DWORD ServerRndTrips;
|
|
||||||
DWORD BuffersSent;
|
|
||||||
DWORD BuffersRec;
|
|
||||||
DWORD BytesSent;
|
|
||||||
DWORD BytesRec;
|
|
||||||
// Time Statistics;
|
|
||||||
DWORD msExecutionTime;
|
|
||||||
DWORD msNetWorkServerTime;
|
|
||||||
} SQLPERF;
|
|
||||||
// The following are options for SQL_COPT_SS_PERF_DATA and SQL_COPT_SS_PERF_QUERY
|
|
||||||
#define SQL_PERF_START 1 // Starts the driver sampling performance data.
|
|
||||||
#define SQL_PERF_STOP 2 // Stops the counters from sampling performance data.
|
|
||||||
// The following are defines for SQL_COPT_SS_PERF_DATA_LOG
|
|
||||||
#define SQL_SS_DL_DEFAULT TEXT("STATS.LOG")
|
|
||||||
// The following are defines for SQL_COPT_SS_PERF_QUERY_LOG
|
|
||||||
#define SQL_SS_QL_DEFAULT TEXT("QUERY.LOG")
|
|
||||||
// The following are defines for SQL_COPT_SS_PERF_QUERY_INTERVAL
|
|
||||||
#define SQL_SS_QI_DEFAULT 30000 // 30,000 milliseconds
|
|
||||||
|
|
||||||
#ifndef SQLNCLI_NO_BCP
|
|
||||||
// Define the symbol SQLNCLI_NO_BCP if you are not using BCP in your application
|
|
||||||
// and you want to exclude the BCP-related definitions in this header file.
|
|
||||||
|
|
||||||
// ODBC BCP prototypes and defines
|
|
||||||
// Return codes
|
|
||||||
#define SUCCEED 1
|
|
||||||
#define FAIL 0
|
|
||||||
#define SUCCEED_ABORT 2
|
|
||||||
#define SUCCEED_ASYNC 3
|
|
||||||
// Transfer directions
|
|
||||||
#define DB_IN 1 // Transfer from client to server
|
|
||||||
#define DB_OUT 2 // Transfer from server to client
|
|
||||||
// bcp_control option
|
|
||||||
#define BCPMAXERRS 1 // Sets max errors allowed
|
|
||||||
#define BCPFIRST 2 // Sets first row to be copied out
|
|
||||||
#define BCPLAST 3 // Sets number of rows to be copied out
|
|
||||||
#define BCPBATCH 4 // Sets input batch size
|
|
||||||
#define BCPKEEPNULLS 5 // Sets to insert NULLs for empty input values
|
|
||||||
#define BCPABORT 6 // Sets to have bcpexec return SUCCEED_ABORT
|
|
||||||
#define BCPODBC 7 // Sets ODBC canonical character output
|
|
||||||
#define BCPKEEPIDENTITY 8 // Sets IDENTITY_INSERT on
|
|
||||||
#if SQLNCLI_VER < 1000
|
|
||||||
#define BCP6xFILEFMT 9 // DEPRECATED: Sets 6x file format on
|
|
||||||
#endif
|
|
||||||
#define BCPHINTSA 10 // Sets server BCP hints (ANSI string)
|
|
||||||
#define BCPHINTSW 11 // Sets server BCP hints (UNICODE string)
|
|
||||||
#define BCPFILECP 12 // Sets clients code page for the file
|
|
||||||
#define BCPUNICODEFILE 13 // Sets that the file contains unicode header
|
|
||||||
#define BCPTEXTFILE 14 // Sets BCP mode to expect a text file and to detect Unicode or ANSI automatically
|
|
||||||
#define BCPFILEFMT 15 // Sets file format version
|
|
||||||
#define BCPFMTXML 16 // Sets the format file type to xml
|
|
||||||
#define BCPFIRSTEX 17 // Starting Row for BCP operation (64 bit)
|
|
||||||
#define BCPLASTEX 18 // Ending Row for BCP operation (64 bit)
|
|
||||||
#define BCPROWCOUNT 19 // Total Number of Rows Copied (64 bit)
|
|
||||||
// BCPFILECP values
|
|
||||||
// Any valid code page that is installed on the client can be passed plus:
|
|
||||||
#define BCPFILECP_ACP 0 // Data in file is in Windows code page
|
|
||||||
#define BCPFILECP_OEMCP 1 // Data in file is in OEM code page (default)
|
|
||||||
#define BCPFILECP_RAW (-1)// Data in file is in Server code page (no conversion)
|
|
||||||
// bcp_collen definition
|
|
||||||
#define SQL_VARLEN_DATA (-10) // Use default length for column
|
|
||||||
// BCP column format properties
|
|
||||||
#define BCP_FMT_TYPE 0x01
|
|
||||||
#define BCP_FMT_INDICATOR_LEN 0x02
|
|
||||||
#define BCP_FMT_DATA_LEN 0x03
|
|
||||||
#define BCP_FMT_TERMINATOR 0x04
|
|
||||||
#define BCP_FMT_SERVER_COL 0x05
|
|
||||||
#define BCP_FMT_COLLATION 0x06
|
|
||||||
#define BCP_FMT_COLLATION_ID 0x07
|
|
||||||
// BCP functions
|
|
||||||
DBINT SQL_API bcp_batch (HDBC);
|
|
||||||
RETCODE SQL_API bcp_bind (HDBC, LPCBYTE, INT, DBINT, LPCBYTE, INT, INT, INT);
|
|
||||||
RETCODE SQL_API bcp_colfmt (HDBC, INT, BYTE, INT, DBINT, LPCBYTE, INT, INT);
|
|
||||||
RETCODE SQL_API bcp_collen (HDBC, DBINT, INT);
|
|
||||||
RETCODE SQL_API bcp_colptr (HDBC, LPCBYTE, INT);
|
|
||||||
RETCODE SQL_API bcp_columns (HDBC, INT);
|
|
||||||
RETCODE SQL_API bcp_control (HDBC, INT, void *);
|
|
||||||
DBINT SQL_API bcp_done (HDBC);
|
|
||||||
RETCODE SQL_API bcp_exec (HDBC, LPDBINT);
|
|
||||||
RETCODE SQL_API bcp_getcolfmt (HDBC, INT, INT, void *, INT, INT *);
|
|
||||||
RETCODE SQL_API bcp_initA (HDBC, LPCSTR, LPCSTR, LPCSTR, INT);
|
|
||||||
RETCODE SQL_API bcp_initW (HDBC, LPCWSTR, LPCWSTR, LPCWSTR, INT);
|
|
||||||
RETCODE SQL_API bcp_moretext (HDBC, DBINT, LPCBYTE);
|
|
||||||
RETCODE SQL_API bcp_readfmtA (HDBC, LPCSTR);
|
|
||||||
RETCODE SQL_API bcp_readfmtW (HDBC, LPCWSTR);
|
|
||||||
RETCODE SQL_API bcp_sendrow (HDBC);
|
|
||||||
RETCODE SQL_API bcp_setcolfmt (HDBC, INT, INT, void *, INT);
|
|
||||||
RETCODE SQL_API bcp_writefmtA (HDBC, LPCSTR);
|
|
||||||
RETCODE SQL_API bcp_writefmtW (HDBC, LPCWSTR);
|
|
||||||
CHAR* SQL_API dbprtypeA (INT);
|
|
||||||
WCHAR* SQL_API dbprtypeW (INT);
|
|
||||||
CHAR* SQL_API bcp_gettypenameA (INT, DBBOOL);
|
|
||||||
WCHAR* SQL_API bcp_gettypenameW (INT, DBBOOL);
|
|
||||||
#ifdef UNICODE
|
|
||||||
#define bcp_init bcp_initW
|
|
||||||
#define bcp_readfmt bcp_readfmtW
|
|
||||||
#define bcp_writefmt bcp_writefmtW
|
|
||||||
#define dbprtype dbprtypeW
|
|
||||||
#define bcp_gettypename bcp_gettypenameW
|
|
||||||
#define BCPHINTS BCPHINTSW
|
|
||||||
#else
|
|
||||||
#define bcp_init bcp_initA
|
|
||||||
#define bcp_readfmt bcp_readfmtA
|
|
||||||
#define bcp_writefmt bcp_writefmtA
|
|
||||||
#define dbprtype dbprtypeA
|
|
||||||
#define bcp_gettypename bcp_gettypenameA
|
|
||||||
#define BCPHINTS BCPHINTSA
|
|
||||||
#endif // UNICODE
|
|
||||||
|
|
||||||
#endif // SQLNCLI_NO_BCP
|
|
||||||
|
|
||||||
// The following options have been deprecated
|
|
||||||
#define SQL_FAST_CONNECT (SQL_COPT_SS_BASE+0)
|
|
||||||
// Defines for use with SQL_FAST_CONNECT - only useable before connecting
|
|
||||||
#define SQL_FC_OFF 0L // Fast connect is off
|
|
||||||
#define SQL_FC_ON 1L // Fast connect is on
|
|
||||||
#define SQL_FC_DEFAULT SQL_FC_OFF
|
|
||||||
#define SQL_COPT_SS_ANSI_OEM (SQL_COPT_SS_BASE+6)
|
|
||||||
#define SQL_AO_OFF 0L
|
|
||||||
#define SQL_AO_ON 1L
|
|
||||||
#define SQL_AO_DEFAULT SQL_AO_OFF
|
|
||||||
#define SQL_CA_SS_BASE_COLUMN_NAME SQL_DESC_BASE_COLUMN_NAME
|
|
||||||
|
|
||||||
#endif // ODBCVER
|
|
||||||
#endif // defined(_SQLNCLI_ODBC_) || !defined(_SQLNCLI_OLEDB_)
|
|
||||||
// ODBC part of SQL Server Native Client header - end here!
|
|
||||||
|
|
||||||
//The following facilitates opening a handle to a SQL filestream
|
|
||||||
typedef enum _SQL_FILESTREAM_DESIRED_ACCESS {
|
|
||||||
SQL_FILESTREAM_READ = 0,
|
|
||||||
SQL_FILESTREAM_WRITE = 1,
|
|
||||||
SQL_FILESTREAM_READWRITE = 2
|
|
||||||
} SQL_FILESTREAM_DESIRED_ACCESS;
|
|
||||||
#define SQL_FILESTREAM_OPEN_FLAG_ASYNC 0x00000001L
|
|
||||||
#define SQL_FILESTREAM_OPEN_FLAG_NO_BUFFERING 0x00000002L
|
|
||||||
#define SQL_FILESTREAM_OPEN_FLAG_NO_WRITE_THROUGH 0x00000004L
|
|
||||||
#define SQL_FILESTREAM_OPEN_FLAG_SEQUENTIAL_SCAN 0x00000008L
|
|
||||||
#define SQL_FILESTREAM_OPEN_FLAG_RANDOM_ACCESS 0x00000010L
|
|
||||||
HANDLE __stdcall OpenSqlFilestream (
|
|
||||||
LPCWSTR FilestreamPath,
|
|
||||||
SQL_FILESTREAM_DESIRED_ACCESS DesiredAccess,
|
|
||||||
ULONG OpenOptions,
|
|
||||||
LPBYTE FilestreamTransactionContext,
|
|
||||||
SSIZE_T FilestreamTransactionContextLength,
|
|
||||||
PLARGE_INTEGER AllocationSize);
|
|
||||||
#define FSCTL_SQL_FILESTREAM_FETCH_OLD_CONTENT CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 2392, METHOD_BUFFERED, FILE_ANY_ACCESS)
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
extern RPC_IF_HANDLE __MIDL_itf_sqlncli_0000_0010_v0_0_c_ifspec;
|
|
||||||
extern RPC_IF_HANDLE __MIDL_itf_sqlncli_0000_0010_v0_0_s_ifspec;
|
|
||||||
|
|
||||||
/* Additional Prototypes for ALL interfaces */
|
|
||||||
|
|
||||||
/* end of Additional Prototypes */
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
|
@ -3,24 +3,28 @@
|
||||||
//
|
//
|
||||||
// Contents: Version number constants
|
// Contents: Version number constants
|
||||||
//
|
//
|
||||||
// Copyright Microsoft Corporation
|
// Microsoft Drivers for PHP for SQL Server
|
||||||
|
// Copyright (c) Microsoft Corporation. All rights reserved.
|
||||||
//
|
//
|
||||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
// you may not use this file except in compliance with the License.
|
// you may not use these files except in compliance with the License.
|
||||||
//
|
|
||||||
// You may obtain a copy of the License at:
|
// You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0
|
||||||
// http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
//
|
|
||||||
// Unless required by applicable law or agreed to in writing, software
|
// Unless required by applicable law or agreed to in writing, software
|
||||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
// See the License for the specific language governing permissions and
|
// See the License for the specific language governing permissions and
|
||||||
// limitations under the License.
|
// limitations under the License.
|
||||||
|
//
|
||||||
//----------------------------------------------------------------------------------------------------------------------------------
|
//----------------------------------------------------------------------------------------------------------------------------------
|
||||||
|
|
||||||
#define VER_FILEVERSION_STR "3.0.1.0"
|
#define VER_FILEVERSION_STR "3.1.0.0"
|
||||||
#define _FILEVERSION 3,0,0,0
|
#define _FILEVERSION 3,1,0,0
|
||||||
#define SQLVERSION_MAJOR 3
|
#define SQLVERSION_MAJOR 3
|
||||||
#define SQLVERSION_MINOR 0
|
#define SQLVERSION_MINOR 1
|
||||||
#define SQLVERSION_MMDD 1
|
#define SQLVERSION_MMDD 0
|
||||||
#define SQLVERSION_REVISION 0
|
#define SQLVERSION_REVISION 0
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -1 +1 @@
|
||||||
Microsoft Drivers 3.0.1 for PHP for SQL Server (SQLSRV driver)
|
Microsoft Drivers 3.1.0 for PHP for SQL Server (SQLSRV driver)
|
||||||
|
|
|
@ -14,13 +14,13 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
|
||||||
implied. See the License for the specific language governing
|
implied. See the License for the specific language governing
|
||||||
permissions and limitations under the License.
|
permissions and limitations under the License.
|
||||||
|
|
||||||
* Notes about changes to the Microsoft Drivers 3.0 for PHP for SQL Server *
|
* Notes about changes to the Microsoft Drivers 3.1 for PHP for SQL Server *
|
||||||
|
|
||||||
For details about the changes included in this release, please see our blog at
|
For details about the changes included in this release, please see our blog at
|
||||||
http://blogs.msdn.com/sqlphp or see the SQLSRV_Readme.htm
|
http://blogs.msdn.com/sqlphp or see the SQLSRV_Readme.htm
|
||||||
file that is part of the download package.
|
file that is part of the download package.
|
||||||
|
|
||||||
* Notes about compiling the Microsoft Drivers 3.0 for PHP for SQL Server *
|
* Notes about compiling the Microsoft Drivers 3.1 for PHP for SQL Server *
|
||||||
|
|
||||||
Prerequisites:
|
Prerequisites:
|
||||||
|
|
||||||
|
@ -28,7 +28,7 @@ Prerequisites:
|
||||||
extensions. For help with doing this, see the official PHP website,
|
extensions. For help with doing this, see the official PHP website,
|
||||||
http://php.net.
|
http://php.net.
|
||||||
|
|
||||||
To compile the SQLSRV301 and PDO_SQLSRV301:
|
To compile the SQLSRV310 and PDO_SQLSRV310:
|
||||||
|
|
||||||
1) Copy the source code directories from this repository into the ext
|
1) Copy the source code directories from this repository into the ext
|
||||||
subdirectory.
|
subdirectory.
|
||||||
|
@ -53,7 +53,7 @@ wish to do so, run "nmake clean" first.
|
||||||
php_sqlsrv.dll and php_pdo_sqlsrv.dll to your PHP extension directory.
|
php_sqlsrv.dll and php_pdo_sqlsrv.dll to your PHP extension directory.
|
||||||
Also enable them within your PHP installation's php.ini file.
|
Also enable them within your PHP installation's php.ini file.
|
||||||
|
|
||||||
This software has been compiled and tested under PHP 5.3.6 and later
|
This software has been compiled and tested under PHP 5.4.32 and later
|
||||||
using the Visual C++ 2008 and 2010, Express and Standard compilers.
|
using the Visual C++ 2008 and 2010, Express and Standard compilers.
|
||||||
|
|
||||||
* Note about version.h *
|
* Note about version.h *
|
||||||
|
|
|
@ -405,7 +405,7 @@ const connection_option SS_CONN_OPTS[] = {
|
||||||
// or port number (for example, "myServer, 1521") can be included as part of
|
// or port number (for example, "myServer, 1521") can be included as part of
|
||||||
// this string. For a complete description of the options available for this
|
// this string. For a complete description of the options available for this
|
||||||
// parameter, see the Server keyword in the ODBC Driver Connection String
|
// parameter, see the Server keyword in the ODBC Driver Connection String
|
||||||
// Keywords section of Using Connection String Keywords with SQL Native Client.
|
// Keywords section of Using Connection String Keywords with ODBC Driver 11 for SQL Server.
|
||||||
//
|
//
|
||||||
// $connectionInfo [OPTIONAL]: An associative array that contains connection
|
// $connectionInfo [OPTIONAL]: An associative array that contains connection
|
||||||
// attributes (for example, array("Database" => "AdventureWorks")).
|
// attributes (for example, array("Database" => "AdventureWorks")).
|
||||||
|
|
|
@ -43,7 +43,7 @@ const int INFO_BUFFER_LEN = 256;
|
||||||
const char* PROCESSOR_ARCH[] = { "x86", "x64", "ia64" };
|
const char* PROCESSOR_ARCH[] = { "x86", "x64", "ia64" };
|
||||||
|
|
||||||
// ODBC driver name.
|
// ODBC driver name.
|
||||||
const char CONNECTION_STRING_DRIVER_NAME[] = "Driver={SQL Server Native Client 11.0};";
|
const char CONNECTION_STRING_DRIVER_NAME[] = "Driver={ODBC Driver 11 for SQL Server};";
|
||||||
|
|
||||||
// default options if only the server is specified
|
// default options if only the server is specified
|
||||||
const char CONNECTION_STRING_DEFAULT_OPTIONS[] = "Mars_Connection={Yes}";
|
const char CONNECTION_STRING_DEFAULT_OPTIONS[] = "Mars_Connection={Yes}";
|
||||||
|
|
|
@ -153,14 +153,12 @@ struct row_dtor_closure {
|
||||||
sqlsrv_error* odbc_get_diag_rec( sqlsrv_stmt* odbc, SQLSMALLINT record_number )
|
sqlsrv_error* odbc_get_diag_rec( sqlsrv_stmt* odbc, SQLSMALLINT record_number )
|
||||||
{
|
{
|
||||||
SQLWCHAR wsql_state[ SQL_SQLSTATE_BUFSIZE ];
|
SQLWCHAR wsql_state[ SQL_SQLSTATE_BUFSIZE ];
|
||||||
SQLCHAR* sql_state = reinterpret_cast<SQLCHAR*>( wsql_state );
|
|
||||||
SQLWCHAR wnative_message[ SQL_MAX_MESSAGE_LENGTH + 1 ];
|
SQLWCHAR wnative_message[ SQL_MAX_MESSAGE_LENGTH + 1 ];
|
||||||
sqlsrv_malloc_auto_ptr<SQLCHAR> native_message;
|
|
||||||
SQLINTEGER native_code;
|
SQLINTEGER native_code;
|
||||||
SQLINTEGER message_len;
|
SQLSMALLINT wnative_message_len = 0;
|
||||||
|
|
||||||
SQLRETURN r = SQLGetDiagRecW( SQL_HANDLE_STMT, odbc->handle(), record_number, wsql_state, &native_code, wnative_message,
|
SQLRETURN r = SQLGetDiagRecW( SQL_HANDLE_STMT, odbc->handle(), record_number, wsql_state, &native_code, wnative_message,
|
||||||
SQL_MAX_MESSAGE_LENGTH + 1, NULL );
|
SQL_MAX_MESSAGE_LENGTH + 1, &wnative_message_len );
|
||||||
if( !SQL_SUCCEEDED( r ) || r == SQL_NO_DATA ) {
|
if( !SQL_SUCCEEDED( r ) || r == SQL_NO_DATA ) {
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
@ -172,13 +170,17 @@ sqlsrv_error* odbc_get_diag_rec( sqlsrv_stmt* odbc, SQLSMALLINT record_number )
|
||||||
}
|
}
|
||||||
|
|
||||||
// convert the error into the encoding of the context
|
// convert the error into the encoding of the context
|
||||||
message_len = SQL_SQLSTATE_BUFSIZE * sizeof(WCHAR);
|
sqlsrv_malloc_auto_ptr<SQLCHAR> sql_state;
|
||||||
convert_string_from_utf16( enc, reinterpret_cast<char**>( &sql_state ), message_len,
|
SQLINTEGER sql_state_len = 0;
|
||||||
false /*no free*/ );
|
if (!convert_string_from_utf16( enc, wsql_state, sizeof(wsql_state), (char**)&sql_state, sql_state_len )) {
|
||||||
message_len = (SQL_MAX_MESSAGE_LENGTH + 1) * sizeof( WCHAR );
|
return NULL;
|
||||||
native_message = reinterpret_cast<SQLCHAR*>( wnative_message );
|
}
|
||||||
convert_string_from_utf16( enc, reinterpret_cast<char**>( &native_message ), message_len,
|
|
||||||
false /*no free*/ );
|
sqlsrv_malloc_auto_ptr<SQLCHAR> native_message;
|
||||||
|
SQLINTEGER native_message_len = 0;
|
||||||
|
if (!convert_string_from_utf16( enc, wnative_message, wnative_message_len, (char**)&native_message, native_message_len )) {
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
return new (sqlsrv_malloc( sizeof( sqlsrv_error ))) sqlsrv_error( (SQLCHAR*) sql_state, (SQLCHAR*) native_message,
|
return new (sqlsrv_malloc( sizeof( sqlsrv_error ))) sqlsrv_error( (SQLCHAR*) sql_state, (SQLCHAR*) native_message,
|
||||||
native_code );
|
native_code );
|
||||||
|
|
|
@ -6,21 +6,21 @@
|
||||||
//
|
//
|
||||||
// Contents: Core routines and constants shared by the Microsoft Drivers for PHP for SQL Server
|
// Contents: Core routines and constants shared by the Microsoft Drivers for PHP for SQL Server
|
||||||
//
|
//
|
||||||
// Copyright Microsoft Corporation
|
// Microsoft Drivers for PHP for SQL Server
|
||||||
|
// Copyright (c) Microsoft Corporation. All rights reserved.
|
||||||
//
|
//
|
||||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
// you may not use this file except in compliance with the License.
|
// you may not use these files except in compliance with the License.
|
||||||
//
|
|
||||||
// You may obtain a copy of the License at:
|
// You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0
|
||||||
// http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
//
|
|
||||||
// Unless required by applicable law or agreed to in writing, software
|
// Unless required by applicable law or agreed to in writing, software
|
||||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
// See the License for the specific language governing permissions and
|
// See the License for the specific language governing permissions and
|
||||||
// limitations under the License.
|
// limitations under the License.
|
||||||
//---------------------------------------------------------------------------------------------------------------------------------
|
//
|
||||||
|
//----------------------------------------------------------------------------------------------------------------------------------
|
||||||
|
|
||||||
//*********************************************************************************************************************************
|
//*********************************************************************************************************************************
|
||||||
// Includes
|
// Includes
|
||||||
|
@ -111,7 +111,7 @@ OACR_WARNING_POP
|
||||||
#include <strsafe.h>
|
#include <strsafe.h>
|
||||||
|
|
||||||
// included for SQL Server specific constants
|
// included for SQL Server specific constants
|
||||||
#include "sqlncli.h"
|
#include "msodbcsql.h"
|
||||||
|
|
||||||
//*********************************************************************************************************************************
|
//*********************************************************************************************************************************
|
||||||
// Constants and Types
|
// Constants and Types
|
||||||
|
@ -1502,7 +1502,8 @@ struct sqlsrv_buffered_result_set : public sqlsrv_result_set {
|
||||||
#define MEMCHECK_SILENT 1
|
#define MEMCHECK_SILENT 1
|
||||||
|
|
||||||
// utility functions shared by multiple callers across files
|
// utility functions shared by multiple callers across files
|
||||||
bool convert_string_from_utf16( SQLSRV_ENCODING encoding, char** string, SQLINTEGER& len, bool free_utf16 = true );
|
bool convert_string_from_utf16_inplace( SQLSRV_ENCODING encoding, char** string, SQLINTEGER& len);
|
||||||
|
bool convert_string_from_utf16( SQLSRV_ENCODING encoding, const wchar_t* inString, SQLINTEGER cchInLen, char** outString, SQLINTEGER& cchOutLen );
|
||||||
wchar_t* utf16_string_from_mbcs_string( SQLSRV_ENCODING php_encoding, const char* mbcs_string,
|
wchar_t* utf16_string_from_mbcs_string( SQLSRV_ENCODING php_encoding, const char* mbcs_string,
|
||||||
unsigned int mbcs_len, __out unsigned int* utf16_len );
|
unsigned int mbcs_len, __out unsigned int* utf16_len );
|
||||||
|
|
||||||
|
@ -1559,8 +1560,8 @@ enum SQLSRV_ERROR_CODES {
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
// the message returned by SQL Native Client
|
// the message returned by ODBC Driver 11 for SQL Server
|
||||||
const char CONNECTION_BUSY_ODBC_ERROR[] = "[Microsoft][SQL Server Native Client 11.0]Connection is busy with results for "
|
const char CONNECTION_BUSY_ODBC_ERROR[] = "[Microsoft][ODBC Driver 11 for SQL Server]Connection is busy with results for "
|
||||||
"another command";
|
"another command";
|
||||||
|
|
||||||
// SQLSTATE for all internal errors
|
// SQLSTATE for all internal errors
|
||||||
|
|
|
@ -496,7 +496,7 @@ void core_sqlsrv_bind_param( sqlsrv_stmt* stmt, unsigned int param_num, int dire
|
||||||
ind_ptr = buffer_len;
|
ind_ptr = buffer_len;
|
||||||
if( direction != SQL_PARAM_INPUT ) {
|
if( direction != SQL_PARAM_INPUT ) {
|
||||||
|
|
||||||
#if PHP_MAJOR_VERSION == 5 && PHP_MINOR_VERSION == 4
|
#if PHP_MAJOR_VERSION == 5 && PHP_MINOR_VERSION >= 4
|
||||||
// PHP 5.4 added interned strings, so since we obviously want to change that string here in some fashion,
|
// PHP 5.4 added interned strings, so since we obviously want to change that string here in some fashion,
|
||||||
// we reallocate the string if it's interned
|
// we reallocate the string if it's interned
|
||||||
if( IS_INTERNED( buffer )) {
|
if( IS_INTERNED( buffer )) {
|
||||||
|
@ -1991,7 +1991,7 @@ void finalize_output_parameters( sqlsrv_stmt* stmt TSRMLS_DC )
|
||||||
// if it's not in the 8 bit encodings, then it's in UTF-16
|
// if it's not in the 8 bit encodings, then it's in UTF-16
|
||||||
if( output_param->encoding != SQLSRV_ENCODING_CHAR && output_param->encoding != SQLSRV_ENCODING_BINARY ) {
|
if( output_param->encoding != SQLSRV_ENCODING_CHAR && output_param->encoding != SQLSRV_ENCODING_BINARY ) {
|
||||||
|
|
||||||
bool converted = convert_string_from_utf16( output_param->encoding, &str, str_len );
|
bool converted = convert_string_from_utf16_inplace( output_param->encoding, &str, str_len );
|
||||||
CHECK_CUSTOM_ERROR( !converted, stmt, SQLSRV_ERROR_OUTPUT_PARAM_ENCODING_TRANSLATE, get_last_error_message()) {
|
CHECK_CUSTOM_ERROR( !converted, stmt, SQLSRV_ERROR_OUTPUT_PARAM_ENCODING_TRANSLATE, get_last_error_message()) {
|
||||||
throw core::CoreException();
|
throw core::CoreException();
|
||||||
}
|
}
|
||||||
|
@ -2179,7 +2179,7 @@ void get_field_as_string( sqlsrv_stmt* stmt, SQLUSMALLINT field_index, sqlsrv_ph
|
||||||
|
|
||||||
if( sqlsrv_php_type.typeinfo.encoding == SQLSRV_ENCODING_UTF8 ) {
|
if( sqlsrv_php_type.typeinfo.encoding == SQLSRV_ENCODING_UTF8 ) {
|
||||||
|
|
||||||
bool converted = convert_string_from_utf16( static_cast<SQLSRV_ENCODING>( sqlsrv_php_type.typeinfo.encoding ),
|
bool converted = convert_string_from_utf16_inplace( static_cast<SQLSRV_ENCODING>( sqlsrv_php_type.typeinfo.encoding ),
|
||||||
&field_value_temp, field_len_temp );
|
&field_value_temp, field_len_temp );
|
||||||
|
|
||||||
CHECK_CUSTOM_ERROR( !converted, stmt, SQLSRV_ERROR_FIELD_ENCODING_TRANSLATE, get_last_error_message() ) {
|
CHECK_CUSTOM_ERROR( !converted, stmt, SQLSRV_ERROR_FIELD_ENCODING_TRANSLATE, get_last_error_message() ) {
|
||||||
|
@ -2223,7 +2223,7 @@ void get_field_as_string( sqlsrv_stmt* stmt, SQLUSMALLINT field_index, sqlsrv_ph
|
||||||
|
|
||||||
if( sqlsrv_php_type.typeinfo.encoding == CP_UTF8 ) {
|
if( sqlsrv_php_type.typeinfo.encoding == CP_UTF8 ) {
|
||||||
|
|
||||||
bool converted = convert_string_from_utf16( static_cast<SQLSRV_ENCODING>( sqlsrv_php_type.typeinfo.encoding ),
|
bool converted = convert_string_from_utf16_inplace( static_cast<SQLSRV_ENCODING>( sqlsrv_php_type.typeinfo.encoding ),
|
||||||
&field_value_temp, field_len_temp );
|
&field_value_temp, field_len_temp );
|
||||||
|
|
||||||
CHECK_CUSTOM_ERROR( !converted, stmt, SQLSRV_ERROR_FIELD_ENCODING_TRANSLATE, get_last_error_message() ) {
|
CHECK_CUSTOM_ERROR( !converted, stmt, SQLSRV_ERROR_FIELD_ENCODING_TRANSLATE, get_last_error_message() ) {
|
||||||
|
|
|
@ -71,18 +71,42 @@ void core_sqlsrv_register_logger( log_callback driver_logger )
|
||||||
// utf-16 string is released by this function if no errors occurred. Otherwise the parameters are not changed
|
// utf-16 string is released by this function if no errors occurred. Otherwise the parameters are not changed
|
||||||
// and false is returned.
|
// and false is returned.
|
||||||
|
|
||||||
bool convert_string_from_utf16( SQLSRV_ENCODING encoding, char** string, SQLINTEGER& len, bool free_utf16 )
|
bool convert_string_from_utf16_inplace( SQLSRV_ENCODING encoding, char** string, SQLINTEGER& len)
|
||||||
{
|
{
|
||||||
char* utf16_string = *string;
|
SQLSRV_ASSERT( string != NULL && *string != NULL, "String must be specified" );
|
||||||
unsigned int utf16_len = len / 2; // from # of bytes to # of wchars
|
|
||||||
char *enc_string = NULL;
|
|
||||||
unsigned int enc_len = 0;
|
|
||||||
|
|
||||||
// for the empty string, we simply returned we converted it
|
// for the empty string, we simply returned we converted it
|
||||||
if( len == 0 && *string[0] == '\0' ) {
|
if( len == 0 && *string[0] == '\0' ) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
char* outString = NULL;
|
||||||
|
SQLINTEGER outLen = 0;
|
||||||
|
bool result = convert_string_from_utf16( encoding, reinterpret_cast<const wchar_t*>(*string), len / sizeof(wchar_t), &outString, outLen);
|
||||||
|
|
||||||
|
if (result)
|
||||||
|
{
|
||||||
|
sqlsrv_free( *string );
|
||||||
|
*string = outString;
|
||||||
|
len = outLen;
|
||||||
|
}
|
||||||
|
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool convert_string_from_utf16( SQLSRV_ENCODING encoding, const wchar_t* inString, SQLINTEGER cchInLen, char** outString, SQLINTEGER& cchOutLen )
|
||||||
|
{
|
||||||
|
SQLSRV_ASSERT( inString != NULL, "Input string must be specified" );
|
||||||
|
SQLSRV_ASSERT( outString != NULL, "Output buffer pointer must be specified" );
|
||||||
|
SQLSRV_ASSERT( *outString == NULL, "Output buffer pointer must not be set" );
|
||||||
|
|
||||||
|
if (cchInLen == 0 && inString[0] == L'\0') {
|
||||||
|
*outString = reinterpret_cast<char*>( sqlsrv_malloc ( 1 ) );
|
||||||
|
*outString[0] = '\0';
|
||||||
|
cchOutLen = 0;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
// flags set to 0 by default, which means that any invalid characters are dropped rather than causing
|
// flags set to 0 by default, which means that any invalid characters are dropped rather than causing
|
||||||
// an error. This happens only on XP.
|
// an error. This happens only on XP.
|
||||||
DWORD flags = 0;
|
DWORD flags = 0;
|
||||||
|
@ -92,28 +116,26 @@ bool convert_string_from_utf16( SQLSRV_ENCODING encoding, char** string, SQLINTE
|
||||||
}
|
}
|
||||||
|
|
||||||
// calculate the number of characters needed
|
// calculate the number of characters needed
|
||||||
enc_len = WideCharToMultiByte( encoding, flags,
|
cchOutLen = WideCharToMultiByte( encoding, flags,
|
||||||
reinterpret_cast<LPCWSTR>( utf16_string ), utf16_len,
|
inString, cchInLen,
|
||||||
NULL, 0, NULL, NULL );
|
NULL, 0, NULL, NULL );
|
||||||
if( enc_len == 0 ) {
|
if( cchOutLen == 0 ) {
|
||||||
return false;
|
|
||||||
}
|
|
||||||
// we must allocate a new buffer because it is possible that a UTF-8 string is longer than
|
|
||||||
// the corresponding UTF-16 string, so we cannot use an inplace conversion
|
|
||||||
enc_string = reinterpret_cast<char*>( sqlsrv_malloc( enc_len + 1 /* NULL char*/ ));
|
|
||||||
int rc = WideCharToMultiByte( encoding, flags,
|
|
||||||
reinterpret_cast<LPCWSTR>( utf16_string ), utf16_len,
|
|
||||||
enc_string, enc_len, NULL, NULL );
|
|
||||||
if( rc == 0 ) {
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
enc_string[ enc_len ] = '\0'; // null terminate the encoded string
|
// Create a buffer to fit the encoded string
|
||||||
if( free_utf16 ) {
|
char* newString = reinterpret_cast<char*>( sqlsrv_malloc( cchOutLen + 1 /* NULL char*/ ));
|
||||||
sqlsrv_free( utf16_string );
|
int rc = WideCharToMultiByte( encoding, flags,
|
||||||
|
inString, cchInLen,
|
||||||
|
newString, cchOutLen, NULL, NULL );
|
||||||
|
if( rc == 0 ) {
|
||||||
|
cchOutLen = 0;
|
||||||
|
sqlsrv_free( newString );
|
||||||
|
return false;
|
||||||
}
|
}
|
||||||
*string = enc_string;
|
|
||||||
len = enc_len;
|
*outString = newString;
|
||||||
|
newString[cchOutLen] = '\0'; // null terminate the encoded string
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
@ -161,9 +183,7 @@ bool core_sqlsrv_get_odbc_error( sqlsrv_context& ctx, int record_number, sqlsrv_
|
||||||
int zr = SUCCESS;
|
int zr = SUCCESS;
|
||||||
zval* temp = NULL;
|
zval* temp = NULL;
|
||||||
SQLRETURN r = SQL_SUCCESS;
|
SQLRETURN r = SQL_SUCCESS;
|
||||||
SQLINTEGER sqlstate_len = SQL_SQLSTATE_BUFSIZE * sizeof( wchar_t );
|
|
||||||
SQLSMALLINT wmessage_len = 0;
|
SQLSMALLINT wmessage_len = 0;
|
||||||
SQLINTEGER message_len = 0;
|
|
||||||
SQLWCHAR wsqlstate[ SQL_SQLSTATE_BUFSIZE ];
|
SQLWCHAR wsqlstate[ SQL_SQLSTATE_BUFSIZE ];
|
||||||
SQLWCHAR wnative_message[ SQL_MAX_MESSAGE_LENGTH + 1 ];
|
SQLWCHAR wnative_message[ SQL_MAX_MESSAGE_LENGTH + 1 ];
|
||||||
SQLSRV_ENCODING enc = ctx.encoding();
|
SQLSRV_ENCODING enc = ctx.encoding();
|
||||||
|
@ -200,13 +220,11 @@ bool core_sqlsrv_get_odbc_error( sqlsrv_context& ctx, int record_number, sqlsrv_
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
error->sqlstate = reinterpret_cast<SQLCHAR*>( wsqlstate );
|
SQLINTEGER sqlstate_len = 0;
|
||||||
convert_string_from_utf16( enc, reinterpret_cast<char**>( &error->sqlstate ), sqlstate_len,
|
convert_string_from_utf16(enc, wsqlstate, sizeof(wsqlstate), (char**)&error->sqlstate, sqlstate_len);
|
||||||
false /*no free*/ );
|
|
||||||
error->native_message = reinterpret_cast<SQLCHAR*>( wnative_message );
|
SQLINTEGER message_len = 0;
|
||||||
message_len = wmessage_len * sizeof( wchar_t );
|
convert_string_from_utf16(enc, wnative_message, wmessage_len, (char**)&error->native_message, message_len);
|
||||||
convert_string_from_utf16( enc, reinterpret_cast<char**>( &error->native_message ), message_len,
|
|
||||||
false /*no free*/ );
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
2343
sqlsrv/msodbcsql.h
Normal file
2343
sqlsrv/msodbcsql.h
Normal file
|
@ -0,0 +1,2343 @@
|
||||||
|
//-----------------------------------------------------------------------------
|
||||||
|
// File: msodbcsql.h
|
||||||
|
//
|
||||||
|
// Copyright: Copyright (c) Microsoft Corporation
|
||||||
|
//
|
||||||
|
// Contents: ODBC driver for SQL Server specific definitions.
|
||||||
|
//
|
||||||
|
//-----------------------------------------------------------------------------
|
||||||
|
#ifndef __msodbcsql_h__
|
||||||
|
#define __msodbcsql_h__
|
||||||
|
|
||||||
|
#if !defined(SQLODBC_VER)
|
||||||
|
#define SQLODBC_VER 1100
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if SQLODBC_VER >= 1100
|
||||||
|
|
||||||
|
#define SQLODBC_PRODUCT_NAME_FULL_VER_ANSI "Microsoft ODBC Driver 11 for SQL Server"
|
||||||
|
#define SQLODBC_PRODUCT_NAME_FULL_ANSI "Microsoft ODBC Driver for SQL Server"
|
||||||
|
#define SQLODBC_PRODUCT_NAME_SHORT_VER_ANSI "ODBC Driver 11 for SQL Server"
|
||||||
|
#define SQLODBC_PRODUCT_NAME_SHORT_ANSI "ODBC Driver for SQL Server"
|
||||||
|
|
||||||
|
#define SQLODBC_FILE_NAME_ANSI "msodbcsql"
|
||||||
|
#define SQLODBC_FILE_NAME_VER_ANSI "msodbcsql11"
|
||||||
|
#define SQLODBC_FILE_NAME_FULL_ANSI "msodbcsql11.dll"
|
||||||
|
|
||||||
|
#define SQLODBC_PRODUCT_NAME_FULL_VER_UNICODE L"Microsoft ODBC Driver 11 for SQL Server"
|
||||||
|
#define SQLODBC_PRODUCT_NAME_FULL_UNICODE L"Microsoft ODBC Driver for SQL Server"
|
||||||
|
#define SQLODBC_PRODUCT_NAME_SHORT_VER_UNICODE L"ODBC Driver 11 for SQL Server"
|
||||||
|
#define SQLODBC_PRODUCT_NAME_SHORT_UNICODE L"ODBC Driver for SQL Server"
|
||||||
|
|
||||||
|
#define SQLODBC_FILE_NAME_UNICODE L"msodbcsql"
|
||||||
|
#define SQLODBC_FILE_NAME_VER_UNICODE L"msodbcsql11"
|
||||||
|
#define SQLODBC_FILE_NAME_FULL_UNICODE L"msodbcsql11.dll"
|
||||||
|
|
||||||
|
// define the character type agnostic constants
|
||||||
|
#if defined(_UNICODE) || defined(UNICODE)
|
||||||
|
|
||||||
|
#define SQLODBC_PRODUCT_NAME_FULL_VER SQLODBC_PRODUCT_NAME_FULL_VER_UNICODE
|
||||||
|
#define SQLODBC_PRODUCT_NAME_FULL SQLODBC_PRODUCT_NAME_FULL_UNICODE
|
||||||
|
#define SQLODBC_PRODUCT_NAME_SHORT_VER SQLODBC_PRODUCT_NAME_SHORT_VER_UNICODE
|
||||||
|
#define SQLODBC_PRODUCT_NAME_SHORT SQLODBC_PRODUCT_NAME_SHORT_UNICODE
|
||||||
|
|
||||||
|
#define SQLODBC_FILE_NAME SQLODBC_FILE_NAME_UNICODE
|
||||||
|
#define SQLODBC_FILE_NAME_VER SQLODBC_FILE_NAME_VER_UNICODE
|
||||||
|
#define SQLODBC_FILE_NAME_FULL SQLODBC_FILE_NAME_FULL_UNICODE
|
||||||
|
|
||||||
|
#else // _UNICODE || UNICODE
|
||||||
|
|
||||||
|
#define SQLODBC_PRODUCT_NAME_FULL_VER SQLODBC_PRODUCT_NAME_FULL_VER_ANSI
|
||||||
|
#define SQLODBC_PRODUCT_NAME_FULL SQLODBC_PRODUCT_NAME_FULL_ANSI
|
||||||
|
#define SQLODBC_PRODUCT_NAME_SHORT_VER SQLODBC_PRODUCT_NAME_SHORT_VER_ANSI
|
||||||
|
#define SQLODBC_PRODUCT_NAME_SHORT SQLODBC_PRODUCT_NAME_SHORT_ANSI
|
||||||
|
|
||||||
|
#define SQLODBC_FILE_NAME SQLODBC_FILE_NAME_ANSI
|
||||||
|
#define SQLODBC_FILE_NAME_VER SQLODBC_FILE_NAME_VER_ANSI
|
||||||
|
#define SQLODBC_FILE_NAME_FULL SQLODBC_FILE_NAME_FULL_ANSI
|
||||||
|
|
||||||
|
#endif // _UNICODE || UNICODE
|
||||||
|
|
||||||
|
#define SQLODBC_DRIVER_NAME SQLODBC_PRODUCT_NAME_SHORT_VER
|
||||||
|
|
||||||
|
#endif // SQLODBC_VER
|
||||||
|
|
||||||
|
#ifndef __sqlncli_h__
|
||||||
|
|
||||||
|
#if !defined(SQLNCLI_VER)
|
||||||
|
#define SQLNCLI_VER 1100
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if SQLNCLI_VER >= 1100
|
||||||
|
|
||||||
|
#define SQLNCLI_PRODUCT_NAME_FULL_VER_ANSI "Microsoft SQL Server Native Client 11.0"
|
||||||
|
#define SQLNCLI_PRODUCT_NAME_FULL_ANSI "Microsoft SQL Server Native Client"
|
||||||
|
#define SQLNCLI_PRODUCT_NAME_SHORT_VER_ANSI "SQL Server Native Client 11.0"
|
||||||
|
#define SQLNCLI_PRODUCT_NAME_SHORT_ANSI "SQL Server Native Client"
|
||||||
|
|
||||||
|
#define SQLNCLI_FILE_NAME_ANSI "sqlncli"
|
||||||
|
#define SQLNCLI_FILE_NAME_VER_ANSI "sqlncli11"
|
||||||
|
#define SQLNCLI_FILE_NAME_FULL_ANSI "sqlncli11.dll"
|
||||||
|
|
||||||
|
#define SQLNCLI_PRODUCT_NAME_FULL_VER_UNICODE L"Microsoft SQL Server Native Client 11.0"
|
||||||
|
#define SQLNCLI_PRODUCT_NAME_FULL_UNICODE L"Microsoft SQL Server Native Client"
|
||||||
|
#define SQLNCLI_PRODUCT_NAME_SHORT_VER_UNICODE L"SQL Server Native Client 11.0"
|
||||||
|
#define SQLNCLI_PRODUCT_NAME_SHORT_UNICODE L"SQL Server Native Client"
|
||||||
|
|
||||||
|
#define SQLNCLI_FILE_NAME_UNICODE L"sqlncli"
|
||||||
|
#define SQLNCLI_FILE_NAME_VER_UNICODE L"sqlncli11"
|
||||||
|
#define SQLNCLI_FILE_NAME_FULL_UNICODE L"sqlncli11.dll"
|
||||||
|
|
||||||
|
#elif SQLNCLI_VER >= 1000
|
||||||
|
|
||||||
|
#define SQLNCLI_PRODUCT_NAME_FULL_VER_ANSI "Microsoft SQL Server Native Client 10.0"
|
||||||
|
#define SQLNCLI_PRODUCT_NAME_FULL_ANSI "Microsoft SQL Server Native Client"
|
||||||
|
#define SQLNCLI_PRODUCT_NAME_SHORT_VER_ANSI "SQL Server Native Client 10.0"
|
||||||
|
#define SQLNCLI_PRODUCT_NAME_SHORT_ANSI "SQL Server Native Client"
|
||||||
|
|
||||||
|
#define SQLNCLI_FILE_NAME_ANSI "sqlncli"
|
||||||
|
#define SQLNCLI_FILE_NAME_VER_ANSI "sqlncli10"
|
||||||
|
#define SQLNCLI_FILE_NAME_FULL_ANSI "sqlncli10.dll"
|
||||||
|
|
||||||
|
#define SQLNCLI_PRODUCT_NAME_FULL_VER_UNICODE L"Microsoft SQL Server Native Client 10.0"
|
||||||
|
#define SQLNCLI_PRODUCT_NAME_FULL_UNICODE L"Microsoft SQL Server Native Client"
|
||||||
|
#define SQLNCLI_PRODUCT_NAME_SHORT_VER_UNICODE L"SQL Server Native Client 10.0"
|
||||||
|
#define SQLNCLI_PRODUCT_NAME_SHORT_UNICODE L"SQL Server Native Client"
|
||||||
|
|
||||||
|
#define SQLNCLI_FILE_NAME_UNICODE L"sqlncli"
|
||||||
|
#define SQLNCLI_FILE_NAME_VER_UNICODE L"sqlncli10"
|
||||||
|
#define SQLNCLI_FILE_NAME_FULL_UNICODE L"sqlncli10.dll"
|
||||||
|
|
||||||
|
#else
|
||||||
|
|
||||||
|
#define SQLNCLI_PRODUCT_NAME_FULL_VER_ANSI "Microsoft SQL Server Native Client"
|
||||||
|
#define SQLNCLI_PRODUCT_NAME_FULL_ANSI "Microsoft SQL Server Native Client"
|
||||||
|
#define SQLNCLI_PRODUCT_NAME_SHORT_VER_ANSI "SQL Native Client"
|
||||||
|
#define SQLNCLI_PRODUCT_NAME_SHORT_ANSI "SQL Native Client"
|
||||||
|
|
||||||
|
#define SQLNCLI_FILE_NAME_ANSI "sqlncli"
|
||||||
|
#define SQLNCLI_FILE_NAME_VER_ANSI "sqlncli"
|
||||||
|
#define SQLNCLI_FILE_NAME_FULL_ANSI "sqlncli.dll"
|
||||||
|
|
||||||
|
#define SQLNCLI_PRODUCT_NAME_FULL_VER_UNICODE L"Microsoft SQL Server Native Client"
|
||||||
|
#define SQLNCLI_PRODUCT_NAME_FULL_UNICODE L"Microsoft SQL Server Native Client"
|
||||||
|
#define SQLNCLI_PRODUCT_NAME_SHORT_VER_UNICODE L"SQL Native Client"
|
||||||
|
#define SQLNCLI_PRODUCT_NAME_SHORT_UNICODE L"SQL Native Client"
|
||||||
|
|
||||||
|
#define SQLNCLI_FILE_NAME_UNICODE L"sqlncli"
|
||||||
|
#define SQLNCLI_FILE_NAME_VER_UNICODE L"sqlncli"
|
||||||
|
#define SQLNCLI_FILE_NAME_FULL_UNICODE L"sqlncli.dll"
|
||||||
|
|
||||||
|
#endif // SQLNCLI_VER >= 1100
|
||||||
|
|
||||||
|
// define the character type agnostic constants
|
||||||
|
#if defined(_UNICODE) || defined(UNICODE)
|
||||||
|
|
||||||
|
#define SQLNCLI_PRODUCT_NAME_FULL_VER SQLNCLI_PRODUCT_NAME_FULL_VER_UNICODE
|
||||||
|
#define SQLNCLI_PRODUCT_NAME_FULL SQLNCLI_PRODUCT_NAME_FULL_UNICODE
|
||||||
|
#define SQLNCLI_PRODUCT_NAME_SHORT_VER SQLNCLI_PRODUCT_NAME_SHORT_VER_UNICODE
|
||||||
|
#define SQLNCLI_PRODUCT_NAME_SHORT SQLNCLI_PRODUCT_NAME_SHORT_UNICODE
|
||||||
|
|
||||||
|
#define SQLNCLI_FILE_NAME SQLNCLI_FILE_NAME_UNICODE
|
||||||
|
#define SQLNCLI_FILE_NAME_VER SQLNCLI_FILE_NAME_VER_UNICODE
|
||||||
|
#define SQLNCLI_FILE_NAME_FULL SQLNCLI_FILE_NAME_FULL_UNICODE
|
||||||
|
|
||||||
|
|
||||||
|
#else // _UNICODE || UNICODE
|
||||||
|
|
||||||
|
#define SQLNCLI_PRODUCT_NAME_FULL_VER SQLNCLI_PRODUCT_NAME_FULL_VER_ANSI
|
||||||
|
#define SQLNCLI_PRODUCT_NAME_FULL SQLNCLI_PRODUCT_NAME_FULL_ANSI
|
||||||
|
#define SQLNCLI_PRODUCT_NAME_SHORT_VER SQLNCLI_PRODUCT_NAME_SHORT_VER_ANSI
|
||||||
|
#define SQLNCLI_PRODUCT_NAME_SHORT SQLNCLI_PRODUCT_NAME_SHORT_ANSI
|
||||||
|
|
||||||
|
#define SQLNCLI_FILE_NAME SQLNCLI_FILE_NAME_ANSI
|
||||||
|
#define SQLNCLI_FILE_NAME_VER SQLNCLI_FILE_NAME_VER_ANSI
|
||||||
|
#define SQLNCLI_FILE_NAME_FULL SQLNCLI_FILE_NAME_FULL_ANSI
|
||||||
|
|
||||||
|
#endif // _UNICODE || UNICODE
|
||||||
|
|
||||||
|
#define SQLNCLI_DRIVER_NAME SQLNCLI_PRODUCT_NAME_SHORT_VER
|
||||||
|
|
||||||
|
|
||||||
|
#ifdef ODBCVER
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
extern "C" {
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// max SQL Server identifier length
|
||||||
|
#define SQL_MAX_SQLSERVERNAME 128
|
||||||
|
|
||||||
|
// SQLSetConnectAttr driver specific defines.
|
||||||
|
// Microsoft has 1200 thru 1249 reserved for Microsoft SQL Server Native Client driver usage.
|
||||||
|
// Connection attributes
|
||||||
|
#define SQL_COPT_SS_BASE 1200
|
||||||
|
#define SQL_COPT_SS_REMOTE_PWD (SQL_COPT_SS_BASE+1) // dbrpwset SQLSetConnectOption only
|
||||||
|
#define SQL_COPT_SS_USE_PROC_FOR_PREP (SQL_COPT_SS_BASE+2) // Use create proc for SQLPrepare
|
||||||
|
#define SQL_COPT_SS_INTEGRATED_SECURITY (SQL_COPT_SS_BASE+3) // Force integrated security on login
|
||||||
|
#define SQL_COPT_SS_PRESERVE_CURSORS (SQL_COPT_SS_BASE+4) // Preserve server cursors after SQLTransact
|
||||||
|
#define SQL_COPT_SS_USER_DATA (SQL_COPT_SS_BASE+5) // dbgetuserdata/dbsetuserdata
|
||||||
|
#define SQL_COPT_SS_ENLIST_IN_DTC SQL_ATTR_ENLIST_IN_DTC // Enlist in a DTC transaction
|
||||||
|
#define SQL_COPT_SS_ENLIST_IN_XA SQL_ATTR_ENLIST_IN_XA // Enlist in a XA transaction
|
||||||
|
#define SQL_COPT_SS_FALLBACK_CONNECT (SQL_COPT_SS_BASE+10) // Enables FallBack connections
|
||||||
|
#define SQL_COPT_SS_PERF_DATA (SQL_COPT_SS_BASE+11) // Used to access SQL Server ODBC driver performance data
|
||||||
|
#define SQL_COPT_SS_PERF_DATA_LOG (SQL_COPT_SS_BASE+12) // Used to set the logfile name for the Performance data
|
||||||
|
#define SQL_COPT_SS_PERF_QUERY_INTERVAL (SQL_COPT_SS_BASE+13) // Used to set the query logging threshold in milliseconds.
|
||||||
|
#define SQL_COPT_SS_PERF_QUERY_LOG (SQL_COPT_SS_BASE+14) // Used to set the logfile name for saving queryies.
|
||||||
|
#define SQL_COPT_SS_PERF_QUERY (SQL_COPT_SS_BASE+15) // Used to start and stop query logging.
|
||||||
|
#define SQL_COPT_SS_PERF_DATA_LOG_NOW (SQL_COPT_SS_BASE+16) // Used to make a statistics log entry to disk.
|
||||||
|
#define SQL_COPT_SS_QUOTED_IDENT (SQL_COPT_SS_BASE+17) // Enable/Disable Quoted Identifiers
|
||||||
|
#define SQL_COPT_SS_ANSI_NPW (SQL_COPT_SS_BASE+18) // Enable/Disable ANSI NULL, Padding and Warnings
|
||||||
|
#define SQL_COPT_SS_BCP (SQL_COPT_SS_BASE+19) // Allow BCP usage on connection
|
||||||
|
#define SQL_COPT_SS_TRANSLATE (SQL_COPT_SS_BASE+20) // Perform code page translation
|
||||||
|
#define SQL_COPT_SS_ATTACHDBFILENAME (SQL_COPT_SS_BASE+21) // File name to be attached as a database
|
||||||
|
#define SQL_COPT_SS_CONCAT_NULL (SQL_COPT_SS_BASE+22) // Enable/Disable CONCAT_NULL_YIELDS_NULL
|
||||||
|
#define SQL_COPT_SS_ENCRYPT (SQL_COPT_SS_BASE+23) // Allow strong encryption for data
|
||||||
|
#define SQL_COPT_SS_MARS_ENABLED (SQL_COPT_SS_BASE+24) // Multiple active result set per connection
|
||||||
|
#define SQL_COPT_SS_FAILOVER_PARTNER (SQL_COPT_SS_BASE+25) // Failover partner server
|
||||||
|
#define SQL_COPT_SS_OLDPWD (SQL_COPT_SS_BASE+26) // Old Password, used when changing password during login
|
||||||
|
#define SQL_COPT_SS_TXN_ISOLATION (SQL_COPT_SS_BASE+27) // Used to set/get any driver-specific or ODBC-defined TXN iso level
|
||||||
|
#define SQL_COPT_SS_TRUST_SERVER_CERTIFICATE (SQL_COPT_SS_BASE+28) // Trust server certificate
|
||||||
|
#define SQL_COPT_SS_SERVER_SPN (SQL_COPT_SS_BASE+29) // Server SPN
|
||||||
|
#define SQL_COPT_SS_FAILOVER_PARTNER_SPN (SQL_COPT_SS_BASE+30) // Failover partner server SPN
|
||||||
|
#define SQL_COPT_SS_INTEGRATED_AUTHENTICATION_METHOD (SQL_COPT_SS_BASE+31) // The integrated authentication method used for the connection
|
||||||
|
#define SQL_COPT_SS_MUTUALLY_AUTHENTICATED (SQL_COPT_SS_BASE+32) // Used to decide if the connection is mutually authenticated
|
||||||
|
#define SQL_COPT_SS_CLIENT_CONNECTION_ID (SQL_COPT_SS_BASE+33) // Post connection attribute used to get the ConnectionID
|
||||||
|
// Define old names
|
||||||
|
#define SQL_REMOTE_PWD SQL_COPT_SS_REMOTE_PWD
|
||||||
|
#define SQL_USE_PROCEDURE_FOR_PREPARE SQL_COPT_SS_USE_PROC_FOR_PREP
|
||||||
|
#define SQL_INTEGRATED_SECURITY SQL_COPT_SS_INTEGRATED_SECURITY
|
||||||
|
#define SQL_PRESERVE_CURSORS SQL_COPT_SS_PRESERVE_CURSORS
|
||||||
|
|
||||||
|
// SQLSetStmtAttr SQL Server Native Client driver specific defines.
|
||||||
|
// Statement attributes
|
||||||
|
#define SQL_SOPT_SS_BASE 1225
|
||||||
|
#define SQL_SOPT_SS_TEXTPTR_LOGGING (SQL_SOPT_SS_BASE+0) // Text pointer logging
|
||||||
|
#define SQL_SOPT_SS_CURRENT_COMMAND (SQL_SOPT_SS_BASE+1) // dbcurcmd SQLGetStmtOption only
|
||||||
|
#define SQL_SOPT_SS_HIDDEN_COLUMNS (SQL_SOPT_SS_BASE+2) // Expose FOR BROWSE hidden columns
|
||||||
|
#define SQL_SOPT_SS_NOBROWSETABLE (SQL_SOPT_SS_BASE+3) // Set NOBROWSETABLE option
|
||||||
|
#define SQL_SOPT_SS_REGIONALIZE (SQL_SOPT_SS_BASE+4) // Regionalize output character conversions
|
||||||
|
#define SQL_SOPT_SS_CURSOR_OPTIONS (SQL_SOPT_SS_BASE+5) // Server cursor options
|
||||||
|
#define SQL_SOPT_SS_NOCOUNT_STATUS (SQL_SOPT_SS_BASE+6) // Real vs. Not Real row count indicator
|
||||||
|
#define SQL_SOPT_SS_DEFER_PREPARE (SQL_SOPT_SS_BASE+7) // Defer prepare until necessary
|
||||||
|
#define SQL_SOPT_SS_QUERYNOTIFICATION_TIMEOUT (SQL_SOPT_SS_BASE+8) // Notification timeout
|
||||||
|
#define SQL_SOPT_SS_QUERYNOTIFICATION_MSGTEXT (SQL_SOPT_SS_BASE+9) // Notification message text
|
||||||
|
#define SQL_SOPT_SS_QUERYNOTIFICATION_OPTIONS (SQL_SOPT_SS_BASE+10)// SQL service broker name
|
||||||
|
#define SQL_SOPT_SS_PARAM_FOCUS (SQL_SOPT_SS_BASE+11)// Direct subsequent calls to parameter related methods to set properties on constituent columns/parameters of container types
|
||||||
|
#define SQL_SOPT_SS_NAME_SCOPE (SQL_SOPT_SS_BASE+12)// Sets name scope for subsequent catalog function calls
|
||||||
|
#define SQL_SOPT_SS_MAX_USED SQL_SOPT_SS_NAME_SCOPE
|
||||||
|
// Define old names
|
||||||
|
#define SQL_TEXTPTR_LOGGING SQL_SOPT_SS_TEXTPTR_LOGGING
|
||||||
|
#define SQL_COPT_SS_BASE_EX 1240
|
||||||
|
#define SQL_COPT_SS_BROWSE_CONNECT (SQL_COPT_SS_BASE_EX+1) // Browse connect mode of operation
|
||||||
|
#define SQL_COPT_SS_BROWSE_SERVER (SQL_COPT_SS_BASE_EX+2) // Single Server browse request.
|
||||||
|
#define SQL_COPT_SS_WARN_ON_CP_ERROR (SQL_COPT_SS_BASE_EX+3) // Issues warning when data from the server had a loss during code page conversion.
|
||||||
|
#define SQL_COPT_SS_CONNECTION_DEAD (SQL_COPT_SS_BASE_EX+4) // dbdead SQLGetConnectOption only. It will try to ping the server. Expensive connection check
|
||||||
|
#define SQL_COPT_SS_BROWSE_CACHE_DATA (SQL_COPT_SS_BASE_EX+5) // Determines if we should cache browse info. Used when returned buffer is greater then ODBC limit (32K)
|
||||||
|
#define SQL_COPT_SS_RESET_CONNECTION (SQL_COPT_SS_BASE_EX+6) // When this option is set, we will perform connection reset on next packet
|
||||||
|
#define SQL_COPT_SS_APPLICATION_INTENT (SQL_COPT_SS_BASE_EX+7) // Application Intent
|
||||||
|
#define SQL_COPT_SS_MULTISUBNET_FAILOVER (SQL_COPT_SS_BASE_EX+8) // Multi-subnet Failover
|
||||||
|
#define SQL_COPT_SS_EX_MAX_USED SQL_COPT_SS_MULTISUBNET_FAILOVER
|
||||||
|
|
||||||
|
// SQLColAttributes driver specific defines.
|
||||||
|
// SQLSetDescField/SQLGetDescField driver specific defines.
|
||||||
|
// Microsoft has 1200 thru 1249 reserved for Microsoft SQL Server Native Client driver usage.
|
||||||
|
#define SQL_CA_SS_BASE 1200
|
||||||
|
#define SQL_CA_SS_COLUMN_SSTYPE (SQL_CA_SS_BASE+0) // dbcoltype/dbalttype
|
||||||
|
#define SQL_CA_SS_COLUMN_UTYPE (SQL_CA_SS_BASE+1) // dbcolutype/dbaltutype
|
||||||
|
#define SQL_CA_SS_NUM_ORDERS (SQL_CA_SS_BASE+2) // dbnumorders
|
||||||
|
#define SQL_CA_SS_COLUMN_ORDER (SQL_CA_SS_BASE+3) // dbordercol
|
||||||
|
#define SQL_CA_SS_COLUMN_VARYLEN (SQL_CA_SS_BASE+4) // dbvarylen
|
||||||
|
#define SQL_CA_SS_NUM_COMPUTES (SQL_CA_SS_BASE+5) // dbnumcompute
|
||||||
|
#define SQL_CA_SS_COMPUTE_ID (SQL_CA_SS_BASE+6) // dbnextrow status return
|
||||||
|
#define SQL_CA_SS_COMPUTE_BYLIST (SQL_CA_SS_BASE+7) // dbbylist
|
||||||
|
#define SQL_CA_SS_COLUMN_ID (SQL_CA_SS_BASE+8) // dbaltcolid
|
||||||
|
#define SQL_CA_SS_COLUMN_OP (SQL_CA_SS_BASE+9) // dbaltop
|
||||||
|
#define SQL_CA_SS_COLUMN_SIZE (SQL_CA_SS_BASE+10) // dbcollen
|
||||||
|
#define SQL_CA_SS_COLUMN_HIDDEN (SQL_CA_SS_BASE+11) // Column is hidden (FOR BROWSE)
|
||||||
|
#define SQL_CA_SS_COLUMN_KEY (SQL_CA_SS_BASE+12) // Column is key column (FOR BROWSE)
|
||||||
|
//#define SQL_DESC_BASE_COLUMN_NAME_OLD (SQL_CA_SS_BASE+13) // This is defined at another location.
|
||||||
|
#define SQL_CA_SS_COLUMN_COLLATION (SQL_CA_SS_BASE+14) // Column collation (only for chars)
|
||||||
|
#define SQL_CA_SS_VARIANT_TYPE (SQL_CA_SS_BASE+15)
|
||||||
|
#define SQL_CA_SS_VARIANT_SQL_TYPE (SQL_CA_SS_BASE+16)
|
||||||
|
#define SQL_CA_SS_VARIANT_SERVER_TYPE (SQL_CA_SS_BASE+17)
|
||||||
|
|
||||||
|
// XML, CLR UDT, and table valued parameter related metadata
|
||||||
|
#define SQL_CA_SS_UDT_CATALOG_NAME (SQL_CA_SS_BASE+18) // UDT catalog name
|
||||||
|
#define SQL_CA_SS_UDT_SCHEMA_NAME (SQL_CA_SS_BASE+19) // UDT schema name
|
||||||
|
#define SQL_CA_SS_UDT_TYPE_NAME (SQL_CA_SS_BASE+20) // UDT type name
|
||||||
|
#define SQL_CA_SS_UDT_ASSEMBLY_TYPE_NAME (SQL_CA_SS_BASE+21) // Qualified name of the assembly containing the UDT class
|
||||||
|
#define SQL_CA_SS_XML_SCHEMACOLLECTION_CATALOG_NAME (SQL_CA_SS_BASE+22) // Name of the catalog that contains XML Schema collection
|
||||||
|
#define SQL_CA_SS_XML_SCHEMACOLLECTION_SCHEMA_NAME (SQL_CA_SS_BASE+23) // Name of the schema that contains XML Schema collection
|
||||||
|
#define SQL_CA_SS_XML_SCHEMACOLLECTION_NAME (SQL_CA_SS_BASE+24) // Name of the XML Schema collection
|
||||||
|
#define SQL_CA_SS_CATALOG_NAME (SQL_CA_SS_BASE+25) // Catalog name
|
||||||
|
#define SQL_CA_SS_SCHEMA_NAME (SQL_CA_SS_BASE+26) // Schema name
|
||||||
|
#define SQL_CA_SS_TYPE_NAME (SQL_CA_SS_BASE+27) // Type name
|
||||||
|
|
||||||
|
// table valued parameter related metadata
|
||||||
|
#define SQL_CA_SS_COLUMN_COMPUTED (SQL_CA_SS_BASE+29) // column is computed
|
||||||
|
#define SQL_CA_SS_COLUMN_IN_UNIQUE_KEY (SQL_CA_SS_BASE+30) // column is part of a unique key
|
||||||
|
#define SQL_CA_SS_COLUMN_SORT_ORDER (SQL_CA_SS_BASE+31) // column sort order
|
||||||
|
#define SQL_CA_SS_COLUMN_SORT_ORDINAL (SQL_CA_SS_BASE+32) // column sort ordinal
|
||||||
|
#define SQL_CA_SS_COLUMN_HAS_DEFAULT_VALUE (SQL_CA_SS_BASE+33) // column has default value for all rows of the table valued parameter
|
||||||
|
|
||||||
|
// sparse column related metadata
|
||||||
|
#define SQL_CA_SS_IS_COLUMN_SET (SQL_CA_SS_BASE+34) // column is a column-set column for sparse columns
|
||||||
|
|
||||||
|
// Legacy datetime related metadata
|
||||||
|
#define SQL_CA_SS_SERVER_TYPE (SQL_CA_SS_BASE+35) // column type to send on the wire for datetime types
|
||||||
|
|
||||||
|
#define SQL_CA_SS_MAX_USED (SQL_CA_SS_BASE+36)
|
||||||
|
|
||||||
|
// Defines returned by SQL_ATTR_CURSOR_TYPE/SQL_CURSOR_TYPE
|
||||||
|
#define SQL_CURSOR_FAST_FORWARD_ONLY 8 // Only returned by SQLGetStmtAttr/Option
|
||||||
|
// Defines for use with SQL_COPT_SS_USE_PROC_FOR_PREP
|
||||||
|
#define SQL_UP_OFF 0L // Procedures won't be used for prepare
|
||||||
|
#define SQL_UP_ON 1L // Procedures will be used for prepare
|
||||||
|
#define SQL_UP_ON_DROP 2L // Temp procedures will be explicitly dropped
|
||||||
|
#define SQL_UP_DEFAULT SQL_UP_ON
|
||||||
|
// Defines for use with SQL_COPT_SS_INTEGRATED_SECURITY - Pre-Connect Option only
|
||||||
|
#define SQL_IS_OFF 0L // Integrated security isn't used
|
||||||
|
#define SQL_IS_ON 1L // Integrated security is used
|
||||||
|
#define SQL_IS_DEFAULT SQL_IS_OFF
|
||||||
|
// Defines for use with SQL_COPT_SS_PRESERVE_CURSORS
|
||||||
|
#define SQL_PC_OFF 0L // Cursors are closed on SQLTransact
|
||||||
|
#define SQL_PC_ON 1L // Cursors remain open on SQLTransact
|
||||||
|
#define SQL_PC_DEFAULT SQL_PC_OFF
|
||||||
|
// Defines for use with SQL_COPT_SS_USER_DATA
|
||||||
|
#define SQL_UD_NOTSET NULL // No user data pointer set
|
||||||
|
// Defines for use with SQL_COPT_SS_TRANSLATE
|
||||||
|
#define SQL_XL_OFF 0L // Code page translation is not performed
|
||||||
|
#define SQL_XL_ON 1L // Code page translation is performed
|
||||||
|
#define SQL_XL_DEFAULT SQL_XL_ON
|
||||||
|
// Defines for use with SQL_COPT_SS_FALLBACK_CONNECT - Pre-Connect Option only
|
||||||
|
#define SQL_FB_OFF 0L // FallBack connections are disabled
|
||||||
|
#define SQL_FB_ON 1L // FallBack connections are enabled
|
||||||
|
#define SQL_FB_DEFAULT SQL_FB_OFF
|
||||||
|
// Defines for use with SQL_COPT_SS_BCP - Pre-Connect Option only
|
||||||
|
#define SQL_BCP_OFF 0L // BCP is not allowed on connection
|
||||||
|
#define SQL_BCP_ON 1L // BCP is allowed on connection
|
||||||
|
#define SQL_BCP_DEFAULT SQL_BCP_OFF
|
||||||
|
// Defines for use with SQL_COPT_SS_QUOTED_IDENT
|
||||||
|
#define SQL_QI_OFF 0L // Quoted identifiers are enable
|
||||||
|
#define SQL_QI_ON 1L // Quoted identifiers are disabled
|
||||||
|
#define SQL_QI_DEFAULT SQL_QI_ON
|
||||||
|
// Defines for use with SQL_COPT_SS_ANSI_NPW - Pre-Connect Option only
|
||||||
|
#define SQL_AD_OFF 0L // ANSI NULLs, Padding and Warnings are enabled
|
||||||
|
#define SQL_AD_ON 1L // ANSI NULLs, Padding and Warnings are disabled
|
||||||
|
#define SQL_AD_DEFAULT SQL_AD_ON
|
||||||
|
// Defines for use with SQL_COPT_SS_CONCAT_NULL - Pre-Connect Option only
|
||||||
|
#define SQL_CN_OFF 0L // CONCAT_NULL_YIELDS_NULL is off
|
||||||
|
#define SQL_CN_ON 1L // CONCAT_NULL_YIELDS_NULL is on
|
||||||
|
#define SQL_CN_DEFAULT SQL_CN_ON
|
||||||
|
// Defines for use with SQL_SOPT_SS_TEXTPTR_LOGGING
|
||||||
|
#define SQL_TL_OFF 0L // No logging on text pointer ops
|
||||||
|
#define SQL_TL_ON 1L // Logging occurs on text pointer ops
|
||||||
|
#define SQL_TL_DEFAULT SQL_TL_ON
|
||||||
|
// Defines for use with SQL_SOPT_SS_HIDDEN_COLUMNS
|
||||||
|
#define SQL_HC_OFF 0L // FOR BROWSE columns are hidden
|
||||||
|
#define SQL_HC_ON 1L // FOR BROWSE columns are exposed
|
||||||
|
#define SQL_HC_DEFAULT SQL_HC_OFF
|
||||||
|
// Defines for use with SQL_SOPT_SS_NOBROWSETABLE
|
||||||
|
#define SQL_NB_OFF 0L // NO_BROWSETABLE is off
|
||||||
|
#define SQL_NB_ON 1L // NO_BROWSETABLE is on
|
||||||
|
#define SQL_NB_DEFAULT SQL_NB_OFF
|
||||||
|
// Defines for use with SQL_SOPT_SS_REGIONALIZE
|
||||||
|
#define SQL_RE_OFF 0L // No regionalization occurs on output character conversions
|
||||||
|
#define SQL_RE_ON 1L // Regionalization occurs on output character conversions
|
||||||
|
#define SQL_RE_DEFAULT SQL_RE_OFF
|
||||||
|
// Defines for use with SQL_SOPT_SS_CURSOR_OPTIONS
|
||||||
|
#define SQL_CO_OFF 0L // Clear all cursor options
|
||||||
|
#define SQL_CO_FFO 1L // Fast-forward cursor will be used
|
||||||
|
#define SQL_CO_AF 2L // Autofetch on cursor open
|
||||||
|
#define SQL_CO_FFO_AF (SQL_CO_FFO|SQL_CO_AF) // Fast-forward cursor with autofetch
|
||||||
|
#define SQL_CO_FIREHOSE_AF 4L // Auto fetch on fire-hose cursors
|
||||||
|
#define SQL_CO_DEFAULT SQL_CO_OFF
|
||||||
|
//SQL_SOPT_SS_NOCOUNT_STATUS
|
||||||
|
#define SQL_NC_OFF 0L
|
||||||
|
#define SQL_NC_ON 1L
|
||||||
|
//SQL_SOPT_SS_DEFER_PREPARE
|
||||||
|
#define SQL_DP_OFF 0L
|
||||||
|
#define SQL_DP_ON 1L
|
||||||
|
//SQL_SOPT_SS_NAME_SCOPE
|
||||||
|
#define SQL_SS_NAME_SCOPE_TABLE 0L
|
||||||
|
#define SQL_SS_NAME_SCOPE_TABLE_TYPE 1L
|
||||||
|
#define SQL_SS_NAME_SCOPE_EXTENDED 2L
|
||||||
|
#define SQL_SS_NAME_SCOPE_SPARSE_COLUMN_SET 3L
|
||||||
|
#define SQL_SS_NAME_SCOPE_DEFAULT SQL_SS_NAME_SCOPE_TABLE
|
||||||
|
//SQL_COPT_SS_ENCRYPT
|
||||||
|
#define SQL_EN_OFF 0L
|
||||||
|
#define SQL_EN_ON 1L
|
||||||
|
//SQL_COPT_SS_TRUST_SERVER_CERTIFICATE
|
||||||
|
#define SQL_TRUST_SERVER_CERTIFICATE_NO 0L
|
||||||
|
#define SQL_TRUST_SERVER_CERTIFICATE_YES 1L
|
||||||
|
//SQL_COPT_SS_BROWSE_CONNECT
|
||||||
|
#define SQL_MORE_INFO_NO 0L
|
||||||
|
#define SQL_MORE_INFO_YES 1L
|
||||||
|
//SQL_COPT_SS_BROWSE_CACHE_DATA
|
||||||
|
#define SQL_CACHE_DATA_NO 0L
|
||||||
|
#define SQL_CACHE_DATA_YES 1L
|
||||||
|
//SQL_COPT_SS_RESET_CONNECTION
|
||||||
|
#define SQL_RESET_YES 1L
|
||||||
|
//SQL_COPT_SS_WARN_ON_CP_ERROR
|
||||||
|
#define SQL_WARN_NO 0L
|
||||||
|
#define SQL_WARN_YES 1L
|
||||||
|
//SQL_COPT_SS_MARS_ENABLED
|
||||||
|
#define SQL_MARS_ENABLED_NO 0L
|
||||||
|
#define SQL_MARS_ENABLED_YES 1L
|
||||||
|
/* SQL_TXN_ISOLATION_OPTION bitmasks */
|
||||||
|
#define SQL_TXN_SS_SNAPSHOT 0x00000020L
|
||||||
|
|
||||||
|
// The following are defines for SQL_CA_SS_COLUMN_SORT_ORDER
|
||||||
|
#define SQL_SS_ORDER_UNSPECIFIED 0L
|
||||||
|
#define SQL_SS_DESCENDING_ORDER 1L
|
||||||
|
#define SQL_SS_ASCENDING_ORDER 2L
|
||||||
|
#define SQL_SS_ORDER_DEFAULT SQL_SS_ORDER_UNSPECIFIED
|
||||||
|
|
||||||
|
// Driver specific SQL data type defines.
|
||||||
|
// Microsoft has -150 thru -199 reserved for Microsoft SQL Server Native Client driver usage.
|
||||||
|
#define SQL_SS_VARIANT (-150)
|
||||||
|
#define SQL_SS_UDT (-151)
|
||||||
|
#define SQL_SS_XML (-152)
|
||||||
|
#define SQL_SS_TABLE (-153)
|
||||||
|
#define SQL_SS_TIME2 (-154)
|
||||||
|
#define SQL_SS_TIMESTAMPOFFSET (-155)
|
||||||
|
|
||||||
|
// Local types to be used with SQL_CA_SS_SERVER_TYPE
|
||||||
|
#define SQL_SS_TYPE_DEFAULT 0L
|
||||||
|
#define SQL_SS_TYPE_SMALLDATETIME 1L
|
||||||
|
#define SQL_SS_TYPE_DATETIME 2L
|
||||||
|
|
||||||
|
// Extended C Types range 4000 and above. Range of -100 thru 200 is reserved by Driver Manager.
|
||||||
|
#define SQL_C_TYPES_EXTENDED 0x04000L
|
||||||
|
#define SQL_C_SS_TIME2 (SQL_C_TYPES_EXTENDED+0)
|
||||||
|
#define SQL_C_SS_TIMESTAMPOFFSET (SQL_C_TYPES_EXTENDED+1)
|
||||||
|
|
||||||
|
#ifndef SQLNCLI_NO_BCP
|
||||||
|
// Define the symbol SQLNCLI_NO_BCP if you are not using BCP in your application
|
||||||
|
// and you want to exclude the BCP-related definitions in this header file.
|
||||||
|
|
||||||
|
// SQL Server Data Type defines.
|
||||||
|
// New types for SQL 6.0 and later servers
|
||||||
|
#define SQLTEXT 0x23
|
||||||
|
#define SQLVARBINARY 0x25
|
||||||
|
#define SQLINTN 0x26
|
||||||
|
#define SQLVARCHAR 0x27
|
||||||
|
#define SQLBINARY 0x2d
|
||||||
|
#define SQLIMAGE 0x22
|
||||||
|
#define SQLCHARACTER 0x2f
|
||||||
|
#define SQLINT1 0x30
|
||||||
|
#define SQLBIT 0x32
|
||||||
|
#define SQLINT2 0x34
|
||||||
|
#define SQLINT4 0x38
|
||||||
|
#define SQLMONEY 0x3c
|
||||||
|
#define SQLDATETIME 0x3d
|
||||||
|
#define SQLFLT8 0x3e
|
||||||
|
#define SQLFLTN 0x6d
|
||||||
|
#define SQLMONEYN 0x6e
|
||||||
|
#define SQLDATETIMN 0x6f
|
||||||
|
#define SQLFLT4 0x3b
|
||||||
|
#define SQLMONEY4 0x7a
|
||||||
|
#define SQLDATETIM4 0x3a
|
||||||
|
// New types for SQL 6.0 and later servers
|
||||||
|
#define SQLDECIMAL 0x6a
|
||||||
|
#define SQLNUMERIC 0x6c
|
||||||
|
// New types for SQL 7.0 and later servers
|
||||||
|
#define SQLUNIQUEID 0x24
|
||||||
|
#define SQLBIGCHAR 0xaf
|
||||||
|
#define SQLBIGVARCHAR 0xa7
|
||||||
|
#define SQLBIGBINARY 0xad
|
||||||
|
#define SQLBIGVARBINARY 0xa5
|
||||||
|
#define SQLBITN 0x68
|
||||||
|
#define SQLNCHAR 0xef
|
||||||
|
#define SQLNVARCHAR 0xe7
|
||||||
|
#define SQLNTEXT 0x63
|
||||||
|
// New types for SQL 2000 and later servers
|
||||||
|
#define SQLINT8 0x7f
|
||||||
|
#define SQLVARIANT 0x62
|
||||||
|
// New types for SQL 2005 and later servers
|
||||||
|
#define SQLUDT 0xf0
|
||||||
|
#define SQLXML 0xf1
|
||||||
|
// New types for SQL 2008 and later servers
|
||||||
|
#define SQLTABLE 0xf3
|
||||||
|
#define SQLDATEN 0x28
|
||||||
|
#define SQLTIMEN 0x29
|
||||||
|
#define SQLDATETIME2N 0x2a
|
||||||
|
#define SQLDATETIMEOFFSETN 0x2b
|
||||||
|
// Define old names
|
||||||
|
#define SQLDECIMALN 0x6a
|
||||||
|
#define SQLNUMERICN 0x6c
|
||||||
|
#endif // SQLNCLI_NO_BCP
|
||||||
|
|
||||||
|
// SQL_SS_LENGTH_UNLIMITED is used to describe the max length of
|
||||||
|
// VARCHAR(max), VARBINARY(max), NVARCHAR(max), and XML columns
|
||||||
|
#define SQL_SS_LENGTH_UNLIMITED 0
|
||||||
|
|
||||||
|
// User Data Type definitions.
|
||||||
|
// Returned by SQLColAttributes/SQL_CA_SS_COLUMN_UTYPE.
|
||||||
|
#define SQLudtBINARY 3
|
||||||
|
#define SQLudtBIT 16
|
||||||
|
#define SQLudtBITN 0
|
||||||
|
#define SQLudtCHAR 1
|
||||||
|
#define SQLudtDATETIM4 22
|
||||||
|
#define SQLudtDATETIME 12
|
||||||
|
#define SQLudtDATETIMN 15
|
||||||
|
#define SQLudtDECML 24
|
||||||
|
#define SQLudtDECMLN 26
|
||||||
|
#define SQLudtFLT4 23
|
||||||
|
#define SQLudtFLT8 8
|
||||||
|
#define SQLudtFLTN 14
|
||||||
|
#define SQLudtIMAGE 20
|
||||||
|
#define SQLudtINT1 5
|
||||||
|
#define SQLudtINT2 6
|
||||||
|
#define SQLudtINT4 7
|
||||||
|
#define SQLudtINTN 13
|
||||||
|
#define SQLudtMONEY 11
|
||||||
|
#define SQLudtMONEY4 21
|
||||||
|
#define SQLudtMONEYN 17
|
||||||
|
#define SQLudtNUM 10
|
||||||
|
#define SQLudtNUMN 25
|
||||||
|
#define SQLudtSYSNAME 18
|
||||||
|
#define SQLudtTEXT 19
|
||||||
|
#define SQLudtTIMESTAMP 80
|
||||||
|
#define SQLudtUNIQUEIDENTIFIER 0
|
||||||
|
#define SQLudtVARBINARY 4
|
||||||
|
#define SQLudtVARCHAR 2
|
||||||
|
#define MIN_USER_DATATYPE 256
|
||||||
|
// Aggregate operator types.
|
||||||
|
// Returned by SQLColAttributes/SQL_CA_SS_COLUMN_OP.
|
||||||
|
#define SQLAOPSTDEV 0x30 // Standard deviation
|
||||||
|
#define SQLAOPSTDEVP 0x31 // Standard deviation population
|
||||||
|
#define SQLAOPVAR 0x32 // Variance
|
||||||
|
#define SQLAOPVARP 0x33 // Variance population
|
||||||
|
#define SQLAOPCNT 0x4b // Count
|
||||||
|
#define SQLAOPSUM 0x4d // Sum
|
||||||
|
#define SQLAOPAVG 0x4f // Average
|
||||||
|
#define SQLAOPMIN 0x51 // Min
|
||||||
|
#define SQLAOPMAX 0x52 // Max
|
||||||
|
#define SQLAOPANY 0x53 // Any
|
||||||
|
#define SQLAOPNOOP 0x56 // None
|
||||||
|
// SQLGetInfo driver specific defines.
|
||||||
|
// Microsoft has 1151 thru 1200 reserved for Microsoft SQL Server Native Client driver usage.
|
||||||
|
#define SQL_INFO_SS_FIRST 1199
|
||||||
|
#define SQL_INFO_SS_NETLIB_NAMEW (SQL_INFO_SS_FIRST+0) // dbprocinfo
|
||||||
|
#define SQL_INFO_SS_NETLIB_NAMEA (SQL_INFO_SS_FIRST+1) // dbprocinfo
|
||||||
|
#define SQL_INFO_SS_MAX_USED SQL_INFO_SS_NETLIB_NAMEA
|
||||||
|
#ifdef UNICODE
|
||||||
|
#define SQL_INFO_SS_NETLIB_NAME SQL_INFO_SS_NETLIB_NAMEW
|
||||||
|
#else
|
||||||
|
#define SQL_INFO_SS_NETLIB_NAME SQL_INFO_SS_NETLIB_NAMEA
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// SQLGetDiagField driver specific defines.
|
||||||
|
// Microsoft has -1150 thru -1199 reserved for Microsoft SQL Server Native Client driver usage.
|
||||||
|
#define SQL_DIAG_SS_BASE (-1150)
|
||||||
|
#define SQL_DIAG_SS_MSGSTATE (SQL_DIAG_SS_BASE)
|
||||||
|
#define SQL_DIAG_SS_SEVERITY (SQL_DIAG_SS_BASE-1)
|
||||||
|
#define SQL_DIAG_SS_SRVNAME (SQL_DIAG_SS_BASE-2)
|
||||||
|
#define SQL_DIAG_SS_PROCNAME (SQL_DIAG_SS_BASE-3)
|
||||||
|
#define SQL_DIAG_SS_LINE (SQL_DIAG_SS_BASE-4)
|
||||||
|
// SQLGetDiagField/SQL_DIAG_DYNAMIC_FUNCTION_CODE driver specific defines.
|
||||||
|
// Microsoft has -200 thru -299 reserved for Microsoft SQL Server Native Client driver usage.
|
||||||
|
#define SQL_DIAG_DFC_SS_BASE (-200)
|
||||||
|
#define SQL_DIAG_DFC_SS_ALTER_DATABASE (SQL_DIAG_DFC_SS_BASE-0)
|
||||||
|
#define SQL_DIAG_DFC_SS_CHECKPOINT (SQL_DIAG_DFC_SS_BASE-1)
|
||||||
|
#define SQL_DIAG_DFC_SS_CONDITION (SQL_DIAG_DFC_SS_BASE-2)
|
||||||
|
#define SQL_DIAG_DFC_SS_CREATE_DATABASE (SQL_DIAG_DFC_SS_BASE-3)
|
||||||
|
#define SQL_DIAG_DFC_SS_CREATE_DEFAULT (SQL_DIAG_DFC_SS_BASE-4)
|
||||||
|
#define SQL_DIAG_DFC_SS_CREATE_PROCEDURE (SQL_DIAG_DFC_SS_BASE-5)
|
||||||
|
#define SQL_DIAG_DFC_SS_CREATE_RULE (SQL_DIAG_DFC_SS_BASE-6)
|
||||||
|
#define SQL_DIAG_DFC_SS_CREATE_TRIGGER (SQL_DIAG_DFC_SS_BASE-7)
|
||||||
|
#define SQL_DIAG_DFC_SS_CURSOR_DECLARE (SQL_DIAG_DFC_SS_BASE-8)
|
||||||
|
#define SQL_DIAG_DFC_SS_CURSOR_OPEN (SQL_DIAG_DFC_SS_BASE-9)
|
||||||
|
#define SQL_DIAG_DFC_SS_CURSOR_FETCH (SQL_DIAG_DFC_SS_BASE-10)
|
||||||
|
#define SQL_DIAG_DFC_SS_CURSOR_CLOSE (SQL_DIAG_DFC_SS_BASE-11)
|
||||||
|
#define SQL_DIAG_DFC_SS_DEALLOCATE_CURSOR (SQL_DIAG_DFC_SS_BASE-12)
|
||||||
|
#define SQL_DIAG_DFC_SS_DBCC (SQL_DIAG_DFC_SS_BASE-13)
|
||||||
|
#define SQL_DIAG_DFC_SS_DISK (SQL_DIAG_DFC_SS_BASE-14)
|
||||||
|
#define SQL_DIAG_DFC_SS_DROP_DATABASE (SQL_DIAG_DFC_SS_BASE-15)
|
||||||
|
#define SQL_DIAG_DFC_SS_DROP_DEFAULT (SQL_DIAG_DFC_SS_BASE-16)
|
||||||
|
#define SQL_DIAG_DFC_SS_DROP_PROCEDURE (SQL_DIAG_DFC_SS_BASE-17)
|
||||||
|
#define SQL_DIAG_DFC_SS_DROP_RULE (SQL_DIAG_DFC_SS_BASE-18)
|
||||||
|
#define SQL_DIAG_DFC_SS_DROP_TRIGGER (SQL_DIAG_DFC_SS_BASE-19)
|
||||||
|
#define SQL_DIAG_DFC_SS_DUMP_DATABASE (SQL_DIAG_DFC_SS_BASE-20)
|
||||||
|
#define SQL_DIAG_DFC_SS_BACKUP_DATABASE (SQL_DIAG_DFC_SS_BASE-20)
|
||||||
|
#define SQL_DIAG_DFC_SS_DUMP_TABLE (SQL_DIAG_DFC_SS_BASE-21)
|
||||||
|
#define SQL_DIAG_DFC_SS_DUMP_TRANSACTION (SQL_DIAG_DFC_SS_BASE-22)
|
||||||
|
#define SQL_DIAG_DFC_SS_BACKUP_TRANSACTION (SQL_DIAG_DFC_SS_BASE-22)
|
||||||
|
#define SQL_DIAG_DFC_SS_GOTO (SQL_DIAG_DFC_SS_BASE-23)
|
||||||
|
#define SQL_DIAG_DFC_SS_INSERT_BULK (SQL_DIAG_DFC_SS_BASE-24)
|
||||||
|
#define SQL_DIAG_DFC_SS_KILL (SQL_DIAG_DFC_SS_BASE-25)
|
||||||
|
#define SQL_DIAG_DFC_SS_LOAD_DATABASE (SQL_DIAG_DFC_SS_BASE-26)
|
||||||
|
#define SQL_DIAG_DFC_SS_RESTORE_DATABASE (SQL_DIAG_DFC_SS_BASE-26)
|
||||||
|
#define SQL_DIAG_DFC_SS_LOAD_HEADERONLY (SQL_DIAG_DFC_SS_BASE-27)
|
||||||
|
#define SQL_DIAG_DFC_SS_RESTORE_HEADERONLY (SQL_DIAG_DFC_SS_BASE-27)
|
||||||
|
#define SQL_DIAG_DFC_SS_LOAD_TABLE (SQL_DIAG_DFC_SS_BASE-28)
|
||||||
|
#define SQL_DIAG_DFC_SS_LOAD_TRANSACTION (SQL_DIAG_DFC_SS_BASE-29)
|
||||||
|
#define SQL_DIAG_DFC_SS_RESTORE_TRANSACTION (SQL_DIAG_DFC_SS_BASE-29)
|
||||||
|
#define SQL_DIAG_DFC_SS_PRINT (SQL_DIAG_DFC_SS_BASE-30)
|
||||||
|
#define SQL_DIAG_DFC_SS_RAISERROR (SQL_DIAG_DFC_SS_BASE-31)
|
||||||
|
#define SQL_DIAG_DFC_SS_READTEXT (SQL_DIAG_DFC_SS_BASE-32)
|
||||||
|
#define SQL_DIAG_DFC_SS_RECONFIGURE (SQL_DIAG_DFC_SS_BASE-33)
|
||||||
|
#define SQL_DIAG_DFC_SS_RETURN (SQL_DIAG_DFC_SS_BASE-34)
|
||||||
|
#define SQL_DIAG_DFC_SS_SELECT_INTO (SQL_DIAG_DFC_SS_BASE-35)
|
||||||
|
#define SQL_DIAG_DFC_SS_SET (SQL_DIAG_DFC_SS_BASE-36)
|
||||||
|
#define SQL_DIAG_DFC_SS_SET_IDENTITY_INSERT (SQL_DIAG_DFC_SS_BASE-37)
|
||||||
|
#define SQL_DIAG_DFC_SS_SET_ROW_COUNT (SQL_DIAG_DFC_SS_BASE-38)
|
||||||
|
#define SQL_DIAG_DFC_SS_SET_STATISTICS (SQL_DIAG_DFC_SS_BASE-39)
|
||||||
|
#define SQL_DIAG_DFC_SS_SET_TEXTSIZE (SQL_DIAG_DFC_SS_BASE-40)
|
||||||
|
#define SQL_DIAG_DFC_SS_SETUSER (SQL_DIAG_DFC_SS_BASE-41)
|
||||||
|
#define SQL_DIAG_DFC_SS_SHUTDOWN (SQL_DIAG_DFC_SS_BASE-42)
|
||||||
|
#define SQL_DIAG_DFC_SS_TRANS_BEGIN (SQL_DIAG_DFC_SS_BASE-43)
|
||||||
|
#define SQL_DIAG_DFC_SS_TRANS_COMMIT (SQL_DIAG_DFC_SS_BASE-44)
|
||||||
|
#define SQL_DIAG_DFC_SS_TRANS_PREPARE (SQL_DIAG_DFC_SS_BASE-45)
|
||||||
|
#define SQL_DIAG_DFC_SS_TRANS_ROLLBACK (SQL_DIAG_DFC_SS_BASE-46)
|
||||||
|
#define SQL_DIAG_DFC_SS_TRANS_SAVE (SQL_DIAG_DFC_SS_BASE-47)
|
||||||
|
#define SQL_DIAG_DFC_SS_TRUNCATE_TABLE (SQL_DIAG_DFC_SS_BASE-48)
|
||||||
|
#define SQL_DIAG_DFC_SS_UPDATE_STATISTICS (SQL_DIAG_DFC_SS_BASE-49)
|
||||||
|
#define SQL_DIAG_DFC_SS_UPDATETEXT (SQL_DIAG_DFC_SS_BASE-50)
|
||||||
|
#define SQL_DIAG_DFC_SS_USE (SQL_DIAG_DFC_SS_BASE-51)
|
||||||
|
#define SQL_DIAG_DFC_SS_WAITFOR (SQL_DIAG_DFC_SS_BASE-52)
|
||||||
|
#define SQL_DIAG_DFC_SS_WRITETEXT (SQL_DIAG_DFC_SS_BASE-53)
|
||||||
|
#define SQL_DIAG_DFC_SS_DENY (SQL_DIAG_DFC_SS_BASE-54)
|
||||||
|
#define SQL_DIAG_DFC_SS_SET_XCTLVL (SQL_DIAG_DFC_SS_BASE-55)
|
||||||
|
#define SQL_DIAG_DFC_SS_MERGE (SQL_DIAG_DFC_SS_BASE-56)
|
||||||
|
|
||||||
|
// Severity codes for SQL_DIAG_SS_SEVERITY
|
||||||
|
#define EX_ANY 0
|
||||||
|
#define EX_INFO 10
|
||||||
|
#define EX_MAXISEVERITY EX_INFO
|
||||||
|
#define EX_MISSING 11
|
||||||
|
#define EX_TYPE 12
|
||||||
|
#define EX_DEADLOCK 13
|
||||||
|
#define EX_PERMIT 14
|
||||||
|
#define EX_SYNTAX 15
|
||||||
|
#define EX_USER 16
|
||||||
|
#define EX_RESOURCE 17
|
||||||
|
#define EX_INTOK 18
|
||||||
|
#define MAXUSEVERITY EX_INTOK
|
||||||
|
#define EX_LIMIT 19
|
||||||
|
#define EX_CMDFATAL 20
|
||||||
|
#define MINFATALERR EX_CMDFATAL
|
||||||
|
#define EX_DBFATAL 21
|
||||||
|
#define EX_TABCORRUPT 22
|
||||||
|
#define EX_DBCORRUPT 23
|
||||||
|
#define EX_HARDWARE 24
|
||||||
|
#define EX_CONTROL 25
|
||||||
|
// Internal server datatypes - used when binding to SQL_C_BINARY
|
||||||
|
#ifndef MAXNUMERICLEN // Resolve ODS/DBLib conflicts
|
||||||
|
// DB-Library datatypes
|
||||||
|
#define DBMAXCHAR (8000+1) // Max length of DBVARBINARY and DBVARCHAR, etc. +1 for zero byte
|
||||||
|
#define MAXNAME (SQL_MAX_SQLSERVERNAME+1) // Max server identifier length including zero byte
|
||||||
|
#ifdef UNICODE
|
||||||
|
typedef wchar_t DBCHAR;
|
||||||
|
#else
|
||||||
|
typedef char DBCHAR;
|
||||||
|
|
||||||
|
#endif
|
||||||
|
typedef short SQLSMALLINT;
|
||||||
|
|
||||||
|
typedef unsigned short SQLUSMALLINT;
|
||||||
|
|
||||||
|
typedef unsigned char DBBINARY;
|
||||||
|
|
||||||
|
typedef unsigned char DBTINYINT;
|
||||||
|
|
||||||
|
typedef short DBSMALLINT;
|
||||||
|
|
||||||
|
typedef unsigned short DBUSMALLINT;
|
||||||
|
|
||||||
|
typedef double DBFLT8;
|
||||||
|
|
||||||
|
typedef unsigned char DBBIT;
|
||||||
|
|
||||||
|
typedef unsigned char DBBOOL;
|
||||||
|
|
||||||
|
typedef float DBFLT4;
|
||||||
|
|
||||||
|
typedef DBFLT4 DBREAL;
|
||||||
|
|
||||||
|
typedef UINT DBUBOOL;
|
||||||
|
|
||||||
|
typedef struct dbmoney
|
||||||
|
{
|
||||||
|
LONG mnyhigh;
|
||||||
|
ULONG mnylow;
|
||||||
|
} DBMONEY;
|
||||||
|
|
||||||
|
typedef struct dbdatetime
|
||||||
|
{
|
||||||
|
LONG dtdays;
|
||||||
|
ULONG dttime;
|
||||||
|
} DBDATETIME;
|
||||||
|
|
||||||
|
typedef struct dbdatetime4
|
||||||
|
{
|
||||||
|
USHORT numdays;
|
||||||
|
USHORT nummins;
|
||||||
|
} DBDATETIM4;
|
||||||
|
|
||||||
|
typedef LONG DBMONEY4;
|
||||||
|
|
||||||
|
#include <pshpack8.h> // 8-byte structure packing
|
||||||
|
|
||||||
|
// New Date Time Structures
|
||||||
|
// New Structure for TIME2
|
||||||
|
typedef struct tagSS_TIME2_STRUCT
|
||||||
|
{
|
||||||
|
SQLUSMALLINT hour;
|
||||||
|
SQLUSMALLINT minute;
|
||||||
|
SQLUSMALLINT second;
|
||||||
|
SQLUINTEGER fraction;
|
||||||
|
} SQL_SS_TIME2_STRUCT;
|
||||||
|
// New Structure for TIMESTAMPOFFSET
|
||||||
|
typedef struct tagSS_TIMESTAMPOFFSET_STRUCT
|
||||||
|
{
|
||||||
|
SQLSMALLINT year;
|
||||||
|
SQLUSMALLINT month;
|
||||||
|
SQLUSMALLINT day;
|
||||||
|
SQLUSMALLINT hour;
|
||||||
|
SQLUSMALLINT minute;
|
||||||
|
SQLUSMALLINT second;
|
||||||
|
SQLUINTEGER fraction;
|
||||||
|
SQLSMALLINT timezone_hour;
|
||||||
|
SQLSMALLINT timezone_minute;
|
||||||
|
} SQL_SS_TIMESTAMPOFFSET_STRUCT;
|
||||||
|
|
||||||
|
typedef struct tagDBTIME2
|
||||||
|
{
|
||||||
|
USHORT hour;
|
||||||
|
USHORT minute;
|
||||||
|
USHORT second;
|
||||||
|
ULONG fraction;
|
||||||
|
} DBTIME2;
|
||||||
|
|
||||||
|
typedef struct tagDBTIMESTAMPOFFSET
|
||||||
|
{
|
||||||
|
SHORT year;
|
||||||
|
USHORT month;
|
||||||
|
USHORT day;
|
||||||
|
USHORT hour;
|
||||||
|
USHORT minute;
|
||||||
|
USHORT second;
|
||||||
|
ULONG fraction;
|
||||||
|
SHORT timezone_hour;
|
||||||
|
SHORT timezone_minute;
|
||||||
|
} DBTIMESTAMPOFFSET;
|
||||||
|
|
||||||
|
#include <poppack.h> // restore original structure packing
|
||||||
|
|
||||||
|
// Money value *10,000
|
||||||
|
#define DBNUM_PREC_TYPE BYTE
|
||||||
|
#define DBNUM_SCALE_TYPE BYTE
|
||||||
|
#define DBNUM_VAL_TYPE BYTE
|
||||||
|
|
||||||
|
#if (ODBCVER < 0x0300)
|
||||||
|
#define MAXNUMERICLEN 16
|
||||||
|
typedef struct dbnumeric // Internal representation of NUMERIC data type
|
||||||
|
{
|
||||||
|
DBNUM_PREC_TYPE precision; // Precision
|
||||||
|
DBNUM_SCALE_TYPE scale; // Scale
|
||||||
|
BYTE sign; // Sign (1 if positive, 0 if negative)
|
||||||
|
DBNUM_VAL_TYPE val[MAXNUMERICLEN];// Value
|
||||||
|
} DBNUMERIC;
|
||||||
|
typedef DBNUMERIC DBDECIMAL;// Internal representation of DECIMAL data type
|
||||||
|
#else // Use ODBC 3.0 definitions since same as DBLib
|
||||||
|
#define MAXNUMERICLEN SQL_MAX_NUMERIC_LEN
|
||||||
|
typedef SQL_NUMERIC_STRUCT DBNUMERIC;
|
||||||
|
typedef SQL_NUMERIC_STRUCT DBDECIMAL;
|
||||||
|
#endif // ODCBVER
|
||||||
|
#endif // MAXNUMERICLEN
|
||||||
|
|
||||||
|
#ifndef INT
|
||||||
|
typedef int INT;
|
||||||
|
typedef LONG DBINT;
|
||||||
|
typedef DBINT * LPDBINT;
|
||||||
|
#ifndef _LPCBYTE_DEFINED
|
||||||
|
#define _LPCBYTE_DEFINED
|
||||||
|
typedef BYTE const* LPCBYTE;
|
||||||
|
#endif //_LPCBYTE_DEFINED
|
||||||
|
#endif // INT
|
||||||
|
/**************************************************************************
|
||||||
|
This struct is a global used for gathering statistical data on the driver.
|
||||||
|
Access to this structure is controlled via the pStatCrit;
|
||||||
|
***************************************************************************/
|
||||||
|
typedef struct sqlperf
|
||||||
|
{
|
||||||
|
// Application Profile Statistics
|
||||||
|
DWORD TimerResolution;
|
||||||
|
DWORD SQLidu;
|
||||||
|
DWORD SQLiduRows;
|
||||||
|
DWORD SQLSelects;
|
||||||
|
DWORD SQLSelectRows;
|
||||||
|
DWORD Transactions;
|
||||||
|
DWORD SQLPrepares;
|
||||||
|
DWORD ExecDirects;
|
||||||
|
DWORD SQLExecutes;
|
||||||
|
DWORD CursorOpens;
|
||||||
|
DWORD CursorSize;
|
||||||
|
DWORD CursorUsed;
|
||||||
|
LDOUBLE PercentCursorUsed;
|
||||||
|
LDOUBLE AvgFetchTime;
|
||||||
|
LDOUBLE AvgCursorSize;
|
||||||
|
LDOUBLE AvgCursorUsed;
|
||||||
|
DWORD SQLFetchTime;
|
||||||
|
DWORD SQLFetchCount;
|
||||||
|
DWORD CurrentStmtCount;
|
||||||
|
DWORD MaxOpenStmt;
|
||||||
|
DWORD SumOpenStmt;
|
||||||
|
// Connection Statistics
|
||||||
|
DWORD CurrentConnectionCount;
|
||||||
|
DWORD MaxConnectionsOpened;
|
||||||
|
DWORD SumConnectionsOpened;
|
||||||
|
DWORD SumConnectiontime;
|
||||||
|
LDOUBLE AvgTimeOpened;
|
||||||
|
// Network Statistics
|
||||||
|
DWORD ServerRndTrips;
|
||||||
|
DWORD BuffersSent;
|
||||||
|
DWORD BuffersRec;
|
||||||
|
DWORD BytesSent;
|
||||||
|
DWORD BytesRec;
|
||||||
|
// Time Statistics;
|
||||||
|
DWORD msExecutionTime;
|
||||||
|
DWORD msNetWorkServerTime;
|
||||||
|
} SQLPERF;
|
||||||
|
// The following are options for SQL_COPT_SS_PERF_DATA and SQL_COPT_SS_PERF_QUERY
|
||||||
|
#define SQL_PERF_START 1 // Starts the driver sampling performance data.
|
||||||
|
#define SQL_PERF_STOP 2 // Stops the counters from sampling performance data.
|
||||||
|
// The following are defines for SQL_COPT_SS_PERF_DATA_LOG
|
||||||
|
#define SQL_SS_DL_DEFAULT TEXT("STATS.LOG")
|
||||||
|
// The following are defines for SQL_COPT_SS_PERF_QUERY_LOG
|
||||||
|
#define SQL_SS_QL_DEFAULT TEXT("QUERY.LOG")
|
||||||
|
// The following are defines for SQL_COPT_SS_PERF_QUERY_INTERVAL
|
||||||
|
#define SQL_SS_QI_DEFAULT 30000 // 30,000 milliseconds
|
||||||
|
|
||||||
|
#ifndef SQLNCLI_NO_BCP
|
||||||
|
// Define the symbol SQLNCLI_NO_BCP if you are not using BCP in your application
|
||||||
|
// and you want to exclude the BCP-related definitions in this header file.
|
||||||
|
|
||||||
|
// ODBC BCP prototypes and defines
|
||||||
|
// Return codes
|
||||||
|
#define SUCCEED 1
|
||||||
|
#define FAIL 0
|
||||||
|
#define SUCCEED_ABORT 2
|
||||||
|
#define SUCCEED_ASYNC 3
|
||||||
|
// Transfer directions
|
||||||
|
#define DB_IN 1 // Transfer from client to server
|
||||||
|
#define DB_OUT 2 // Transfer from server to client
|
||||||
|
// bcp_control option
|
||||||
|
#define BCPMAXERRS 1 // Sets max errors allowed
|
||||||
|
#define BCPFIRST 2 // Sets first row to be copied out
|
||||||
|
#define BCPLAST 3 // Sets number of rows to be copied out
|
||||||
|
#define BCPBATCH 4 // Sets input batch size
|
||||||
|
#define BCPKEEPNULLS 5 // Sets to insert NULLs for empty input values
|
||||||
|
#define BCPABORT 6 // Sets to have bcpexec return SUCCEED_ABORT
|
||||||
|
#define BCPODBC 7 // Sets ODBC canonical character output
|
||||||
|
#define BCPKEEPIDENTITY 8 // Sets IDENTITY_INSERT on
|
||||||
|
#if SQLNCLI_VER < 1000
|
||||||
|
#define BCP6xFILEFMT 9 // DEPRECATED: Sets 6x file format on
|
||||||
|
#endif
|
||||||
|
#define BCPHINTSA 10 // Sets server BCP hints (ANSI string)
|
||||||
|
#define BCPHINTSW 11 // Sets server BCP hints (UNICODE string)
|
||||||
|
#define BCPFILECP 12 // Sets clients code page for the file
|
||||||
|
#define BCPUNICODEFILE 13 // Sets that the file contains unicode header
|
||||||
|
#define BCPTEXTFILE 14 // Sets BCP mode to expect a text file and to detect Unicode or ANSI automatically
|
||||||
|
#define BCPFILEFMT 15 // Sets file format version
|
||||||
|
#define BCPFMTXML 16 // Sets the format file type to xml
|
||||||
|
#define BCPFIRSTEX 17 // Starting Row for BCP operation (64 bit)
|
||||||
|
#define BCPLASTEX 18 // Ending Row for BCP operation (64 bit)
|
||||||
|
#define BCPROWCOUNT 19 // Total Number of Rows Copied (64 bit)
|
||||||
|
#define BCPDELAYREADFMT 20 // Delay reading format file unil bcp_exec
|
||||||
|
// BCPFILECP values
|
||||||
|
// Any valid code page that is installed on the client can be passed plus:
|
||||||
|
#define BCPFILECP_ACP 0 // Data in file is in Windows code page
|
||||||
|
#define BCPFILECP_OEMCP 1 // Data in file is in OEM code page (default)
|
||||||
|
#define BCPFILECP_RAW (-1)// Data in file is in Server code page (no conversion)
|
||||||
|
// bcp_collen definition
|
||||||
|
#define SQL_VARLEN_DATA (-10) // Use default length for column
|
||||||
|
// BCP column format properties
|
||||||
|
#define BCP_FMT_TYPE 0x01
|
||||||
|
#define BCP_FMT_INDICATOR_LEN 0x02
|
||||||
|
#define BCP_FMT_DATA_LEN 0x03
|
||||||
|
#define BCP_FMT_TERMINATOR 0x04
|
||||||
|
#define BCP_FMT_SERVER_COL 0x05
|
||||||
|
#define BCP_FMT_COLLATION 0x06
|
||||||
|
#define BCP_FMT_COLLATION_ID 0x07
|
||||||
|
// bcp_setbulkmode properties
|
||||||
|
#define BCP_OUT_CHARACTER_MODE 0x01
|
||||||
|
#define BCP_OUT_WIDE_CHARACTER_MODE 0x02
|
||||||
|
#define BCP_OUT_NATIVE_TEXT_MODE 0x03
|
||||||
|
#define BCP_OUT_NATIVE_MODE 0x04
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// BCP functions
|
||||||
|
DBINT SQL_API bcp_batch (HDBC);
|
||||||
|
RETCODE SQL_API bcp_bind (HDBC, LPCBYTE, INT, DBINT, LPCBYTE, INT, INT, INT);
|
||||||
|
RETCODE SQL_API bcp_colfmt (HDBC, INT, BYTE, INT, DBINT, LPCBYTE, INT, INT);
|
||||||
|
RETCODE SQL_API bcp_collen (HDBC, DBINT, INT);
|
||||||
|
RETCODE SQL_API bcp_colptr (HDBC, LPCBYTE, INT);
|
||||||
|
RETCODE SQL_API bcp_columns (HDBC, INT);
|
||||||
|
RETCODE SQL_API bcp_control (HDBC, INT, void *);
|
||||||
|
DBINT SQL_API bcp_done (HDBC);
|
||||||
|
RETCODE SQL_API bcp_exec (HDBC, LPDBINT);
|
||||||
|
RETCODE SQL_API bcp_getcolfmt (HDBC, INT, INT, void *, INT, INT *);
|
||||||
|
RETCODE SQL_API bcp_initA (HDBC, LPCSTR, LPCSTR, LPCSTR, INT);
|
||||||
|
RETCODE SQL_API bcp_initW (HDBC, LPCWSTR, LPCWSTR, LPCWSTR, INT);
|
||||||
|
RETCODE SQL_API bcp_moretext (HDBC, DBINT, LPCBYTE);
|
||||||
|
RETCODE SQL_API bcp_readfmtA (HDBC, LPCSTR);
|
||||||
|
RETCODE SQL_API bcp_readfmtW (HDBC, LPCWSTR);
|
||||||
|
RETCODE SQL_API bcp_sendrow (HDBC);
|
||||||
|
RETCODE SQL_API bcp_setbulkmode (HDBC, INT, __in_bcount(cbField) void*, INT cbField, __in_bcount(cbRow) void *, INT cbRow);
|
||||||
|
RETCODE SQL_API bcp_setcolfmt (HDBC, INT, INT, void *, INT);
|
||||||
|
RETCODE SQL_API bcp_writefmtA (HDBC, LPCSTR);
|
||||||
|
RETCODE SQL_API bcp_writefmtW (HDBC, LPCWSTR);
|
||||||
|
CHAR* SQL_API dbprtypeA (INT);
|
||||||
|
WCHAR* SQL_API dbprtypeW (INT);
|
||||||
|
CHAR* SQL_API bcp_gettypenameA (INT, DBBOOL);
|
||||||
|
WCHAR* SQL_API bcp_gettypenameW (INT, DBBOOL);
|
||||||
|
|
||||||
|
#ifdef UNICODE
|
||||||
|
#define bcp_init bcp_initW
|
||||||
|
#define bcp_readfmt bcp_readfmtW
|
||||||
|
#define bcp_writefmt bcp_writefmtW
|
||||||
|
#define dbprtype dbprtypeW
|
||||||
|
#define bcp_gettypename bcp_gettypenameW
|
||||||
|
#define BCPHINTS BCPHINTSW
|
||||||
|
#else
|
||||||
|
#define bcp_init bcp_initA
|
||||||
|
#define bcp_readfmt bcp_readfmtA
|
||||||
|
#define bcp_writefmt bcp_writefmtA
|
||||||
|
#define dbprtype dbprtypeA
|
||||||
|
#define bcp_gettypename bcp_gettypenameA
|
||||||
|
#define BCPHINTS BCPHINTSA
|
||||||
|
#endif // UNICODE
|
||||||
|
|
||||||
|
#endif // SQLNCLI_NO_BCP
|
||||||
|
|
||||||
|
// The following options have been deprecated
|
||||||
|
#define SQL_FAST_CONNECT (SQL_COPT_SS_BASE+0)
|
||||||
|
// Defines for use with SQL_FAST_CONNECT - only useable before connecting
|
||||||
|
#define SQL_FC_OFF 0L // Fast connect is off
|
||||||
|
#define SQL_FC_ON 1L // Fast connect is on
|
||||||
|
#define SQL_FC_DEFAULT SQL_FC_OFF
|
||||||
|
#define SQL_COPT_SS_ANSI_OEM (SQL_COPT_SS_BASE+6)
|
||||||
|
#define SQL_AO_OFF 0L
|
||||||
|
#define SQL_AO_ON 1L
|
||||||
|
#define SQL_AO_DEFAULT SQL_AO_OFF
|
||||||
|
#define SQL_CA_SS_BASE_COLUMN_NAME SQL_DESC_BASE_COLUMN_NAME
|
||||||
|
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
} // extern "C"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif // ODBCVER
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
extern "C" {
|
||||||
|
#endif
|
||||||
|
#include <windows.h>
|
||||||
|
|
||||||
|
//The following facilitates opening a handle to a SQL filestream
|
||||||
|
typedef enum _SQL_FILESTREAM_DESIRED_ACCESS {
|
||||||
|
SQL_FILESTREAM_READ = 0,
|
||||||
|
SQL_FILESTREAM_WRITE = 1,
|
||||||
|
SQL_FILESTREAM_READWRITE = 2
|
||||||
|
} SQL_FILESTREAM_DESIRED_ACCESS;
|
||||||
|
#define SQL_FILESTREAM_OPEN_FLAG_ASYNC 0x00000001L
|
||||||
|
#define SQL_FILESTREAM_OPEN_FLAG_NO_BUFFERING 0x00000002L
|
||||||
|
#define SQL_FILESTREAM_OPEN_FLAG_NO_WRITE_THROUGH 0x00000004L
|
||||||
|
#define SQL_FILESTREAM_OPEN_FLAG_SEQUENTIAL_SCAN 0x00000008L
|
||||||
|
#define SQL_FILESTREAM_OPEN_FLAG_RANDOM_ACCESS 0x00000010L
|
||||||
|
|
||||||
|
|
||||||
|
HANDLE __stdcall OpenSqlFilestream (
|
||||||
|
LPCWSTR FilestreamPath,
|
||||||
|
SQL_FILESTREAM_DESIRED_ACCESS DesiredAccess,
|
||||||
|
ULONG OpenOptions,
|
||||||
|
__in_bcount(FilestreamTransactionContextLength)
|
||||||
|
LPBYTE FilestreamTransactionContext,
|
||||||
|
SSIZE_T FilestreamTransactionContextLength,
|
||||||
|
PLARGE_INTEGER AllocationSize);
|
||||||
|
#define FSCTL_SQL_FILESTREAM_FETCH_OLD_CONTENT CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 2392, METHOD_BUFFERED, FILE_ANY_ACCESS)
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
} // extern "C"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
#endif //__sqlncli_h__
|
||||||
|
|
||||||
|
#define SQL_COPT_SS_CONNECT_RETRY_COUNT (SQL_COPT_SS_BASE+34) // Post connection attribute used to get ConnectRetryCount
|
||||||
|
#define SQL_COPT_SS_CONNECT_RETRY_INTERVAL (SQL_COPT_SS_BASE+35) // Post connection attribute used to get ConnectRetryInterval
|
||||||
|
#ifdef SQL_COPT_SS_MAX_USED
|
||||||
|
#undef SQL_COPT_SS_MAX_USED
|
||||||
|
#endif // SQL_COPT_SS_MAX_USED
|
||||||
|
#define SQL_COPT_SS_MAX_USED SQL_COPT_SS_CONNECT_RETRY_INTERVAL
|
||||||
|
|
||||||
|
|
||||||
|
#ifndef _SQLUSERINSTANCE_H_
|
||||||
|
#define _SQLUSERINSTANCE_H_
|
||||||
|
|
||||||
|
#include <windows.h>
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
extern "C" {
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
// Recommended buffer size to store a LocalDB connection string
|
||||||
|
#define LOCALDB_MAX_SQLCONNECTION_BUFFER_SIZE 260
|
||||||
|
|
||||||
|
// type definition for LocalDBCreateInstance function
|
||||||
|
typedef HRESULT __cdecl FnLocalDBCreateInstance (
|
||||||
|
// I the LocalDB version (e.g. 11.0 or 11.0.1094.2)
|
||||||
|
__in_z PCWSTR wszVersion,
|
||||||
|
// I the instance name
|
||||||
|
__in_z PCWSTR pInstanceName,
|
||||||
|
// I reserved for the future use. Currently should be set to 0.
|
||||||
|
__in DWORD dwFlags
|
||||||
|
);
|
||||||
|
|
||||||
|
// type definition for pointer to LocalDBCreateInstance function
|
||||||
|
typedef FnLocalDBCreateInstance* PFnLocalDBCreateInstance;
|
||||||
|
|
||||||
|
// type definition for LocalDBStartInstance function
|
||||||
|
typedef HRESULT __cdecl FnLocalDBStartInstance (
|
||||||
|
// I the LocalDB instance name
|
||||||
|
__in_z PCWSTR pInstanceName,
|
||||||
|
// I reserved for the future use. Currently should be set to 0.
|
||||||
|
__in DWORD dwFlags,
|
||||||
|
// O the buffer to store the connection string to the LocalDB instance
|
||||||
|
__out_ecount_z_opt(*lpcchSqlConnection) LPWSTR wszSqlConnection,
|
||||||
|
// I/O on input has the size of the wszSqlConnection buffer in characters. On output, if the given buffer size is
|
||||||
|
// too small, has the buffer size required, in characters, including trailing null.
|
||||||
|
__inout_opt LPDWORD lpcchSqlConnection
|
||||||
|
);
|
||||||
|
|
||||||
|
// type definition for pointer to LocalDBStartInstance function
|
||||||
|
typedef FnLocalDBStartInstance* PFnLocalDBStartInstance;
|
||||||
|
|
||||||
|
// Flags for the LocalDBFormatMessage function
|
||||||
|
#define LOCALDB_TRUNCATE_ERR_MESSAGE 0x0001L
|
||||||
|
|
||||||
|
// type definition for LocalDBFormatMessage function
|
||||||
|
typedef HRESULT __cdecl FnLocalDBFormatMessage(
|
||||||
|
// I the LocalDB error code
|
||||||
|
__in HRESULT hrLocalDB,
|
||||||
|
// I Available flags:
|
||||||
|
// LOCALDB_TRUNCATE_ERR_MESSAGE - if the input buffer is too short,
|
||||||
|
// the error message will be truncated to fit into the buffer
|
||||||
|
__in DWORD dwFlags,
|
||||||
|
// I Language desired (LCID) or 0 (in which case Win32 FormatMessage order is used)
|
||||||
|
__in DWORD dwLanguageId,
|
||||||
|
// O the buffer to store the LocalDB error message
|
||||||
|
__out_ecount_z(*lpcchMessage) LPWSTR wszMessage,
|
||||||
|
// I/O on input has the size of the wszMessage buffer in characters. On output, if the given buffer size is
|
||||||
|
// too small, has the buffer size required, in characters, including trailing null. If the function succeeds
|
||||||
|
// contains the number of characters in the message, excluding the trailing null
|
||||||
|
__inout LPDWORD lpcchMessage
|
||||||
|
);
|
||||||
|
|
||||||
|
// type definition for function pointer to LocalDBFormatMessage function
|
||||||
|
typedef FnLocalDBFormatMessage* PFnLocalDBFormatMessage;
|
||||||
|
|
||||||
|
|
||||||
|
// MessageId: LOCALDB_ERROR_NOT_INSTALLED
|
||||||
|
//
|
||||||
|
// MessageText:
|
||||||
|
//
|
||||||
|
// LocalDB is not installed.
|
||||||
|
//
|
||||||
|
#define LOCALDB_ERROR_NOT_INSTALLED ((HRESULT)0x89C50116L)
|
||||||
|
|
||||||
|
//---------------------------------------------------------------------
|
||||||
|
// Function: LocalDBCreateInstance
|
||||||
|
//
|
||||||
|
// Description: This function will create the new LocalDB instance.
|
||||||
|
//
|
||||||
|
// Available Flags:
|
||||||
|
// No flags available. Reserved for future use.
|
||||||
|
//
|
||||||
|
// Return Values:
|
||||||
|
// S_OK, if the function succeeds
|
||||||
|
// LOCALDB_ERROR_INVALID_PARAM_INSTANCE_NAME, if the instance name parameter is invalid
|
||||||
|
// LOCALDB_ERROR_INVALID_PARAM_VERSION, if the version parameter is invalid
|
||||||
|
// LOCALDB_ERROR_INVALID_PARAM_FLAGS, if the flags are invalid
|
||||||
|
// LOCALDB_ERROR_INVALID_OPERATION, if the user tries to create a default instance
|
||||||
|
// LOCALDB_ERROR_INSTANCE_FOLDER_PATH_TOO_LONG, if the path where instance should be stored is longer than MAX_PATH
|
||||||
|
// LOCALDB_ERROR_VERSION_REQUESTED_NOT_INSTALLED, if the specified service level is not installed
|
||||||
|
// LOCALDB_ERROR_INSTANCE_FOLDER_ALREADY_EXISTS, if the instance folder already exists and is not empty
|
||||||
|
// LOCALDB_ERROR_INSTANCE_EXISTS_WITH_LOWER_VERSION, if the specified instance already exists but with lower version
|
||||||
|
// LOCALDB_ERROR_CANNOT_CREATE_INSTANCE_FOLDER, if a folder cannot be created under %userprofile%
|
||||||
|
// LOCALDB_ERROR_CANNOT_GET_USER_PROFILE_FOLDER, if a user profile folder cannot be retrieved
|
||||||
|
// LOCALDB_ERROR_CANNOT_ACCESS_INSTANCE_FOLDER, if a instance folder cannot be accessed
|
||||||
|
// LOCALDB_ERROR_CANNOT_ACCESS_INSTANCE_REGISTRY, if a instance registry cannot be accessed
|
||||||
|
// LOCALDB_ERROR_INTERNAL_ERROR, if an unexpected error occurred. See event log for details
|
||||||
|
// LOCALDB_ERROR_CANNOT_MODIFY_INSTANCE_REGISTRY, if an instance registry cannot be modified
|
||||||
|
// LOCALDB_ERROR_CANNOT_CREATE_SQL_PROCESS, if a process for Sql Server cannot be created
|
||||||
|
// LOCALDB_ERROR_SQL_SERVER_STARTUP_FAILED, if a Sql Server process is started but Sql Server startup failed.
|
||||||
|
// LOCALDB_ERROR_INSTANCE_CONFIGURATION_CORRUPT, if a instance configuration is corrupted
|
||||||
|
//
|
||||||
|
FnLocalDBCreateInstance LocalDBCreateInstance;
|
||||||
|
|
||||||
|
//---------------------------------------------------------------------
|
||||||
|
// Function: LocalDBStartInstance
|
||||||
|
//
|
||||||
|
// Description: This function will start the given LocalDB instance.
|
||||||
|
//
|
||||||
|
// Return Values:
|
||||||
|
// S_OK, if the function succeeds
|
||||||
|
// LOCALDB_ERROR_UNKNOWN_INSTANCE, if the specified instance doesn't exist
|
||||||
|
// LOCALDB_ERROR_INVALID_PARAM_INSTANCE_NAME, if the instance name parameter is invalid
|
||||||
|
// LOCALDB_ERROR_INVALID_PARAM_CONNECTION, if the wszSqlConnection parameter is NULL
|
||||||
|
// LOCALDB_ERROR_INVALID_PARAM_FLAGS, if the flags are invalid
|
||||||
|
// LOCALDB_ERROR_INSUFFICIENT_BUFFER, if the buffer wszSqlConnection is too small
|
||||||
|
// LOCALDB_ERROR_INSTANCE_FOLDER_PATH_TOO_LONG, if the path where instance should be stored is longer than MAX_PATH
|
||||||
|
|
||||||
|
// LOCALDB_ERROR_CANNOT_GET_USER_PROFILE_FOLDER, if a user profile folder cannot be retrieved
|
||||||
|
// LOCALDB_ERROR_CANNOT_ACCESS_INSTANCE_FOLDER, if a instance folder cannot be accessed
|
||||||
|
// LOCALDB_ERROR_CANNOT_ACCESS_INSTANCE_REGISTRY, if a instance registry cannot be accessed
|
||||||
|
// LOCALDB_ERROR_INTERNAL_ERROR, if an unexpected error occurred. See event log for details
|
||||||
|
// LOCALDB_ERROR_CANNOT_MODIFY_INSTANCE_REGISTRY, if an instance registry cannot be modified
|
||||||
|
// LOCALDB_ERROR_CANNOT_CREATE_SQL_PROCESS, if a process for Sql Server cannot be created
|
||||||
|
// LOCALDB_ERROR_SQL_SERVER_STARTUP_FAILED, if a Sql Server process is started but Sql Server startup failed.
|
||||||
|
// LOCALDB_ERROR_INSTANCE_CONFIGURATION_CORRUPT, if a instance configuration is corrupted
|
||||||
|
//
|
||||||
|
FnLocalDBStartInstance LocalDBStartInstance;
|
||||||
|
|
||||||
|
// type definition for LocalDBStopInstance function
|
||||||
|
typedef HRESULT __cdecl FnLocalDBStopInstance (
|
||||||
|
// I the LocalDB instance name
|
||||||
|
__in_z PCWSTR pInstanceName,
|
||||||
|
// I Available flags:
|
||||||
|
// LOCALDB_SHUTDOWN_KILL_PROCESS - force the instance to stop immediately
|
||||||
|
// LOCALDB_SHUTDOWN_WITH_NOWAIT - shutdown the instance with NOWAIT option
|
||||||
|
__in DWORD dwFlags,
|
||||||
|
// I the time in seconds to wait this operation to complete. If this value is 0, this function will return immediately
|
||||||
|
// without waiting for LocalDB instance to stop
|
||||||
|
__in ULONG ulTimeout
|
||||||
|
);
|
||||||
|
|
||||||
|
// type definition for pointer to LocalDBStopInstance function
|
||||||
|
typedef FnLocalDBStopInstance* PFnLocalDBStopInstance;
|
||||||
|
|
||||||
|
// Flags for the StopLocalDBInstance function
|
||||||
|
#define LOCALDB_SHUTDOWN_KILL_PROCESS 0x0001L
|
||||||
|
#define LOCALDB_SHUTDOWN_WITH_NOWAIT 0x0002L
|
||||||
|
|
||||||
|
//---------------------------------------------------------------------
|
||||||
|
// Function: LocalDBStopInstance
|
||||||
|
//
|
||||||
|
// Description: This function will shutdown the given LocalDB instance.
|
||||||
|
// If the flag LOCALDB_SHUTDOWN_KILL_PROCESS is set, the LocalDB instance will be killed immediately.
|
||||||
|
// IF the flag LOCALDB_SHUTDOWN_WITH_NOWAIT is set, the LocalDB instance will shutdown with NOWAIT option.
|
||||||
|
//
|
||||||
|
// Return Values:
|
||||||
|
// S_OK, if the function succeeds
|
||||||
|
// LOCALDB_ERROR_UNKNOWN_INSTANCE, if the specified instance doesn't exist
|
||||||
|
// LOCALDB_ERROR_INVALID_PARAM_INSTANCE_NAME, if the instance name parameter is invalid
|
||||||
|
// LOCALDB_ERROR_INVALID_PARAM_FLAGS, if the flags are invalid
|
||||||
|
// LOCALDB_ERROR_WAIT_TIMEOUT - if this function has not finished in given time
|
||||||
|
// LOCALDB_ERROR_INTERNAL_ERROR, if an unexpected error occurred. See event log for details
|
||||||
|
//
|
||||||
|
FnLocalDBStopInstance LocalDBStopInstance;
|
||||||
|
|
||||||
|
// type definition for LocalDBDeleteInstance function
|
||||||
|
typedef HRESULT __cdecl FnLocalDBDeleteInstance (
|
||||||
|
// I the LocalDB instance name
|
||||||
|
__in_z PCWSTR pInstanceName,
|
||||||
|
// I reserved for the future use. Currently should be set to 0.
|
||||||
|
__in DWORD dwFlags
|
||||||
|
);
|
||||||
|
|
||||||
|
// type definition for pointer to LocalDBDeleteInstance function
|
||||||
|
typedef FnLocalDBDeleteInstance* PFnLocalDBDeleteInstance;
|
||||||
|
|
||||||
|
//---------------------------------------------------------------------
|
||||||
|
// Function: LocalDBDeleteInstance
|
||||||
|
//
|
||||||
|
// Description: This function will remove the given LocalDB instance. If the given instance is running this function will
|
||||||
|
// fail with the error code LOCALDB_ERROR_INSTANCE_BUSY.
|
||||||
|
//
|
||||||
|
// Return Values:
|
||||||
|
// S_OK, if the function succeeds
|
||||||
|
// LOCALDB_ERROR_INVALID_PARAM_INSTANCE_NAME, if the instance name parameter is invalid
|
||||||
|
// LOCALDB_ERROR_INVALID_PARAM_FLAGS, if the flags are invalid
|
||||||
|
// LOCALDB_ERROR_UNKNOWN_INSTANCE, if the specified instance doesn't exist
|
||||||
|
// LOCALDB_ERROR_INSTANCE_BUSY, if the given instance is running
|
||||||
|
// LOCALDB_ERROR_INTERNAL_ERROR, if an unexpected error occurred. See event log for details
|
||||||
|
//
|
||||||
|
FnLocalDBDeleteInstance LocalDBDeleteInstance;
|
||||||
|
|
||||||
|
// Function: LocalDBFormatMessage
|
||||||
|
//
|
||||||
|
// Description: This function will return the localized textual description for the given LocalDB error
|
||||||
|
//
|
||||||
|
// Available Flags:
|
||||||
|
// LOCALDB_TRUNCATE_ERR_MESSAGE - the error message should be truncated to fit into the provided buffer
|
||||||
|
//
|
||||||
|
// Return Value:
|
||||||
|
// S_OK, if the function succeeds
|
||||||
|
//
|
||||||
|
// LOCALDB_ERROR_UNKNOWN_HRESULT, if the given HRESULT is unknown
|
||||||
|
// LOCALDB_ERROR_UNKNOWN_LANGUAGE_ID, if the given language id is unknown (0 is recommended for the // default language)
|
||||||
|
// LOCALDB_ERROR_UNKNOWN_ERROR_CODE, if the LocalDB error code is unknown
|
||||||
|
// LOCALDB_ERROR_INVALID_PARAM_FLAGS, if the flags are invalid
|
||||||
|
// LOCALDB_ERROR_INSUFFICIENT_BUFFER, if the input buffer is too short and LOCALDB_TRUNCATE_ERR_MESSAGE flag
|
||||||
|
// is not set
|
||||||
|
// LOCALDB_ERROR_INTERNAL_ERROR, if an unexpected error occurred. See event log for details
|
||||||
|
//
|
||||||
|
FnLocalDBFormatMessage LocalDBFormatMessage;
|
||||||
|
|
||||||
|
#define MAX_LOCALDB_INSTANCE_NAME_LENGTH 128
|
||||||
|
#define MAX_LOCALDB_PARENT_INSTANCE_LENGTH MAX_INSTANCE_NAME
|
||||||
|
|
||||||
|
typedef WCHAR TLocalDBInstanceName[MAX_LOCALDB_INSTANCE_NAME_LENGTH + 1];
|
||||||
|
typedef TLocalDBInstanceName* PTLocalDBInstanceName;
|
||||||
|
|
||||||
|
// type definition for LocalDBGetInstances function
|
||||||
|
typedef HRESULT __cdecl FnLocalDBGetInstances(
|
||||||
|
// O buffer for a LocalDB instance names
|
||||||
|
__out PTLocalDBInstanceName pInstanceNames,
|
||||||
|
// I/O on input has the number slots for instance names in the pInstanceNames buffer. On output,
|
||||||
|
// has the number of existing LocalDB instances
|
||||||
|
__inout LPDWORD lpdwNumberOfInstances
|
||||||
|
);
|
||||||
|
|
||||||
|
// type definition for pointer to LocalDBGetInstances function
|
||||||
|
typedef FnLocalDBGetInstances* PFnLocalDBGetInstances;
|
||||||
|
|
||||||
|
// Function: LocalDBGetInstances
|
||||||
|
//
|
||||||
|
// Description: This function returns names for all existing Local DB instances
|
||||||
|
//
|
||||||
|
// Usage Example:
|
||||||
|
// DWORD dwN = 0;
|
||||||
|
// LocalDBGetInstances(NULL, &dwN);
|
||||||
|
|
||||||
|
// PTLocalDBInstanceName insts = (PTLocalDBInstanceName) malloc(dwN * sizeof(TLocalDBInstanceName));
|
||||||
|
// LocalDBGetInstances(insts, &dwN);
|
||||||
|
|
||||||
|
// for (int i = 0; i < dwN; i++)
|
||||||
|
// wprintf(L"%s\n", insts[i]);
|
||||||
|
//
|
||||||
|
// Return values:
|
||||||
|
// S_OK, if the function succeeds
|
||||||
|
//
|
||||||
|
// LOCALDB_ERROR_INSUFFICIENT_BUFFER, the given buffer is to small
|
||||||
|
// LOCALDB_ERROR_INTERNAL_ERROR, if an unexpected error occurred. See event log for details
|
||||||
|
//
|
||||||
|
FnLocalDBGetInstances LocalDBGetInstances;
|
||||||
|
|
||||||
|
// SID string format: S - Revision(1B) - Authority ID (6B) {- Sub authority ID (4B)} * max 15 sub-authorities = 1 + 1 + 3 + 1 + 15 + (1 + 10) * 15
|
||||||
|
#define MAX_STRING_SID_LENGTH 186
|
||||||
|
|
||||||
|
#pragma pack(push)
|
||||||
|
#pragma pack(8)
|
||||||
|
|
||||||
|
// DEVNOTE: If you want to modify this structure please read DEVNOTEs on top of function LocalDBGetInstanceInfo in sqluserinstance.cpp file.
|
||||||
|
//
|
||||||
|
typedef struct _LocalDBInstanceInfo
|
||||||
|
{
|
||||||
|
DWORD cbLocalDBInstanceInfoSize;
|
||||||
|
TLocalDBInstanceName wszInstanceName;
|
||||||
|
BOOL bExists;
|
||||||
|
BOOL bConfigurationCorrupted;
|
||||||
|
BOOL bIsRunning;
|
||||||
|
DWORD dwMajor;
|
||||||
|
DWORD dwMinor;
|
||||||
|
DWORD dwBuild;
|
||||||
|
DWORD dwRevision;
|
||||||
|
FILETIME ftLastStartDateUTC;
|
||||||
|
WCHAR wszConnection[LOCALDB_MAX_SQLCONNECTION_BUFFER_SIZE];
|
||||||
|
BOOL bIsShared;
|
||||||
|
TLocalDBInstanceName wszSharedInstanceName;
|
||||||
|
WCHAR wszOwnerSID[MAX_STRING_SID_LENGTH + 1];
|
||||||
|
BOOL bIsAutomatic;
|
||||||
|
} LocalDBInstanceInfo;
|
||||||
|
|
||||||
|
#pragma pack(pop)
|
||||||
|
|
||||||
|
typedef LocalDBInstanceInfo* PLocalDBInstanceInfo;
|
||||||
|
|
||||||
|
// type definition for LocalDBGetInstanceInfo function
|
||||||
|
typedef HRESULT __cdecl FnLocalDBGetInstanceInfo(
|
||||||
|
// I the LocalDB instance name
|
||||||
|
__in_z PCWSTR wszInstanceName,
|
||||||
|
// O instance information
|
||||||
|
__out PLocalDBInstanceInfo pInfo,
|
||||||
|
// I Size of LocalDBInstanceInfo structure in bytes
|
||||||
|
__in DWORD cbInfo);
|
||||||
|
|
||||||
|
// type definition for pointer to LocalDBGetInstances function
|
||||||
|
typedef FnLocalDBGetInstanceInfo* PFnLocalDBGetInstanceInfo;
|
||||||
|
|
||||||
|
// Function: LocalDBGetInstanceInfo
|
||||||
|
//
|
||||||
|
// Description: This function returns information about the given instance.
|
||||||
|
//
|
||||||
|
// Return values:
|
||||||
|
// S_OK, if the function succeeds
|
||||||
|
//
|
||||||
|
// ERROR_INVALID_PARAMETER, if some of the parameters is invalid
|
||||||
|
// LOCALDB_ERROR_INTERNAL_ERROR, if an unexpected error occurred. See event log for details
|
||||||
|
//
|
||||||
|
FnLocalDBGetInstanceInfo LocalDBGetInstanceInfo;
|
||||||
|
|
||||||
|
// Version has format: Major.Minor[.Build[.Revision]]. Each of components is 32bit integer which is at most 40 digits and 3 dots
|
||||||
|
//
|
||||||
|
#define MAX_LOCALDB_VERSION_LENGTH 43
|
||||||
|
|
||||||
|
typedef WCHAR TLocalDBVersion[MAX_LOCALDB_VERSION_LENGTH + 1];
|
||||||
|
typedef TLocalDBVersion* PTLocalDBVersion;
|
||||||
|
|
||||||
|
// type definition for LocalDBGetVersions function
|
||||||
|
typedef HRESULT __cdecl FnLocalDBGetVersions(
|
||||||
|
// O buffer for installed LocalDB versions
|
||||||
|
__out PTLocalDBVersion pVersions,
|
||||||
|
// I/O on input has the number slots for versions in the pVersions buffer. On output,
|
||||||
|
// has the number of existing LocalDB versions
|
||||||
|
__inout LPDWORD lpdwNumberOfVersions
|
||||||
|
);
|
||||||
|
|
||||||
|
// type definition for pointer to LocalDBGetVersions function
|
||||||
|
typedef FnLocalDBGetVersions* PFnLocalDBGetVersions;
|
||||||
|
|
||||||
|
// Function: LocalDBGetVersions
|
||||||
|
//
|
||||||
|
// Description: This function returns all installed LocalDB versions. Returned versions will be in format Major.Minor
|
||||||
|
//
|
||||||
|
// Usage Example:
|
||||||
|
// DWORD dwN = 0;
|
||||||
|
// LocalDBGetVersions(NULL, &dwN);
|
||||||
|
|
||||||
|
// PTLocalDBVersion versions = (PTLocalDBVersion) malloc(dwN * sizeof(TLocalDBVersion));
|
||||||
|
// LocalDBGetVersions(insts, &dwN);
|
||||||
|
|
||||||
|
// for (int i = 0; i < dwN; i++)
|
||||||
|
// wprintf(L"%s\n", insts[i]);
|
||||||
|
//
|
||||||
|
// Return values:
|
||||||
|
// S_OK, if the function succeeds
|
||||||
|
//
|
||||||
|
// LOCALDB_ERROR_INSUFFICIENT_BUFFER, the given buffer is to small
|
||||||
|
// LOCALDB_ERROR_INTERNAL_ERROR, if an unexpected error occurs.
|
||||||
|
//
|
||||||
|
FnLocalDBGetVersions LocalDBGetVersions;
|
||||||
|
|
||||||
|
#pragma pack(push)
|
||||||
|
#pragma pack(8)
|
||||||
|
|
||||||
|
// DEVNOTE: If you want to modify this structure please read DEVNOTEs on top of function LocalDBGetVersionInfo in sqluserinstance.cpp file.
|
||||||
|
//
|
||||||
|
typedef struct _LocalDBVersionInfo
|
||||||
|
{
|
||||||
|
DWORD cbLocalDBVersionInfoSize;
|
||||||
|
TLocalDBVersion wszVersion;
|
||||||
|
BOOL bExists;
|
||||||
|
DWORD dwMajor;
|
||||||
|
DWORD dwMinor;
|
||||||
|
DWORD dwBuild;
|
||||||
|
DWORD dwRevision;
|
||||||
|
} LocalDBVersionInfo;
|
||||||
|
|
||||||
|
#pragma pack(pop)
|
||||||
|
|
||||||
|
typedef LocalDBVersionInfo* PLocalDBVersionInfo;
|
||||||
|
|
||||||
|
// type definition for LocalDBGetVersionInfo function
|
||||||
|
typedef HRESULT __cdecl FnLocalDBGetVersionInfo(
|
||||||
|
// I LocalDB version string
|
||||||
|
__in_z PCWSTR wszVersion,
|
||||||
|
// O version information
|
||||||
|
__out PLocalDBVersionInfo pVersionInfo,
|
||||||
|
// I Size of LocalDBVersionInfo structure in bytes
|
||||||
|
__in DWORD cbVersionInfo
|
||||||
|
);
|
||||||
|
|
||||||
|
// type definition for pointer to LocalDBGetVersionInfo function
|
||||||
|
typedef FnLocalDBGetVersionInfo* PFnLocalDBGetVersionInfo;
|
||||||
|
|
||||||
|
// Function: LocalDBGetVersionInfo
|
||||||
|
//
|
||||||
|
// Description: This function returns information about the given LocalDB version
|
||||||
|
//
|
||||||
|
// Return values:
|
||||||
|
// S_OK, if the function succeeds
|
||||||
|
// LOCALDB_ERROR_INTERNAL_ERROR, if some internal error occurred
|
||||||
|
// LOCALDB_ERROR_INVALID_PARAMETER, if a input parameter is invalid
|
||||||
|
//
|
||||||
|
FnLocalDBGetVersionInfo LocalDBGetVersionInfo;
|
||||||
|
|
||||||
|
typedef HRESULT __cdecl FnLocalDBStartTracing();
|
||||||
|
typedef FnLocalDBStartTracing* PFnLocalDBStartTracing;
|
||||||
|
|
||||||
|
// Function: LocalDBStartTracing
|
||||||
|
//
|
||||||
|
// Description: This function will write in registry that Tracing sessions should be started for the current user.
|
||||||
|
//
|
||||||
|
// Return values:
|
||||||
|
// S_OK - on success
|
||||||
|
// Propper HRESULT in case of failure
|
||||||
|
//
|
||||||
|
FnLocalDBStartTracing LocalDBStartTracing;
|
||||||
|
|
||||||
|
typedef HRESULT __cdecl FnLocalDBStopTracing();
|
||||||
|
typedef FnLocalDBStopTracing* PFnFnLocalDBStopTracing;
|
||||||
|
|
||||||
|
// Function: LocalDBStopTracing
|
||||||
|
//
|
||||||
|
// Description: This function will write in registry that Tracing sessions should be stopped for the current user.
|
||||||
|
//
|
||||||
|
// Return values:
|
||||||
|
// S_OK - on success
|
||||||
|
// Propper HRESULT in case of failure
|
||||||
|
//
|
||||||
|
FnLocalDBStopTracing LocalDBStopTracing;
|
||||||
|
|
||||||
|
// type definition for LocalDBShareInstance function
|
||||||
|
typedef HRESULT __cdecl FnLocalDBShareInstance(
|
||||||
|
// I the SID of the LocalDB instance owner
|
||||||
|
__in_opt PSID pOwnerSID,
|
||||||
|
// I the private name of LocalDB instance which should be shared
|
||||||
|
__in_z PCWSTR wszPrivateLocalDBInstanceName,
|
||||||
|
// I the public shared name
|
||||||
|
__in_z PCWSTR wszSharedName,
|
||||||
|
// I reserved for the future use. Currently should be set to 0.
|
||||||
|
__in DWORD dwFlags);
|
||||||
|
|
||||||
|
// type definition for pointer to LocalDBShareInstance function
|
||||||
|
typedef FnLocalDBShareInstance* PFnLocalDBShareInstance;
|
||||||
|
|
||||||
|
// Function: LocalDBShareInstance
|
||||||
|
//
|
||||||
|
// Description: This function will share the given private instance of the given user with the given shared name.
|
||||||
|
// This function has to be executed elevated.
|
||||||
|
//
|
||||||
|
// Return values:
|
||||||
|
// HRESULT
|
||||||
|
//
|
||||||
|
FnLocalDBShareInstance LocalDBShareInstance;
|
||||||
|
|
||||||
|
// type definition for LocalDBUnshareInstance function
|
||||||
|
typedef HRESULT __cdecl FnLocalDBUnshareInstance(
|
||||||
|
// I the LocalDB instance name
|
||||||
|
__in_z PCWSTR pInstanceName,
|
||||||
|
// I reserved for the future use. Currently should be set to 0.
|
||||||
|
__in DWORD dwFlags);
|
||||||
|
|
||||||
|
// type definition for pointer to LocalDBUnshareInstance function
|
||||||
|
typedef FnLocalDBUnshareInstance* PFnLocalDBUnshareInstance;
|
||||||
|
|
||||||
|
// Function: LocalDBUnshareInstance
|
||||||
|
//
|
||||||
|
// Description: This function unshares the given LocalDB instance.
|
||||||
|
// If a shared name is given then that shared instance will be unshared.
|
||||||
|
// If a private name is given then we will check if the caller
|
||||||
|
// shares a private instance with the given private name and unshare it.
|
||||||
|
//
|
||||||
|
// Return values:
|
||||||
|
// HRESULT
|
||||||
|
//
|
||||||
|
FnLocalDBUnshareInstance LocalDBUnshareInstance;
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
} // extern "C"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(LOCALDB_DEFINE_PROXY_FUNCTIONS)
|
||||||
|
//---------------------------------------------------------------------
|
||||||
|
// The following section is enabled only if the constant LOCALDB_DEFINE_PROXY_FUNCTIONS
|
||||||
|
// is defined. It provides an implementation of proxies for each of the LocalDB APIs.
|
||||||
|
// The proxy implementations use a common function to bind to entry points in the
|
||||||
|
// latest installed SqlUserInstance DLL, and then forward the requests.
|
||||||
|
//
|
||||||
|
// The current implementation loads the SqlUserInstance DLL on the first call into
|
||||||
|
// a proxy function. There is no provision for unloading the DLL. Note that if the
|
||||||
|
// process includes multiple binaries (EXE and one or more DLLs), each of them could
|
||||||
|
// load a separate instance of the SqlUserInstance DLL.
|
||||||
|
//
|
||||||
|
// For future consideration: allow the SqlUserInstance DLL to be unloaded dynamically.
|
||||||
|
//
|
||||||
|
// WARNING: these functions must not be called in DLL initialization, since a deadlock
|
||||||
|
// could result loading dependent DLLs.
|
||||||
|
//---------------------------------------------------------------------
|
||||||
|
|
||||||
|
// This macro provides the body for each proxy function.
|
||||||
|
//
|
||||||
|
#define LOCALDB_PROXY(LocalDBFn) static Fn##LocalDBFn* pfn##LocalDBFn = NULL; if (!pfn##LocalDBFn) {HRESULT hr = LocalDBGetPFn(#LocalDBFn, (FARPROC *)&pfn##LocalDBFn); if (FAILED(hr)) return hr;} return (*pfn##LocalDBFn)
|
||||||
|
|
||||||
|
// Structure and function to parse the "Installed Versions" registry subkeys
|
||||||
|
//
|
||||||
|
typedef struct {
|
||||||
|
DWORD dwComponent[2];
|
||||||
|
WCHAR wszKeyName[256];
|
||||||
|
} Version;
|
||||||
|
|
||||||
|
// The following algorithm is intended to match, in part, the .NET Version class.
|
||||||
|
// A maximum of two components are allowed, which must be separated with a period.
|
||||||
|
// Valid: "11", "11.0"
|
||||||
|
// Invalid: "", ".0", "11.", "11.0."
|
||||||
|
//
|
||||||
|
static BOOL ParseVersion(Version * pVersion)
|
||||||
|
{
|
||||||
|
pVersion->dwComponent[0] = 0;
|
||||||
|
pVersion->dwComponent[1] = 0;
|
||||||
|
WCHAR * pwch = pVersion->wszKeyName;
|
||||||
|
|
||||||
|
for (int i = 0; i<2; i++)
|
||||||
|
{
|
||||||
|
LONGLONG llVal = 0;
|
||||||
|
BOOL fHaveDigit = FALSE;
|
||||||
|
|
||||||
|
while (*pwch >= L'0' && *pwch <= L'9')
|
||||||
|
{
|
||||||
|
llVal = llVal * 10 + (*pwch++ - L'0');
|
||||||
|
fHaveDigit = TRUE;
|
||||||
|
|
||||||
|
if (llVal > 0x7fffffff)
|
||||||
|
{
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!fHaveDigit)
|
||||||
|
return FALSE;
|
||||||
|
|
||||||
|
pVersion->dwComponent[i] = (DWORD) llVal;
|
||||||
|
|
||||||
|
if (*pwch == L'\0')
|
||||||
|
return TRUE;
|
||||||
|
|
||||||
|
if (*pwch != L'.')
|
||||||
|
return FALSE;
|
||||||
|
|
||||||
|
pwch++;
|
||||||
|
}
|
||||||
|
// If we get here, the version string was terminated with L'.', which is not valid
|
||||||
|
//
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
#include <assert.h>
|
||||||
|
|
||||||
|
// This function loads the correct LocalDB API DLL (if required) and returns a pointer to a procedure.
|
||||||
|
// Note that the first-loaded API DLL for the process will be used until process termination: installation of
|
||||||
|
// a new version of the API will not be recognized after first load.
|
||||||
|
//
|
||||||
|
static HRESULT LocalDBGetPFn(LPCSTR szLocalDBFn, FARPROC *pfnLocalDBFn)
|
||||||
|
{
|
||||||
|
static volatile HMODULE hLocalDBDll = NULL;
|
||||||
|
|
||||||
|
if (!hLocalDBDll)
|
||||||
|
{
|
||||||
|
LONG ec;
|
||||||
|
HKEY hkeyVersions = NULL;
|
||||||
|
HKEY hkeyVersion = NULL;
|
||||||
|
Version verHigh = {0};
|
||||||
|
Version verCurrent;
|
||||||
|
DWORD cchKeyName;
|
||||||
|
DWORD dwValueType;
|
||||||
|
WCHAR wszLocalDBDll[MAX_PATH+1];
|
||||||
|
DWORD cbLocalDBDll = sizeof(wszLocalDBDll) - sizeof(WCHAR); // to deal with RegQueryValueEx null-termination quirk
|
||||||
|
HMODULE hLocalDBDllTemp = NULL;
|
||||||
|
|
||||||
|
if (ERROR_SUCCESS != (ec = RegOpenKeyExW(HKEY_LOCAL_MACHINE, L"SOFTWARE\\Microsoft\\Microsoft SQL Server Local DB\\Installed Versions", 0, KEY_READ, &hkeyVersions)))
|
||||||
|
{
|
||||||
|
goto Cleanup;
|
||||||
|
}
|
||||||
|
|
||||||
|
for (int i = 0; ; i++)
|
||||||
|
{
|
||||||
|
cchKeyName = 256;
|
||||||
|
if (ERROR_SUCCESS != (ec = RegEnumKeyExW(hkeyVersions, i, verCurrent.wszKeyName, &cchKeyName, 0, NULL, NULL, NULL)))
|
||||||
|
{
|
||||||
|
if (ERROR_NO_MORE_ITEMS == ec)
|
||||||
|
{
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
goto Cleanup;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!ParseVersion(&verCurrent))
|
||||||
|
{
|
||||||
|
continue; // invalid version syntax
|
||||||
|
}
|
||||||
|
|
||||||
|
if (verCurrent.dwComponent[0] > verHigh.dwComponent[0] ||
|
||||||
|
(verCurrent.dwComponent[0] == verHigh.dwComponent[0] && verCurrent.dwComponent[1] > verHigh.dwComponent[1]))
|
||||||
|
{
|
||||||
|
verHigh = verCurrent;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (!verHigh.wszKeyName[0])
|
||||||
|
{
|
||||||
|
// ec must be ERROR_NO_MORE_ITEMS here
|
||||||
|
//
|
||||||
|
assert(ec == ERROR_NO_MORE_ITEMS);
|
||||||
|
|
||||||
|
// We will change the error code to ERROR_FILE_NOT_FOUND in order to indicate that
|
||||||
|
// LocalDB instalation is not found. Registry key "SOFTWARE\\Microsoft\\Microsoft SQL Server Local DB\\Installed Versions" exists
|
||||||
|
// but it is empty.
|
||||||
|
//
|
||||||
|
ec = ERROR_FILE_NOT_FOUND;
|
||||||
|
goto Cleanup;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (ERROR_SUCCESS != (ec = RegOpenKeyExW(hkeyVersions, verHigh.wszKeyName, 0, KEY_READ, &hkeyVersion)))
|
||||||
|
{
|
||||||
|
goto Cleanup;
|
||||||
|
}
|
||||||
|
if (ERROR_SUCCESS != (ec = RegQueryValueExW(hkeyVersion, L"InstanceAPIPath", NULL, &dwValueType, (PBYTE) wszLocalDBDll, &cbLocalDBDll)))
|
||||||
|
{
|
||||||
|
goto Cleanup;
|
||||||
|
}
|
||||||
|
if (dwValueType != REG_SZ)
|
||||||
|
{
|
||||||
|
ec = ERROR_INVALID_DATA;
|
||||||
|
goto Cleanup;
|
||||||
|
}
|
||||||
|
// Ensure string value null-terminated
|
||||||
|
// Note that we left a spare character in the output buffer for RegQueryValueEx for this purpose
|
||||||
|
//
|
||||||
|
wszLocalDBDll[cbLocalDBDll/sizeof(WCHAR)] = L'\0';
|
||||||
|
|
||||||
|
hLocalDBDllTemp = LoadLibraryW(wszLocalDBDll);
|
||||||
|
if (NULL == hLocalDBDllTemp)
|
||||||
|
{
|
||||||
|
ec = GetLastError();
|
||||||
|
goto Cleanup;
|
||||||
|
}
|
||||||
|
if (NULL == InterlockedCompareExchangePointer((volatile PVOID *)&hLocalDBDll, hLocalDBDllTemp, NULL))
|
||||||
|
{
|
||||||
|
// We were the winner: we gave away our DLL handle
|
||||||
|
//
|
||||||
|
hLocalDBDllTemp = NULL;
|
||||||
|
}
|
||||||
|
ec = ERROR_SUCCESS;
|
||||||
|
Cleanup:
|
||||||
|
if (hLocalDBDllTemp)
|
||||||
|
FreeLibrary(hLocalDBDllTemp);
|
||||||
|
if (hkeyVersion)
|
||||||
|
RegCloseKey(hkeyVersion);
|
||||||
|
if (hkeyVersions)
|
||||||
|
RegCloseKey(hkeyVersions);
|
||||||
|
|
||||||
|
// Error code ERROR_FILE_NOT_FOUND can occure if registry hive with installed LocalDB versions is missing.
|
||||||
|
// In that case we should return the LocalDB specific error code
|
||||||
|
//
|
||||||
|
if (ec == ERROR_FILE_NOT_FOUND)
|
||||||
|
return LOCALDB_ERROR_NOT_INSTALLED;
|
||||||
|
|
||||||
|
if (ec != ERROR_SUCCESS)
|
||||||
|
return HRESULT_FROM_WIN32(ec);
|
||||||
|
}
|
||||||
|
|
||||||
|
FARPROC pfn = GetProcAddress(hLocalDBDll, szLocalDBFn);
|
||||||
|
|
||||||
|
if (!pfn)
|
||||||
|
{
|
||||||
|
return HRESULT_FROM_WIN32(GetLastError());
|
||||||
|
}
|
||||||
|
*pfnLocalDBFn = pfn;
|
||||||
|
return S_OK;
|
||||||
|
}
|
||||||
|
|
||||||
|
// The following proxy functions forward calls to the latest LocalDB API DLL.
|
||||||
|
//
|
||||||
|
|
||||||
|
HRESULT __cdecl
|
||||||
|
LocalDBCreateInstance (
|
||||||
|
// I the LocalDB version (e.g. 11.0 or 11.0.1094.2)
|
||||||
|
__in_z PCWSTR wszVersion,
|
||||||
|
// I the instance name
|
||||||
|
__in_z PCWSTR pInstanceName,
|
||||||
|
// I reserved for the future use. Currently should be set to 0.
|
||||||
|
__in DWORD dwFlags
|
||||||
|
)
|
||||||
|
{
|
||||||
|
LOCALDB_PROXY(LocalDBCreateInstance)(wszVersion, pInstanceName, dwFlags);
|
||||||
|
}
|
||||||
|
|
||||||
|
HRESULT __cdecl
|
||||||
|
LocalDBStartInstance(
|
||||||
|
// I the instance name
|
||||||
|
__in_z PCWSTR pInstanceName,
|
||||||
|
// I reserved for the future use. Currently should be set to 0.
|
||||||
|
__in DWORD dwFlags,
|
||||||
|
// O the buffer to store the connection string to the LocalDB instance
|
||||||
|
__out_ecount_z_opt(*lpcchSqlConnection) LPWSTR wszSqlConnection,
|
||||||
|
// I/O on input has the size of the wszSqlConnection buffer in characters. On output, if the given buffer size is
|
||||||
|
// too small, has the buffer size required, in characters, including trailing null.
|
||||||
|
__inout_opt LPDWORD lpcchSqlConnection
|
||||||
|
)
|
||||||
|
{
|
||||||
|
LOCALDB_PROXY(LocalDBStartInstance)(pInstanceName, dwFlags, wszSqlConnection, lpcchSqlConnection);
|
||||||
|
}
|
||||||
|
|
||||||
|
HRESULT __cdecl
|
||||||
|
LocalDBStopInstance (
|
||||||
|
// I the instance name
|
||||||
|
__in_z PCWSTR pInstanceName,
|
||||||
|
// I Available flags:
|
||||||
|
// LOCALDB_SHUTDOWN_KILL_PROCESS - force the instance to stop immediately
|
||||||
|
// LOCALDB_SHUTDOWN_WITH_NOWAIT - shutdown the instance with NOWAIT option
|
||||||
|
__in DWORD dwFlags,
|
||||||
|
// I the time in seconds to wait this operation to complete. If this value is 0, this function will return immediately
|
||||||
|
// without waiting for LocalDB instance to stop
|
||||||
|
__in ULONG ulTimeout
|
||||||
|
)
|
||||||
|
{
|
||||||
|
LOCALDB_PROXY(LocalDBStopInstance)(pInstanceName, dwFlags, ulTimeout);
|
||||||
|
}
|
||||||
|
|
||||||
|
HRESULT __cdecl
|
||||||
|
LocalDBDeleteInstance (
|
||||||
|
// I the instance name
|
||||||
|
__in_z PCWSTR pInstanceName,
|
||||||
|
// reserved for the future use. Currently should be set to 0.
|
||||||
|
__in DWORD dwFlags
|
||||||
|
)
|
||||||
|
{
|
||||||
|
LOCALDB_PROXY(LocalDBDeleteInstance)(pInstanceName, dwFlags);
|
||||||
|
}
|
||||||
|
|
||||||
|
HRESULT __cdecl
|
||||||
|
LocalDBFormatMessage(
|
||||||
|
// I the LocalDB error code
|
||||||
|
__in HRESULT hrLocalDB,
|
||||||
|
// I Available flags:
|
||||||
|
// LOCALDB_TRUNCATE_ERR_MESSAGE - if the input buffer is too short,
|
||||||
|
// the error message will be truncated to fit into the buffer
|
||||||
|
__in DWORD dwFlags,
|
||||||
|
// I Language desired (LCID) or 0 (in which case Win32 FormatMessage order is used)
|
||||||
|
__in DWORD dwLanguageId,
|
||||||
|
// O the buffer to store the LocalDB error message
|
||||||
|
__out_ecount_z(*lpcchMessage) LPWSTR wszMessage,
|
||||||
|
// I/O on input has the size of the wszMessage buffer in characters. On output, if the given buffer size is
|
||||||
|
// too small, has the buffer size required, in characters, including trailing null. If the function succeeds
|
||||||
|
// contains the number of characters in the message, excluding the trailing null
|
||||||
|
__inout LPDWORD lpcchMessage
|
||||||
|
)
|
||||||
|
{
|
||||||
|
LOCALDB_PROXY(LocalDBFormatMessage)(hrLocalDB, dwFlags, dwLanguageId, wszMessage, lpcchMessage);
|
||||||
|
}
|
||||||
|
|
||||||
|
HRESULT __cdecl
|
||||||
|
LocalDBGetInstances(
|
||||||
|
// O buffer with instance names
|
||||||
|
__out PTLocalDBInstanceName pInstanceNames,
|
||||||
|
// I/O on input has the number slots for instance names in the pInstanceNames buffer. On output,
|
||||||
|
// has the number of existing LocalDB instances
|
||||||
|
__inout LPDWORD lpdwNumberOfInstances
|
||||||
|
)
|
||||||
|
{
|
||||||
|
LOCALDB_PROXY(LocalDBGetInstances)(pInstanceNames, lpdwNumberOfInstances);
|
||||||
|
}
|
||||||
|
|
||||||
|
HRESULT __cdecl
|
||||||
|
LocalDBGetInstanceInfo(
|
||||||
|
// I the instance name
|
||||||
|
__in_z PCWSTR wszInstanceName,
|
||||||
|
// O instance information
|
||||||
|
__out PLocalDBInstanceInfo pInfo,
|
||||||
|
// I Size of LocalDBInstanceInfo structure in bytes
|
||||||
|
__in DWORD cbInfo
|
||||||
|
)
|
||||||
|
{
|
||||||
|
LOCALDB_PROXY(LocalDBGetInstanceInfo)(wszInstanceName, pInfo, cbInfo);
|
||||||
|
}
|
||||||
|
|
||||||
|
HRESULT __cdecl
|
||||||
|
LocalDBStartTracing()
|
||||||
|
{
|
||||||
|
LOCALDB_PROXY(LocalDBStartTracing)();
|
||||||
|
}
|
||||||
|
|
||||||
|
HRESULT __cdecl
|
||||||
|
LocalDBStopTracing()
|
||||||
|
{
|
||||||
|
LOCALDB_PROXY(LocalDBStopTracing)();
|
||||||
|
}
|
||||||
|
|
||||||
|
HRESULT __cdecl
|
||||||
|
LocalDBShareInstance(
|
||||||
|
// I the SID of the LocalDB instance owner
|
||||||
|
__in_opt PSID pOwnerSID,
|
||||||
|
// I the private name of LocalDB instance which should be shared
|
||||||
|
__in_z PCWSTR wszLocalDBInstancePrivateName,
|
||||||
|
// I the public shared name
|
||||||
|
__in_z PCWSTR wszSharedName,
|
||||||
|
// I reserved for the future use. Currently should be set to 0.
|
||||||
|
__in DWORD dwFlags)
|
||||||
|
{
|
||||||
|
LOCALDB_PROXY(LocalDBShareInstance)(pOwnerSID, wszLocalDBInstancePrivateName, wszSharedName, dwFlags);
|
||||||
|
}
|
||||||
|
|
||||||
|
HRESULT __cdecl
|
||||||
|
LocalDBGetVersions(
|
||||||
|
// O buffer for installed LocalDB versions
|
||||||
|
__out PTLocalDBVersion pVersions,
|
||||||
|
// I/O on input has the number slots for versions in the pVersions buffer. On output,
|
||||||
|
// has the number of existing LocalDB versions
|
||||||
|
__inout LPDWORD lpdwNumberOfVersions
|
||||||
|
)
|
||||||
|
{
|
||||||
|
LOCALDB_PROXY(LocalDBGetVersions)(pVersions, lpdwNumberOfVersions);
|
||||||
|
}
|
||||||
|
|
||||||
|
HRESULT __cdecl
|
||||||
|
LocalDBUnshareInstance(
|
||||||
|
// I the LocalDB instance name
|
||||||
|
__in_z PCWSTR pInstanceName,
|
||||||
|
// I reserved for the future use. Currently should be set to 0.
|
||||||
|
__in DWORD dwFlags)
|
||||||
|
{
|
||||||
|
LOCALDB_PROXY(LocalDBUnshareInstance)(pInstanceName, dwFlags);
|
||||||
|
}
|
||||||
|
|
||||||
|
HRESULT __cdecl
|
||||||
|
LocalDBGetVersionInfo(
|
||||||
|
// I LocalDB version string
|
||||||
|
__in_z PCWSTR wszVersion,
|
||||||
|
// O version information
|
||||||
|
__out PLocalDBVersionInfo pVersionInfo,
|
||||||
|
// I Size of LocalDBVersionInfo structure in bytes
|
||||||
|
__in DWORD cbVersionInfo)
|
||||||
|
{
|
||||||
|
LOCALDB_PROXY(LocalDBGetVersionInfo)(wszVersion, pVersionInfo, cbVersionInfo);
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif // _SQLUSERINSTANCE_H_
|
||||||
|
|
||||||
|
//-----------------------------------------------------------------------------
|
||||||
|
// File: sqluserinstancemsgs.mc
|
||||||
|
//
|
||||||
|
// Copyright: Copyright (c) Microsoft Corporation
|
||||||
|
//-----------------------------------------------------------------------------
|
||||||
|
#ifndef _LOCALDB_MESSAGES_H_
|
||||||
|
#define _LOCALDB_MESSAGES_H_
|
||||||
|
// Header section
|
||||||
|
//
|
||||||
|
// Section with the LocalDB messages
|
||||||
|
//
|
||||||
|
//
|
||||||
|
// Values are 32 bit values laid out as follows:
|
||||||
|
//
|
||||||
|
// 3 3 2 2 2 2 2 2 2 2 2 2 1 1 1 1 1 1 1 1 1 1
|
||||||
|
// 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0
|
||||||
|
// +-+-+-+-+-+---------------------+-------------------------------+
|
||||||
|
// |S|R|C|N|r| Facility | Code |
|
||||||
|
// +-+-+-+-+-+---------------------+-------------------------------+
|
||||||
|
//
|
||||||
|
// where
|
||||||
|
//
|
||||||
|
// S - Severity - indicates success/fail
|
||||||
|
//
|
||||||
|
// 0 - Success
|
||||||
|
// 1 - Fail (COERROR)
|
||||||
|
//
|
||||||
|
// R - reserved portion of the facility code, corresponds to NT's
|
||||||
|
// second severity bit.
|
||||||
|
//
|
||||||
|
// C - reserved portion of the facility code, corresponds to NT's
|
||||||
|
// C field.
|
||||||
|
//
|
||||||
|
// N - reserved portion of the facility code. Used to indicate a
|
||||||
|
// mapped NT status value.
|
||||||
|
//
|
||||||
|
// r - reserved portion of the facility code. Reserved for internal
|
||||||
|
// use. Used to indicate HRESULT values that are not status
|
||||||
|
// values, but are instead message ids for display strings.
|
||||||
|
//
|
||||||
|
// Facility - is the facility code
|
||||||
|
//
|
||||||
|
// Code - is the facility's status code
|
||||||
|
//
|
||||||
|
//
|
||||||
|
// Define the facility codes
|
||||||
|
//
|
||||||
|
#define FACILITY_LOCALDB 0x9C5
|
||||||
|
|
||||||
|
|
||||||
|
//
|
||||||
|
// Define the severity codes
|
||||||
|
//
|
||||||
|
#define LOCALDB_SEVERITY_SUCCESS 0x0
|
||||||
|
#define LOCALDB_SEVERITY_ERROR 0x2
|
||||||
|
|
||||||
|
|
||||||
|
//
|
||||||
|
// MessageId: LOCALDB_ERROR_CANNOT_CREATE_INSTANCE_FOLDER
|
||||||
|
//
|
||||||
|
// MessageText:
|
||||||
|
//
|
||||||
|
// Cannot create folder for the LocalDB instance at: %%LOCALAPPDATA%%\Microsoft\Microsoft SQL Server Local DB\Instances\<instance name>.
|
||||||
|
//
|
||||||
|
#define LOCALDB_ERROR_CANNOT_CREATE_INSTANCE_FOLDER ((HRESULT)0x89C50100L)
|
||||||
|
|
||||||
|
//
|
||||||
|
// MessageId: LOCALDB_ERROR_INVALID_PARAMETER
|
||||||
|
//
|
||||||
|
// MessageText:
|
||||||
|
//
|
||||||
|
// The parameter for the LocalDB Instance API method is incorrect. Consult the API documentation.
|
||||||
|
//
|
||||||
|
#define LOCALDB_ERROR_INVALID_PARAMETER ((HRESULT)0x89C50101L)
|
||||||
|
|
||||||
|
//
|
||||||
|
// MessageId: LOCALDB_ERROR_INSTANCE_EXISTS_WITH_LOWER_VERSION
|
||||||
|
//
|
||||||
|
// MessageText:
|
||||||
|
//
|
||||||
|
// Unable to create the LocalDB instance with specified version. An instance with the same name already exists, but it has lower version than the specified version.
|
||||||
|
//
|
||||||
|
#define LOCALDB_ERROR_INSTANCE_EXISTS_WITH_LOWER_VERSION ((HRESULT)0x89C50102L)
|
||||||
|
|
||||||
|
//
|
||||||
|
// MessageId: LOCALDB_ERROR_CANNOT_GET_USER_PROFILE_FOLDER
|
||||||
|
//
|
||||||
|
// MessageText:
|
||||||
|
//
|
||||||
|
// Cannot access the user profile folder for local application data (%%LOCALAPPDATA%%).
|
||||||
|
//
|
||||||
|
#define LOCALDB_ERROR_CANNOT_GET_USER_PROFILE_FOLDER ((HRESULT)0x89C50103L)
|
||||||
|
|
||||||
|
//
|
||||||
|
// MessageId: LOCALDB_ERROR_INSTANCE_FOLDER_PATH_TOO_LONG
|
||||||
|
//
|
||||||
|
// MessageText:
|
||||||
|
//
|
||||||
|
// The full path length of the LocalDB instance folder is longer than MAX_PATH. The instance must be stored in folder: %%LOCALAPPDATA%%\Microsoft\Microsoft SQL Server Local DB\Instances\<instance name>.
|
||||||
|
//
|
||||||
|
#define LOCALDB_ERROR_INSTANCE_FOLDER_PATH_TOO_LONG ((HRESULT)0x89C50104L)
|
||||||
|
|
||||||
|
//
|
||||||
|
// MessageId: LOCALDB_ERROR_CANNOT_ACCESS_INSTANCE_FOLDER
|
||||||
|
//
|
||||||
|
// MessageText:
|
||||||
|
//
|
||||||
|
// Cannot access LocalDB instance folder: %%LOCALAPPDATA%%\Microsoft\Microsoft SQL Server Local DB\Instances\<instance name>.
|
||||||
|
//
|
||||||
|
#define LOCALDB_ERROR_CANNOT_ACCESS_INSTANCE_FOLDER ((HRESULT)0x89C50105L)
|
||||||
|
|
||||||
|
//
|
||||||
|
// MessageId: LOCALDB_ERROR_CANNOT_ACCESS_INSTANCE_REGISTRY
|
||||||
|
//
|
||||||
|
// MessageText:
|
||||||
|
//
|
||||||
|
// Unexpected error occurred while trying to access the LocalDB instance registry configuration. See the Windows Application event log for error details.
|
||||||
|
//
|
||||||
|
#define LOCALDB_ERROR_CANNOT_ACCESS_INSTANCE_REGISTRY ((HRESULT)0x89C50106L)
|
||||||
|
|
||||||
|
//
|
||||||
|
// MessageId: LOCALDB_ERROR_UNKNOWN_INSTANCE
|
||||||
|
//
|
||||||
|
// MessageText:
|
||||||
|
//
|
||||||
|
// The specified LocalDB instance does not exist.
|
||||||
|
//
|
||||||
|
#define LOCALDB_ERROR_UNKNOWN_INSTANCE ((HRESULT)0x89C50107L)
|
||||||
|
|
||||||
|
//
|
||||||
|
// MessageId: LOCALDB_ERROR_INTERNAL_ERROR
|
||||||
|
//
|
||||||
|
// MessageText:
|
||||||
|
//
|
||||||
|
// Unexpected error occurred inside a LocalDB instance API method call. See the Windows Application event log for error details.
|
||||||
|
//
|
||||||
|
#define LOCALDB_ERROR_INTERNAL_ERROR ((HRESULT)0x89C50108L)
|
||||||
|
|
||||||
|
//
|
||||||
|
// MessageId: LOCALDB_ERROR_CANNOT_MODIFY_INSTANCE_REGISTRY
|
||||||
|
//
|
||||||
|
// MessageText:
|
||||||
|
//
|
||||||
|
// Unexpected error occurred while trying to modify the registry configuration for the LocalDB instance. See the Windows Application event log for error details.
|
||||||
|
//
|
||||||
|
#define LOCALDB_ERROR_CANNOT_MODIFY_INSTANCE_REGISTRY ((HRESULT)0x89C50109L)
|
||||||
|
|
||||||
|
//
|
||||||
|
// MessageId: LOCALDB_ERROR_SQL_SERVER_STARTUP_FAILED
|
||||||
|
//
|
||||||
|
// MessageText:
|
||||||
|
//
|
||||||
|
// Error occurred during LocalDB instance startup: SQL Server process failed to start.
|
||||||
|
//
|
||||||
|
#define LOCALDB_ERROR_SQL_SERVER_STARTUP_FAILED ((HRESULT)0x89C5010AL)
|
||||||
|
|
||||||
|
//
|
||||||
|
// MessageId: LOCALDB_ERROR_INSTANCE_CONFIGURATION_CORRUPT
|
||||||
|
//
|
||||||
|
// MessageText:
|
||||||
|
//
|
||||||
|
// LocalDB instance is corrupted. See the Windows Application event log for error details.
|
||||||
|
//
|
||||||
|
#define LOCALDB_ERROR_INSTANCE_CONFIGURATION_CORRUPT ((HRESULT)0x89C5010BL)
|
||||||
|
|
||||||
|
//
|
||||||
|
// MessageId: LOCALDB_ERROR_CANNOT_CREATE_SQL_PROCESS
|
||||||
|
//
|
||||||
|
// MessageText:
|
||||||
|
//
|
||||||
|
// Error occurred during LocalDB instance startup: unable to create the SQL Server process.
|
||||||
|
//
|
||||||
|
#define LOCALDB_ERROR_CANNOT_CREATE_SQL_PROCESS ((HRESULT)0x89C5010CL)
|
||||||
|
|
||||||
|
//
|
||||||
|
// MessageId: LOCALDB_ERROR_UNKNOWN_VERSION
|
||||||
|
//
|
||||||
|
// MessageText:
|
||||||
|
//
|
||||||
|
// The specified LocalDB version is not available on this computer.
|
||||||
|
//
|
||||||
|
#define LOCALDB_ERROR_UNKNOWN_VERSION ((HRESULT)0x89C5010DL)
|
||||||
|
|
||||||
|
//
|
||||||
|
// MessageId: LOCALDB_ERROR_UNKNOWN_LANGUAGE_ID
|
||||||
|
//
|
||||||
|
// MessageText:
|
||||||
|
//
|
||||||
|
// Error getting the localized error message. The language specified by 'Language ID' parameter is unknown.
|
||||||
|
//
|
||||||
|
#define LOCALDB_ERROR_UNKNOWN_LANGUAGE_ID ((HRESULT)0x89C5010EL)
|
||||||
|
|
||||||
|
//
|
||||||
|
// MessageId: LOCALDB_ERROR_INSTANCE_STOP_FAILED
|
||||||
|
//
|
||||||
|
// MessageText:
|
||||||
|
//
|
||||||
|
// Stop operation for LocalDB instance failed to complete within the specified time.
|
||||||
|
//
|
||||||
|
#define LOCALDB_ERROR_INSTANCE_STOP_FAILED ((HRESULT)0x89C5010FL)
|
||||||
|
|
||||||
|
//
|
||||||
|
// MessageId: LOCALDB_ERROR_UNKNOWN_ERROR_CODE
|
||||||
|
//
|
||||||
|
// MessageText:
|
||||||
|
//
|
||||||
|
// Error getting the localized error message. The specified error code is unknown.
|
||||||
|
//
|
||||||
|
#define LOCALDB_ERROR_UNKNOWN_ERROR_CODE ((HRESULT)0x89C50110L)
|
||||||
|
|
||||||
|
//
|
||||||
|
// MessageId: LOCALDB_ERROR_VERSION_REQUESTED_NOT_INSTALLED
|
||||||
|
//
|
||||||
|
// MessageText:
|
||||||
|
//
|
||||||
|
// The LocalDB version available on this workstation is lower than the requested LocalDB version.
|
||||||
|
//
|
||||||
|
#define LOCALDB_ERROR_VERSION_REQUESTED_NOT_INSTALLED ((HRESULT)0x89C50111L)
|
||||||
|
|
||||||
|
//
|
||||||
|
// MessageId: LOCALDB_ERROR_INSTANCE_BUSY
|
||||||
|
//
|
||||||
|
// MessageText:
|
||||||
|
//
|
||||||
|
// Requested operation on LocalDB instance cannot be performed because specified instance is currently in use. Stop the instance and try again.
|
||||||
|
//
|
||||||
|
#define LOCALDB_ERROR_INSTANCE_BUSY ((HRESULT)0x89C50112L)
|
||||||
|
|
||||||
|
//
|
||||||
|
// MessageId: LOCALDB_ERROR_INVALID_OPERATION
|
||||||
|
//
|
||||||
|
// MessageText:
|
||||||
|
//
|
||||||
|
// Default LocalDB instances cannot be created, stopped or deleted manually.
|
||||||
|
//
|
||||||
|
#define LOCALDB_ERROR_INVALID_OPERATION ((HRESULT)0x89C50113L)
|
||||||
|
|
||||||
|
//
|
||||||
|
// MessageId: LOCALDB_ERROR_INSUFFICIENT_BUFFER
|
||||||
|
//
|
||||||
|
// MessageText:
|
||||||
|
//
|
||||||
|
// The buffer passed to the LocalDB instance API method has insufficient size.
|
||||||
|
//
|
||||||
|
#define LOCALDB_ERROR_INSUFFICIENT_BUFFER ((HRESULT)0x89C50114L)
|
||||||
|
|
||||||
|
//
|
||||||
|
// MessageId: LOCALDB_ERROR_WAIT_TIMEOUT
|
||||||
|
//
|
||||||
|
// MessageText:
|
||||||
|
//
|
||||||
|
// Timeout occurred inside the LocalDB instance API method.
|
||||||
|
//
|
||||||
|
#define LOCALDB_ERROR_WAIT_TIMEOUT ((HRESULT)0x89C50115L)
|
||||||
|
|
||||||
|
// MessageId=0x0116 message id is reserved. This message ID will be used for error LOCALDB_ERROR_NOT_INSTALLED.
|
||||||
|
// This message is specific since it has to be present in SqlUserIntsnace.h because it can be returned by discovery API.
|
||||||
|
//
|
||||||
|
//
|
||||||
|
// MessageId: LOCALDB_ERROR_XEVENT_FAILED
|
||||||
|
//
|
||||||
|
// MessageText:
|
||||||
|
//
|
||||||
|
// Failed to start XEvent engine within the LocalDB Instance API.
|
||||||
|
//
|
||||||
|
#define LOCALDB_ERROR_XEVENT_FAILED ((HRESULT)0x89C50117L)
|
||||||
|
|
||||||
|
//
|
||||||
|
// MessageId: LOCALDB_ERROR_AUTO_INSTANCE_CREATE_FAILED
|
||||||
|
//
|
||||||
|
// MessageText:
|
||||||
|
//
|
||||||
|
// Cannot create an automatic instance. See the Windows Application event log for error details.
|
||||||
|
//
|
||||||
|
#define LOCALDB_ERROR_AUTO_INSTANCE_CREATE_FAILED ((HRESULT)0x89C50118L)
|
||||||
|
|
||||||
|
//
|
||||||
|
// MessageId: LOCALDB_ERROR_SHARED_NAME_TAKEN
|
||||||
|
//
|
||||||
|
// MessageText:
|
||||||
|
//
|
||||||
|
// Cannot create a shared instance. The specified shared instance name is already in use.
|
||||||
|
//
|
||||||
|
#define LOCALDB_ERROR_SHARED_NAME_TAKEN ((HRESULT)0x89C50119L)
|
||||||
|
|
||||||
|
//
|
||||||
|
// MessageId: LOCALDB_ERROR_CALLER_IS_NOT_OWNER
|
||||||
|
//
|
||||||
|
// MessageText:
|
||||||
|
//
|
||||||
|
// API caller is not LocalDB instance owner.
|
||||||
|
//
|
||||||
|
#define LOCALDB_ERROR_CALLER_IS_NOT_OWNER ((HRESULT)0x89C5011AL)
|
||||||
|
|
||||||
|
//
|
||||||
|
// MessageId: LOCALDB_ERROR_INVALID_INSTANCE_NAME
|
||||||
|
//
|
||||||
|
// MessageText:
|
||||||
|
//
|
||||||
|
// Specified LocalDB instance name is invalid.
|
||||||
|
//
|
||||||
|
#define LOCALDB_ERROR_INVALID_INSTANCE_NAME ((HRESULT)0x89C5011BL)
|
||||||
|
|
||||||
|
//
|
||||||
|
// MessageId: LOCALDB_ERROR_INSTANCE_ALREADY_SHARED
|
||||||
|
//
|
||||||
|
// MessageText:
|
||||||
|
//
|
||||||
|
// The specified LocalDB instance is already shared with different shared name.
|
||||||
|
//
|
||||||
|
#define LOCALDB_ERROR_INSTANCE_ALREADY_SHARED ((HRESULT)0x89C5011CL)
|
||||||
|
|
||||||
|
//
|
||||||
|
// MessageId: LOCALDB_ERROR_INSTANCE_NOT_SHARED
|
||||||
|
//
|
||||||
|
// MessageText:
|
||||||
|
//
|
||||||
|
// The specified LocalDB instance is not shared.
|
||||||
|
//
|
||||||
|
#define LOCALDB_ERROR_INSTANCE_NOT_SHARED ((HRESULT)0x89C5011DL)
|
||||||
|
|
||||||
|
//
|
||||||
|
// MessageId: LOCALDB_ERROR_ADMIN_RIGHTS_REQUIRED
|
||||||
|
//
|
||||||
|
// MessageText:
|
||||||
|
//
|
||||||
|
// Administrator privileges are required in order to execute this operation.
|
||||||
|
//
|
||||||
|
#define LOCALDB_ERROR_ADMIN_RIGHTS_REQUIRED ((HRESULT)0x89C5011EL)
|
||||||
|
|
||||||
|
//
|
||||||
|
// MessageId: LOCALDB_ERROR_TOO_MANY_SHARED_INSTANCES
|
||||||
|
//
|
||||||
|
// MessageText:
|
||||||
|
//
|
||||||
|
// There are too many shared instance and we cannot generate unique User Instance Name. Unshare some of the existing shared instances.
|
||||||
|
//
|
||||||
|
#define LOCALDB_ERROR_TOO_MANY_SHARED_INSTANCES ((HRESULT)0x89C5011FL)
|
||||||
|
|
||||||
|
//
|
||||||
|
// MessageId: LOCALDB_ERROR_CANNOT_GET_LOCAL_APP_DATA_PATH
|
||||||
|
//
|
||||||
|
// MessageText:
|
||||||
|
//
|
||||||
|
// Cannot get a local application data path. Most probably a user profile is not loaded. If LocalDB is executed under IIS, make sure that profile loading is enabled for the current user.
|
||||||
|
//
|
||||||
|
#define LOCALDB_ERROR_CANNOT_GET_LOCAL_APP_DATA_PATH ((HRESULT)0x89C50120L)
|
||||||
|
|
||||||
|
//
|
||||||
|
// MessageId: LOCALDB_ERROR_CANNOT_LOAD_RESOURCES
|
||||||
|
//
|
||||||
|
// MessageText:
|
||||||
|
//
|
||||||
|
// Cannot load resources for this DLL. Resources for this DLL should be stored in a subfolder Resources, with the same file name as this DLL and the extension ".RLL".
|
||||||
|
//
|
||||||
|
#define LOCALDB_ERROR_CANNOT_LOAD_RESOURCES ((HRESULT)0x89C50121L)
|
||||||
|
|
||||||
|
// Detailed error descriptions
|
||||||
|
//
|
||||||
|
// MessageId: LOCALDB_EDETAIL_DATADIRECTORY_IS_MISSING
|
||||||
|
//
|
||||||
|
// MessageText:
|
||||||
|
//
|
||||||
|
// The "DataDirectory" registry value is missing in the LocalDB instance registry key: %1
|
||||||
|
//
|
||||||
|
#define LOCALDB_EDETAIL_DATADIRECTORY_IS_MISSING ((HRESULT)0x89C50200L)
|
||||||
|
|
||||||
|
//
|
||||||
|
// MessageId: LOCALDB_EDETAIL_CANNOT_ACCESS_INSTANCE_FOLDER
|
||||||
|
//
|
||||||
|
// MessageText:
|
||||||
|
//
|
||||||
|
// Cannot access LocalDB instance folder: %1
|
||||||
|
//
|
||||||
|
#define LOCALDB_EDETAIL_CANNOT_ACCESS_INSTANCE_FOLDER ((HRESULT)0x89C50201L)
|
||||||
|
|
||||||
|
//
|
||||||
|
// MessageId: LOCALDB_EDETAIL_DATADIRECTORY_IS_TOO_LONG
|
||||||
|
//
|
||||||
|
// MessageText:
|
||||||
|
//
|
||||||
|
// The "DataDirectory" registry value is too long in the LocalDB instance registry key: %1
|
||||||
|
//
|
||||||
|
#define LOCALDB_EDETAIL_DATADIRECTORY_IS_TOO_LONG ((HRESULT)0x89C50202L)
|
||||||
|
|
||||||
|
//
|
||||||
|
// MessageId: LOCALDB_EDETAIL_PARENT_INSTANCE_IS_MISSING
|
||||||
|
//
|
||||||
|
// MessageText:
|
||||||
|
//
|
||||||
|
// The "Parent Instance" registry value is missing in the LocalDB instance registry key: %1
|
||||||
|
//
|
||||||
|
#define LOCALDB_EDETAIL_PARENT_INSTANCE_IS_MISSING ((HRESULT)0x89C50203L)
|
||||||
|
|
||||||
|
//
|
||||||
|
// MessageId: LOCALDB_EDETAIL_PARENT_INSTANCE_IS_TOO_LONG
|
||||||
|
//
|
||||||
|
// MessageText:
|
||||||
|
//
|
||||||
|
// The "Parent Instance" registry value is too long in the LocalDB instance registry key: %1
|
||||||
|
//
|
||||||
|
#define LOCALDB_EDETAIL_PARENT_INSTANCE_IS_TOO_LONG ((HRESULT)0x89C50204L)
|
||||||
|
|
||||||
|
//
|
||||||
|
// MessageId: LOCALDB_EDETAIL_DATA_DIRECTORY_INVALID
|
||||||
|
//
|
||||||
|
// MessageText:
|
||||||
|
//
|
||||||
|
// Data directory for LocalDB instance is invalid: %1
|
||||||
|
//
|
||||||
|
#define LOCALDB_EDETAIL_DATA_DIRECTORY_INVALID ((HRESULT)0x89C50205L)
|
||||||
|
|
||||||
|
//
|
||||||
|
// MessageId: LOCALDB_EDETAIL_XEVENT_ASSERT
|
||||||
|
//
|
||||||
|
// MessageText:
|
||||||
|
//
|
||||||
|
// LocalDB instance API: XEvent engine assert: %1 in %2:%3 (%4)
|
||||||
|
//
|
||||||
|
#define LOCALDB_EDETAIL_XEVENT_ASSERT ((HRESULT)0x89C50206L)
|
||||||
|
|
||||||
|
//
|
||||||
|
// MessageId: LOCALDB_EDETAIL_XEVENT_ERROR
|
||||||
|
//
|
||||||
|
// MessageText:
|
||||||
|
//
|
||||||
|
// LocalDB instance API: XEvent error: %1
|
||||||
|
//
|
||||||
|
#define LOCALDB_EDETAIL_XEVENT_ERROR ((HRESULT)0x89C50207L)
|
||||||
|
|
||||||
|
//
|
||||||
|
// MessageId: LOCALDB_EDETAIL_INSTALLATION_CORRUPTED
|
||||||
|
//
|
||||||
|
// MessageText:
|
||||||
|
//
|
||||||
|
// LocalDB installation is corrupted. Reinstall the LocalDB.
|
||||||
|
//
|
||||||
|
#define LOCALDB_EDETAIL_INSTALLATION_CORRUPTED ((HRESULT)0x89C50208L)
|
||||||
|
|
||||||
|
//
|
||||||
|
// MessageId: LOCALDB_EDETAIL_CANNOT_GET_PROGRAM_FILES_LOCATION
|
||||||
|
//
|
||||||
|
// MessageText:
|
||||||
|
//
|
||||||
|
// LocalDB XEvent error: cannot determine %ProgramFiles% folder location.
|
||||||
|
//
|
||||||
|
#define LOCALDB_EDETAIL_CANNOT_GET_PROGRAM_FILES_LOCATION ((HRESULT)0x89C50209L)
|
||||||
|
|
||||||
|
//
|
||||||
|
// MessageId: LOCALDB_EDETAIL_XEVENT_CANNOT_INITIALIZE
|
||||||
|
//
|
||||||
|
// MessageText:
|
||||||
|
//
|
||||||
|
// LocalDB XEvent error: Cannot initialize XEvent engine.
|
||||||
|
//
|
||||||
|
#define LOCALDB_EDETAIL_XEVENT_CANNOT_INITIALIZE ((HRESULT)0x89C5020AL)
|
||||||
|
|
||||||
|
//
|
||||||
|
// MessageId: LOCALDB_EDETAIL_XEVENT_CANNOT_FIND_CONF_FILE
|
||||||
|
//
|
||||||
|
// MessageText:
|
||||||
|
//
|
||||||
|
// LocalDB XEvent error: Cannot find XEvents configuration file: %1
|
||||||
|
//
|
||||||
|
#define LOCALDB_EDETAIL_XEVENT_CANNOT_FIND_CONF_FILE ((HRESULT)0x89C5020BL)
|
||||||
|
|
||||||
|
//
|
||||||
|
// MessageId: LOCALDB_EDETAIL_XEVENT_CANNOT_CONFIGURE
|
||||||
|
//
|
||||||
|
// MessageText:
|
||||||
|
//
|
||||||
|
// LocalDB XEvent error: Cannot configure XEvents engine with the configuration file: %1
|
||||||
|
// HRESULT returned: %2
|
||||||
|
//
|
||||||
|
#define LOCALDB_EDETAIL_XEVENT_CANNOT_CONFIGURE ((HRESULT)0x89C5020CL)
|
||||||
|
|
||||||
|
//
|
||||||
|
// MessageId: LOCALDB_EDETAIL_XEVENT_CONF_FILE_NAME_TOO_LONG
|
||||||
|
//
|
||||||
|
// MessageText:
|
||||||
|
//
|
||||||
|
// LocalDB XEvent error: XEvents engine configuration file too long
|
||||||
|
//
|
||||||
|
#define LOCALDB_EDETAIL_XEVENT_CONF_FILE_NAME_TOO_LONG ((HRESULT)0x89C5020DL)
|
||||||
|
|
||||||
|
//
|
||||||
|
// MessageId: LOCALDB_EDETAIL_COINITIALIZEEX_FAILED
|
||||||
|
//
|
||||||
|
// MessageText:
|
||||||
|
//
|
||||||
|
// CoInitializeEx API failed. HRESULT returned: %1
|
||||||
|
//
|
||||||
|
#define LOCALDB_EDETAIL_COINITIALIZEEX_FAILED ((HRESULT)0x89C5020EL)
|
||||||
|
|
||||||
|
//
|
||||||
|
// MessageId: LOCALDB_EDETAIL_PARENT_INSTANCE_VERSION_INVALID
|
||||||
|
//
|
||||||
|
// MessageText:
|
||||||
|
//
|
||||||
|
// LocalDB parent instance version is invalid: %1
|
||||||
|
//
|
||||||
|
#define LOCALDB_EDETAIL_PARENT_INSTANCE_VERSION_INVALID ((HRESULT)0x89C5020FL)
|
||||||
|
|
||||||
|
//
|
||||||
|
// MessageId: LOCALDB_EDETAIL_WINAPI_ERROR
|
||||||
|
//
|
||||||
|
// MessageText:
|
||||||
|
//
|
||||||
|
// Windows API call %1 returned error code: %2. Windows system error message is: %3Reported at line: %4. %5
|
||||||
|
//
|
||||||
|
#define LOCALDB_EDETAIL_WINAPI_ERROR ((HRESULT)0xC9C50210L)
|
||||||
|
|
||||||
|
//
|
||||||
|
// MessageId: LOCALDB_EDETAIL_UNEXPECTED_RESULT
|
||||||
|
//
|
||||||
|
// MessageText:
|
||||||
|
//
|
||||||
|
// Function %1 returned %2 at line %3.
|
||||||
|
//
|
||||||
|
#define LOCALDB_EDETAIL_UNEXPECTED_RESULT ((HRESULT)0x89C50211L)
|
||||||
|
|
||||||
|
//
|
||||||
|
#endif // _LOCALDB_MESSAGES_H_
|
||||||
|
|
||||||
|
#endif //__msodbcsql_h__
|
|
@ -8,20 +8,21 @@
|
||||||
//
|
//
|
||||||
// Comments: Also contains "internal" declarations shared across source files.
|
// Comments: Also contains "internal" declarations shared across source files.
|
||||||
//
|
//
|
||||||
// Copyright Microsoft Corporation
|
// Microsoft Drivers for PHP for SQL Server
|
||||||
|
// Copyright (c) Microsoft Corporation. All rights reserved.
|
||||||
//
|
//
|
||||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
// you may not use this file except in compliance with the License.
|
// you may not use these files except in compliance with the License.
|
||||||
//
|
|
||||||
// You may obtain a copy of the License at:
|
// You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0
|
||||||
// http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
//
|
|
||||||
// Unless required by applicable law or agreed to in writing, software
|
// Unless required by applicable law or agreed to in writing, software
|
||||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
// See the License for the specific language governing permissions and
|
// See the License for the specific language governing permissions and
|
||||||
// limitations under the License.
|
// limitations under the License.
|
||||||
//---------------------------------------------------------------------------------------------------------------------------------
|
//
|
||||||
|
//----------------------------------------------------------------------------------------------------------------------------------
|
||||||
|
|
||||||
#include "core_sqlsrv.h"
|
#include "core_sqlsrv.h"
|
||||||
#include "version.h"
|
#include "version.h"
|
||||||
|
|
3043
sqlsrv/sqlncli.h
3043
sqlsrv/sqlncli.h
|
@ -1,3043 +0,0 @@
|
||||||
|
|
||||||
|
|
||||||
/* this ALWAYS GENERATED file contains the definitions for the interfaces */
|
|
||||||
|
|
||||||
|
|
||||||
/* File created by MIDL compiler version 7.00.0474 */
|
|
||||||
/* Compiler settings for sqlncli.idl:
|
|
||||||
Oicf, W1, Zp8, env=Win32 (32b run)
|
|
||||||
protocol : dce , ms_ext, c_ext, robust
|
|
||||||
error checks: allocation ref bounds_check enum stub_data
|
|
||||||
VC __declspec() decoration level:
|
|
||||||
__declspec(uuid()), __declspec(selectany), __declspec(novtable)
|
|
||||||
DECLSPEC_UUID(), MIDL_INTERFACE()
|
|
||||||
*/
|
|
||||||
//@@MIDL_FILE_HEADING( )
|
|
||||||
|
|
||||||
#pragma warning( disable: 4049 ) /* more than 64k source lines */
|
|
||||||
|
|
||||||
|
|
||||||
/* verify that the <rpcndr.h> version is high enough to compile this file*/
|
|
||||||
#ifndef __REQUIRED_RPCNDR_H_VERSION__
|
|
||||||
#define __REQUIRED_RPCNDR_H_VERSION__ 475
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#include "rpc.h"
|
|
||||||
#include "rpcndr.h"
|
|
||||||
|
|
||||||
#ifndef __RPCNDR_H_VERSION__
|
|
||||||
#error this stub requires an updated version of <rpcndr.h>
|
|
||||||
#endif // __RPCNDR_H_VERSION__
|
|
||||||
|
|
||||||
#ifndef COM_NO_WINDOWS_H
|
|
||||||
#include "windows.h"
|
|
||||||
#include "ole2.h"
|
|
||||||
#endif /*COM_NO_WINDOWS_H*/
|
|
||||||
|
|
||||||
#ifndef __sqlncli_h__
|
|
||||||
#define __sqlncli_h__
|
|
||||||
|
|
||||||
#if defined(_MSC_VER) && (_MSC_VER >= 1020)
|
|
||||||
#pragma once
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* Forward Declarations */
|
|
||||||
|
|
||||||
#ifndef __ICommandWithParameters_FWD_DEFINED__
|
|
||||||
#define __ICommandWithParameters_FWD_DEFINED__
|
|
||||||
typedef interface ICommandWithParameters ICommandWithParameters;
|
|
||||||
#endif /* __ICommandWithParameters_FWD_DEFINED__ */
|
|
||||||
|
|
||||||
|
|
||||||
#ifndef __IUMSInitialize_FWD_DEFINED__
|
|
||||||
#define __IUMSInitialize_FWD_DEFINED__
|
|
||||||
typedef interface IUMSInitialize IUMSInitialize;
|
|
||||||
#endif /* __IUMSInitialize_FWD_DEFINED__ */
|
|
||||||
|
|
||||||
|
|
||||||
#ifndef __ISQLServerErrorInfo_FWD_DEFINED__
|
|
||||||
#define __ISQLServerErrorInfo_FWD_DEFINED__
|
|
||||||
typedef interface ISQLServerErrorInfo ISQLServerErrorInfo;
|
|
||||||
#endif /* __ISQLServerErrorInfo_FWD_DEFINED__ */
|
|
||||||
|
|
||||||
|
|
||||||
#ifndef __IRowsetFastLoad_FWD_DEFINED__
|
|
||||||
#define __IRowsetFastLoad_FWD_DEFINED__
|
|
||||||
typedef interface IRowsetFastLoad IRowsetFastLoad;
|
|
||||||
#endif /* __IRowsetFastLoad_FWD_DEFINED__ */
|
|
||||||
|
|
||||||
|
|
||||||
#ifndef __ISchemaLock_FWD_DEFINED__
|
|
||||||
#define __ISchemaLock_FWD_DEFINED__
|
|
||||||
typedef interface ISchemaLock ISchemaLock;
|
|
||||||
#endif /* __ISchemaLock_FWD_DEFINED__ */
|
|
||||||
|
|
||||||
|
|
||||||
#ifndef __IBCPSession_FWD_DEFINED__
|
|
||||||
#define __IBCPSession_FWD_DEFINED__
|
|
||||||
typedef interface IBCPSession IBCPSession;
|
|
||||||
#endif /* __IBCPSession_FWD_DEFINED__ */
|
|
||||||
|
|
||||||
|
|
||||||
#ifndef __ISSAbort_FWD_DEFINED__
|
|
||||||
#define __ISSAbort_FWD_DEFINED__
|
|
||||||
typedef interface ISSAbort ISSAbort;
|
|
||||||
#endif /* __ISSAbort_FWD_DEFINED__ */
|
|
||||||
|
|
||||||
|
|
||||||
#ifndef __ISSCommandWithParameters_FWD_DEFINED__
|
|
||||||
#define __ISSCommandWithParameters_FWD_DEFINED__
|
|
||||||
typedef interface ISSCommandWithParameters ISSCommandWithParameters;
|
|
||||||
#endif /* __ISSCommandWithParameters_FWD_DEFINED__ */
|
|
||||||
|
|
||||||
|
|
||||||
#ifndef __IDBAsynchStatus_FWD_DEFINED__
|
|
||||||
#define __IDBAsynchStatus_FWD_DEFINED__
|
|
||||||
typedef interface IDBAsynchStatus IDBAsynchStatus;
|
|
||||||
#endif /* __IDBAsynchStatus_FWD_DEFINED__ */
|
|
||||||
|
|
||||||
|
|
||||||
#ifndef __ISSAsynchStatus_FWD_DEFINED__
|
|
||||||
#define __ISSAsynchStatus_FWD_DEFINED__
|
|
||||||
typedef interface ISSAsynchStatus ISSAsynchStatus;
|
|
||||||
#endif /* __ISSAsynchStatus_FWD_DEFINED__ */
|
|
||||||
|
|
||||||
|
|
||||||
/* header files for imported files */
|
|
||||||
#include "unknwn.h"
|
|
||||||
#include "oaidl.h"
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
|
||||||
extern "C"{
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
/* interface __MIDL_itf_sqlncli_0000_0000 */
|
|
||||||
/* [local] */
|
|
||||||
|
|
||||||
//-----------------------------------------------------------------------------
|
|
||||||
// File: sqlncli.h
|
|
||||||
//
|
|
||||||
// Copyright: Copyright (c) Microsoft Corporation
|
|
||||||
//
|
|
||||||
// Contents: SQL Server Native Client OLEDB provider and ODBC driver specific
|
|
||||||
// definitions.
|
|
||||||
//
|
|
||||||
//-----------------------------------------------------------------------------
|
|
||||||
|
|
||||||
#if !defined(SQLNCLI_VER)
|
|
||||||
#define SQLNCLI_VER 1000
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if SQLNCLI_VER >= 1000
|
|
||||||
|
|
||||||
#define SQLNCLI_PRODUCT_NAME_FULL_VER_ANSI "Microsoft SQL Server Native Client 10.0"
|
|
||||||
#define SQLNCLI_PRODUCT_NAME_FULL_ANSI "Microsoft SQL Server Native Client"
|
|
||||||
#define SQLNCLI_PRODUCT_NAME_SHORT_VER_ANSI "SQL Server Native Client 10.0"
|
|
||||||
#define SQLNCLI_PRODUCT_NAME_SHORT_ANSI "SQL Server Native Client"
|
|
||||||
|
|
||||||
#define SQLNCLI_FILE_NAME_ANSI "sqlncli"
|
|
||||||
#define SQLNCLI_FILE_NAME_VER_ANSI "sqlncli10"
|
|
||||||
#define SQLNCLI_FILE_NAME_FULL_ANSI "sqlncli10.dll"
|
|
||||||
|
|
||||||
#define SQLNCLI_PRODUCT_NAME_FULL_VER_UNICODE L"Microsoft SQL Server Native Client 10.0"
|
|
||||||
#define SQLNCLI_PRODUCT_NAME_FULL_UNICODE L"Microsoft SQL Server Native Client"
|
|
||||||
#define SQLNCLI_PRODUCT_NAME_SHORT_VER_UNICODE L"SQL Server Native Client 10.0"
|
|
||||||
#define SQLNCLI_PRODUCT_NAME_SHORT_UNICODE L"SQL Server Native Client"
|
|
||||||
|
|
||||||
#define SQLNCLI_FILE_NAME_UNICODE L"sqlncli"
|
|
||||||
#define SQLNCLI_FILE_NAME_VER_UNICODE L"sqlncli10"
|
|
||||||
#define SQLNCLI_FILE_NAME_FULL_UNICODE L"sqlncli10.dll"
|
|
||||||
|
|
||||||
#if defined(_SQLNCLI_OLEDB_) || !defined(_SQLNCLI_ODBC_)
|
|
||||||
|
|
||||||
#define SQLNCLI_VI_PROG_ID_ANSI "SQLNCLI10"
|
|
||||||
#define SQLNCLI_VI_ERROR_LOOKUP_PROG_ID_ANSI "SQLNCLI10 ErrorLookup"
|
|
||||||
#define SQLNCLI_VI_ENUMERATOR_PROG_ID_ANSI "SQLNCLI10 Enumerator"
|
|
||||||
|
|
||||||
#define SQLNCLI_PROG_ID_ANSI "SQLNCLI10.1"
|
|
||||||
#define SQLNCLI_ERROR_LOOKUP_PROG_ID_ANSI "SQLNCLI10 ErrorLookup.1"
|
|
||||||
#define SQLNCLI_ENUMERATOR_PROG_ID_ANSI "SQLNCLI10 Enumerator.1"
|
|
||||||
|
|
||||||
#define SQLNCLI_VI_PROG_ID_UNICODE L"SQLNCLI10"
|
|
||||||
#define SQLNCLI_VI_ERROR_LOOKUP_PROG_ID_UNICODE L"SQLNCLI10 ErrorLookup"
|
|
||||||
#define SQLNCLI_VI_ENUMERATOR_PROG_ID_UNICODE L"SQLNCLI10 Enumerator"
|
|
||||||
|
|
||||||
#define SQLNCLI_PROG_ID_UNICODE L"SQLNCLI10.1"
|
|
||||||
#define SQLNCLI_ERROR_LOOKUP_PROG_ID_UNICODE L"SQLNCLI10 ErrorLookup.1"
|
|
||||||
#define SQLNCLI_ENUMERATOR_PROG_ID_UNICODE L"SQLNCLI10 Enumerator.1"
|
|
||||||
|
|
||||||
#define SQLNCLI_CLSID CLSID_SQLNCLI10
|
|
||||||
#define SQLNCLI_ERROR_CLSID CLSID_SQLNCLI10_ERROR
|
|
||||||
#define SQLNCLI_ENUMERATOR_CLSID CLSID_SQLNCLI10_ENUMERATOR
|
|
||||||
|
|
||||||
#endif // defined(_SQLNCLI_OLEDB_) || !defined(_SQLNCLI_ODBC_)
|
|
||||||
|
|
||||||
#else // SQLNCLI_VER >= 1000
|
|
||||||
|
|
||||||
#define SQLNCLI_PRODUCT_NAME_FULL_VER_ANSI "Microsoft SQL Server Native Client"
|
|
||||||
#define SQLNCLI_PRODUCT_NAME_FULL_ANSI "Microsoft SQL Server Native Client"
|
|
||||||
#define SQLNCLI_PRODUCT_NAME_SHORT_VER_ANSI "SQL Native Client"
|
|
||||||
#define SQLNCLI_PRODUCT_NAME_SHORT_ANSI "SQL Native Client"
|
|
||||||
|
|
||||||
#define SQLNCLI_FILE_NAME_ANSI "sqlncli"
|
|
||||||
#define SQLNCLI_FILE_NAME_VER_ANSI "sqlncli"
|
|
||||||
#define SQLNCLI_FILE_NAME_FULL_ANSI "sqlncli.dll"
|
|
||||||
|
|
||||||
#define SQLNCLI_PRODUCT_NAME_FULL_VER_UNICODE L"Microsoft SQL Server Native Client"
|
|
||||||
#define SQLNCLI_PRODUCT_NAME_FULL_UNICODE L"Microsoft SQL Server Native Client"
|
|
||||||
#define SQLNCLI_PRODUCT_NAME_SHORT_VER_UNICODE L"SQL Native Client"
|
|
||||||
#define SQLNCLI_PRODUCT_NAME_SHORT_UNICODE L"SQL Native Client"
|
|
||||||
|
|
||||||
#define SQLNCLI_FILE_NAME_UNICODE L"sqlncli"
|
|
||||||
#define SQLNCLI_FILE_NAME_VER_UNICODE L"sqlncli"
|
|
||||||
#define SQLNCLI_FILE_NAME_FULL_UNICODE L"sqlncli.dll"
|
|
||||||
|
|
||||||
#if defined(_SQLNCLI_OLEDB_) || !defined(_SQLNCLI_ODBC_)
|
|
||||||
|
|
||||||
#define SQLNCLI_VI_PROG_ID_ANSI "SQLNCLI"
|
|
||||||
#define SQLNCLI_VI_ERROR_LOOKUP_PROG_ID_ANSI "SQLNCLI ErrorLookup"
|
|
||||||
#define SQLNCLI_VI_ENUMERATOR_PROG_ID_ANSI "SQLNCLI Enumerator"
|
|
||||||
|
|
||||||
#define SQLNCLI_PROG_ID_ANSI "SQLNCLI.1"
|
|
||||||
#define SQLNCLI_ERROR_LOOKUP_PROG_ID_ANSI "SQLNCLI ErrorLookup.1"
|
|
||||||
#define SQLNCLI_ENUMERATOR_PROG_ID_ANSI "SQLNCLI Enumerator.1"
|
|
||||||
|
|
||||||
#define SQLNCLI_VI_PROG_ID_UNICODE L"SQLNCLI"
|
|
||||||
#define SQLNCLI_VI_ERROR_LOOKUP_PROG_ID_UNICODE L"SQLNCLI ErrorLookup"
|
|
||||||
#define SQLNCLI_VI_ENUMERATOR_PROG_ID_UNICODE L"SQLNCLI Enumerator"
|
|
||||||
|
|
||||||
#define SQLNCLI_PROG_ID_UNICODE L"SQLNCLI.1"
|
|
||||||
#define SQLNCLI_ERROR_LOOKUP_PROG_ID_UNICODE L"SQLNCLI ErrorLookup.1"
|
|
||||||
#define SQLNCLI_ENUMERATOR_PROG_ID_UNICODE L"SQLNCLI Enumerator.1"
|
|
||||||
|
|
||||||
#define SQLNCLI_CLSID CLSID_SQLNCLI
|
|
||||||
#define SQLNCLI_ERROR_CLSID CLSID_SQLNCLI_ERROR
|
|
||||||
#define SQLNCLI_ENUMERATOR_CLSID CLSID_SQLNCLI_ENUMERATOR
|
|
||||||
|
|
||||||
#endif // defined(_SQLNCLI_OLEDB_) || !defined(_SQLNCLI_ODBC_)
|
|
||||||
|
|
||||||
#endif // SQLNCLI_VER >= 1000
|
|
||||||
|
|
||||||
// define the character type agnostic constants
|
|
||||||
#if defined(_UNICODE) || defined(UNICODE)
|
|
||||||
|
|
||||||
#define SQLNCLI_PRODUCT_NAME_FULL_VER SQLNCLI_PRODUCT_NAME_FULL_VER_UNICODE
|
|
||||||
#define SQLNCLI_PRODUCT_NAME_FULL SQLNCLI_PRODUCT_NAME_FULL_UNICODE
|
|
||||||
#define SQLNCLI_PRODUCT_NAME_SHORT_VER SQLNCLI_PRODUCT_NAME_SHORT_VER_UNICODE
|
|
||||||
#define SQLNCLI_PRODUCT_NAME_SHORT SQLNCLI_PRODUCT_NAME_SHORT_UNICODE
|
|
||||||
|
|
||||||
#define SQLNCLI_FILE_NAME SQLNCLI_FILE_NAME_UNICODE
|
|
||||||
#define SQLNCLI_FILE_NAME_VER SQLNCLI_FILE_NAME_VER_UNICODE
|
|
||||||
#define SQLNCLI_FILE_NAME_FULL SQLNCLI_FILE_NAME_FULL_UNICODE
|
|
||||||
|
|
||||||
#if defined(_SQLNCLI_OLEDB_) || !defined(_SQLNCLI_ODBC_)
|
|
||||||
|
|
||||||
#define SQLNCLI_VI_PROG_ID SQLNCLI_VI_PROG_ID_UNICODE
|
|
||||||
#define SQLNCLI_VI_ERROR_LOOKUP_PROG_ID SQLNCLI_VI_ERROR_LOOKUP_PROG_ID_UNICODE
|
|
||||||
#define SQLNCLI_VI_ENUMERATOR_PROG_ID SQLNCLI_VI_ENUMERATOR_PROG_ID_UNICODE
|
|
||||||
|
|
||||||
#define SQLNCLI_PROG_ID SQLNCLI_PROG_ID_UNICODE
|
|
||||||
#define SQLNCLI_ERROR_LOOKUP_PROG_ID SQLNCLI_ERROR_LOOKUP_PROG_ID_UNICODE
|
|
||||||
#define SQLNCLI_ENUMERATOR_PROG_ID SQLNCLI_ENUMERATOR_PROG_ID_UNICODE
|
|
||||||
|
|
||||||
#endif // defined(_SQLNCLI_OLEDB_) || !defined(_SQLNCLI_ODBC_)
|
|
||||||
|
|
||||||
#else // _UNICODE || UNICODE
|
|
||||||
|
|
||||||
#define SQLNCLI_PRODUCT_NAME_FULL_VER SQLNCLI_PRODUCT_NAME_FULL_VER_ANSI
|
|
||||||
#define SQLNCLI_PRODUCT_NAME_FULL SQLNCLI_PRODUCT_NAME_FULL_ANSI
|
|
||||||
#define SQLNCLI_PRODUCT_NAME_SHORT_VER SQLNCLI_PRODUCT_NAME_SHORT_VER_ANSI
|
|
||||||
#define SQLNCLI_PRODUCT_NAME_SHORT SQLNCLI_PRODUCT_NAME_SHORT_ANSI
|
|
||||||
|
|
||||||
#define SQLNCLI_FILE_NAME SQLNCLI_FILE_NAME_ANSI
|
|
||||||
#define SQLNCLI_FILE_NAME_VER SQLNCLI_FILE_NAME_VER_ANSI
|
|
||||||
#define SQLNCLI_FILE_NAME_FULL SQLNCLI_FILE_NAME_FULL_ANSI
|
|
||||||
|
|
||||||
#if defined(_SQLNCLI_OLEDB_) || !defined(_SQLNCLI_ODBC_)
|
|
||||||
|
|
||||||
#define SQLNCLI_VI_PROG_ID SQLNCLI_VI_PROG_ID_ANSI
|
|
||||||
#define SQLNCLI_VI_ERROR_LOOKUP_PROG_ID SQLNCLI_VI_ERROR_LOOKUP_PROG_ID_ANSI
|
|
||||||
#define SQLNCLI_VI_ENUMERATOR_PROG_ID SQLNCLI_VI_ENUMERATOR_PROG_ID_ANSI
|
|
||||||
|
|
||||||
#define SQLNCLI_PROG_ID SQLNCLI_PROG_ID_ANSI
|
|
||||||
#define SQLNCLI_ERROR_LOOKUP_PROG_ID SQLNCLI_ERROR_LOOKUP_PROG_ID_ANSI
|
|
||||||
#define SQLNCLI_ENUMERATOR_PROG_ID SQLNCLI_ENUMERATOR_PROG_ID_ANSI
|
|
||||||
|
|
||||||
#endif // defined(_SQLNCLI_OLEDB_) || !defined(_SQLNCLI_ODBC_)
|
|
||||||
|
|
||||||
#endif // _UNICODE || UNICODE
|
|
||||||
|
|
||||||
#if defined(_SQLNCLI_ODBC_) || !defined(_SQLNCLI_OLEDB_)
|
|
||||||
|
|
||||||
#define SQLNCLI_DRIVER_NAME SQLNCLI_PRODUCT_NAME_SHORT_VER
|
|
||||||
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// OLEDB part of SQL Server Native Client header - begin here
|
|
||||||
#if defined(_SQLNCLI_OLEDB_) || !defined(_SQLNCLI_ODBC_)
|
|
||||||
#ifndef __oledb_h__
|
|
||||||
#include <oledb.h>
|
|
||||||
#endif /*__oledb_h__*/
|
|
||||||
|
|
||||||
#if 0 // This is already defined in oledb.h
|
|
||||||
|
|
||||||
#ifdef _WIN64
|
|
||||||
|
|
||||||
// Length of a non-character object, size
|
|
||||||
typedef ULONGLONG DBLENGTH;
|
|
||||||
|
|
||||||
// Offset within a rowset
|
|
||||||
typedef LONGLONG DBROWOFFSET;
|
|
||||||
|
|
||||||
// Number of rows
|
|
||||||
typedef LONGLONG DBROWCOUNT;
|
|
||||||
|
|
||||||
typedef ULONGLONG DBCOUNTITEM;
|
|
||||||
|
|
||||||
// Ordinal (column number, etc.)
|
|
||||||
typedef ULONGLONG DBORDINAL;
|
|
||||||
|
|
||||||
typedef LONGLONG DB_LORDINAL;
|
|
||||||
|
|
||||||
// Bookmarks
|
|
||||||
typedef ULONGLONG DBBKMARK;
|
|
||||||
// Offset in the buffer
|
|
||||||
|
|
||||||
typedef ULONGLONG DBBYTEOFFSET;
|
|
||||||
// Reference count of each row/accessor handle
|
|
||||||
|
|
||||||
typedef ULONG DBREFCOUNT;
|
|
||||||
|
|
||||||
// Parameters
|
|
||||||
typedef ULONGLONG DB_UPARAMS;
|
|
||||||
|
|
||||||
typedef LONGLONG DB_LPARAMS;
|
|
||||||
|
|
||||||
// hash values corresponding to the elements (bookmarks)
|
|
||||||
typedef DWORDLONG DBHASHVALUE;
|
|
||||||
|
|
||||||
// For reserve
|
|
||||||
typedef DWORDLONG DB_DWRESERVE;
|
|
||||||
|
|
||||||
typedef LONGLONG DB_LRESERVE;
|
|
||||||
|
|
||||||
typedef ULONGLONG DB_URESERVE;
|
|
||||||
|
|
||||||
#else //_WIN64
|
|
||||||
|
|
||||||
// Length of a non-character object, size
|
|
||||||
typedef ULONG DBLENGTH;
|
|
||||||
|
|
||||||
// Offset within a rowset
|
|
||||||
typedef LONG DBROWOFFSET;
|
|
||||||
|
|
||||||
// Number of rows
|
|
||||||
typedef LONG DBROWCOUNT;
|
|
||||||
|
|
||||||
typedef ULONG DBCOUNTITEM;
|
|
||||||
|
|
||||||
// Ordinal (column number, etc.)
|
|
||||||
typedef ULONG DBORDINAL;
|
|
||||||
|
|
||||||
typedef LONG DB_LORDINAL;
|
|
||||||
|
|
||||||
// Bookmarks
|
|
||||||
typedef ULONG DBBKMARK;
|
|
||||||
|
|
||||||
// Offset in the buffer
|
|
||||||
typedef ULONG DBBYTEOFFSET;
|
|
||||||
|
|
||||||
// Reference count of each row handle
|
|
||||||
typedef ULONG DBREFCOUNT;
|
|
||||||
|
|
||||||
// Parameters
|
|
||||||
typedef ULONG DB_UPARAMS;
|
|
||||||
|
|
||||||
typedef LONG DB_LPARAMS;
|
|
||||||
|
|
||||||
// hash values corresponding to the elements (bookmarks)
|
|
||||||
typedef DWORD DBHASHVALUE;
|
|
||||||
|
|
||||||
// For reserve
|
|
||||||
typedef DWORD DB_DWRESERVE;
|
|
||||||
|
|
||||||
typedef LONG DB_LRESERVE;
|
|
||||||
|
|
||||||
typedef ULONG DB_URESERVE;
|
|
||||||
|
|
||||||
#endif // _WIN64
|
|
||||||
typedef DWORD DBKIND;
|
|
||||||
|
|
||||||
|
|
||||||
enum DBKINDENUM
|
|
||||||
{ DBKIND_GUID_NAME = 0,
|
|
||||||
DBKIND_GUID_PROPID = ( DBKIND_GUID_NAME + 1 ) ,
|
|
||||||
DBKIND_NAME = ( DBKIND_GUID_PROPID + 1 ) ,
|
|
||||||
DBKIND_PGUID_NAME = ( DBKIND_NAME + 1 ) ,
|
|
||||||
DBKIND_PGUID_PROPID = ( DBKIND_PGUID_NAME + 1 ) ,
|
|
||||||
DBKIND_PROPID = ( DBKIND_PGUID_PROPID + 1 ) ,
|
|
||||||
DBKIND_GUID = ( DBKIND_PROPID + 1 )
|
|
||||||
} ;
|
|
||||||
typedef struct tagDBID
|
|
||||||
{
|
|
||||||
union
|
|
||||||
{
|
|
||||||
GUID guid;
|
|
||||||
GUID *pguid;
|
|
||||||
/* Empty union arm */
|
|
||||||
} uGuid;
|
|
||||||
DBKIND eKind;
|
|
||||||
union
|
|
||||||
{
|
|
||||||
LPOLESTR pwszName;
|
|
||||||
ULONG ulPropid;
|
|
||||||
/* Empty union arm */
|
|
||||||
} uName;
|
|
||||||
} DBID;
|
|
||||||
|
|
||||||
typedef struct tagDB_NUMERIC
|
|
||||||
{
|
|
||||||
BYTE precision;
|
|
||||||
BYTE scale;
|
|
||||||
BYTE sign;
|
|
||||||
BYTE val[ 16 ];
|
|
||||||
} DB_NUMERIC;
|
|
||||||
|
|
||||||
typedef struct tagDBDATE
|
|
||||||
{
|
|
||||||
SHORT year;
|
|
||||||
USHORT month;
|
|
||||||
USHORT day;
|
|
||||||
} DBDATE;
|
|
||||||
|
|
||||||
typedef struct tagDBTIME
|
|
||||||
{
|
|
||||||
USHORT hour;
|
|
||||||
USHORT minute;
|
|
||||||
USHORT second;
|
|
||||||
} DBTIME;
|
|
||||||
|
|
||||||
typedef struct tagDBTIMESTAMP
|
|
||||||
{
|
|
||||||
SHORT year;
|
|
||||||
USHORT month;
|
|
||||||
USHORT day;
|
|
||||||
USHORT hour;
|
|
||||||
USHORT minute;
|
|
||||||
USHORT second;
|
|
||||||
ULONG fraction;
|
|
||||||
} DBTIMESTAMP;
|
|
||||||
|
|
||||||
typedef struct tagDBOBJECT
|
|
||||||
{
|
|
||||||
DWORD dwFlags;
|
|
||||||
IID iid;
|
|
||||||
} DBOBJECT;
|
|
||||||
|
|
||||||
typedef WORD DBTYPE;
|
|
||||||
|
|
||||||
typedef ULONG_PTR HACCESSOR;
|
|
||||||
|
|
||||||
typedef ULONG_PTR HCHAPTER;
|
|
||||||
|
|
||||||
typedef DWORD DBPARAMFLAGS;
|
|
||||||
|
|
||||||
typedef struct tagDBPARAMINFO
|
|
||||||
{
|
|
||||||
DBPARAMFLAGS dwFlags;
|
|
||||||
DBORDINAL iOrdinal;
|
|
||||||
LPOLESTR pwszName;
|
|
||||||
ITypeInfo *pTypeInfo;
|
|
||||||
DBLENGTH ulParamSize;
|
|
||||||
DBTYPE wType;
|
|
||||||
BYTE bPrecision;
|
|
||||||
BYTE bScale;
|
|
||||||
} DBPARAMINFO;
|
|
||||||
|
|
||||||
typedef DWORD DBPROPID;
|
|
||||||
|
|
||||||
typedef struct tagDBPROPIDSET
|
|
||||||
{
|
|
||||||
DBPROPID *rgPropertyIDs;
|
|
||||||
ULONG cPropertyIDs;
|
|
||||||
GUID guidPropertySet;
|
|
||||||
} DBPROPIDSET;
|
|
||||||
|
|
||||||
typedef DWORD DBPROPFLAGS;
|
|
||||||
|
|
||||||
typedef DWORD DBPROPOPTIONS;
|
|
||||||
|
|
||||||
typedef DWORD DBPROPSTATUS;
|
|
||||||
|
|
||||||
typedef struct tagDBPROP
|
|
||||||
{
|
|
||||||
DBPROPID dwPropertyID;
|
|
||||||
DBPROPOPTIONS dwOptions;
|
|
||||||
DBPROPSTATUS dwStatus;
|
|
||||||
DBID colid;
|
|
||||||
VARIANT vValue;
|
|
||||||
} DBPROP;
|
|
||||||
|
|
||||||
typedef struct tagDBPROPSET
|
|
||||||
{
|
|
||||||
DBPROP *rgProperties;
|
|
||||||
ULONG cProperties;
|
|
||||||
GUID guidPropertySet;
|
|
||||||
} DBPROPSET;
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
extern RPC_IF_HANDLE __MIDL_itf_sqlncli_0000_0000_v0_0_c_ifspec;
|
|
||||||
extern RPC_IF_HANDLE __MIDL_itf_sqlncli_0000_0000_v0_0_s_ifspec;
|
|
||||||
|
|
||||||
#ifndef __ICommandWithParameters_INTERFACE_DEFINED__
|
|
||||||
#define __ICommandWithParameters_INTERFACE_DEFINED__
|
|
||||||
|
|
||||||
/* interface ICommandWithParameters */
|
|
||||||
/* [unique][uuid][object][local] */
|
|
||||||
|
|
||||||
typedef struct tagDBPARAMBINDINFO
|
|
||||||
{
|
|
||||||
LPOLESTR pwszDataSourceType;
|
|
||||||
LPOLESTR pwszName;
|
|
||||||
DBLENGTH ulParamSize;
|
|
||||||
DBPARAMFLAGS dwFlags;
|
|
||||||
BYTE bPrecision;
|
|
||||||
BYTE bScale;
|
|
||||||
} DBPARAMBINDINFO;
|
|
||||||
|
|
||||||
|
|
||||||
EXTERN_C const IID IID_ICommandWithParameters;
|
|
||||||
|
|
||||||
#if defined(__cplusplus) && !defined(CINTERFACE)
|
|
||||||
|
|
||||||
MIDL_INTERFACE("0c733a64-2a1c-11ce-ade5-00aa0044773d")
|
|
||||||
ICommandWithParameters : public IUnknown
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
virtual /* [local] */ HRESULT STDMETHODCALLTYPE GetParameterInfo(
|
|
||||||
/* [out][in] */ DB_UPARAMS *pcParams,
|
|
||||||
/* [size_is][size_is][out] */ DBPARAMINFO **prgParamInfo,
|
|
||||||
/* [out] */ OLECHAR **ppNamesBuffer) = 0;
|
|
||||||
|
|
||||||
virtual /* [local] */ HRESULT STDMETHODCALLTYPE MapParameterNames(
|
|
||||||
/* [in] */ DB_UPARAMS cParamNames,
|
|
||||||
/* [size_is][in] */ const OLECHAR *rgParamNames[ ],
|
|
||||||
/* [size_is][out] */ DB_LPARAMS rgParamOrdinals[ ]) = 0;
|
|
||||||
|
|
||||||
virtual /* [local] */ HRESULT STDMETHODCALLTYPE SetParameterInfo(
|
|
||||||
/* [in] */ DB_UPARAMS cParams,
|
|
||||||
/* [size_is][unique][in] */ const DB_UPARAMS rgParamOrdinals[ ],
|
|
||||||
/* [size_is][unique][in] */ const DBPARAMBINDINFO rgParamBindInfo[ ]) = 0;
|
|
||||||
|
|
||||||
};
|
|
||||||
|
|
||||||
#else /* C style interface */
|
|
||||||
|
|
||||||
typedef struct ICommandWithParametersVtbl
|
|
||||||
{
|
|
||||||
BEGIN_INTERFACE
|
|
||||||
|
|
||||||
HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
|
|
||||||
ICommandWithParameters * This,
|
|
||||||
/* [in] */ REFIID riid,
|
|
||||||
/* [iid_is][out] */
|
|
||||||
__RPC__deref_out void **ppvObject);
|
|
||||||
|
|
||||||
ULONG ( STDMETHODCALLTYPE *AddRef )(
|
|
||||||
ICommandWithParameters * This);
|
|
||||||
|
|
||||||
ULONG ( STDMETHODCALLTYPE *Release )(
|
|
||||||
ICommandWithParameters * This);
|
|
||||||
|
|
||||||
/* [local] */ HRESULT ( STDMETHODCALLTYPE *GetParameterInfo )(
|
|
||||||
ICommandWithParameters * This,
|
|
||||||
/* [out][in] */ DB_UPARAMS *pcParams,
|
|
||||||
/* [size_is][size_is][out] */ DBPARAMINFO **prgParamInfo,
|
|
||||||
/* [out] */ OLECHAR **ppNamesBuffer);
|
|
||||||
|
|
||||||
/* [local] */ HRESULT ( STDMETHODCALLTYPE *MapParameterNames )(
|
|
||||||
ICommandWithParameters * This,
|
|
||||||
/* [in] */ DB_UPARAMS cParamNames,
|
|
||||||
/* [size_is][in] */ const OLECHAR *rgParamNames[ ],
|
|
||||||
/* [size_is][out] */ DB_LPARAMS rgParamOrdinals[ ]);
|
|
||||||
|
|
||||||
/* [local] */ HRESULT ( STDMETHODCALLTYPE *SetParameterInfo )(
|
|
||||||
ICommandWithParameters * This,
|
|
||||||
/* [in] */ DB_UPARAMS cParams,
|
|
||||||
/* [size_is][unique][in] */ const DB_UPARAMS rgParamOrdinals[ ],
|
|
||||||
/* [size_is][unique][in] */ const DBPARAMBINDINFO rgParamBindInfo[ ]);
|
|
||||||
|
|
||||||
END_INTERFACE
|
|
||||||
} ICommandWithParametersVtbl;
|
|
||||||
|
|
||||||
interface ICommandWithParameters
|
|
||||||
{
|
|
||||||
CONST_VTBL struct ICommandWithParametersVtbl *lpVtbl;
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#ifdef COBJMACROS
|
|
||||||
|
|
||||||
|
|
||||||
#define ICommandWithParameters_QueryInterface(This,riid,ppvObject) \
|
|
||||||
( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
|
|
||||||
|
|
||||||
#define ICommandWithParameters_AddRef(This) \
|
|
||||||
( (This)->lpVtbl -> AddRef(This) )
|
|
||||||
|
|
||||||
#define ICommandWithParameters_Release(This) \
|
|
||||||
( (This)->lpVtbl -> Release(This) )
|
|
||||||
|
|
||||||
|
|
||||||
#define ICommandWithParameters_GetParameterInfo(This,pcParams,prgParamInfo,ppNamesBuffer) \
|
|
||||||
( (This)->lpVtbl -> GetParameterInfo(This,pcParams,prgParamInfo,ppNamesBuffer) )
|
|
||||||
|
|
||||||
#define ICommandWithParameters_MapParameterNames(This,cParamNames,rgParamNames,rgParamOrdinals) \
|
|
||||||
( (This)->lpVtbl -> MapParameterNames(This,cParamNames,rgParamNames,rgParamOrdinals) )
|
|
||||||
|
|
||||||
#define ICommandWithParameters_SetParameterInfo(This,cParams,rgParamOrdinals,rgParamBindInfo) \
|
|
||||||
( (This)->lpVtbl -> SetParameterInfo(This,cParams,rgParamOrdinals,rgParamBindInfo) )
|
|
||||||
|
|
||||||
#endif /* COBJMACROS */
|
|
||||||
|
|
||||||
|
|
||||||
#endif /* C style interface */
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/* [call_as] */ HRESULT STDMETHODCALLTYPE ICommandWithParameters_RemoteGetParameterInfo_Proxy(
|
|
||||||
ICommandWithParameters * This,
|
|
||||||
/* [out][in] */ DB_UPARAMS *pcParams,
|
|
||||||
/* [size_is][size_is][out] */ DBPARAMINFO **prgParamInfo,
|
|
||||||
/* [size_is][size_is][out] */ DBBYTEOFFSET **prgNameOffsets,
|
|
||||||
/* [out][in] */ DBLENGTH *pcbNamesBuffer,
|
|
||||||
/* [size_is][size_is][unique][out][in] */ OLECHAR **ppNamesBuffer,
|
|
||||||
/* [out] */ IErrorInfo **ppErrorInfoRem);
|
|
||||||
|
|
||||||
|
|
||||||
void __RPC_STUB ICommandWithParameters_RemoteGetParameterInfo_Stub(
|
|
||||||
IRpcStubBuffer *This,
|
|
||||||
IRpcChannelBuffer *_pRpcChannelBuffer,
|
|
||||||
PRPC_MESSAGE _pRpcMessage,
|
|
||||||
DWORD *_pdwStubPhase);
|
|
||||||
|
|
||||||
|
|
||||||
/* [call_as] */ HRESULT STDMETHODCALLTYPE ICommandWithParameters_RemoteMapParameterNames_Proxy(
|
|
||||||
ICommandWithParameters * This,
|
|
||||||
/* [in] */ DB_UPARAMS cParamNames,
|
|
||||||
/* [size_is][in] */ LPCOLESTR *rgParamNames,
|
|
||||||
/* [size_is][out] */ DB_LPARAMS *rgParamOrdinals,
|
|
||||||
/* [out] */ IErrorInfo **ppErrorInfoRem);
|
|
||||||
|
|
||||||
|
|
||||||
void __RPC_STUB ICommandWithParameters_RemoteMapParameterNames_Stub(
|
|
||||||
IRpcStubBuffer *This,
|
|
||||||
IRpcChannelBuffer *_pRpcChannelBuffer,
|
|
||||||
PRPC_MESSAGE _pRpcMessage,
|
|
||||||
DWORD *_pdwStubPhase);
|
|
||||||
|
|
||||||
|
|
||||||
/* [call_as] */ HRESULT STDMETHODCALLTYPE ICommandWithParameters_RemoteSetParameterInfo_Proxy(
|
|
||||||
ICommandWithParameters * This,
|
|
||||||
/* [in] */ DB_UPARAMS cParams,
|
|
||||||
/* [size_is][unique][in] */ const DB_UPARAMS *rgParamOrdinals,
|
|
||||||
/* [size_is][unique][in] */ const DBPARAMBINDINFO *rgParamBindInfo,
|
|
||||||
/* [out] */ IErrorInfo **ppErrorInfoRem);
|
|
||||||
|
|
||||||
|
|
||||||
void __RPC_STUB ICommandWithParameters_RemoteSetParameterInfo_Stub(
|
|
||||||
IRpcStubBuffer *This,
|
|
||||||
IRpcChannelBuffer *_pRpcChannelBuffer,
|
|
||||||
PRPC_MESSAGE _pRpcMessage,
|
|
||||||
DWORD *_pdwStubPhase);
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#endif /* __ICommandWithParameters_INTERFACE_DEFINED__ */
|
|
||||||
|
|
||||||
|
|
||||||
/* interface __MIDL_itf_sqlncli_0000_0001 */
|
|
||||||
/* [local] */
|
|
||||||
|
|
||||||
typedef DWORD DBASYNCHOP;
|
|
||||||
|
|
||||||
typedef DWORD DBASYNCHPHASE;
|
|
||||||
|
|
||||||
#endif // This is already defined in oledb.h
|
|
||||||
|
|
||||||
//-------------------------------------------------------------------
|
|
||||||
// Variant Access macros, similar to ole automation.
|
|
||||||
//-------------------------------------------------------------------
|
|
||||||
#define V_SS_VT(X) ((X)->vt)
|
|
||||||
#define V_SS_UNION(X, Y) ((X)->Y)
|
|
||||||
|
|
||||||
#define V_SS_UI1(X) V_SS_UNION(X, bTinyIntVal)
|
|
||||||
#define V_SS_I2(X) V_SS_UNION(X, sShortIntVal)
|
|
||||||
#define V_SS_I4(X) V_SS_UNION(X, lIntVal)
|
|
||||||
#define V_SS_I8(X) V_SS_UNION(X, llBigIntVal)
|
|
||||||
|
|
||||||
#define V_SS_R4(X) V_SS_UNION(X, fltRealVal)
|
|
||||||
#define V_SS_R8(X) V_SS_UNION(X, dblFloatVal)
|
|
||||||
#define V_SS_UI4(X) V_SS_UNION(X, ulVal)
|
|
||||||
|
|
||||||
#define V_SS_MONEY(X) V_SS_UNION(X, cyMoneyVal)
|
|
||||||
#define V_SS_SMALLMONEY(X) V_SS_UNION(X, cyMoneyVal)
|
|
||||||
|
|
||||||
#define V_SS_WSTRING(X) V_SS_UNION(X, NCharVal)
|
|
||||||
#define V_SS_WVARSTRING(X) V_SS_UNION(X, NCharVal)
|
|
||||||
|
|
||||||
#define V_SS_STRING(X) V_SS_UNION(X, CharVal)
|
|
||||||
#define V_SS_VARSTRING(X) V_SS_UNION(X, CharVal)
|
|
||||||
|
|
||||||
#define V_SS_BIT(X) V_SS_UNION(X, fBitVal)
|
|
||||||
#define V_SS_GUID(X) V_SS_UNION(X, rgbGuidVal)
|
|
||||||
|
|
||||||
#define V_SS_NUMERIC(X) V_SS_UNION(X, numNumericVal)
|
|
||||||
#define V_SS_DECIMAL(X) V_SS_UNION(X, numNumericVal)
|
|
||||||
|
|
||||||
#define V_SS_BINARY(X) V_SS_UNION(X, BinaryVal)
|
|
||||||
#define V_SS_VARBINARY(X) V_SS_UNION(X, BinaryVal)
|
|
||||||
|
|
||||||
#define V_SS_DATETIME(X) V_SS_UNION(X, tsDateTimeVal)
|
|
||||||
#define V_SS_SMALLDATETIME(X) V_SS_UNION(X, tsDateTimeVal)
|
|
||||||
|
|
||||||
#define V_SS_UNKNOWN(X) V_SS_UNION(X, UnknownType)
|
|
||||||
|
|
||||||
//Text and image types.
|
|
||||||
#define V_SS_IMAGE(X) V_SS_UNION(X, ImageVal)
|
|
||||||
#define V_SS_TEXT(X) V_SS_UNION(X, TextVal)
|
|
||||||
#define V_SS_NTEXT(X) V_SS_UNION(X, NTextVal)
|
|
||||||
|
|
||||||
//Microsoft SQL Server 2008 datetime.
|
|
||||||
#define V_SS_DATE(X) V_SS_UNION(X, dDateVal)
|
|
||||||
#define V_SS_TIME2(X) V_SS_UNION(X, Time2Val)
|
|
||||||
#define V_SS_DATETIME2(X) V_SS_UNION(X, DateTimeVal)
|
|
||||||
#define V_SS_DATETIMEOFFSET(X) V_SS_UNION(X, DateTimeOffsetVal)
|
|
||||||
|
|
||||||
//-------------------------------------------------------------------
|
|
||||||
// define SQL Server specific types.
|
|
||||||
//-------------------------------------------------------------------
|
|
||||||
typedef enum DBTYPEENUM EOledbTypes;
|
|
||||||
#define DBTYPE_XML ((EOledbTypes) 141) // introduced in SQL 2005
|
|
||||||
#define DBTYPE_TABLE ((EOledbTypes) 143) // introduced in SQL 2008
|
|
||||||
#define DBTYPE_DBTIME2 ((EOledbTypes) 145) // introduced in SQL 2008
|
|
||||||
#define DBTYPE_DBTIMESTAMPOFFSET ((EOledbTypes) 146) // introduced in SQL 2008
|
|
||||||
#ifdef _SQLOLEDB_H_
|
|
||||||
#undef DBTYPE_SQLVARIANT
|
|
||||||
#endif //_SQLOLEDB_H_
|
|
||||||
#define DBTYPE_SQLVARIANT ((EOledbTypes) 144) // introduced in MDAC 2.5
|
|
||||||
|
|
||||||
|
|
||||||
#ifndef _SQLOLEDB_H_
|
|
||||||
enum SQLVARENUM
|
|
||||||
{
|
|
||||||
VT_SS_EMPTY = DBTYPE_EMPTY,
|
|
||||||
VT_SS_NULL = DBTYPE_NULL,
|
|
||||||
VT_SS_UI1 = DBTYPE_UI1,
|
|
||||||
VT_SS_I2 = DBTYPE_I2,
|
|
||||||
VT_SS_I4 = DBTYPE_I4,
|
|
||||||
VT_SS_I8 = DBTYPE_I8,
|
|
||||||
|
|
||||||
//Floats
|
|
||||||
VT_SS_R4 = DBTYPE_R4,
|
|
||||||
VT_SS_R8 = DBTYPE_R8,
|
|
||||||
|
|
||||||
//Money
|
|
||||||
VT_SS_MONEY = DBTYPE_CY,
|
|
||||||
VT_SS_SMALLMONEY = 200,
|
|
||||||
|
|
||||||
//Strings
|
|
||||||
VT_SS_WSTRING = 201,
|
|
||||||
VT_SS_WVARSTRING = 202,
|
|
||||||
|
|
||||||
VT_SS_STRING = 203,
|
|
||||||
VT_SS_VARSTRING = 204,
|
|
||||||
|
|
||||||
//Bit
|
|
||||||
VT_SS_BIT = DBTYPE_BOOL,
|
|
||||||
|
|
||||||
//Guid
|
|
||||||
VT_SS_GUID = DBTYPE_GUID,
|
|
||||||
|
|
||||||
//Exact precision
|
|
||||||
VT_SS_NUMERIC = DBTYPE_NUMERIC,
|
|
||||||
VT_SS_DECIMAL = 205,
|
|
||||||
|
|
||||||
//Datetime
|
|
||||||
VT_SS_DATETIME = DBTYPE_DBTIMESTAMP,
|
|
||||||
VT_SS_SMALLDATETIME =206,
|
|
||||||
|
|
||||||
//Binary
|
|
||||||
VT_SS_BINARY =207,
|
|
||||||
VT_SS_VARBINARY = 208,
|
|
||||||
//Future
|
|
||||||
VT_SS_UNKNOWN = 209,
|
|
||||||
|
|
||||||
//Additional datetime
|
|
||||||
VT_SS_DATE = DBTYPE_DBDATE,
|
|
||||||
VT_SS_TIME2 = DBTYPE_DBTIME2,
|
|
||||||
VT_SS_DATETIME2 = 212,
|
|
||||||
VT_SS_DATETIMEOFFSET = DBTYPE_DBTIMESTAMPOFFSET,
|
|
||||||
};
|
|
||||||
typedef unsigned short SSVARTYPE;
|
|
||||||
|
|
||||||
|
|
||||||
enum DBPARAMFLAGSENUM_SS_100
|
|
||||||
{ DBPARAMFLAGS_SS_ISVARIABLESCALE = 0x40000000
|
|
||||||
} ;
|
|
||||||
enum DBCOLUMNFLAGSENUM_SS_100
|
|
||||||
{ DBCOLUMNFLAGS_SS_ISVARIABLESCALE = 0x40000000,
|
|
||||||
DBCOLUMNFLAGS_SS_ISCOLUMNSET = 0x80000000
|
|
||||||
} ;
|
|
||||||
|
|
||||||
//-------------------------------------------------------------------
|
|
||||||
// Class Factory Interface used to initialize pointer to UMS.
|
|
||||||
//-------------------------------------------------------------------
|
|
||||||
|
|
||||||
|
|
||||||
extern RPC_IF_HANDLE __MIDL_itf_sqlncli_0000_0001_v0_0_c_ifspec;
|
|
||||||
extern RPC_IF_HANDLE __MIDL_itf_sqlncli_0000_0001_v0_0_s_ifspec;
|
|
||||||
|
|
||||||
#ifndef __IUMSInitialize_INTERFACE_DEFINED__
|
|
||||||
#define __IUMSInitialize_INTERFACE_DEFINED__
|
|
||||||
|
|
||||||
/* interface IUMSInitialize */
|
|
||||||
/* [unique][uuid][object][local] */
|
|
||||||
|
|
||||||
|
|
||||||
EXTERN_C const IID IID_IUMSInitialize;
|
|
||||||
|
|
||||||
#if defined(__cplusplus) && !defined(CINTERFACE)
|
|
||||||
|
|
||||||
MIDL_INTERFACE("5cf4ca14-ef21-11d0-97e7-00c04fc2ad98")
|
|
||||||
IUMSInitialize : public IUnknown
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
virtual HRESULT STDMETHODCALLTYPE Initialize(
|
|
||||||
/* [in] */ void *pUMS) = 0;
|
|
||||||
|
|
||||||
};
|
|
||||||
|
|
||||||
#else /* C style interface */
|
|
||||||
|
|
||||||
typedef struct IUMSInitializeVtbl
|
|
||||||
{
|
|
||||||
BEGIN_INTERFACE
|
|
||||||
|
|
||||||
HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
|
|
||||||
IUMSInitialize * This,
|
|
||||||
/* [in] */ REFIID riid,
|
|
||||||
/* [iid_is][out] */
|
|
||||||
__RPC__deref_out void **ppvObject);
|
|
||||||
|
|
||||||
ULONG ( STDMETHODCALLTYPE *AddRef )(
|
|
||||||
IUMSInitialize * This);
|
|
||||||
|
|
||||||
ULONG ( STDMETHODCALLTYPE *Release )(
|
|
||||||
IUMSInitialize * This);
|
|
||||||
|
|
||||||
HRESULT ( STDMETHODCALLTYPE *Initialize )(
|
|
||||||
IUMSInitialize * This,
|
|
||||||
/* [in] */ void *pUMS);
|
|
||||||
|
|
||||||
END_INTERFACE
|
|
||||||
} IUMSInitializeVtbl;
|
|
||||||
|
|
||||||
interface IUMSInitialize
|
|
||||||
{
|
|
||||||
CONST_VTBL struct IUMSInitializeVtbl *lpVtbl;
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#ifdef COBJMACROS
|
|
||||||
|
|
||||||
|
|
||||||
#define IUMSInitialize_QueryInterface(This,riid,ppvObject) \
|
|
||||||
( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
|
|
||||||
|
|
||||||
#define IUMSInitialize_AddRef(This) \
|
|
||||||
( (This)->lpVtbl -> AddRef(This) )
|
|
||||||
|
|
||||||
#define IUMSInitialize_Release(This) \
|
|
||||||
( (This)->lpVtbl -> Release(This) )
|
|
||||||
|
|
||||||
|
|
||||||
#define IUMSInitialize_Initialize(This,pUMS) \
|
|
||||||
( (This)->lpVtbl -> Initialize(This,pUMS) )
|
|
||||||
|
|
||||||
#endif /* COBJMACROS */
|
|
||||||
|
|
||||||
|
|
||||||
#endif /* C style interface */
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#endif /* __IUMSInitialize_INTERFACE_DEFINED__ */
|
|
||||||
|
|
||||||
|
|
||||||
/* interface __MIDL_itf_sqlncli_0000_0002 */
|
|
||||||
/* [local] */
|
|
||||||
|
|
||||||
|
|
||||||
// the structure returned by ISQLServerErrorInfo::GetSQLServerInfo
|
|
||||||
typedef struct tagSSErrorInfo
|
|
||||||
{
|
|
||||||
LPOLESTR pwszMessage;
|
|
||||||
LPOLESTR pwszServer;
|
|
||||||
LPOLESTR pwszProcedure;
|
|
||||||
LONG lNative;
|
|
||||||
BYTE bState;
|
|
||||||
BYTE bClass;
|
|
||||||
WORD wLineNumber;
|
|
||||||
} SSERRORINFO;
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
extern RPC_IF_HANDLE __MIDL_itf_sqlncli_0000_0002_v0_0_c_ifspec;
|
|
||||||
extern RPC_IF_HANDLE __MIDL_itf_sqlncli_0000_0002_v0_0_s_ifspec;
|
|
||||||
|
|
||||||
#ifndef __ISQLServerErrorInfo_INTERFACE_DEFINED__
|
|
||||||
#define __ISQLServerErrorInfo_INTERFACE_DEFINED__
|
|
||||||
|
|
||||||
/* interface ISQLServerErrorInfo */
|
|
||||||
/* [unique][uuid][object][local] */
|
|
||||||
|
|
||||||
|
|
||||||
EXTERN_C const IID IID_ISQLServerErrorInfo;
|
|
||||||
|
|
||||||
#if defined(__cplusplus) && !defined(CINTERFACE)
|
|
||||||
|
|
||||||
MIDL_INTERFACE("5CF4CA12-EF21-11d0-97E7-00C04FC2AD98")
|
|
||||||
ISQLServerErrorInfo : public IUnknown
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
virtual HRESULT STDMETHODCALLTYPE GetErrorInfo(
|
|
||||||
/* [out] */ SSERRORINFO **ppErrorInfo,
|
|
||||||
/* [out] */ OLECHAR **ppStringsBuffer) = 0;
|
|
||||||
|
|
||||||
};
|
|
||||||
|
|
||||||
#else /* C style interface */
|
|
||||||
|
|
||||||
typedef struct ISQLServerErrorInfoVtbl
|
|
||||||
{
|
|
||||||
BEGIN_INTERFACE
|
|
||||||
|
|
||||||
HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
|
|
||||||
ISQLServerErrorInfo * This,
|
|
||||||
/* [in] */ REFIID riid,
|
|
||||||
/* [iid_is][out] */
|
|
||||||
__RPC__deref_out void **ppvObject);
|
|
||||||
|
|
||||||
ULONG ( STDMETHODCALLTYPE *AddRef )(
|
|
||||||
ISQLServerErrorInfo * This);
|
|
||||||
|
|
||||||
ULONG ( STDMETHODCALLTYPE *Release )(
|
|
||||||
ISQLServerErrorInfo * This);
|
|
||||||
|
|
||||||
HRESULT ( STDMETHODCALLTYPE *GetErrorInfo )(
|
|
||||||
ISQLServerErrorInfo * This,
|
|
||||||
/* [out] */ SSERRORINFO **ppErrorInfo,
|
|
||||||
/* [out] */ OLECHAR **ppStringsBuffer);
|
|
||||||
|
|
||||||
END_INTERFACE
|
|
||||||
} ISQLServerErrorInfoVtbl;
|
|
||||||
|
|
||||||
interface ISQLServerErrorInfo
|
|
||||||
{
|
|
||||||
CONST_VTBL struct ISQLServerErrorInfoVtbl *lpVtbl;
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#ifdef COBJMACROS
|
|
||||||
|
|
||||||
|
|
||||||
#define ISQLServerErrorInfo_QueryInterface(This,riid,ppvObject) \
|
|
||||||
( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
|
|
||||||
|
|
||||||
#define ISQLServerErrorInfo_AddRef(This) \
|
|
||||||
( (This)->lpVtbl -> AddRef(This) )
|
|
||||||
|
|
||||||
#define ISQLServerErrorInfo_Release(This) \
|
|
||||||
( (This)->lpVtbl -> Release(This) )
|
|
||||||
|
|
||||||
|
|
||||||
#define ISQLServerErrorInfo_GetErrorInfo(This,ppErrorInfo,ppStringsBuffer) \
|
|
||||||
( (This)->lpVtbl -> GetErrorInfo(This,ppErrorInfo,ppStringsBuffer) )
|
|
||||||
|
|
||||||
#endif /* COBJMACROS */
|
|
||||||
|
|
||||||
|
|
||||||
#endif /* C style interface */
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#endif /* __ISQLServerErrorInfo_INTERFACE_DEFINED__ */
|
|
||||||
|
|
||||||
|
|
||||||
#ifndef __IRowsetFastLoad_INTERFACE_DEFINED__
|
|
||||||
#define __IRowsetFastLoad_INTERFACE_DEFINED__
|
|
||||||
|
|
||||||
/* interface IRowsetFastLoad */
|
|
||||||
/* [unique][uuid][object][local] */
|
|
||||||
|
|
||||||
|
|
||||||
EXTERN_C const IID IID_IRowsetFastLoad;
|
|
||||||
|
|
||||||
#if defined(__cplusplus) && !defined(CINTERFACE)
|
|
||||||
|
|
||||||
MIDL_INTERFACE("5CF4CA13-EF21-11d0-97E7-00C04FC2AD98")
|
|
||||||
IRowsetFastLoad : public IUnknown
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
virtual HRESULT STDMETHODCALLTYPE InsertRow(
|
|
||||||
/* [in] */ HACCESSOR hAccessor,
|
|
||||||
/* [in] */ void *pData) = 0;
|
|
||||||
|
|
||||||
virtual HRESULT STDMETHODCALLTYPE Commit(
|
|
||||||
/* [in] */ BOOL fDone) = 0;
|
|
||||||
|
|
||||||
};
|
|
||||||
|
|
||||||
#else /* C style interface */
|
|
||||||
|
|
||||||
typedef struct IRowsetFastLoadVtbl
|
|
||||||
{
|
|
||||||
BEGIN_INTERFACE
|
|
||||||
|
|
||||||
HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
|
|
||||||
IRowsetFastLoad * This,
|
|
||||||
/* [in] */ REFIID riid,
|
|
||||||
/* [iid_is][out] */
|
|
||||||
__RPC__deref_out void **ppvObject);
|
|
||||||
|
|
||||||
ULONG ( STDMETHODCALLTYPE *AddRef )(
|
|
||||||
IRowsetFastLoad * This);
|
|
||||||
|
|
||||||
ULONG ( STDMETHODCALLTYPE *Release )(
|
|
||||||
IRowsetFastLoad * This);
|
|
||||||
|
|
||||||
HRESULT ( STDMETHODCALLTYPE *InsertRow )(
|
|
||||||
IRowsetFastLoad * This,
|
|
||||||
/* [in] */ HACCESSOR hAccessor,
|
|
||||||
/* [in] */ void *pData);
|
|
||||||
|
|
||||||
HRESULT ( STDMETHODCALLTYPE *Commit )(
|
|
||||||
IRowsetFastLoad * This,
|
|
||||||
/* [in] */ BOOL fDone);
|
|
||||||
|
|
||||||
END_INTERFACE
|
|
||||||
} IRowsetFastLoadVtbl;
|
|
||||||
|
|
||||||
interface IRowsetFastLoad
|
|
||||||
{
|
|
||||||
CONST_VTBL struct IRowsetFastLoadVtbl *lpVtbl;
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#ifdef COBJMACROS
|
|
||||||
|
|
||||||
|
|
||||||
#define IRowsetFastLoad_QueryInterface(This,riid,ppvObject) \
|
|
||||||
( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
|
|
||||||
|
|
||||||
#define IRowsetFastLoad_AddRef(This) \
|
|
||||||
( (This)->lpVtbl -> AddRef(This) )
|
|
||||||
|
|
||||||
#define IRowsetFastLoad_Release(This) \
|
|
||||||
( (This)->lpVtbl -> Release(This) )
|
|
||||||
|
|
||||||
|
|
||||||
#define IRowsetFastLoad_InsertRow(This,hAccessor,pData) \
|
|
||||||
( (This)->lpVtbl -> InsertRow(This,hAccessor,pData) )
|
|
||||||
|
|
||||||
#define IRowsetFastLoad_Commit(This,fDone) \
|
|
||||||
( (This)->lpVtbl -> Commit(This,fDone) )
|
|
||||||
|
|
||||||
#endif /* COBJMACROS */
|
|
||||||
|
|
||||||
|
|
||||||
#endif /* C style interface */
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#endif /* __IRowsetFastLoad_INTERFACE_DEFINED__ */
|
|
||||||
|
|
||||||
|
|
||||||
/* interface __MIDL_itf_sqlncli_0000_0004 */
|
|
||||||
/* [local] */
|
|
||||||
|
|
||||||
#include <pshpack8.h> // 8-byte structure packing
|
|
||||||
|
|
||||||
typedef struct tagDBTIME2
|
|
||||||
{
|
|
||||||
USHORT hour;
|
|
||||||
USHORT minute;
|
|
||||||
USHORT second;
|
|
||||||
ULONG fraction;
|
|
||||||
} DBTIME2;
|
|
||||||
|
|
||||||
typedef struct tagDBTIMESTAMPOFFSET
|
|
||||||
{
|
|
||||||
SHORT year;
|
|
||||||
USHORT month;
|
|
||||||
USHORT day;
|
|
||||||
USHORT hour;
|
|
||||||
USHORT minute;
|
|
||||||
USHORT second;
|
|
||||||
ULONG fraction;
|
|
||||||
SHORT timezone_hour;
|
|
||||||
SHORT timezone_minute;
|
|
||||||
} DBTIMESTAMPOFFSET;
|
|
||||||
|
|
||||||
#include <poppack.h> // restore original structure packing
|
|
||||||
|
|
||||||
struct SSVARIANT
|
|
||||||
{
|
|
||||||
SSVARTYPE vt;
|
|
||||||
DWORD dwReserved1;
|
|
||||||
DWORD dwReserved2;
|
|
||||||
union
|
|
||||||
{
|
|
||||||
BYTE bTinyIntVal;
|
|
||||||
SHORT sShortIntVal;
|
|
||||||
LONG lIntVal;
|
|
||||||
LONGLONG llBigIntVal;
|
|
||||||
FLOAT fltRealVal;
|
|
||||||
DOUBLE dblFloatVal;
|
|
||||||
CY cyMoneyVal;
|
|
||||||
VARIANT_BOOL fBitVal;
|
|
||||||
BYTE rgbGuidVal[ 16 ];
|
|
||||||
DB_NUMERIC numNumericVal;
|
|
||||||
DBDATE dDateVal;
|
|
||||||
DBTIMESTAMP tsDateTimeVal;
|
|
||||||
struct _Time2Val
|
|
||||||
{
|
|
||||||
DBTIME2 tTime2Val;
|
|
||||||
BYTE bScale;
|
|
||||||
} Time2Val;
|
|
||||||
struct _DateTimeVal
|
|
||||||
{
|
|
||||||
DBTIMESTAMP tsDateTimeVal;
|
|
||||||
BYTE bScale;
|
|
||||||
} DateTimeVal;
|
|
||||||
struct _DateTimeOffsetVal
|
|
||||||
{
|
|
||||||
DBTIMESTAMPOFFSET tsoDateTimeOffsetVal;
|
|
||||||
BYTE bScale;
|
|
||||||
} DateTimeOffsetVal;
|
|
||||||
struct _NCharVal
|
|
||||||
{
|
|
||||||
SHORT sActualLength;
|
|
||||||
SHORT sMaxLength;
|
|
||||||
WCHAR *pwchNCharVal;
|
|
||||||
BYTE rgbReserved[ 5 ];
|
|
||||||
DWORD dwReserved;
|
|
||||||
WCHAR *pwchReserved;
|
|
||||||
} NCharVal;
|
|
||||||
struct _CharVal
|
|
||||||
{
|
|
||||||
SHORT sActualLength;
|
|
||||||
SHORT sMaxLength;
|
|
||||||
CHAR *pchCharVal;
|
|
||||||
BYTE rgbReserved[ 5 ];
|
|
||||||
DWORD dwReserved;
|
|
||||||
WCHAR *pwchReserved;
|
|
||||||
} CharVal;
|
|
||||||
struct _BinaryVal
|
|
||||||
{
|
|
||||||
SHORT sActualLength;
|
|
||||||
SHORT sMaxLength;
|
|
||||||
BYTE *prgbBinaryVal;
|
|
||||||
DWORD dwReserved;
|
|
||||||
} BinaryVal;
|
|
||||||
struct _UnknownType
|
|
||||||
{
|
|
||||||
DWORD dwActualLength;
|
|
||||||
BYTE rgMetadata[ 16 ];
|
|
||||||
BYTE *pUnknownData;
|
|
||||||
} UnknownType;
|
|
||||||
struct _BLOBType
|
|
||||||
{
|
|
||||||
DBOBJECT dbobj;
|
|
||||||
IUnknown *pUnk;
|
|
||||||
} BLOBType;
|
|
||||||
} ;
|
|
||||||
} ;
|
|
||||||
typedef DWORD LOCKMODE;
|
|
||||||
|
|
||||||
|
|
||||||
enum LOCKMODEENUM
|
|
||||||
{ LOCKMODE_INVALID = 0,
|
|
||||||
LOCKMODE_EXCLUSIVE = ( LOCKMODE_INVALID + 1 ) ,
|
|
||||||
LOCKMODE_SHARED = ( LOCKMODE_EXCLUSIVE + 1 )
|
|
||||||
} ;
|
|
||||||
|
|
||||||
|
|
||||||
extern RPC_IF_HANDLE __MIDL_itf_sqlncli_0000_0004_v0_0_c_ifspec;
|
|
||||||
extern RPC_IF_HANDLE __MIDL_itf_sqlncli_0000_0004_v0_0_s_ifspec;
|
|
||||||
|
|
||||||
#ifndef __ISchemaLock_INTERFACE_DEFINED__
|
|
||||||
#define __ISchemaLock_INTERFACE_DEFINED__
|
|
||||||
|
|
||||||
/* interface ISchemaLock */
|
|
||||||
/* [unique][uuid][object][local] */
|
|
||||||
|
|
||||||
|
|
||||||
EXTERN_C const IID IID_ISchemaLock;
|
|
||||||
|
|
||||||
#if defined(__cplusplus) && !defined(CINTERFACE)
|
|
||||||
|
|
||||||
MIDL_INTERFACE("4C2389FB-2511-11d4-B258-00C04F7971CE")
|
|
||||||
ISchemaLock : public IUnknown
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
virtual HRESULT STDMETHODCALLTYPE GetSchemaLock(
|
|
||||||
/* [in] */ DBID *pTableID,
|
|
||||||
/* [in] */ LOCKMODE lmMode,
|
|
||||||
/* [out] */ HANDLE *phLockHandle,
|
|
||||||
/* [out] */ ULONGLONG *pTableVersion) = 0;
|
|
||||||
|
|
||||||
virtual HRESULT STDMETHODCALLTYPE ReleaseSchemaLock(
|
|
||||||
/* [in] */ HANDLE hLockHandle) = 0;
|
|
||||||
|
|
||||||
};
|
|
||||||
|
|
||||||
#else /* C style interface */
|
|
||||||
|
|
||||||
typedef struct ISchemaLockVtbl
|
|
||||||
{
|
|
||||||
BEGIN_INTERFACE
|
|
||||||
|
|
||||||
HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
|
|
||||||
ISchemaLock * This,
|
|
||||||
/* [in] */ REFIID riid,
|
|
||||||
/* [iid_is][out] */
|
|
||||||
__RPC__deref_out void **ppvObject);
|
|
||||||
|
|
||||||
ULONG ( STDMETHODCALLTYPE *AddRef )(
|
|
||||||
ISchemaLock * This);
|
|
||||||
|
|
||||||
ULONG ( STDMETHODCALLTYPE *Release )(
|
|
||||||
ISchemaLock * This);
|
|
||||||
|
|
||||||
HRESULT ( STDMETHODCALLTYPE *GetSchemaLock )(
|
|
||||||
ISchemaLock * This,
|
|
||||||
/* [in] */ DBID *pTableID,
|
|
||||||
/* [in] */ LOCKMODE lmMode,
|
|
||||||
/* [out] */ HANDLE *phLockHandle,
|
|
||||||
/* [out] */ ULONGLONG *pTableVersion);
|
|
||||||
|
|
||||||
HRESULT ( STDMETHODCALLTYPE *ReleaseSchemaLock )(
|
|
||||||
ISchemaLock * This,
|
|
||||||
/* [in] */ HANDLE hLockHandle);
|
|
||||||
|
|
||||||
END_INTERFACE
|
|
||||||
} ISchemaLockVtbl;
|
|
||||||
|
|
||||||
interface ISchemaLock
|
|
||||||
{
|
|
||||||
CONST_VTBL struct ISchemaLockVtbl *lpVtbl;
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#ifdef COBJMACROS
|
|
||||||
|
|
||||||
|
|
||||||
#define ISchemaLock_QueryInterface(This,riid,ppvObject) \
|
|
||||||
( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
|
|
||||||
|
|
||||||
#define ISchemaLock_AddRef(This) \
|
|
||||||
( (This)->lpVtbl -> AddRef(This) )
|
|
||||||
|
|
||||||
#define ISchemaLock_Release(This) \
|
|
||||||
( (This)->lpVtbl -> Release(This) )
|
|
||||||
|
|
||||||
|
|
||||||
#define ISchemaLock_GetSchemaLock(This,pTableID,lmMode,phLockHandle,pTableVersion) \
|
|
||||||
( (This)->lpVtbl -> GetSchemaLock(This,pTableID,lmMode,phLockHandle,pTableVersion) )
|
|
||||||
|
|
||||||
#define ISchemaLock_ReleaseSchemaLock(This,hLockHandle) \
|
|
||||||
( (This)->lpVtbl -> ReleaseSchemaLock(This,hLockHandle) )
|
|
||||||
|
|
||||||
#endif /* COBJMACROS */
|
|
||||||
|
|
||||||
|
|
||||||
#endif /* C style interface */
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#endif /* __ISchemaLock_INTERFACE_DEFINED__ */
|
|
||||||
|
|
||||||
|
|
||||||
#ifndef __IBCPSession_INTERFACE_DEFINED__
|
|
||||||
#define __IBCPSession_INTERFACE_DEFINED__
|
|
||||||
|
|
||||||
/* interface IBCPSession */
|
|
||||||
/* [unique][uuid][object][local] */
|
|
||||||
|
|
||||||
|
|
||||||
EXTERN_C const IID IID_IBCPSession;
|
|
||||||
|
|
||||||
#if defined(__cplusplus) && !defined(CINTERFACE)
|
|
||||||
|
|
||||||
MIDL_INTERFACE("88352D80-42D1-42f0-A170-AB0F8B45B939")
|
|
||||||
IBCPSession : public IUnknown
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
virtual HRESULT STDMETHODCALLTYPE BCPColFmt(
|
|
||||||
/* [in] */ DBORDINAL idxUserDataCol,
|
|
||||||
/* [in] */ int eUserDataType,
|
|
||||||
/* [in] */ int cbIndicator,
|
|
||||||
/* [in] */ int cbUserData,
|
|
||||||
/* [size_is][in] */ BYTE *pbUserDataTerm,
|
|
||||||
/* [in] */ int cbUserDataTerm,
|
|
||||||
/* [in] */ DBORDINAL idxServerCol) = 0;
|
|
||||||
|
|
||||||
virtual HRESULT STDMETHODCALLTYPE BCPColumns(
|
|
||||||
/* [in] */ DBCOUNTITEM nColumns) = 0;
|
|
||||||
|
|
||||||
virtual HRESULT STDMETHODCALLTYPE BCPControl(
|
|
||||||
/* [in] */ int eOption,
|
|
||||||
/* [in] */ void *iValue) = 0;
|
|
||||||
|
|
||||||
virtual HRESULT STDMETHODCALLTYPE BCPDone( void) = 0;
|
|
||||||
|
|
||||||
virtual HRESULT STDMETHODCALLTYPE BCPExec(
|
|
||||||
/* [out] */ DBROWCOUNT *pRowsCopied) = 0;
|
|
||||||
|
|
||||||
virtual HRESULT STDMETHODCALLTYPE BCPInit(
|
|
||||||
/* [string][in] */ const wchar_t *pwszTable,
|
|
||||||
/* [string][in] */ const wchar_t *pwszDataFile,
|
|
||||||
/* [string][in] */ const wchar_t *pwszErrorFile,
|
|
||||||
/* [in] */ int eDirection) = 0;
|
|
||||||
|
|
||||||
virtual HRESULT STDMETHODCALLTYPE BCPReadFmt(
|
|
||||||
/* [string][in] */ const wchar_t *pwszFormatFile) = 0;
|
|
||||||
|
|
||||||
virtual HRESULT STDMETHODCALLTYPE BCPWriteFmt(
|
|
||||||
/* [string][in] */ const wchar_t *pwszFormatFile) = 0;
|
|
||||||
|
|
||||||
};
|
|
||||||
|
|
||||||
#else /* C style interface */
|
|
||||||
|
|
||||||
typedef struct IBCPSessionVtbl
|
|
||||||
{
|
|
||||||
BEGIN_INTERFACE
|
|
||||||
|
|
||||||
HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
|
|
||||||
IBCPSession * This,
|
|
||||||
/* [in] */ REFIID riid,
|
|
||||||
/* [iid_is][out] */
|
|
||||||
__RPC__deref_out void **ppvObject);
|
|
||||||
|
|
||||||
ULONG ( STDMETHODCALLTYPE *AddRef )(
|
|
||||||
IBCPSession * This);
|
|
||||||
|
|
||||||
ULONG ( STDMETHODCALLTYPE *Release )(
|
|
||||||
IBCPSession * This);
|
|
||||||
|
|
||||||
HRESULT ( STDMETHODCALLTYPE *BCPColFmt )(
|
|
||||||
IBCPSession * This,
|
|
||||||
/* [in] */ DBORDINAL idxUserDataCol,
|
|
||||||
/* [in] */ int eUserDataType,
|
|
||||||
/* [in] */ int cbIndicator,
|
|
||||||
/* [in] */ int cbUserData,
|
|
||||||
/* [size_is][in] */ BYTE *pbUserDataTerm,
|
|
||||||
/* [in] */ int cbUserDataTerm,
|
|
||||||
/* [in] */ DBORDINAL idxServerCol);
|
|
||||||
|
|
||||||
HRESULT ( STDMETHODCALLTYPE *BCPColumns )(
|
|
||||||
IBCPSession * This,
|
|
||||||
/* [in] */ DBCOUNTITEM nColumns);
|
|
||||||
|
|
||||||
HRESULT ( STDMETHODCALLTYPE *BCPControl )(
|
|
||||||
IBCPSession * This,
|
|
||||||
/* [in] */ int eOption,
|
|
||||||
/* [in] */ void *iValue);
|
|
||||||
|
|
||||||
HRESULT ( STDMETHODCALLTYPE *BCPDone )(
|
|
||||||
IBCPSession * This);
|
|
||||||
|
|
||||||
HRESULT ( STDMETHODCALLTYPE *BCPExec )(
|
|
||||||
IBCPSession * This,
|
|
||||||
/* [out] */ DBROWCOUNT *pRowsCopied);
|
|
||||||
|
|
||||||
HRESULT ( STDMETHODCALLTYPE *BCPInit )(
|
|
||||||
IBCPSession * This,
|
|
||||||
/* [string][in] */ const wchar_t *pwszTable,
|
|
||||||
/* [string][in] */ const wchar_t *pwszDataFile,
|
|
||||||
/* [string][in] */ const wchar_t *pwszErrorFile,
|
|
||||||
/* [in] */ int eDirection);
|
|
||||||
|
|
||||||
HRESULT ( STDMETHODCALLTYPE *BCPReadFmt )(
|
|
||||||
IBCPSession * This,
|
|
||||||
/* [string][in] */ const wchar_t *pwszFormatFile);
|
|
||||||
|
|
||||||
HRESULT ( STDMETHODCALLTYPE *BCPWriteFmt )(
|
|
||||||
IBCPSession * This,
|
|
||||||
/* [string][in] */ const wchar_t *pwszFormatFile);
|
|
||||||
|
|
||||||
END_INTERFACE
|
|
||||||
} IBCPSessionVtbl;
|
|
||||||
|
|
||||||
interface IBCPSession
|
|
||||||
{
|
|
||||||
CONST_VTBL struct IBCPSessionVtbl *lpVtbl;
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#ifdef COBJMACROS
|
|
||||||
|
|
||||||
|
|
||||||
#define IBCPSession_QueryInterface(This,riid,ppvObject) \
|
|
||||||
( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
|
|
||||||
|
|
||||||
#define IBCPSession_AddRef(This) \
|
|
||||||
( (This)->lpVtbl -> AddRef(This) )
|
|
||||||
|
|
||||||
#define IBCPSession_Release(This) \
|
|
||||||
( (This)->lpVtbl -> Release(This) )
|
|
||||||
|
|
||||||
|
|
||||||
#define IBCPSession_BCPColFmt(This,idxUserDataCol,eUserDataType,cbIndicator,cbUserData,pbUserDataTerm,cbUserDataTerm,idxServerCol) \
|
|
||||||
( (This)->lpVtbl -> BCPColFmt(This,idxUserDataCol,eUserDataType,cbIndicator,cbUserData,pbUserDataTerm,cbUserDataTerm,idxServerCol) )
|
|
||||||
|
|
||||||
#define IBCPSession_BCPColumns(This,nColumns) \
|
|
||||||
( (This)->lpVtbl -> BCPColumns(This,nColumns) )
|
|
||||||
|
|
||||||
#define IBCPSession_BCPControl(This,eOption,iValue) \
|
|
||||||
( (This)->lpVtbl -> BCPControl(This,eOption,iValue) )
|
|
||||||
|
|
||||||
#define IBCPSession_BCPDone(This) \
|
|
||||||
( (This)->lpVtbl -> BCPDone(This) )
|
|
||||||
|
|
||||||
#define IBCPSession_BCPExec(This,pRowsCopied) \
|
|
||||||
( (This)->lpVtbl -> BCPExec(This,pRowsCopied) )
|
|
||||||
|
|
||||||
#define IBCPSession_BCPInit(This,pwszTable,pwszDataFile,pwszErrorFile,eDirection) \
|
|
||||||
( (This)->lpVtbl -> BCPInit(This,pwszTable,pwszDataFile,pwszErrorFile,eDirection) )
|
|
||||||
|
|
||||||
#define IBCPSession_BCPReadFmt(This,pwszFormatFile) \
|
|
||||||
( (This)->lpVtbl -> BCPReadFmt(This,pwszFormatFile) )
|
|
||||||
|
|
||||||
#define IBCPSession_BCPWriteFmt(This,pwszFormatFile) \
|
|
||||||
( (This)->lpVtbl -> BCPWriteFmt(This,pwszFormatFile) )
|
|
||||||
|
|
||||||
#endif /* COBJMACROS */
|
|
||||||
|
|
||||||
|
|
||||||
#endif /* C style interface */
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#endif /* __IBCPSession_INTERFACE_DEFINED__ */
|
|
||||||
|
|
||||||
|
|
||||||
/* interface __MIDL_itf_sqlncli_0000_0006 */
|
|
||||||
/* [local] */
|
|
||||||
|
|
||||||
|
|
||||||
#endif //_SQLOLEDB_H_
|
|
||||||
|
|
||||||
#define ISOLATIONLEVEL_SNAPSHOT ((ISOLATIONLEVEL)(0x01000000)) // Changes made in other transactions can not be seen.
|
|
||||||
|
|
||||||
#define DBPROPVAL_TI_SNAPSHOT 0x01000000L
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
extern RPC_IF_HANDLE __MIDL_itf_sqlncli_0000_0006_v0_0_c_ifspec;
|
|
||||||
extern RPC_IF_HANDLE __MIDL_itf_sqlncli_0000_0006_v0_0_s_ifspec;
|
|
||||||
|
|
||||||
#ifndef __ISSAbort_INTERFACE_DEFINED__
|
|
||||||
#define __ISSAbort_INTERFACE_DEFINED__
|
|
||||||
|
|
||||||
/* interface ISSAbort */
|
|
||||||
/* [unique][uuid][object][local] */
|
|
||||||
|
|
||||||
|
|
||||||
EXTERN_C const IID IID_ISSAbort;
|
|
||||||
|
|
||||||
#if defined(__cplusplus) && !defined(CINTERFACE)
|
|
||||||
|
|
||||||
MIDL_INTERFACE("5CF4CA15-EF21-11d0-97E7-00C04FC2AD98")
|
|
||||||
ISSAbort : public IUnknown
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
virtual HRESULT STDMETHODCALLTYPE Abort( void) = 0;
|
|
||||||
|
|
||||||
};
|
|
||||||
|
|
||||||
#else /* C style interface */
|
|
||||||
|
|
||||||
typedef struct ISSAbortVtbl
|
|
||||||
{
|
|
||||||
BEGIN_INTERFACE
|
|
||||||
|
|
||||||
HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
|
|
||||||
ISSAbort * This,
|
|
||||||
/* [in] */ REFIID riid,
|
|
||||||
/* [iid_is][out] */
|
|
||||||
__RPC__deref_out void **ppvObject);
|
|
||||||
|
|
||||||
ULONG ( STDMETHODCALLTYPE *AddRef )(
|
|
||||||
ISSAbort * This);
|
|
||||||
|
|
||||||
ULONG ( STDMETHODCALLTYPE *Release )(
|
|
||||||
ISSAbort * This);
|
|
||||||
|
|
||||||
HRESULT ( STDMETHODCALLTYPE *Abort )(
|
|
||||||
ISSAbort * This);
|
|
||||||
|
|
||||||
END_INTERFACE
|
|
||||||
} ISSAbortVtbl;
|
|
||||||
|
|
||||||
interface ISSAbort
|
|
||||||
{
|
|
||||||
CONST_VTBL struct ISSAbortVtbl *lpVtbl;
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#ifdef COBJMACROS
|
|
||||||
|
|
||||||
|
|
||||||
#define ISSAbort_QueryInterface(This,riid,ppvObject) \
|
|
||||||
( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
|
|
||||||
|
|
||||||
#define ISSAbort_AddRef(This) \
|
|
||||||
( (This)->lpVtbl -> AddRef(This) )
|
|
||||||
|
|
||||||
#define ISSAbort_Release(This) \
|
|
||||||
( (This)->lpVtbl -> Release(This) )
|
|
||||||
|
|
||||||
|
|
||||||
#define ISSAbort_Abort(This) \
|
|
||||||
( (This)->lpVtbl -> Abort(This) )
|
|
||||||
|
|
||||||
#endif /* COBJMACROS */
|
|
||||||
|
|
||||||
|
|
||||||
#endif /* C style interface */
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#endif /* __ISSAbort_INTERFACE_DEFINED__ */
|
|
||||||
|
|
||||||
|
|
||||||
/* interface __MIDL_itf_sqlncli_0000_0007 */
|
|
||||||
/* [local] */
|
|
||||||
|
|
||||||
|
|
||||||
enum DBBINDFLAGENUM90
|
|
||||||
{ DBBINDFLAG_OBJECT = 0x2
|
|
||||||
} ;
|
|
||||||
|
|
||||||
enum SSACCESSORFLAGS
|
|
||||||
{ SSACCESSOR_ROWDATA = 0x100
|
|
||||||
} ;
|
|
||||||
|
|
||||||
enum DBPROPFLAGSENUM90
|
|
||||||
{ DBPROPFLAGS_PARAMETER = 0x10000
|
|
||||||
} ;
|
|
||||||
typedef struct tagSSPARAMPROPS
|
|
||||||
{
|
|
||||||
DBORDINAL iOrdinal;
|
|
||||||
ULONG cPropertySets;
|
|
||||||
DBPROPSET *rgPropertySets;
|
|
||||||
} SSPARAMPROPS;
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
extern RPC_IF_HANDLE __MIDL_itf_sqlncli_0000_0007_v0_0_c_ifspec;
|
|
||||||
extern RPC_IF_HANDLE __MIDL_itf_sqlncli_0000_0007_v0_0_s_ifspec;
|
|
||||||
|
|
||||||
#ifndef __ISSCommandWithParameters_INTERFACE_DEFINED__
|
|
||||||
#define __ISSCommandWithParameters_INTERFACE_DEFINED__
|
|
||||||
|
|
||||||
/* interface ISSCommandWithParameters */
|
|
||||||
/* [unique][uuid][object][local] */
|
|
||||||
|
|
||||||
|
|
||||||
EXTERN_C const IID IID_ISSCommandWithParameters;
|
|
||||||
|
|
||||||
#if defined(__cplusplus) && !defined(CINTERFACE)
|
|
||||||
|
|
||||||
MIDL_INTERFACE("eec30162-6087-467c-b995-7c523ce96561")
|
|
||||||
ISSCommandWithParameters : public ICommandWithParameters
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
virtual /* [local] */ HRESULT STDMETHODCALLTYPE GetParameterProperties(
|
|
||||||
/* [out][in] */ DB_UPARAMS *pcParams,
|
|
||||||
/* [size_is][size_is][out] */ SSPARAMPROPS **prgParamProperties) = 0;
|
|
||||||
|
|
||||||
virtual /* [local] */ HRESULT STDMETHODCALLTYPE SetParameterProperties(
|
|
||||||
/* [in] */ DB_UPARAMS cParams,
|
|
||||||
/* [size_is][unique][in] */ SSPARAMPROPS rgParamProperties[ ]) = 0;
|
|
||||||
|
|
||||||
};
|
|
||||||
|
|
||||||
#else /* C style interface */
|
|
||||||
|
|
||||||
typedef struct ISSCommandWithParametersVtbl
|
|
||||||
{
|
|
||||||
BEGIN_INTERFACE
|
|
||||||
|
|
||||||
HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
|
|
||||||
ISSCommandWithParameters * This,
|
|
||||||
/* [in] */ REFIID riid,
|
|
||||||
/* [iid_is][out] */
|
|
||||||
__RPC__deref_out void **ppvObject);
|
|
||||||
|
|
||||||
ULONG ( STDMETHODCALLTYPE *AddRef )(
|
|
||||||
ISSCommandWithParameters * This);
|
|
||||||
|
|
||||||
ULONG ( STDMETHODCALLTYPE *Release )(
|
|
||||||
ISSCommandWithParameters * This);
|
|
||||||
|
|
||||||
/* [local] */ HRESULT ( STDMETHODCALLTYPE *GetParameterInfo )(
|
|
||||||
ISSCommandWithParameters * This,
|
|
||||||
/* [out][in] */ DB_UPARAMS *pcParams,
|
|
||||||
/* [size_is][size_is][out] */ DBPARAMINFO **prgParamInfo,
|
|
||||||
/* [out] */ OLECHAR **ppNamesBuffer);
|
|
||||||
|
|
||||||
/* [local] */ HRESULT ( STDMETHODCALLTYPE *MapParameterNames )(
|
|
||||||
ISSCommandWithParameters * This,
|
|
||||||
/* [in] */ DB_UPARAMS cParamNames,
|
|
||||||
/* [size_is][in] */ const OLECHAR *rgParamNames[ ],
|
|
||||||
/* [size_is][out] */ DB_LPARAMS rgParamOrdinals[ ]);
|
|
||||||
|
|
||||||
/* [local] */ HRESULT ( STDMETHODCALLTYPE *SetParameterInfo )(
|
|
||||||
ISSCommandWithParameters * This,
|
|
||||||
/* [in] */ DB_UPARAMS cParams,
|
|
||||||
/* [size_is][unique][in] */ const DB_UPARAMS rgParamOrdinals[ ],
|
|
||||||
/* [size_is][unique][in] */ const DBPARAMBINDINFO rgParamBindInfo[ ]);
|
|
||||||
|
|
||||||
/* [local] */ HRESULT ( STDMETHODCALLTYPE *GetParameterProperties )(
|
|
||||||
ISSCommandWithParameters * This,
|
|
||||||
/* [out][in] */ DB_UPARAMS *pcParams,
|
|
||||||
/* [size_is][size_is][out] */ SSPARAMPROPS **prgParamProperties);
|
|
||||||
|
|
||||||
/* [local] */ HRESULT ( STDMETHODCALLTYPE *SetParameterProperties )(
|
|
||||||
ISSCommandWithParameters * This,
|
|
||||||
/* [in] */ DB_UPARAMS cParams,
|
|
||||||
/* [size_is][unique][in] */ SSPARAMPROPS rgParamProperties[ ]);
|
|
||||||
|
|
||||||
END_INTERFACE
|
|
||||||
} ISSCommandWithParametersVtbl;
|
|
||||||
|
|
||||||
interface ISSCommandWithParameters
|
|
||||||
{
|
|
||||||
CONST_VTBL struct ISSCommandWithParametersVtbl *lpVtbl;
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#ifdef COBJMACROS
|
|
||||||
|
|
||||||
|
|
||||||
#define ISSCommandWithParameters_QueryInterface(This,riid,ppvObject) \
|
|
||||||
( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
|
|
||||||
|
|
||||||
#define ISSCommandWithParameters_AddRef(This) \
|
|
||||||
( (This)->lpVtbl -> AddRef(This) )
|
|
||||||
|
|
||||||
#define ISSCommandWithParameters_Release(This) \
|
|
||||||
( (This)->lpVtbl -> Release(This) )
|
|
||||||
|
|
||||||
|
|
||||||
#define ISSCommandWithParameters_GetParameterInfo(This,pcParams,prgParamInfo,ppNamesBuffer) \
|
|
||||||
( (This)->lpVtbl -> GetParameterInfo(This,pcParams,prgParamInfo,ppNamesBuffer) )
|
|
||||||
|
|
||||||
#define ISSCommandWithParameters_MapParameterNames(This,cParamNames,rgParamNames,rgParamOrdinals) \
|
|
||||||
( (This)->lpVtbl -> MapParameterNames(This,cParamNames,rgParamNames,rgParamOrdinals) )
|
|
||||||
|
|
||||||
#define ISSCommandWithParameters_SetParameterInfo(This,cParams,rgParamOrdinals,rgParamBindInfo) \
|
|
||||||
( (This)->lpVtbl -> SetParameterInfo(This,cParams,rgParamOrdinals,rgParamBindInfo) )
|
|
||||||
|
|
||||||
|
|
||||||
#define ISSCommandWithParameters_GetParameterProperties(This,pcParams,prgParamProperties) \
|
|
||||||
( (This)->lpVtbl -> GetParameterProperties(This,pcParams,prgParamProperties) )
|
|
||||||
|
|
||||||
#define ISSCommandWithParameters_SetParameterProperties(This,cParams,rgParamProperties) \
|
|
||||||
( (This)->lpVtbl -> SetParameterProperties(This,cParams,rgParamProperties) )
|
|
||||||
|
|
||||||
#endif /* COBJMACROS */
|
|
||||||
|
|
||||||
|
|
||||||
#endif /* C style interface */
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#endif /* __ISSCommandWithParameters_INTERFACE_DEFINED__ */
|
|
||||||
|
|
||||||
|
|
||||||
#ifndef __IDBAsynchStatus_INTERFACE_DEFINED__
|
|
||||||
#define __IDBAsynchStatus_INTERFACE_DEFINED__
|
|
||||||
|
|
||||||
/* interface IDBAsynchStatus */
|
|
||||||
/* [unique][uuid][object][local] */
|
|
||||||
|
|
||||||
|
|
||||||
EXTERN_C const IID IID_IDBAsynchStatus;
|
|
||||||
|
|
||||||
#if defined(__cplusplus) && !defined(CINTERFACE)
|
|
||||||
|
|
||||||
MIDL_INTERFACE("0c733a95-2a1c-11ce-ade5-00aa0044773d")
|
|
||||||
IDBAsynchStatus : public IUnknown
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
virtual /* [local] */ HRESULT STDMETHODCALLTYPE Abort(
|
|
||||||
/* [in] */ HCHAPTER hChapter,
|
|
||||||
/* [in] */ DBASYNCHOP eOperation) = 0;
|
|
||||||
|
|
||||||
virtual /* [local] */ HRESULT STDMETHODCALLTYPE GetStatus(
|
|
||||||
/* [in] */ HCHAPTER hChapter,
|
|
||||||
/* [in] */ DBASYNCHOP eOperation,
|
|
||||||
/* [out] */ DBCOUNTITEM *pulProgress,
|
|
||||||
/* [out] */ DBCOUNTITEM *pulProgressMax,
|
|
||||||
/* [out] */ DBASYNCHPHASE *peAsynchPhase,
|
|
||||||
/* [out] */ LPOLESTR *ppwszStatusText) = 0;
|
|
||||||
|
|
||||||
};
|
|
||||||
|
|
||||||
#else /* C style interface */
|
|
||||||
|
|
||||||
typedef struct IDBAsynchStatusVtbl
|
|
||||||
{
|
|
||||||
BEGIN_INTERFACE
|
|
||||||
|
|
||||||
HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
|
|
||||||
IDBAsynchStatus * This,
|
|
||||||
/* [in] */ REFIID riid,
|
|
||||||
/* [iid_is][out] */
|
|
||||||
__RPC__deref_out void **ppvObject);
|
|
||||||
|
|
||||||
ULONG ( STDMETHODCALLTYPE *AddRef )(
|
|
||||||
IDBAsynchStatus * This);
|
|
||||||
|
|
||||||
ULONG ( STDMETHODCALLTYPE *Release )(
|
|
||||||
IDBAsynchStatus * This);
|
|
||||||
|
|
||||||
/* [local] */ HRESULT ( STDMETHODCALLTYPE *Abort )(
|
|
||||||
IDBAsynchStatus * This,
|
|
||||||
/* [in] */ HCHAPTER hChapter,
|
|
||||||
/* [in] */ DBASYNCHOP eOperation);
|
|
||||||
|
|
||||||
/* [local] */ HRESULT ( STDMETHODCALLTYPE *GetStatus )(
|
|
||||||
IDBAsynchStatus * This,
|
|
||||||
/* [in] */ HCHAPTER hChapter,
|
|
||||||
/* [in] */ DBASYNCHOP eOperation,
|
|
||||||
/* [out] */ DBCOUNTITEM *pulProgress,
|
|
||||||
/* [out] */ DBCOUNTITEM *pulProgressMax,
|
|
||||||
/* [out] */ DBASYNCHPHASE *peAsynchPhase,
|
|
||||||
/* [out] */ LPOLESTR *ppwszStatusText);
|
|
||||||
|
|
||||||
END_INTERFACE
|
|
||||||
} IDBAsynchStatusVtbl;
|
|
||||||
|
|
||||||
interface IDBAsynchStatus
|
|
||||||
{
|
|
||||||
CONST_VTBL struct IDBAsynchStatusVtbl *lpVtbl;
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#ifdef COBJMACROS
|
|
||||||
|
|
||||||
|
|
||||||
#define IDBAsynchStatus_QueryInterface(This,riid,ppvObject) \
|
|
||||||
( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
|
|
||||||
|
|
||||||
#define IDBAsynchStatus_AddRef(This) \
|
|
||||||
( (This)->lpVtbl -> AddRef(This) )
|
|
||||||
|
|
||||||
#define IDBAsynchStatus_Release(This) \
|
|
||||||
( (This)->lpVtbl -> Release(This) )
|
|
||||||
|
|
||||||
|
|
||||||
#define IDBAsynchStatus_Abort(This,hChapter,eOperation) \
|
|
||||||
( (This)->lpVtbl -> Abort(This,hChapter,eOperation) )
|
|
||||||
|
|
||||||
#define IDBAsynchStatus_GetStatus(This,hChapter,eOperation,pulProgress,pulProgressMax,peAsynchPhase,ppwszStatusText) \
|
|
||||||
( (This)->lpVtbl -> GetStatus(This,hChapter,eOperation,pulProgress,pulProgressMax,peAsynchPhase,ppwszStatusText) )
|
|
||||||
|
|
||||||
#endif /* COBJMACROS */
|
|
||||||
|
|
||||||
|
|
||||||
#endif /* C style interface */
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/* [call_as] */ HRESULT STDMETHODCALLTYPE IDBAsynchStatus_RemoteAbort_Proxy(
|
|
||||||
IDBAsynchStatus * This,
|
|
||||||
/* [in] */ HCHAPTER hChapter,
|
|
||||||
/* [in] */ DBASYNCHOP eOperation,
|
|
||||||
/* [out] */ IErrorInfo **ppErrorInfoRem);
|
|
||||||
|
|
||||||
|
|
||||||
void __RPC_STUB IDBAsynchStatus_RemoteAbort_Stub(
|
|
||||||
IRpcStubBuffer *This,
|
|
||||||
IRpcChannelBuffer *_pRpcChannelBuffer,
|
|
||||||
PRPC_MESSAGE _pRpcMessage,
|
|
||||||
DWORD *_pdwStubPhase);
|
|
||||||
|
|
||||||
|
|
||||||
/* [call_as] */ HRESULT STDMETHODCALLTYPE IDBAsynchStatus_RemoteGetStatus_Proxy(
|
|
||||||
IDBAsynchStatus * This,
|
|
||||||
/* [in] */ HCHAPTER hChapter,
|
|
||||||
/* [in] */ DBASYNCHOP eOperation,
|
|
||||||
/* [unique][out][in] */ DBCOUNTITEM *pulProgress,
|
|
||||||
/* [unique][out][in] */ DBCOUNTITEM *pulProgressMax,
|
|
||||||
/* [unique][out][in] */ DBASYNCHPHASE *peAsynchPhase,
|
|
||||||
/* [unique][out][in] */ LPOLESTR *ppwszStatusText,
|
|
||||||
/* [out] */ IErrorInfo **ppErrorInfoRem);
|
|
||||||
|
|
||||||
|
|
||||||
void __RPC_STUB IDBAsynchStatus_RemoteGetStatus_Stub(
|
|
||||||
IRpcStubBuffer *This,
|
|
||||||
IRpcChannelBuffer *_pRpcChannelBuffer,
|
|
||||||
PRPC_MESSAGE _pRpcMessage,
|
|
||||||
DWORD *_pdwStubPhase);
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#endif /* __IDBAsynchStatus_INTERFACE_DEFINED__ */
|
|
||||||
|
|
||||||
|
|
||||||
#ifndef __ISSAsynchStatus_INTERFACE_DEFINED__
|
|
||||||
#define __ISSAsynchStatus_INTERFACE_DEFINED__
|
|
||||||
|
|
||||||
/* interface ISSAsynchStatus */
|
|
||||||
/* [unique][uuid][object][local] */
|
|
||||||
|
|
||||||
|
|
||||||
EXTERN_C const IID IID_ISSAsynchStatus;
|
|
||||||
|
|
||||||
#if defined(__cplusplus) && !defined(CINTERFACE)
|
|
||||||
|
|
||||||
MIDL_INTERFACE("1FF1F743-8BB0-4c00-ACC4-C10E43B08FC1")
|
|
||||||
ISSAsynchStatus : public IDBAsynchStatus
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
virtual /* [local] */ HRESULT STDMETHODCALLTYPE WaitForAsynchCompletion(
|
|
||||||
/* [in] */ DWORD dwMillisecTimeOut) = 0;
|
|
||||||
|
|
||||||
};
|
|
||||||
|
|
||||||
#else /* C style interface */
|
|
||||||
|
|
||||||
typedef struct ISSAsynchStatusVtbl
|
|
||||||
{
|
|
||||||
BEGIN_INTERFACE
|
|
||||||
|
|
||||||
HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
|
|
||||||
ISSAsynchStatus * This,
|
|
||||||
/* [in] */ REFIID riid,
|
|
||||||
/* [iid_is][out] */
|
|
||||||
__RPC__deref_out void **ppvObject);
|
|
||||||
|
|
||||||
ULONG ( STDMETHODCALLTYPE *AddRef )(
|
|
||||||
ISSAsynchStatus * This);
|
|
||||||
|
|
||||||
ULONG ( STDMETHODCALLTYPE *Release )(
|
|
||||||
ISSAsynchStatus * This);
|
|
||||||
|
|
||||||
/* [local] */ HRESULT ( STDMETHODCALLTYPE *Abort )(
|
|
||||||
ISSAsynchStatus * This,
|
|
||||||
/* [in] */ HCHAPTER hChapter,
|
|
||||||
/* [in] */ DBASYNCHOP eOperation);
|
|
||||||
|
|
||||||
/* [local] */ HRESULT ( STDMETHODCALLTYPE *GetStatus )(
|
|
||||||
ISSAsynchStatus * This,
|
|
||||||
/* [in] */ HCHAPTER hChapter,
|
|
||||||
/* [in] */ DBASYNCHOP eOperation,
|
|
||||||
/* [out] */ DBCOUNTITEM *pulProgress,
|
|
||||||
/* [out] */ DBCOUNTITEM *pulProgressMax,
|
|
||||||
/* [out] */ DBASYNCHPHASE *peAsynchPhase,
|
|
||||||
/* [out] */ LPOLESTR *ppwszStatusText);
|
|
||||||
|
|
||||||
/* [local] */ HRESULT ( STDMETHODCALLTYPE *WaitForAsynchCompletion )(
|
|
||||||
ISSAsynchStatus * This,
|
|
||||||
/* [in] */ DWORD dwMillisecTimeOut);
|
|
||||||
|
|
||||||
END_INTERFACE
|
|
||||||
} ISSAsynchStatusVtbl;
|
|
||||||
|
|
||||||
interface ISSAsynchStatus
|
|
||||||
{
|
|
||||||
CONST_VTBL struct ISSAsynchStatusVtbl *lpVtbl;
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#ifdef COBJMACROS
|
|
||||||
|
|
||||||
|
|
||||||
#define ISSAsynchStatus_QueryInterface(This,riid,ppvObject) \
|
|
||||||
( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
|
|
||||||
|
|
||||||
#define ISSAsynchStatus_AddRef(This) \
|
|
||||||
( (This)->lpVtbl -> AddRef(This) )
|
|
||||||
|
|
||||||
#define ISSAsynchStatus_Release(This) \
|
|
||||||
( (This)->lpVtbl -> Release(This) )
|
|
||||||
|
|
||||||
|
|
||||||
#define ISSAsynchStatus_Abort(This,hChapter,eOperation) \
|
|
||||||
( (This)->lpVtbl -> Abort(This,hChapter,eOperation) )
|
|
||||||
|
|
||||||
#define ISSAsynchStatus_GetStatus(This,hChapter,eOperation,pulProgress,pulProgressMax,peAsynchPhase,ppwszStatusText) \
|
|
||||||
( (This)->lpVtbl -> GetStatus(This,hChapter,eOperation,pulProgress,pulProgressMax,peAsynchPhase,ppwszStatusText) )
|
|
||||||
|
|
||||||
|
|
||||||
#define ISSAsynchStatus_WaitForAsynchCompletion(This,dwMillisecTimeOut) \
|
|
||||||
( (This)->lpVtbl -> WaitForAsynchCompletion(This,dwMillisecTimeOut) )
|
|
||||||
|
|
||||||
#endif /* COBJMACROS */
|
|
||||||
|
|
||||||
|
|
||||||
#endif /* C style interface */
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#endif /* __ISSAsynchStatus_INTERFACE_DEFINED__ */
|
|
||||||
|
|
||||||
|
|
||||||
/* interface __MIDL_itf_sqlncli_0000_0010 */
|
|
||||||
/* [local] */
|
|
||||||
|
|
||||||
//----------------------------------------------------------------------------
|
|
||||||
// Values for STATUS bitmask for DBSCHEMA_TABLES & DBSCHEMA_TABLES_INFO
|
|
||||||
#define TABLE_HAS_UPDATE_INSTEAD_OF_TRIGGER 0x00000001 //table has IOT defined
|
|
||||||
#define TABLE_HAS_DELETE_INSTEAD_OF_TRIGGER 0x00000002 //table has IOT defined
|
|
||||||
#define TABLE_HAS_INSERT_INSTEAD_OF_TRIGGER 0x00000004 //table has IOT defined
|
|
||||||
#define TABLE_HAS_AFTER_UPDATE_TRIGGER 0x00000008 //table has update trigger
|
|
||||||
#define TABLE_HAS_AFTER_DELETE_TRIGGER 0x00000010 //table has delete trigger
|
|
||||||
#define TABLE_HAS_AFTER_INSERT_TRIGGER 0x00000020 //table has insert trigger
|
|
||||||
#define TABLE_HAS_CASCADE_UPDATE 0x00000040 //table has cascade update
|
|
||||||
#define TABLE_HAS_CASCADE_DELETE 0x00000080 //table has cascade delete
|
|
||||||
|
|
||||||
//----------------------------------------------------------------------------
|
|
||||||
// PropIds for DBPROP_INIT_GENERALTIMEOUT
|
|
||||||
#if (OLEDBVER >= 0x0210)
|
|
||||||
#define DBPROP_INIT_GENERALTIMEOUT 0x11cL
|
|
||||||
#endif
|
|
||||||
|
|
||||||
//----------------------------------------------------------------------------
|
|
||||||
// PropIds for DBPROPSET_SQLSERVERDATASOURCE
|
|
||||||
#define SSPROP_ENABLEFASTLOAD 2
|
|
||||||
#define SSPROP_ENABLEBULKCOPY 3
|
|
||||||
|
|
||||||
//----------------------------------------------------------------------------
|
|
||||||
// PropIds for DBPROPSET_SQLSERVERDATASOURCEINFO
|
|
||||||
#define SSPROP_UNICODELCID 2
|
|
||||||
#define SSPROP_UNICODECOMPARISONSTYLE 3
|
|
||||||
#define SSPROP_COLUMNLEVELCOLLATION 4
|
|
||||||
#define SSPROP_CHARACTERSET 5
|
|
||||||
#define SSPROP_SORTORDER 6
|
|
||||||
#define SSPROP_CURRENTCOLLATION 7
|
|
||||||
#define SSPROP_INTEGRATEDAUTHENTICATIONMETHOD 8
|
|
||||||
#define SSPROP_MUTUALLYAUTHENTICATED 9
|
|
||||||
|
|
||||||
//----------------------------------------------------------------------------
|
|
||||||
// PropIds for DBPROPSET_SQLSERVERDBINIT
|
|
||||||
#define SSPROP_INIT_CURRENTLANGUAGE 4
|
|
||||||
#define SSPROP_INIT_NETWORKADDRESS 5
|
|
||||||
#define SSPROP_INIT_NETWORKLIBRARY 6
|
|
||||||
#define SSPROP_INIT_USEPROCFORPREP 7
|
|
||||||
#define SSPROP_INIT_AUTOTRANSLATE 8
|
|
||||||
#define SSPROP_INIT_PACKETSIZE 9
|
|
||||||
#define SSPROP_INIT_APPNAME 10
|
|
||||||
#define SSPROP_INIT_WSID 11
|
|
||||||
#define SSPROP_INIT_FILENAME 12
|
|
||||||
#define SSPROP_INIT_ENCRYPT 13
|
|
||||||
#define SSPROP_AUTH_REPL_SERVER_NAME 14
|
|
||||||
#define SSPROP_INIT_TAGCOLUMNCOLLATION 15
|
|
||||||
#define SSPROP_INIT_MARSCONNECTION 16
|
|
||||||
#define SSPROP_INIT_FAILOVERPARTNER 18
|
|
||||||
#define SSPROP_AUTH_OLD_PASSWORD 19
|
|
||||||
#define SSPROP_INIT_DATATYPECOMPATIBILITY 20
|
|
||||||
#define SSPROP_INIT_TRUST_SERVER_CERTIFICATE 21
|
|
||||||
#define SSPROP_INIT_SERVERSPN 22
|
|
||||||
#define SSPROP_INIT_FAILOVERPARTNERSPN 23
|
|
||||||
|
|
||||||
//-----------------------------------------------------------------------------
|
|
||||||
// Values for SSPROP_INIT_USEPROCFORPREP
|
|
||||||
#define SSPROPVAL_USEPROCFORPREP_OFF 0
|
|
||||||
#define SSPROPVAL_USEPROCFORPREP_ON 1
|
|
||||||
#define SSPROPVAL_USEPROCFORPREP_ON_DROP 2
|
|
||||||
|
|
||||||
//-----------------------------------------------------------------------------
|
|
||||||
// Values for SSPROP_INIT_DATATYPECOMPATIBILITY
|
|
||||||
#define SSPROPVAL_DATATYPECOMPATIBILITY_SQL2000 80
|
|
||||||
#define SSPROPVAL_DATATYPECOMPATIBILITY_DEFAULT 0
|
|
||||||
|
|
||||||
//----------------------------------------------------------------------------
|
|
||||||
// PropIds for DBPROPSET_SQLSERVERSESSION
|
|
||||||
#define SSPROP_QUOTEDCATALOGNAMES 2
|
|
||||||
#define SSPROP_ALLOWNATIVEVARIANT 3
|
|
||||||
#define SSPROP_SQLXMLXPROGID 4
|
|
||||||
#define SSPROP_ASYNCH_BULKCOPY 5
|
|
||||||
|
|
||||||
//----------------------------------------------------------------------------
|
|
||||||
// PropIds for DBPROPSET_SQLSERVERROWSET
|
|
||||||
#define SSPROP_MAXBLOBLENGTH 8
|
|
||||||
#define SSPROP_FASTLOADOPTIONS 9
|
|
||||||
#define SSPROP_FASTLOADKEEPNULLS 10
|
|
||||||
#define SSPROP_FASTLOADKEEPIDENTITY 11
|
|
||||||
#define SSPROP_CURSORAUTOFETCH 12
|
|
||||||
#define SSPROP_DEFERPREPARE 13
|
|
||||||
#define SSPROP_IRowsetFastLoad 14
|
|
||||||
#define SSPROP_QP_NOTIFICATION_TIMEOUT 17
|
|
||||||
#define SSPROP_QP_NOTIFICATION_MSGTEXT 18
|
|
||||||
#define SSPROP_QP_NOTIFICATION_OPTIONS 19
|
|
||||||
#define SSPROP_NOCOUNT_STATUS 20
|
|
||||||
#define SSPROP_COMPUTE_ID 21
|
|
||||||
#define SSPROP_COLUMN_ID 22
|
|
||||||
#define SSPROP_COMPUTE_BYLIST 23
|
|
||||||
#define SSPROP_ISSAsynchStatus 24
|
|
||||||
|
|
||||||
//-----------------------------------------------------------------------------
|
|
||||||
// Values for SSPROP_QP_NOTIFICATION_TIMEOUT
|
|
||||||
#define SSPROPVAL_DEFAULT_NOTIFICATION_TIMEOUT 432000 /* in sec */
|
|
||||||
#define SSPROPVAL_MAX_NOTIFICATION_TIMEOUT 0x7FFFFFFF /* in sec */
|
|
||||||
#define MAX_NOTIFICATION_LEN 2000 /* NVARCHAR [2000] for both ID & DELIVERY_QUEUE */
|
|
||||||
|
|
||||||
//----------------------------------------------------------------------------
|
|
||||||
// PropIds for DBPROPSET_SQLSERVERCOLUMN
|
|
||||||
#define SSPROP_COL_COLLATIONNAME 14
|
|
||||||
#define SSPROP_COL_UDT_CATALOGNAME 31
|
|
||||||
#define SSPROP_COL_UDT_SCHEMANAME 32
|
|
||||||
#define SSPROP_COL_UDT_NAME 33
|
|
||||||
#define SSPROP_COL_XML_SCHEMACOLLECTION_CATALOGNAME 34
|
|
||||||
#define SSPROP_COL_XML_SCHEMACOLLECTION_SCHEMANAME 35
|
|
||||||
#define SSPROP_COL_XML_SCHEMACOLLECTIONNAME 36
|
|
||||||
#define SSPROP_COL_COMPUTED 37
|
|
||||||
|
|
||||||
|
|
||||||
//----------------------------------------------------------------------------
|
|
||||||
// PropIds for DBPROPSET_SQLSERVERSTREAM
|
|
||||||
#define SSPROP_STREAM_XMLROOT 19
|
|
||||||
|
|
||||||
//----------------------------------------------------------------------------
|
|
||||||
// PropIds for DBPROPSET_SQLSERVERPARAMETER
|
|
||||||
#define SSPROP_PARAM_XML_SCHEMACOLLECTION_CATALOGNAME 24
|
|
||||||
#define SSPROP_PARAM_XML_SCHEMACOLLECTION_SCHEMANAME 25
|
|
||||||
#define SSPROP_PARAM_XML_SCHEMACOLLECTIONNAME 26
|
|
||||||
#define SSPROP_PARAM_UDT_CATALOGNAME 27
|
|
||||||
#define SSPROP_PARAM_UDT_SCHEMANAME 28
|
|
||||||
#define SSPROP_PARAM_UDT_NAME 29
|
|
||||||
#define SSPROP_PARAM_TYPE_CATALOGNAME 38
|
|
||||||
#define SSPROP_PARAM_TYPE_SCHEMANAME 39
|
|
||||||
#define SSPROP_PARAM_TYPE_TYPENAME 40
|
|
||||||
#define SSPROP_PARAM_TABLE_DEFAULT_COLUMNS 41
|
|
||||||
#define SSPROP_PARAM_TABLE_COLUMN_SORT_ORDER 42
|
|
||||||
|
|
||||||
//----------------------------------------------------------------------------
|
|
||||||
// PropIds for DBPROPSET_SQLSERVERINDEX
|
|
||||||
#define SSPROP_INDEX_XML 1
|
|
||||||
|
|
||||||
//-----------------------------------------------------------------------------
|
|
||||||
//
|
|
||||||
#define BCP_TYPE_DEFAULT 0x00
|
|
||||||
#define BCP_TYPE_SQLTEXT 0x23
|
|
||||||
#define BCP_TYPE_SQLVARBINARY 0x25
|
|
||||||
#define BCP_TYPE_SQLINTN 0x26
|
|
||||||
#define BCP_TYPE_SQLVARCHAR 0x27
|
|
||||||
#define BCP_TYPE_SQLBINARY 0x2d
|
|
||||||
#define BCP_TYPE_SQLIMAGE 0x22
|
|
||||||
#define BCP_TYPE_SQLCHARACTER 0x2f
|
|
||||||
#define BCP_TYPE_SQLINT1 0x30
|
|
||||||
#define BCP_TYPE_SQLBIT 0x32
|
|
||||||
#define BCP_TYPE_SQLINT2 0x34
|
|
||||||
#define BCP_TYPE_SQLINT4 0x38
|
|
||||||
#define BCP_TYPE_SQLMONEY 0x3c
|
|
||||||
#define BCP_TYPE_SQLDATETIME 0x3d
|
|
||||||
#define BCP_TYPE_SQLFLT8 0x3e
|
|
||||||
#define BCP_TYPE_SQLFLTN 0x6d
|
|
||||||
#define BCP_TYPE_SQLMONEYN 0x6e
|
|
||||||
#define BCP_TYPE_SQLDATETIMN 0x6f
|
|
||||||
#define BCP_TYPE_SQLFLT4 0x3b
|
|
||||||
#define BCP_TYPE_SQLMONEY4 0x7a
|
|
||||||
#define BCP_TYPE_SQLDATETIM4 0x3a
|
|
||||||
#define BCP_TYPE_SQLDECIMAL 0x6a
|
|
||||||
#define BCP_TYPE_SQLNUMERIC 0x6c
|
|
||||||
#define BCP_TYPE_SQLUNIQUEID 0x24
|
|
||||||
#define BCP_TYPE_SQLBIGCHAR 0xaf
|
|
||||||
#define BCP_TYPE_SQLBIGVARCHAR 0xa7
|
|
||||||
#define BCP_TYPE_SQLBIGBINARY 0xad
|
|
||||||
#define BCP_TYPE_SQLBIGVARBINARY 0xa5
|
|
||||||
#define BCP_TYPE_SQLBITN 0x68
|
|
||||||
#define BCP_TYPE_SQLNCHAR 0xef
|
|
||||||
#define BCP_TYPE_SQLNVARCHAR 0xe7
|
|
||||||
#define BCP_TYPE_SQLNTEXT 0x63
|
|
||||||
#define BCP_TYPE_SQLDECIMALN 0x6a
|
|
||||||
#define BCP_TYPE_SQLNUMERICN 0x6c
|
|
||||||
#define BCP_TYPE_SQLINT8 0x7f
|
|
||||||
#define BCP_TYPE_SQLVARIANT 0x62
|
|
||||||
#define BCP_TYPE_SQLUDT 0xf0
|
|
||||||
#define BCP_TYPE_SQLXML 0xf1
|
|
||||||
#define BCP_TYPE_SQLDATE 0x28
|
|
||||||
#define BCP_TYPE_SQLTIME 0x29
|
|
||||||
#define BCP_TYPE_SQLDATETIME2 0x2a
|
|
||||||
#define BCP_TYPE_SQLDATETIMEOFFSET 0x2b
|
|
||||||
|
|
||||||
#define BCP_DIRECTION_IN 1
|
|
||||||
#define BCP_DIRECTION_OUT 2
|
|
||||||
|
|
||||||
#define BCP_OPTION_MAXERRS 1
|
|
||||||
#define BCP_OPTION_FIRST 2
|
|
||||||
#define BCP_OPTION_LAST 3
|
|
||||||
#define BCP_OPTION_BATCH 4
|
|
||||||
#define BCP_OPTION_KEEPNULLS 5
|
|
||||||
#define BCP_OPTION_ABORT 6
|
|
||||||
#define BCP_OPTION_KEEPIDENTITY 8
|
|
||||||
#define BCP_OPTION_HINTSA 10
|
|
||||||
#define BCP_OPTION_HINTSW 11
|
|
||||||
#define BCP_OPTION_FILECP 12
|
|
||||||
#define BCP_OPTION_UNICODEFILE 13
|
|
||||||
#define BCP_OPTION_TEXTFILE 14
|
|
||||||
#define BCP_OPTION_FILEFMT 15
|
|
||||||
#define BCP_OPTION_FMTXML 16
|
|
||||||
#define BCP_OPTION_FIRSTEX 17
|
|
||||||
#define BCP_OPTION_LASTEX 18
|
|
||||||
#define BCP_OPTION_ROWCOUNT 19
|
|
||||||
|
|
||||||
#define BCP_FILECP_ACP 0
|
|
||||||
#define BCP_FILECP_OEMCP 1
|
|
||||||
#define BCP_FILECP_RAW (-1)
|
|
||||||
|
|
||||||
#ifdef UNICODE
|
|
||||||
#define BCP_OPTION_HINTS BCP_OPTION_HINTSW
|
|
||||||
#else
|
|
||||||
#define BCP_OPTION_HINTS BCP_OPTION_HINTSA
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#define BCP_PREFIX_DEFAULT (-10)
|
|
||||||
|
|
||||||
#define BCP_LENGTH_NULL (-1)
|
|
||||||
#define BCP_LENGTH_VARIABLE (-10)
|
|
||||||
//
|
|
||||||
//-----------------------------------------------------------------------------
|
|
||||||
|
|
||||||
|
|
||||||
//----------------------------------------------------------------------------
|
|
||||||
// Provider-specific Class Ids
|
|
||||||
//
|
|
||||||
|
|
||||||
#if SQLNCLI_VER >= 1000
|
|
||||||
|
|
||||||
extern const GUID OLEDBDECLSPEC CLSID_SQLNCLI10 = {0x8F4A6B68L,0x4F36,0x4e3c,{0xBE,0x81,0xBC,0x7C,0xA4,0xE9,0xC4,0x5C}};
|
|
||||||
extern const GUID OLEDBDECLSPEC CLSID_SQLNCLI10_ERROR = {0x53F9C3BCL,0x275F,0x4FA5,{0xB3,0xE6,0x25,0xED,0xCD,0x51,0x20,0x23}};
|
|
||||||
extern const GUID OLEDBDECLSPEC CLSID_SQLNCLI10_ENUMERATOR = {0x91E4F2A5L,0x1B07,0x45f6,{0x86,0xBF,0x92,0x03,0xC7,0xC7,0x2B,0xE3}};
|
|
||||||
|
|
||||||
#endif
|
|
||||||
|
|
||||||
extern const GUID OLEDBDECLSPEC CLSID_SQLNCLI = {0x85ecafccL,0xbdd9,0x4b03,{0x97,0xa8,0xfa,0x65,0xcb,0xe3,0x85,0x9b}};
|
|
||||||
extern const GUID OLEDBDECLSPEC CLSID_SQLNCLI_ERROR = {0xe8bc0a7aL,0xea71,0x4263,{0x8c,0xda,0x94,0xf3,0x88,0xb8,0xed,0x10}};
|
|
||||||
extern const GUID OLEDBDECLSPEC CLSID_SQLNCLI_ENUMERATOR = {0x4898ad37L,0xfe05,0x42df,{0x92,0xf9,0xe8,0x57,0xdd,0xfe,0xe7,0x30}};
|
|
||||||
extern const GUID OLEDBDECLSPEC CLSID_ROWSET_TVP = {0xc7ef28d5L,0x7bee,0x443f,{0x86,0xda,0xe3,0x98,0x4f,0xcd,0x4d,0xf9}};
|
|
||||||
|
|
||||||
//----------------------------------------------------------------------------
|
|
||||||
// Provider-specific Interface Ids
|
|
||||||
//
|
|
||||||
#ifndef _SQLOLEDB_H_
|
|
||||||
extern const GUID OLEDBDECLSPEC IID_ISQLServerErrorInfo = {0x5cf4ca12,0xef21,0x11d0,{0x97,0xe7,0x0,0xc0,0x4f,0xc2,0xad,0x98}};
|
|
||||||
extern const GUID OLEDBDECLSPEC IID_IRowsetFastLoad = {0x5cf4ca13,0xef21,0x11d0,{0x97,0xe7,0x0,0xc0,0x4f,0xc2,0xad,0x98}};
|
|
||||||
extern const GUID OLEDBDECLSPEC IID_IUMSInitialize = {0x5cf4ca14,0xef21,0x11d0,{0x97,0xe7,0x0,0xc0,0x4f,0xc2,0xad,0x98}};
|
|
||||||
extern const GUID OLEDBDECLSPEC IID_ISchemaLock = {0x4c2389fb,0x2511,0x11d4,{0xb2,0x58,0x0,0xc0,0x4f,0x79,0x71,0xce}};
|
|
||||||
extern const GUID OLEDBDECLSPEC IID_ISQLXMLHelper = {0xd22a7678L,0xf860,0x40cd,{0xa5,0x67,0x15,0x63,0xde,0xb4,0x6d,0x49}};
|
|
||||||
#endif //_SQLOLEDB_H_
|
|
||||||
extern const GUID OLEDBDECLSPEC IID_ISSAbort = {0x5cf4ca15,0xef21,0x11d0,{0x97,0xe7,0x0,0xc0,0x4f,0xc2,0xad,0x98}};
|
|
||||||
extern const GUID OLEDBDECLSPEC IID_IBCPSession = {0x88352D80,0x42D1,0x42f0,{0xA1,0x70,0xAB,0x0F,0x8B,0x45,0xB9,0x39}};
|
|
||||||
extern const GUID OLEDBDECLSPEC IID_ISSCommandWithParameters = {0xeec30162,0x6087,0x467c,{0xb9,0x95,0x7c,0x52,0x3c,0xe9,0x65,0x61}};
|
|
||||||
extern const GUID OLEDBDECLSPEC IID_ISSAsynchStatus = {0x1FF1F743,0x8BB0, 0x4c00,{0xAC,0xC4,0xC1,0x0E,0x43,0xB0,0x8F,0xC1}};
|
|
||||||
|
|
||||||
|
|
||||||
//----------------------------------------------------------------------------
|
|
||||||
// Provider-specific schema rowsets
|
|
||||||
//
|
|
||||||
#ifndef _SQLOLEDB_H_
|
|
||||||
extern const GUID OLEDBDECLSPEC DBSCHEMA_LINKEDSERVERS = {0x9093caf4,0x2eac,0x11d1,{0x98,0x9,0x0,0xc0,0x4f,0xc2,0xad,0x98}};
|
|
||||||
#endif //_SQLOLEDB_H_
|
|
||||||
extern const GUID OLEDBDECLSPEC DBSCHEMA_SQL_ASSEMBLIES = {0x7c1112c8, 0xc2d3, 0x4f6e, {0x94, 0x9a, 0x98, 0x3d, 0x38, 0xa5, 0x8f, 0x46}};
|
|
||||||
extern const GUID OLEDBDECLSPEC DBSCHEMA_SQL_ASSEMBLY_DEPENDENCIES = {0xcb0f837b, 0x974c, 0x41b8, {0x90, 0x9d, 0x64, 0x9c, 0xaf, 0x45, 0xad, 0x2f}};
|
|
||||||
extern const GUID OLEDBDECLSPEC DBSCHEMA_SQL_USER_TYPES = {0xf1198bd8, 0xa424, 0x4ea3, {0x8d, 0x4c, 0x60, 0x7e, 0xee, 0x2b, 0xab, 0x60}};
|
|
||||||
extern const GUID OLEDBDECLSPEC DBSCHEMA_XML_COLLECTIONS = {0x56bfad8c, 0x6e8f, 0x480d, {0x91, 0xde, 0x35, 0x16, 0xd9, 0x9a, 0x5d, 0x10}};
|
|
||||||
extern const GUID OLEDBDECLSPEC DBSCHEMA_SQL_TABLE_TYPES = {0x4e26cde7, 0xaaa4, 0x41ed, {0x93, 0xdd, 0x37, 0x6e, 0x6d, 0x40, 0x9c, 0x17}};
|
|
||||||
extern const GUID OLEDBDECLSPEC DBSCHEMA_SQL_TABLE_TYPE_PRIMARY_KEYS = {0x9738faea, 0x31e8, 0x4f63, {0xae, 0xd, 0x61, 0x33, 0x16, 0x41, 0x8c, 0xdd}};
|
|
||||||
extern const GUID OLEDBDECLSPEC DBSCHEMA_SQL_TABLE_TYPE_COLUMNS = {0xa663d94b, 0xddf7, 0x4a7f, {0xa5, 0x37, 0xd6, 0x1f, 0x12, 0x36, 0x5d, 0x7c}};
|
|
||||||
extern const GUID OLEDBDECLSPEC DBSCHEMA_COLUMNS_EXTENDED = {0x66462f01, 0x633a, 0x44d9, {0xb0, 0xd0, 0xfe, 0x66, 0xf2, 0x1a, 0x0d, 0x24}};
|
|
||||||
extern const GUID OLEDBDECLSPEC DBSCHEMA_SPARSE_COLUMN_SET = {0x31a4837c, 0xf9ff, 0x405f, {0x89, 0x82, 0x02, 0x19, 0xaa, 0xaa, 0x4a, 0x12}};
|
|
||||||
|
|
||||||
|
|
||||||
#ifndef CRESTRICTIONS_DBSCHEMA_LINKEDSERVERS
|
|
||||||
#define CRESTRICTIONS_DBSCHEMA_LINKEDSERVERS 1
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifndef CRESTRICTIONS_DBSCHEMA_ASSEMBLIES
|
|
||||||
#define CRESTRICTIONS_DBSCHEMA_SQL_ASSEMBLIES 4
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifndef CRESTRICTIONS_DBSCHEMA_ASSEMBLY_DEPENDENCIES
|
|
||||||
#define CRESTRICTIONS_DBSCHEMA_SQL_ASSEMBLY_DEPENDENCIES 4
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifndef CRESTRICTIONS_DBSCHEMA_USER_TYPES
|
|
||||||
#define CRESTRICTIONS_DBSCHEMA_SQL_USER_TYPES 3
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifndef CRESTRICTIONS_DBSCHEMA_XML_COLLECTIONS
|
|
||||||
#define CRESTRICTIONS_DBSCHEMA_XML_COLLECTIONS 4
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifndef CRESTRICTIONS_DBSCHEMA_SQL_TABLE_TYPES
|
|
||||||
#define CRESTRICTIONS_DBSCHEMA_SQL_TABLE_TYPES 3
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifndef CRESTRICTIONS_DBSCHEMA_SQL_TABLE_TYPE_PRIMARY_KEYS
|
|
||||||
#define CRESTRICTIONS_DBSCHEMA_SQL_TABLE_TYPE_PRIMARY_KEYS 3
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifndef CRESTRICTIONS_DBSCHEMA_SQL_TABLE_TYPE_COLUMNS
|
|
||||||
#define CRESTRICTIONS_DBSCHEMA_SQL_TABLE_TYPE_COLUMNS 4
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifndef CRESTRICTIONS_DBSCHEMA_COLUMNS_EXTENDED
|
|
||||||
#define CRESTRICTIONS_DBSCHEMA_COLUMNS_EXTENDED 4
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifndef CRESTRICTIONS_DBSCHEMA_SPARSE_COLUMN_SET
|
|
||||||
#define CRESTRICTIONS_DBSCHEMA_SPARSE_COLUMN_SET 4
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
//----------------------------------------------------------------------------
|
|
||||||
// Provider-specific property sets
|
|
||||||
//
|
|
||||||
#ifndef _SQLOLEDB_H_
|
|
||||||
extern const GUID OLEDBDECLSPEC DBPROPSET_SQLSERVERDATASOURCE = {0x28efaee4,0x2d2c,0x11d1,{0x98,0x7,0x0,0xc0,0x4f,0xc2,0xad,0x98}};
|
|
||||||
extern const GUID OLEDBDECLSPEC DBPROPSET_SQLSERVERDATASOURCEINFO= {0xdf10cb94,0x35f6,0x11d2,{0x9c,0x54,0x0,0xc0,0x4f,0x79,0x71,0xd3}};
|
|
||||||
extern const GUID OLEDBDECLSPEC DBPROPSET_SQLSERVERDBINIT = {0x5cf4ca10,0xef21,0x11d0,{0x97,0xe7,0x0,0xc0,0x4f,0xc2,0xad,0x98}};
|
|
||||||
extern const GUID OLEDBDECLSPEC DBPROPSET_SQLSERVERROWSET = {0x5cf4ca11,0xef21,0x11d0,{0x97,0xe7,0x0,0xc0,0x4f,0xc2,0xad,0x98}};
|
|
||||||
extern const GUID OLEDBDECLSPEC DBPROPSET_SQLSERVERSESSION = {0x28efaee5,0x2d2c,0x11d1,{0x98,0x7,0x0,0xc0,0x4f,0xc2,0xad,0x98}};
|
|
||||||
extern const GUID OLEDBDECLSPEC DBPROPSET_SQLSERVERCOLUMN = {0x3b63fb5e,0x3fbb,0x11d3,{0x9f,0x29,0x0,0xc0,0x4f,0x8e,0xe9,0xdc}};
|
|
||||||
extern const GUID OLEDBDECLSPEC DBPROPSET_SQLSERVERSTREAM = {0x9f79c073,0x8a6d,0x4bca,{0xa8,0xa8,0xc9,0xb7,0x9a,0x9b,0x96,0x2d}};
|
|
||||||
#endif //_SQLOLEDB_H_
|
|
||||||
extern const GUID OLEDBDECLSPEC DBPROPSET_SQLSERVERPARAMETER = {0xfee09128,0xa67d,0x47ea,{0x8d,0x40,0x24,0xa1,0xd4,0x73,0x7e,0x8d}};
|
|
||||||
extern const GUID OLEDBDECLSPEC DBPROPSET_SQLSERVERINDEX = {0xE428B84E,0xA6B7,0x413a,{0x94,0x65,0x56,0x23,0x2E,0x0D,0x2B,0xEB}};
|
|
||||||
extern const GUID OLEDBDECLSPEC DBPROPSET_PARAMETERALL = {0x2cd2b7d8,0xe7c2,0x4f6c,{0x9b,0x30,0x75,0xe2,0x58,0x46,0x10,0x97}};
|
|
||||||
|
|
||||||
|
|
||||||
//----------------------------------------------------------------------------
|
|
||||||
// Provider-specific columns for IColumnsRowset
|
|
||||||
//
|
|
||||||
#define DBCOLUMN_SS_X_GUID {0x627bd890,0xed54,0x11d2,{0xb9,0x94,0x0,0xc0,0x4f,0x8c,0xa8,0x2c}}
|
|
||||||
//
|
|
||||||
#ifndef _SQLOLEDB_H_
|
|
||||||
extern const DBID OLEDBDECLSPEC DBCOLUMN_SS_COMPFLAGS = {DBCOLUMN_SS_X_GUID, DBKIND_GUID_PROPID, (LPOLESTR)100};
|
|
||||||
extern const DBID OLEDBDECLSPEC DBCOLUMN_SS_SORTID = {DBCOLUMN_SS_X_GUID, DBKIND_GUID_PROPID, (LPOLESTR)101};
|
|
||||||
extern const DBID OLEDBDECLSPEC DBCOLUMN_BASETABLEINSTANCE = {DBCOLUMN_SS_X_GUID, DBKIND_GUID_PROPID, (LPOLESTR)102};
|
|
||||||
extern const DBID OLEDBDECLSPEC DBCOLUMN_SS_TDSCOLLATION = {DBCOLUMN_SS_X_GUID, DBKIND_GUID_PROPID, (LPOLESTR)103};
|
|
||||||
#endif //_SQLOLEDB_H_
|
|
||||||
extern const DBID OLEDBDECLSPEC DBCOLUMN_BASESERVERNAME = {DBCOLUMN_SS_X_GUID, DBKIND_GUID_PROPID, (LPOLESTR)104};
|
|
||||||
extern const DBID OLEDBDECLSPEC DBCOLUMN_SS_XML_SCHEMACOLLECTION_CATALOGNAME= {DBCOLUMN_SS_X_GUID, DBKIND_GUID_PROPID, (LPOLESTR)105};
|
|
||||||
extern const DBID OLEDBDECLSPEC DBCOLUMN_SS_XML_SCHEMACOLLECTION_SCHEMANAME = {DBCOLUMN_SS_X_GUID, DBKIND_GUID_PROPID, (LPOLESTR)106};
|
|
||||||
extern const DBID OLEDBDECLSPEC DBCOLUMN_SS_XML_SCHEMACOLLECTIONNAME = {DBCOLUMN_SS_X_GUID, DBKIND_GUID_PROPID, (LPOLESTR)107};
|
|
||||||
extern const DBID OLEDBDECLSPEC DBCOLUMN_SS_UDT_CATALOGNAME = {DBCOLUMN_SS_X_GUID, DBKIND_GUID_PROPID, (LPOLESTR)108};
|
|
||||||
extern const DBID OLEDBDECLSPEC DBCOLUMN_SS_UDT_SCHEMANAME = {DBCOLUMN_SS_X_GUID, DBKIND_GUID_PROPID, (LPOLESTR)109};
|
|
||||||
extern const DBID OLEDBDECLSPEC DBCOLUMN_SS_UDT_NAME = {DBCOLUMN_SS_X_GUID, DBKIND_GUID_PROPID, (LPOLESTR)110};
|
|
||||||
extern const DBID OLEDBDECLSPEC DBCOLUMN_SS_ASSEMBLY_TYPENAME= {DBCOLUMN_SS_X_GUID, DBKIND_GUID_PROPID, (LPOLESTR)111};
|
|
||||||
|
|
||||||
// OLEDB part of SQL Server Native Client header - end here!
|
|
||||||
#endif // defined(_SQLNCLI_OLEDB_) || !defined(_SQLNCLI_ODBC_)
|
|
||||||
|
|
||||||
// ODBC part of SQL Server Native Client header - begin here!
|
|
||||||
#if defined(_SQLNCLI_ODBC_) || !defined(_SQLNCLI_OLEDB_)
|
|
||||||
#ifdef ODBCVER
|
|
||||||
|
|
||||||
// max SQL Server identifier length
|
|
||||||
#define SQL_MAX_SQLSERVERNAME 128
|
|
||||||
|
|
||||||
// SQLSetConnectAttr driver specific defines.
|
|
||||||
// Microsoft has 1200 thru 1249 reserved for Microsoft SQL Server Native Client driver usage.
|
|
||||||
// Connection attributes
|
|
||||||
#define SQL_COPT_SS_BASE 1200
|
|
||||||
#define SQL_COPT_SS_REMOTE_PWD (SQL_COPT_SS_BASE+1) // dbrpwset SQLSetConnectOption only
|
|
||||||
#define SQL_COPT_SS_USE_PROC_FOR_PREP (SQL_COPT_SS_BASE+2) // Use create proc for SQLPrepare
|
|
||||||
#define SQL_COPT_SS_INTEGRATED_SECURITY (SQL_COPT_SS_BASE+3) // Force integrated security on login
|
|
||||||
#define SQL_COPT_SS_PRESERVE_CURSORS (SQL_COPT_SS_BASE+4) // Preserve server cursors after SQLTransact
|
|
||||||
#define SQL_COPT_SS_USER_DATA (SQL_COPT_SS_BASE+5) // dbgetuserdata/dbsetuserdata
|
|
||||||
#define SQL_COPT_SS_ENLIST_IN_DTC SQL_ATTR_ENLIST_IN_DTC // Enlist in a DTC transaction
|
|
||||||
#define SQL_COPT_SS_ENLIST_IN_XA SQL_ATTR_ENLIST_IN_XA // Enlist in a XA transaction
|
|
||||||
#define SQL_COPT_SS_FALLBACK_CONNECT (SQL_COPT_SS_BASE+10) // Enables FallBack connections
|
|
||||||
#define SQL_COPT_SS_PERF_DATA (SQL_COPT_SS_BASE+11) // Used to access SQL Server ODBC driver performance data
|
|
||||||
#define SQL_COPT_SS_PERF_DATA_LOG (SQL_COPT_SS_BASE+12) // Used to set the logfile name for the Performance data
|
|
||||||
#define SQL_COPT_SS_PERF_QUERY_INTERVAL (SQL_COPT_SS_BASE+13) // Used to set the query logging threshold in milliseconds.
|
|
||||||
#define SQL_COPT_SS_PERF_QUERY_LOG (SQL_COPT_SS_BASE+14) // Used to set the logfile name for saving queryies.
|
|
||||||
#define SQL_COPT_SS_PERF_QUERY (SQL_COPT_SS_BASE+15) // Used to start and stop query logging.
|
|
||||||
#define SQL_COPT_SS_PERF_DATA_LOG_NOW (SQL_COPT_SS_BASE+16) // Used to make a statistics log entry to disk.
|
|
||||||
#define SQL_COPT_SS_QUOTED_IDENT (SQL_COPT_SS_BASE+17) // Enable/Disable Quoted Identifiers
|
|
||||||
#define SQL_COPT_SS_ANSI_NPW (SQL_COPT_SS_BASE+18) // Enable/Disable ANSI NULL, Padding and Warnings
|
|
||||||
#define SQL_COPT_SS_BCP (SQL_COPT_SS_BASE+19) // Allow BCP usage on connection
|
|
||||||
#define SQL_COPT_SS_TRANSLATE (SQL_COPT_SS_BASE+20) // Perform code page translation
|
|
||||||
#define SQL_COPT_SS_ATTACHDBFILENAME (SQL_COPT_SS_BASE+21) // File name to be attached as a database
|
|
||||||
#define SQL_COPT_SS_CONCAT_NULL (SQL_COPT_SS_BASE+22) // Enable/Disable CONCAT_NULL_YIELDS_NULL
|
|
||||||
#define SQL_COPT_SS_ENCRYPT (SQL_COPT_SS_BASE+23) // Allow strong encryption for data
|
|
||||||
#define SQL_COPT_SS_MARS_ENABLED (SQL_COPT_SS_BASE+24) // Multiple active result set per connection
|
|
||||||
#define SQL_COPT_SS_FAILOVER_PARTNER (SQL_COPT_SS_BASE+25) // Failover partner server
|
|
||||||
#define SQL_COPT_SS_OLDPWD (SQL_COPT_SS_BASE+26) // Old Password, used when changing password during login
|
|
||||||
#define SQL_COPT_SS_TXN_ISOLATION (SQL_COPT_SS_BASE+27) // Used to set/get any driver-specific or ODBC-defined TXN iso level
|
|
||||||
#define SQL_COPT_SS_TRUST_SERVER_CERTIFICATE (SQL_COPT_SS_BASE+28) // Trust server certificate
|
|
||||||
#define SQL_COPT_SS_SERVER_SPN (SQL_COPT_SS_BASE+29) // Server SPN
|
|
||||||
#define SQL_COPT_SS_FAILOVER_PARTNER_SPN (SQL_COPT_SS_BASE+30) // Failover partner server SPN
|
|
||||||
#define SQL_COPT_SS_INTEGRATED_AUTHENTICATION_METHOD (SQL_COPT_SS_BASE+31) // The integrated authentication method used for the connection
|
|
||||||
#define SQL_COPT_SS_MUTUALLY_AUTHENTICATED (SQL_COPT_SS_BASE+32) // Used to decide if the connection is mutually authenticated
|
|
||||||
#define SQL_COPT_SS_MAX_USED SQL_COPT_SS_MUTUALLY_AUTHENTICATED
|
|
||||||
// Define old names
|
|
||||||
#define SQL_REMOTE_PWD SQL_COPT_SS_REMOTE_PWD
|
|
||||||
#define SQL_USE_PROCEDURE_FOR_PREPARE SQL_COPT_SS_USE_PROC_FOR_PREP
|
|
||||||
#define SQL_INTEGRATED_SECURITY SQL_COPT_SS_INTEGRATED_SECURITY
|
|
||||||
#define SQL_PRESERVE_CURSORS SQL_COPT_SS_PRESERVE_CURSORS
|
|
||||||
|
|
||||||
// SQLSetStmtAttr SQL Server Native Client driver specific defines.
|
|
||||||
// Statement attributes
|
|
||||||
#define SQL_SOPT_SS_BASE 1225
|
|
||||||
#define SQL_SOPT_SS_TEXTPTR_LOGGING (SQL_SOPT_SS_BASE+0) // Text pointer logging
|
|
||||||
#define SQL_SOPT_SS_CURRENT_COMMAND (SQL_SOPT_SS_BASE+1) // dbcurcmd SQLGetStmtOption only
|
|
||||||
#define SQL_SOPT_SS_HIDDEN_COLUMNS (SQL_SOPT_SS_BASE+2) // Expose FOR BROWSE hidden columns
|
|
||||||
#define SQL_SOPT_SS_NOBROWSETABLE (SQL_SOPT_SS_BASE+3) // Set NOBROWSETABLE option
|
|
||||||
#define SQL_SOPT_SS_REGIONALIZE (SQL_SOPT_SS_BASE+4) // Regionalize output character conversions
|
|
||||||
#define SQL_SOPT_SS_CURSOR_OPTIONS (SQL_SOPT_SS_BASE+5) // Server cursor options
|
|
||||||
#define SQL_SOPT_SS_NOCOUNT_STATUS (SQL_SOPT_SS_BASE+6) // Real vs. Not Real row count indicator
|
|
||||||
#define SQL_SOPT_SS_DEFER_PREPARE (SQL_SOPT_SS_BASE+7) // Defer prepare until necessary
|
|
||||||
#define SQL_SOPT_SS_QUERYNOTIFICATION_TIMEOUT (SQL_SOPT_SS_BASE+8) // Notification timeout
|
|
||||||
#define SQL_SOPT_SS_QUERYNOTIFICATION_MSGTEXT (SQL_SOPT_SS_BASE+9) // Notification message text
|
|
||||||
#define SQL_SOPT_SS_QUERYNOTIFICATION_OPTIONS (SQL_SOPT_SS_BASE+10)// SQL service broker name
|
|
||||||
#define SQL_SOPT_SS_PARAM_FOCUS (SQL_SOPT_SS_BASE+11)// Direct subsequent calls to parameter related methods to set properties on constituent columns/parameters of container types
|
|
||||||
#define SQL_SOPT_SS_NAME_SCOPE (SQL_SOPT_SS_BASE+12)// Sets name scope for subsequent catalog function calls
|
|
||||||
#define SQL_SOPT_SS_MAX_USED SQL_SOPT_SS_NAME_SCOPE
|
|
||||||
// Define old names
|
|
||||||
#define SQL_TEXTPTR_LOGGING SQL_SOPT_SS_TEXTPTR_LOGGING
|
|
||||||
#define SQL_COPT_SS_BASE_EX 1240
|
|
||||||
#define SQL_COPT_SS_BROWSE_CONNECT (SQL_COPT_SS_BASE_EX+1) // Browse connect mode of operation
|
|
||||||
#define SQL_COPT_SS_BROWSE_SERVER (SQL_COPT_SS_BASE_EX+2) // Single Server browse request.
|
|
||||||
#define SQL_COPT_SS_WARN_ON_CP_ERROR (SQL_COPT_SS_BASE_EX+3) // Issues warning when data from the server had a loss during code page conversion.
|
|
||||||
#define SQL_COPT_SS_CONNECTION_DEAD (SQL_COPT_SS_BASE_EX+4) // dbdead SQLGetConnectOption only. It will try to ping the server. Expensive connection check
|
|
||||||
#define SQL_COPT_SS_BROWSE_CACHE_DATA (SQL_COPT_SS_BASE_EX+5) // Determines if we should cache browse info. Used when returned buffer is greater then ODBC limit (32K)
|
|
||||||
#define SQL_COPT_SS_RESET_CONNECTION (SQL_COPT_SS_BASE_EX+6) // When this option is set, we will perform connection reset on next packet
|
|
||||||
#define SQL_COPT_SS_EX_MAX_USED SQL_COPT_SS_RESET_CONNECTION
|
|
||||||
|
|
||||||
// SQLColAttributes driver specific defines.
|
|
||||||
// SQLSetDescField/SQLGetDescField driver specific defines.
|
|
||||||
// Microsoft has 1200 thru 1249 reserved for Microsoft SQL Server Native Client driver usage.
|
|
||||||
#define SQL_CA_SS_BASE 1200
|
|
||||||
#define SQL_CA_SS_COLUMN_SSTYPE (SQL_CA_SS_BASE+0) // dbcoltype/dbalttype
|
|
||||||
#define SQL_CA_SS_COLUMN_UTYPE (SQL_CA_SS_BASE+1) // dbcolutype/dbaltutype
|
|
||||||
#define SQL_CA_SS_NUM_ORDERS (SQL_CA_SS_BASE+2) // dbnumorders
|
|
||||||
#define SQL_CA_SS_COLUMN_ORDER (SQL_CA_SS_BASE+3) // dbordercol
|
|
||||||
#define SQL_CA_SS_COLUMN_VARYLEN (SQL_CA_SS_BASE+4) // dbvarylen
|
|
||||||
#define SQL_CA_SS_NUM_COMPUTES (SQL_CA_SS_BASE+5) // dbnumcompute
|
|
||||||
#define SQL_CA_SS_COMPUTE_ID (SQL_CA_SS_BASE+6) // dbnextrow status return
|
|
||||||
#define SQL_CA_SS_COMPUTE_BYLIST (SQL_CA_SS_BASE+7) // dbbylist
|
|
||||||
#define SQL_CA_SS_COLUMN_ID (SQL_CA_SS_BASE+8) // dbaltcolid
|
|
||||||
#define SQL_CA_SS_COLUMN_OP (SQL_CA_SS_BASE+9) // dbaltop
|
|
||||||
#define SQL_CA_SS_COLUMN_SIZE (SQL_CA_SS_BASE+10) // dbcollen
|
|
||||||
#define SQL_CA_SS_COLUMN_HIDDEN (SQL_CA_SS_BASE+11) // Column is hidden (FOR BROWSE)
|
|
||||||
#define SQL_CA_SS_COLUMN_KEY (SQL_CA_SS_BASE+12) // Column is key column (FOR BROWSE)
|
|
||||||
//#define SQL_DESC_BASE_COLUMN_NAME_OLD (SQL_CA_SS_BASE+13) // This is defined at another location.
|
|
||||||
#define SQL_CA_SS_COLUMN_COLLATION (SQL_CA_SS_BASE+14) // Column collation (only for chars)
|
|
||||||
#define SQL_CA_SS_VARIANT_TYPE (SQL_CA_SS_BASE+15)
|
|
||||||
#define SQL_CA_SS_VARIANT_SQL_TYPE (SQL_CA_SS_BASE+16)
|
|
||||||
#define SQL_CA_SS_VARIANT_SERVER_TYPE (SQL_CA_SS_BASE+17)
|
|
||||||
|
|
||||||
// XML, CLR UDT, and table valued parameter related metadata
|
|
||||||
#define SQL_CA_SS_UDT_CATALOG_NAME (SQL_CA_SS_BASE+18) // UDT catalog name
|
|
||||||
#define SQL_CA_SS_UDT_SCHEMA_NAME (SQL_CA_SS_BASE+19) // UDT schema name
|
|
||||||
#define SQL_CA_SS_UDT_TYPE_NAME (SQL_CA_SS_BASE+20) // UDT type name
|
|
||||||
#define SQL_CA_SS_UDT_ASSEMBLY_TYPE_NAME (SQL_CA_SS_BASE+21) // Qualified name of the assembly containing the UDT class
|
|
||||||
#define SQL_CA_SS_XML_SCHEMACOLLECTION_CATALOG_NAME (SQL_CA_SS_BASE+22) // Name of the catalog that contains XML Schema collection
|
|
||||||
#define SQL_CA_SS_XML_SCHEMACOLLECTION_SCHEMA_NAME (SQL_CA_SS_BASE+23) // Name of the schema that contains XML Schema collection
|
|
||||||
#define SQL_CA_SS_XML_SCHEMACOLLECTION_NAME (SQL_CA_SS_BASE+24) // Name of the XML Schema collection
|
|
||||||
#define SQL_CA_SS_CATALOG_NAME (SQL_CA_SS_BASE+25) // Catalog name
|
|
||||||
#define SQL_CA_SS_SCHEMA_NAME (SQL_CA_SS_BASE+26) // Schema name
|
|
||||||
#define SQL_CA_SS_TYPE_NAME (SQL_CA_SS_BASE+27) // Type name
|
|
||||||
|
|
||||||
// table valued parameter related metadata
|
|
||||||
#define SQL_CA_SS_COLUMN_COMPUTED (SQL_CA_SS_BASE+29) // column is computed
|
|
||||||
#define SQL_CA_SS_COLUMN_IN_UNIQUE_KEY (SQL_CA_SS_BASE+30) // column is part of a unique key
|
|
||||||
#define SQL_CA_SS_COLUMN_SORT_ORDER (SQL_CA_SS_BASE+31) // column sort order
|
|
||||||
#define SQL_CA_SS_COLUMN_SORT_ORDINAL (SQL_CA_SS_BASE+32) // column sort ordinal
|
|
||||||
#define SQL_CA_SS_COLUMN_HAS_DEFAULT_VALUE (SQL_CA_SS_BASE+33) // column has default value for all rows of the table valued parameter
|
|
||||||
|
|
||||||
// sparse column related metadata
|
|
||||||
#define SQL_CA_SS_IS_COLUMN_SET (SQL_CA_SS_BASE+34) // column is a column-set column for sparse columns
|
|
||||||
|
|
||||||
// Legacy datetime related metadata
|
|
||||||
#define SQL_CA_SS_SERVER_TYPE (SQL_CA_SS_BASE+35) // column type to send on the wire for datetime types
|
|
||||||
|
|
||||||
#define SQL_CA_SS_MAX_USED (SQL_CA_SS_BASE+36)
|
|
||||||
|
|
||||||
// Defines returned by SQL_ATTR_CURSOR_TYPE/SQL_CURSOR_TYPE
|
|
||||||
#define SQL_CURSOR_FAST_FORWARD_ONLY 8 // Only returned by SQLGetStmtAttr/Option
|
|
||||||
// Defines for use with SQL_COPT_SS_USE_PROC_FOR_PREP
|
|
||||||
#define SQL_UP_OFF 0L // Procedures won't be used for prepare
|
|
||||||
#define SQL_UP_ON 1L // Procedures will be used for prepare
|
|
||||||
#define SQL_UP_ON_DROP 2L // Temp procedures will be explicitly dropped
|
|
||||||
#define SQL_UP_DEFAULT SQL_UP_ON
|
|
||||||
// Defines for use with SQL_COPT_SS_INTEGRATED_SECURITY - Pre-Connect Option only
|
|
||||||
#define SQL_IS_OFF 0L // Integrated security isn't used
|
|
||||||
#define SQL_IS_ON 1L // Integrated security is used
|
|
||||||
#define SQL_IS_DEFAULT SQL_IS_OFF
|
|
||||||
// Defines for use with SQL_COPT_SS_PRESERVE_CURSORS
|
|
||||||
#define SQL_PC_OFF 0L // Cursors are closed on SQLTransact
|
|
||||||
#define SQL_PC_ON 1L // Cursors remain open on SQLTransact
|
|
||||||
#define SQL_PC_DEFAULT SQL_PC_OFF
|
|
||||||
// Defines for use with SQL_COPT_SS_USER_DATA
|
|
||||||
#define SQL_UD_NOTSET NULL // No user data pointer set
|
|
||||||
// Defines for use with SQL_COPT_SS_TRANSLATE
|
|
||||||
#define SQL_XL_OFF 0L // Code page translation is not performed
|
|
||||||
#define SQL_XL_ON 1L // Code page translation is performed
|
|
||||||
#define SQL_XL_DEFAULT SQL_XL_ON
|
|
||||||
// Defines for use with SQL_COPT_SS_FALLBACK_CONNECT - Pre-Connect Option only
|
|
||||||
#define SQL_FB_OFF 0L // FallBack connections are disabled
|
|
||||||
#define SQL_FB_ON 1L // FallBack connections are enabled
|
|
||||||
#define SQL_FB_DEFAULT SQL_FB_OFF
|
|
||||||
// Defines for use with SQL_COPT_SS_BCP - Pre-Connect Option only
|
|
||||||
#define SQL_BCP_OFF 0L // BCP is not allowed on connection
|
|
||||||
#define SQL_BCP_ON 1L // BCP is allowed on connection
|
|
||||||
#define SQL_BCP_DEFAULT SQL_BCP_OFF
|
|
||||||
// Defines for use with SQL_COPT_SS_QUOTED_IDENT
|
|
||||||
#define SQL_QI_OFF 0L // Quoted identifiers are enable
|
|
||||||
#define SQL_QI_ON 1L // Quoted identifiers are disabled
|
|
||||||
#define SQL_QI_DEFAULT SQL_QI_ON
|
|
||||||
// Defines for use with SQL_COPT_SS_ANSI_NPW - Pre-Connect Option only
|
|
||||||
#define SQL_AD_OFF 0L // ANSI NULLs, Padding and Warnings are enabled
|
|
||||||
#define SQL_AD_ON 1L // ANSI NULLs, Padding and Warnings are disabled
|
|
||||||
#define SQL_AD_DEFAULT SQL_AD_ON
|
|
||||||
// Defines for use with SQL_COPT_SS_CONCAT_NULL - Pre-Connect Option only
|
|
||||||
#define SQL_CN_OFF 0L // CONCAT_NULL_YIELDS_NULL is off
|
|
||||||
#define SQL_CN_ON 1L // CONCAT_NULL_YIELDS_NULL is on
|
|
||||||
#define SQL_CN_DEFAULT SQL_CN_ON
|
|
||||||
// Defines for use with SQL_SOPT_SS_TEXTPTR_LOGGING
|
|
||||||
#define SQL_TL_OFF 0L // No logging on text pointer ops
|
|
||||||
#define SQL_TL_ON 1L // Logging occurs on text pointer ops
|
|
||||||
#define SQL_TL_DEFAULT SQL_TL_ON
|
|
||||||
// Defines for use with SQL_SOPT_SS_HIDDEN_COLUMNS
|
|
||||||
#define SQL_HC_OFF 0L // FOR BROWSE columns are hidden
|
|
||||||
#define SQL_HC_ON 1L // FOR BROWSE columns are exposed
|
|
||||||
#define SQL_HC_DEFAULT SQL_HC_OFF
|
|
||||||
// Defines for use with SQL_SOPT_SS_NOBROWSETABLE
|
|
||||||
#define SQL_NB_OFF 0L // NO_BROWSETABLE is off
|
|
||||||
#define SQL_NB_ON 1L // NO_BROWSETABLE is on
|
|
||||||
#define SQL_NB_DEFAULT SQL_NB_OFF
|
|
||||||
// Defines for use with SQL_SOPT_SS_REGIONALIZE
|
|
||||||
#define SQL_RE_OFF 0L // No regionalization occurs on output character conversions
|
|
||||||
#define SQL_RE_ON 1L // Regionalization occurs on output character conversions
|
|
||||||
#define SQL_RE_DEFAULT SQL_RE_OFF
|
|
||||||
// Defines for use with SQL_SOPT_SS_CURSOR_OPTIONS
|
|
||||||
#define SQL_CO_OFF 0L // Clear all cursor options
|
|
||||||
#define SQL_CO_FFO 1L // Fast-forward cursor will be used
|
|
||||||
#define SQL_CO_AF 2L // Autofetch on cursor open
|
|
||||||
#define SQL_CO_FFO_AF (SQL_CO_FFO|SQL_CO_AF) // Fast-forward cursor with autofetch
|
|
||||||
#define SQL_CO_FIREHOSE_AF 4L // Auto fetch on fire-hose cursors
|
|
||||||
#define SQL_CO_DEFAULT SQL_CO_OFF
|
|
||||||
//SQL_SOPT_SS_NOCOUNT_STATUS
|
|
||||||
#define SQL_NC_OFF 0L
|
|
||||||
#define SQL_NC_ON 1L
|
|
||||||
//SQL_SOPT_SS_DEFER_PREPARE
|
|
||||||
#define SQL_DP_OFF 0L
|
|
||||||
#define SQL_DP_ON 1L
|
|
||||||
//SQL_SOPT_SS_NAME_SCOPE
|
|
||||||
#define SQL_SS_NAME_SCOPE_TABLE 0L
|
|
||||||
#define SQL_SS_NAME_SCOPE_TABLE_TYPE 1L
|
|
||||||
#define SQL_SS_NAME_SCOPE_EXTENDED 2L
|
|
||||||
#define SQL_SS_NAME_SCOPE_SPARSE_COLUMN_SET 3L
|
|
||||||
#define SQL_SS_NAME_SCOPE_DEFAULT SQL_SS_NAME_SCOPE_TABLE
|
|
||||||
//SQL_COPT_SS_ENCRYPT
|
|
||||||
#define SQL_EN_OFF 0L
|
|
||||||
#define SQL_EN_ON 1L
|
|
||||||
//SQL_COPT_SS_TRUST_SERVER_CERTIFICATE
|
|
||||||
#define SQL_TRUST_SERVER_CERTIFICATE_NO 0L
|
|
||||||
#define SQL_TRUST_SERVER_CERTIFICATE_YES 1L
|
|
||||||
//SQL_COPT_SS_BROWSE_CONNECT
|
|
||||||
#define SQL_MORE_INFO_NO 0L
|
|
||||||
#define SQL_MORE_INFO_YES 1L
|
|
||||||
//SQL_COPT_SS_BROWSE_CACHE_DATA
|
|
||||||
#define SQL_CACHE_DATA_NO 0L
|
|
||||||
#define SQL_CACHE_DATA_YES 1L
|
|
||||||
//SQL_COPT_SS_RESET_CONNECTION
|
|
||||||
#define SQL_RESET_YES 1L
|
|
||||||
//SQL_COPT_SS_WARN_ON_CP_ERROR
|
|
||||||
#define SQL_WARN_NO 0L
|
|
||||||
#define SQL_WARN_YES 1L
|
|
||||||
//SQL_COPT_SS_MARS_ENABLED
|
|
||||||
#define SQL_MARS_ENABLED_NO 0L
|
|
||||||
#define SQL_MARS_ENABLED_YES 1L
|
|
||||||
/* SQL_TXN_ISOLATION_OPTION bitmasks */
|
|
||||||
#define SQL_TXN_SS_SNAPSHOT 0x00000020L
|
|
||||||
|
|
||||||
// The following are defines for SQL_CA_SS_COLUMN_SORT_ORDER
|
|
||||||
#define SQL_SS_ORDER_UNSPECIFIED 0L
|
|
||||||
#define SQL_SS_DESCENDING_ORDER 1L
|
|
||||||
#define SQL_SS_ASCENDING_ORDER 2L
|
|
||||||
#define SQL_SS_ORDER_DEFAULT SQL_SS_ORDER_UNSPECIFIED
|
|
||||||
|
|
||||||
// Driver specific SQL data type defines.
|
|
||||||
// Microsoft has -150 thru -199 reserved for Microsoft SQL Server Native Client driver usage.
|
|
||||||
#define SQL_SS_VARIANT (-150)
|
|
||||||
#define SQL_SS_UDT (-151)
|
|
||||||
#define SQL_SS_XML (-152)
|
|
||||||
#define SQL_SS_TABLE (-153)
|
|
||||||
#define SQL_SS_TIME2 (-154)
|
|
||||||
#define SQL_SS_TIMESTAMPOFFSET (-155)
|
|
||||||
|
|
||||||
// Local types to be used with SQL_CA_SS_SERVER_TYPE
|
|
||||||
#define SQL_SS_TYPE_DEFAULT 0L
|
|
||||||
#define SQL_SS_TYPE_SMALLDATETIME 1L
|
|
||||||
#define SQL_SS_TYPE_DATETIME 2L
|
|
||||||
|
|
||||||
#ifndef SQLNCLI_NO_BCP
|
|
||||||
// Define the symbol SQLNCLI_NO_BCP if you are not using BCP in your application
|
|
||||||
// and you want to exclude the BCP-related definitions in this header file.
|
|
||||||
|
|
||||||
// SQL Server Data Type defines.
|
|
||||||
// New types for SQL 6.0 and later servers
|
|
||||||
#define SQLTEXT 0x23
|
|
||||||
#define SQLVARBINARY 0x25
|
|
||||||
#define SQLINTN 0x26
|
|
||||||
#define SQLVARCHAR 0x27
|
|
||||||
#define SQLBINARY 0x2d
|
|
||||||
#define SQLIMAGE 0x22
|
|
||||||
#define SQLCHARACTER 0x2f
|
|
||||||
#define SQLINT1 0x30
|
|
||||||
#define SQLBIT 0x32
|
|
||||||
#define SQLINT2 0x34
|
|
||||||
#define SQLINT4 0x38
|
|
||||||
#define SQLMONEY 0x3c
|
|
||||||
#define SQLDATETIME 0x3d
|
|
||||||
#define SQLFLT8 0x3e
|
|
||||||
#define SQLFLTN 0x6d
|
|
||||||
#define SQLMONEYN 0x6e
|
|
||||||
#define SQLDATETIMN 0x6f
|
|
||||||
#define SQLFLT4 0x3b
|
|
||||||
#define SQLMONEY4 0x7a
|
|
||||||
#define SQLDATETIM4 0x3a
|
|
||||||
// New types for SQL 6.0 and later servers
|
|
||||||
#define SQLDECIMAL 0x6a
|
|
||||||
#define SQLNUMERIC 0x6c
|
|
||||||
// New types for SQL 7.0 and later servers
|
|
||||||
#define SQLUNIQUEID 0x24
|
|
||||||
#define SQLBIGCHAR 0xaf
|
|
||||||
#define SQLBIGVARCHAR 0xa7
|
|
||||||
#define SQLBIGBINARY 0xad
|
|
||||||
#define SQLBIGVARBINARY 0xa5
|
|
||||||
#define SQLBITN 0x68
|
|
||||||
#define SQLNCHAR 0xef
|
|
||||||
#define SQLNVARCHAR 0xe7
|
|
||||||
#define SQLNTEXT 0x63
|
|
||||||
// New types for SQL 2000 and later servers
|
|
||||||
#define SQLINT8 0x7f
|
|
||||||
#define SQLVARIANT 0x62
|
|
||||||
// New types for SQL 2005 and later servers
|
|
||||||
#define SQLUDT 0xf0
|
|
||||||
#define SQLXML 0xf1
|
|
||||||
// New types for SQL 2008 and later servers
|
|
||||||
#define SQLTABLE 0xf3
|
|
||||||
#define SQLDATEN 0x28
|
|
||||||
#define SQLTIMEN 0x29
|
|
||||||
#define SQLDATETIME2N 0x2a
|
|
||||||
#define SQLDATETIMEOFFSETN 0x2b
|
|
||||||
// Define old names
|
|
||||||
#define SQLDECIMALN 0x6a
|
|
||||||
#define SQLNUMERICN 0x6c
|
|
||||||
#endif // SQLNCLI_NO_BCP
|
|
||||||
|
|
||||||
// SQL_SS_LENGTH_UNLIMITED is used to describe the max length of
|
|
||||||
// VARCHAR(max), VARBINARY(max), NVARCHAR(max), and XML columns
|
|
||||||
#define SQL_SS_LENGTH_UNLIMITED 0
|
|
||||||
|
|
||||||
// User Data Type definitions.
|
|
||||||
// Returned by SQLColAttributes/SQL_CA_SS_COLUMN_UTYPE.
|
|
||||||
#define SQLudtBINARY 3
|
|
||||||
#define SQLudtBIT 16
|
|
||||||
#define SQLudtBITN 0
|
|
||||||
#define SQLudtCHAR 1
|
|
||||||
#define SQLudtDATETIM4 22
|
|
||||||
#define SQLudtDATETIME 12
|
|
||||||
#define SQLudtDATETIMN 15
|
|
||||||
#define SQLudtDECML 24
|
|
||||||
#define SQLudtDECMLN 26
|
|
||||||
#define SQLudtFLT4 23
|
|
||||||
#define SQLudtFLT8 8
|
|
||||||
#define SQLudtFLTN 14
|
|
||||||
#define SQLudtIMAGE 20
|
|
||||||
#define SQLudtINT1 5
|
|
||||||
#define SQLudtINT2 6
|
|
||||||
#define SQLudtINT4 7
|
|
||||||
#define SQLudtINTN 13
|
|
||||||
#define SQLudtMONEY 11
|
|
||||||
#define SQLudtMONEY4 21
|
|
||||||
#define SQLudtMONEYN 17
|
|
||||||
#define SQLudtNUM 10
|
|
||||||
#define SQLudtNUMN 25
|
|
||||||
#define SQLudtSYSNAME 18
|
|
||||||
#define SQLudtTEXT 19
|
|
||||||
#define SQLudtTIMESTAMP 80
|
|
||||||
#define SQLudtUNIQUEIDENTIFIER 0
|
|
||||||
#define SQLudtVARBINARY 4
|
|
||||||
#define SQLudtVARCHAR 2
|
|
||||||
#define MIN_USER_DATATYPE 256
|
|
||||||
// Aggregate operator types.
|
|
||||||
// Returned by SQLColAttributes/SQL_CA_SS_COLUMN_OP.
|
|
||||||
#define SQLAOPSTDEV 0x30 // Standard deviation
|
|
||||||
#define SQLAOPSTDEVP 0x31 // Standard deviation population
|
|
||||||
#define SQLAOPVAR 0x32 // Variance
|
|
||||||
#define SQLAOPVARP 0x33 // Variance population
|
|
||||||
#define SQLAOPCNT 0x4b // Count
|
|
||||||
#define SQLAOPSUM 0x4d // Sum
|
|
||||||
#define SQLAOPAVG 0x4f // Average
|
|
||||||
#define SQLAOPMIN 0x51 // Min
|
|
||||||
#define SQLAOPMAX 0x52 // Max
|
|
||||||
#define SQLAOPANY 0x53 // Any
|
|
||||||
#define SQLAOPNOOP 0x56 // None
|
|
||||||
// SQLGetInfo driver specific defines.
|
|
||||||
// Microsoft has 1151 thru 1200 reserved for Microsoft SQL Server Native Client driver usage.
|
|
||||||
#define SQL_INFO_SS_FIRST 1199
|
|
||||||
#define SQL_INFO_SS_NETLIB_NAMEW (SQL_INFO_SS_FIRST+0) // dbprocinfo
|
|
||||||
#define SQL_INFO_SS_NETLIB_NAMEA (SQL_INFO_SS_FIRST+1) // dbprocinfo
|
|
||||||
#define SQL_INFO_SS_MAX_USED SQL_INFO_SS_NETLIB_NAMEA
|
|
||||||
#ifdef UNICODE
|
|
||||||
#define SQL_INFO_SS_NETLIB_NAME SQL_INFO_SS_NETLIB_NAMEW
|
|
||||||
#else
|
|
||||||
#define SQL_INFO_SS_NETLIB_NAME SQL_INFO_SS_NETLIB_NAMEA
|
|
||||||
#endif
|
|
||||||
// SQLGetDiagField driver specific defines.
|
|
||||||
// Microsoft has -1150 thru -1199 reserved for Microsoft SQL Server Native Client driver usage.
|
|
||||||
#define SQL_DIAG_SS_BASE (-1150)
|
|
||||||
#define SQL_DIAG_SS_MSGSTATE (SQL_DIAG_SS_BASE)
|
|
||||||
#define SQL_DIAG_SS_SEVERITY (SQL_DIAG_SS_BASE-1)
|
|
||||||
#define SQL_DIAG_SS_SRVNAME (SQL_DIAG_SS_BASE-2)
|
|
||||||
#define SQL_DIAG_SS_PROCNAME (SQL_DIAG_SS_BASE-3)
|
|
||||||
#define SQL_DIAG_SS_LINE (SQL_DIAG_SS_BASE-4)
|
|
||||||
// SQLGetDiagField/SQL_DIAG_DYNAMIC_FUNCTION_CODE driver specific defines.
|
|
||||||
// Microsoft has -200 thru -299 reserved for Microsoft SQL Server Native Client driver usage.
|
|
||||||
#define SQL_DIAG_DFC_SS_BASE (-200)
|
|
||||||
#define SQL_DIAG_DFC_SS_ALTER_DATABASE (SQL_DIAG_DFC_SS_BASE-0)
|
|
||||||
#define SQL_DIAG_DFC_SS_CHECKPOINT (SQL_DIAG_DFC_SS_BASE-1)
|
|
||||||
#define SQL_DIAG_DFC_SS_CONDITION (SQL_DIAG_DFC_SS_BASE-2)
|
|
||||||
#define SQL_DIAG_DFC_SS_CREATE_DATABASE (SQL_DIAG_DFC_SS_BASE-3)
|
|
||||||
#define SQL_DIAG_DFC_SS_CREATE_DEFAULT (SQL_DIAG_DFC_SS_BASE-4)
|
|
||||||
#define SQL_DIAG_DFC_SS_CREATE_PROCEDURE (SQL_DIAG_DFC_SS_BASE-5)
|
|
||||||
#define SQL_DIAG_DFC_SS_CREATE_RULE (SQL_DIAG_DFC_SS_BASE-6)
|
|
||||||
#define SQL_DIAG_DFC_SS_CREATE_TRIGGER (SQL_DIAG_DFC_SS_BASE-7)
|
|
||||||
#define SQL_DIAG_DFC_SS_CURSOR_DECLARE (SQL_DIAG_DFC_SS_BASE-8)
|
|
||||||
#define SQL_DIAG_DFC_SS_CURSOR_OPEN (SQL_DIAG_DFC_SS_BASE-9)
|
|
||||||
#define SQL_DIAG_DFC_SS_CURSOR_FETCH (SQL_DIAG_DFC_SS_BASE-10)
|
|
||||||
#define SQL_DIAG_DFC_SS_CURSOR_CLOSE (SQL_DIAG_DFC_SS_BASE-11)
|
|
||||||
#define SQL_DIAG_DFC_SS_DEALLOCATE_CURSOR (SQL_DIAG_DFC_SS_BASE-12)
|
|
||||||
#define SQL_DIAG_DFC_SS_DBCC (SQL_DIAG_DFC_SS_BASE-13)
|
|
||||||
#define SQL_DIAG_DFC_SS_DISK (SQL_DIAG_DFC_SS_BASE-14)
|
|
||||||
#define SQL_DIAG_DFC_SS_DROP_DATABASE (SQL_DIAG_DFC_SS_BASE-15)
|
|
||||||
#define SQL_DIAG_DFC_SS_DROP_DEFAULT (SQL_DIAG_DFC_SS_BASE-16)
|
|
||||||
#define SQL_DIAG_DFC_SS_DROP_PROCEDURE (SQL_DIAG_DFC_SS_BASE-17)
|
|
||||||
#define SQL_DIAG_DFC_SS_DROP_RULE (SQL_DIAG_DFC_SS_BASE-18)
|
|
||||||
#define SQL_DIAG_DFC_SS_DROP_TRIGGER (SQL_DIAG_DFC_SS_BASE-19)
|
|
||||||
#define SQL_DIAG_DFC_SS_DUMP_DATABASE (SQL_DIAG_DFC_SS_BASE-20)
|
|
||||||
#define SQL_DIAG_DFC_SS_BACKUP_DATABASE (SQL_DIAG_DFC_SS_BASE-20)
|
|
||||||
#define SQL_DIAG_DFC_SS_DUMP_TABLE (SQL_DIAG_DFC_SS_BASE-21)
|
|
||||||
#define SQL_DIAG_DFC_SS_DUMP_TRANSACTION (SQL_DIAG_DFC_SS_BASE-22)
|
|
||||||
#define SQL_DIAG_DFC_SS_BACKUP_TRANSACTION (SQL_DIAG_DFC_SS_BASE-22)
|
|
||||||
#define SQL_DIAG_DFC_SS_GOTO (SQL_DIAG_DFC_SS_BASE-23)
|
|
||||||
#define SQL_DIAG_DFC_SS_INSERT_BULK (SQL_DIAG_DFC_SS_BASE-24)
|
|
||||||
#define SQL_DIAG_DFC_SS_KILL (SQL_DIAG_DFC_SS_BASE-25)
|
|
||||||
#define SQL_DIAG_DFC_SS_LOAD_DATABASE (SQL_DIAG_DFC_SS_BASE-26)
|
|
||||||
#define SQL_DIAG_DFC_SS_RESTORE_DATABASE (SQL_DIAG_DFC_SS_BASE-26)
|
|
||||||
#define SQL_DIAG_DFC_SS_LOAD_HEADERONLY (SQL_DIAG_DFC_SS_BASE-27)
|
|
||||||
#define SQL_DIAG_DFC_SS_RESTORE_HEADERONLY (SQL_DIAG_DFC_SS_BASE-27)
|
|
||||||
#define SQL_DIAG_DFC_SS_LOAD_TABLE (SQL_DIAG_DFC_SS_BASE-28)
|
|
||||||
#define SQL_DIAG_DFC_SS_LOAD_TRANSACTION (SQL_DIAG_DFC_SS_BASE-29)
|
|
||||||
#define SQL_DIAG_DFC_SS_RESTORE_TRANSACTION (SQL_DIAG_DFC_SS_BASE-29)
|
|
||||||
#define SQL_DIAG_DFC_SS_PRINT (SQL_DIAG_DFC_SS_BASE-30)
|
|
||||||
#define SQL_DIAG_DFC_SS_RAISERROR (SQL_DIAG_DFC_SS_BASE-31)
|
|
||||||
#define SQL_DIAG_DFC_SS_READTEXT (SQL_DIAG_DFC_SS_BASE-32)
|
|
||||||
#define SQL_DIAG_DFC_SS_RECONFIGURE (SQL_DIAG_DFC_SS_BASE-33)
|
|
||||||
#define SQL_DIAG_DFC_SS_RETURN (SQL_DIAG_DFC_SS_BASE-34)
|
|
||||||
#define SQL_DIAG_DFC_SS_SELECT_INTO (SQL_DIAG_DFC_SS_BASE-35)
|
|
||||||
#define SQL_DIAG_DFC_SS_SET (SQL_DIAG_DFC_SS_BASE-36)
|
|
||||||
#define SQL_DIAG_DFC_SS_SET_IDENTITY_INSERT (SQL_DIAG_DFC_SS_BASE-37)
|
|
||||||
#define SQL_DIAG_DFC_SS_SET_ROW_COUNT (SQL_DIAG_DFC_SS_BASE-38)
|
|
||||||
#define SQL_DIAG_DFC_SS_SET_STATISTICS (SQL_DIAG_DFC_SS_BASE-39)
|
|
||||||
#define SQL_DIAG_DFC_SS_SET_TEXTSIZE (SQL_DIAG_DFC_SS_BASE-40)
|
|
||||||
#define SQL_DIAG_DFC_SS_SETUSER (SQL_DIAG_DFC_SS_BASE-41)
|
|
||||||
#define SQL_DIAG_DFC_SS_SHUTDOWN (SQL_DIAG_DFC_SS_BASE-42)
|
|
||||||
#define SQL_DIAG_DFC_SS_TRANS_BEGIN (SQL_DIAG_DFC_SS_BASE-43)
|
|
||||||
#define SQL_DIAG_DFC_SS_TRANS_COMMIT (SQL_DIAG_DFC_SS_BASE-44)
|
|
||||||
#define SQL_DIAG_DFC_SS_TRANS_PREPARE (SQL_DIAG_DFC_SS_BASE-45)
|
|
||||||
#define SQL_DIAG_DFC_SS_TRANS_ROLLBACK (SQL_DIAG_DFC_SS_BASE-46)
|
|
||||||
#define SQL_DIAG_DFC_SS_TRANS_SAVE (SQL_DIAG_DFC_SS_BASE-47)
|
|
||||||
#define SQL_DIAG_DFC_SS_TRUNCATE_TABLE (SQL_DIAG_DFC_SS_BASE-48)
|
|
||||||
#define SQL_DIAG_DFC_SS_UPDATE_STATISTICS (SQL_DIAG_DFC_SS_BASE-49)
|
|
||||||
#define SQL_DIAG_DFC_SS_UPDATETEXT (SQL_DIAG_DFC_SS_BASE-50)
|
|
||||||
#define SQL_DIAG_DFC_SS_USE (SQL_DIAG_DFC_SS_BASE-51)
|
|
||||||
#define SQL_DIAG_DFC_SS_WAITFOR (SQL_DIAG_DFC_SS_BASE-52)
|
|
||||||
#define SQL_DIAG_DFC_SS_WRITETEXT (SQL_DIAG_DFC_SS_BASE-53)
|
|
||||||
#define SQL_DIAG_DFC_SS_DENY (SQL_DIAG_DFC_SS_BASE-54)
|
|
||||||
#define SQL_DIAG_DFC_SS_SET_XCTLVL (SQL_DIAG_DFC_SS_BASE-55)
|
|
||||||
#define SQL_DIAG_DFC_SS_MERGE (SQL_DIAG_DFC_SS_BASE-56)
|
|
||||||
|
|
||||||
// Severity codes for SQL_DIAG_SS_SEVERITY
|
|
||||||
#define EX_ANY 0
|
|
||||||
#define EX_INFO 10
|
|
||||||
#define EX_MAXISEVERITY EX_INFO
|
|
||||||
#define EX_MISSING 11
|
|
||||||
#define EX_TYPE 12
|
|
||||||
#define EX_DEADLOCK 13
|
|
||||||
#define EX_PERMIT 14
|
|
||||||
#define EX_SYNTAX 15
|
|
||||||
#define EX_USER 16
|
|
||||||
#define EX_RESOURCE 17
|
|
||||||
#define EX_INTOK 18
|
|
||||||
#define MAXUSEVERITY EX_INTOK
|
|
||||||
#define EX_LIMIT 19
|
|
||||||
#define EX_CMDFATAL 20
|
|
||||||
#define MINFATALERR EX_CMDFATAL
|
|
||||||
#define EX_DBFATAL 21
|
|
||||||
#define EX_TABCORRUPT 22
|
|
||||||
#define EX_DBCORRUPT 23
|
|
||||||
#define EX_HARDWARE 24
|
|
||||||
#define EX_CONTROL 25
|
|
||||||
// Internal server datatypes - used when binding to SQL_C_BINARY
|
|
||||||
#ifndef MAXNUMERICLEN // Resolve ODS/DBLib conflicts
|
|
||||||
// DB-Library datatypes
|
|
||||||
#define DBMAXCHAR (8000+1) // Max length of DBVARBINARY and DBVARCHAR, etc. +1 for zero byte
|
|
||||||
#define MAXNAME (SQL_MAX_SQLSERVERNAME+1) // Max server identifier length including zero byte
|
|
||||||
#ifdef UNICODE
|
|
||||||
typedef wchar_t DBCHAR;
|
|
||||||
#else
|
|
||||||
typedef char DBCHAR;
|
|
||||||
|
|
||||||
#endif
|
|
||||||
typedef short SQLSMALLINT;
|
|
||||||
|
|
||||||
typedef unsigned short SQLUSMALLINT;
|
|
||||||
|
|
||||||
typedef long SQLINTEGER;
|
|
||||||
|
|
||||||
typedef unsigned long SQLUINTEGER;
|
|
||||||
|
|
||||||
typedef unsigned char DBBINARY;
|
|
||||||
|
|
||||||
typedef unsigned char DBTINYINT;
|
|
||||||
|
|
||||||
typedef short DBSMALLINT;
|
|
||||||
|
|
||||||
typedef unsigned short DBUSMALLINT;
|
|
||||||
|
|
||||||
typedef double DBFLT8;
|
|
||||||
|
|
||||||
typedef unsigned char DBBIT;
|
|
||||||
|
|
||||||
typedef unsigned char DBBOOL;
|
|
||||||
|
|
||||||
typedef float DBFLT4;
|
|
||||||
|
|
||||||
typedef DBFLT4 DBREAL;
|
|
||||||
|
|
||||||
typedef UINT DBUBOOL;
|
|
||||||
|
|
||||||
typedef struct dbmoney
|
|
||||||
{
|
|
||||||
LONG mnyhigh;
|
|
||||||
ULONG mnylow;
|
|
||||||
} DBMONEY;
|
|
||||||
|
|
||||||
typedef struct dbdatetime
|
|
||||||
{
|
|
||||||
LONG dtdays;
|
|
||||||
ULONG dttime;
|
|
||||||
} DBDATETIME;
|
|
||||||
|
|
||||||
typedef struct dbdatetime4
|
|
||||||
{
|
|
||||||
USHORT numdays;
|
|
||||||
USHORT nummins;
|
|
||||||
} DBDATETIM4;
|
|
||||||
|
|
||||||
typedef LONG DBMONEY4;
|
|
||||||
|
|
||||||
#include <pshpack8.h> // 8-byte structure packing
|
|
||||||
|
|
||||||
// New Date Time Structures
|
|
||||||
// New Structure for TIME2
|
|
||||||
typedef struct tagSS_TIME2_STRUCT
|
|
||||||
{
|
|
||||||
SQLUSMALLINT hour;
|
|
||||||
SQLUSMALLINT minute;
|
|
||||||
SQLUSMALLINT second;
|
|
||||||
SQLUINTEGER fraction;
|
|
||||||
} SQL_SS_TIME2_STRUCT;
|
|
||||||
|
|
||||||
// New Structure for TIMESTAMPOFFSET
|
|
||||||
typedef struct tagSS_TIMESTAMPOFFSET_STRUCT
|
|
||||||
{
|
|
||||||
SQLSMALLINT year;
|
|
||||||
SQLUSMALLINT month;
|
|
||||||
SQLUSMALLINT day;
|
|
||||||
SQLUSMALLINT hour;
|
|
||||||
SQLUSMALLINT minute;
|
|
||||||
SQLUSMALLINT second;
|
|
||||||
SQLUINTEGER fraction;
|
|
||||||
SQLSMALLINT timezone_hour;
|
|
||||||
SQLSMALLINT timezone_minute;
|
|
||||||
} SQL_SS_TIMESTAMPOFFSET_STRUCT;
|
|
||||||
|
|
||||||
#include <poppack.h> // restore original structure packing
|
|
||||||
|
|
||||||
// Money value *10,000
|
|
||||||
#define DBNUM_PREC_TYPE BYTE
|
|
||||||
#define DBNUM_SCALE_TYPE BYTE
|
|
||||||
#define DBNUM_VAL_TYPE BYTE
|
|
||||||
|
|
||||||
#if (ODBCVER < 0x0300)
|
|
||||||
#define MAXNUMERICLEN 16
|
|
||||||
typedef struct dbnumeric // Internal representation of NUMERIC data type
|
|
||||||
{
|
|
||||||
DBNUM_PREC_TYPE precision; // Precision
|
|
||||||
DBNUM_SCALE_TYPE scale; // Scale
|
|
||||||
BYTE sign; // Sign (1 if positive, 0 if negative)
|
|
||||||
DBNUM_VAL_TYPE val[MAXNUMERICLEN];// Value
|
|
||||||
} DBNUMERIC;
|
|
||||||
typedef DBNUMERIC DBDECIMAL;// Internal representation of DECIMAL data type
|
|
||||||
#else // Use ODBC 3.0 definitions since same as DBLib
|
|
||||||
#define MAXNUMERICLEN SQL_MAX_NUMERIC_LEN
|
|
||||||
typedef SQL_NUMERIC_STRUCT DBNUMERIC;
|
|
||||||
typedef SQL_NUMERIC_STRUCT DBDECIMAL;
|
|
||||||
#endif // ODCBVER
|
|
||||||
#endif // MAXNUMERICLEN
|
|
||||||
|
|
||||||
#ifndef INT
|
|
||||||
typedef int INT;
|
|
||||||
typedef long DBINT;
|
|
||||||
typedef DBINT * LPDBINT;
|
|
||||||
#ifndef _LPCBYTE_DEFINED
|
|
||||||
#define _LPCBYTE_DEFINED
|
|
||||||
typedef BYTE const* LPCBYTE;
|
|
||||||
#endif //_LPCBYTE_DEFINED
|
|
||||||
#endif // INT
|
|
||||||
/**************************************************************************
|
|
||||||
This struct is a global used for gathering statistical data on the driver.
|
|
||||||
Access to this structure is controlled via the pStatCrit;
|
|
||||||
***************************************************************************/
|
|
||||||
typedef struct sqlperf
|
|
||||||
{
|
|
||||||
// Application Profile Statistics
|
|
||||||
DWORD TimerResolution;
|
|
||||||
DWORD SQLidu;
|
|
||||||
DWORD SQLiduRows;
|
|
||||||
DWORD SQLSelects;
|
|
||||||
DWORD SQLSelectRows;
|
|
||||||
DWORD Transactions;
|
|
||||||
DWORD SQLPrepares;
|
|
||||||
DWORD ExecDirects;
|
|
||||||
DWORD SQLExecutes;
|
|
||||||
DWORD CursorOpens;
|
|
||||||
DWORD CursorSize;
|
|
||||||
DWORD CursorUsed;
|
|
||||||
LDOUBLE PercentCursorUsed;
|
|
||||||
LDOUBLE AvgFetchTime;
|
|
||||||
LDOUBLE AvgCursorSize;
|
|
||||||
LDOUBLE AvgCursorUsed;
|
|
||||||
DWORD SQLFetchTime;
|
|
||||||
DWORD SQLFetchCount;
|
|
||||||
DWORD CurrentStmtCount;
|
|
||||||
DWORD MaxOpenStmt;
|
|
||||||
DWORD SumOpenStmt;
|
|
||||||
// Connection Statistics
|
|
||||||
DWORD CurrentConnectionCount;
|
|
||||||
DWORD MaxConnectionsOpened;
|
|
||||||
DWORD SumConnectionsOpened;
|
|
||||||
DWORD SumConnectiontime;
|
|
||||||
LDOUBLE AvgTimeOpened;
|
|
||||||
// Network Statistics
|
|
||||||
DWORD ServerRndTrips;
|
|
||||||
DWORD BuffersSent;
|
|
||||||
DWORD BuffersRec;
|
|
||||||
DWORD BytesSent;
|
|
||||||
DWORD BytesRec;
|
|
||||||
// Time Statistics;
|
|
||||||
DWORD msExecutionTime;
|
|
||||||
DWORD msNetWorkServerTime;
|
|
||||||
} SQLPERF;
|
|
||||||
// The following are options for SQL_COPT_SS_PERF_DATA and SQL_COPT_SS_PERF_QUERY
|
|
||||||
#define SQL_PERF_START 1 // Starts the driver sampling performance data.
|
|
||||||
#define SQL_PERF_STOP 2 // Stops the counters from sampling performance data.
|
|
||||||
// The following are defines for SQL_COPT_SS_PERF_DATA_LOG
|
|
||||||
#define SQL_SS_DL_DEFAULT TEXT("STATS.LOG")
|
|
||||||
// The following are defines for SQL_COPT_SS_PERF_QUERY_LOG
|
|
||||||
#define SQL_SS_QL_DEFAULT TEXT("QUERY.LOG")
|
|
||||||
// The following are defines for SQL_COPT_SS_PERF_QUERY_INTERVAL
|
|
||||||
#define SQL_SS_QI_DEFAULT 30000 // 30,000 milliseconds
|
|
||||||
|
|
||||||
#ifndef SQLNCLI_NO_BCP
|
|
||||||
// Define the symbol SQLNCLI_NO_BCP if you are not using BCP in your application
|
|
||||||
// and you want to exclude the BCP-related definitions in this header file.
|
|
||||||
|
|
||||||
// ODBC BCP prototypes and defines
|
|
||||||
// Return codes
|
|
||||||
#define SUCCEED 1
|
|
||||||
#define FAIL 0
|
|
||||||
#define SUCCEED_ABORT 2
|
|
||||||
#define SUCCEED_ASYNC 3
|
|
||||||
// Transfer directions
|
|
||||||
#define DB_IN 1 // Transfer from client to server
|
|
||||||
#define DB_OUT 2 // Transfer from server to client
|
|
||||||
// bcp_control option
|
|
||||||
#define BCPMAXERRS 1 // Sets max errors allowed
|
|
||||||
#define BCPFIRST 2 // Sets first row to be copied out
|
|
||||||
#define BCPLAST 3 // Sets number of rows to be copied out
|
|
||||||
#define BCPBATCH 4 // Sets input batch size
|
|
||||||
#define BCPKEEPNULLS 5 // Sets to insert NULLs for empty input values
|
|
||||||
#define BCPABORT 6 // Sets to have bcpexec return SUCCEED_ABORT
|
|
||||||
#define BCPODBC 7 // Sets ODBC canonical character output
|
|
||||||
#define BCPKEEPIDENTITY 8 // Sets IDENTITY_INSERT on
|
|
||||||
#if SQLNCLI_VER < 1000
|
|
||||||
#define BCP6xFILEFMT 9 // DEPRECATED: Sets 6x file format on
|
|
||||||
#endif
|
|
||||||
#define BCPHINTSA 10 // Sets server BCP hints (ANSI string)
|
|
||||||
#define BCPHINTSW 11 // Sets server BCP hints (UNICODE string)
|
|
||||||
#define BCPFILECP 12 // Sets clients code page for the file
|
|
||||||
#define BCPUNICODEFILE 13 // Sets that the file contains unicode header
|
|
||||||
#define BCPTEXTFILE 14 // Sets BCP mode to expect a text file and to detect Unicode or ANSI automatically
|
|
||||||
#define BCPFILEFMT 15 // Sets file format version
|
|
||||||
#define BCPFMTXML 16 // Sets the format file type to xml
|
|
||||||
#define BCPFIRSTEX 17 // Starting Row for BCP operation (64 bit)
|
|
||||||
#define BCPLASTEX 18 // Ending Row for BCP operation (64 bit)
|
|
||||||
#define BCPROWCOUNT 19 // Total Number of Rows Copied (64 bit)
|
|
||||||
// BCPFILECP values
|
|
||||||
// Any valid code page that is installed on the client can be passed plus:
|
|
||||||
#define BCPFILECP_ACP 0 // Data in file is in Windows code page
|
|
||||||
#define BCPFILECP_OEMCP 1 // Data in file is in OEM code page (default)
|
|
||||||
#define BCPFILECP_RAW (-1)// Data in file is in Server code page (no conversion)
|
|
||||||
// bcp_collen definition
|
|
||||||
#define SQL_VARLEN_DATA (-10) // Use default length for column
|
|
||||||
// BCP column format properties
|
|
||||||
#define BCP_FMT_TYPE 0x01
|
|
||||||
#define BCP_FMT_INDICATOR_LEN 0x02
|
|
||||||
#define BCP_FMT_DATA_LEN 0x03
|
|
||||||
#define BCP_FMT_TERMINATOR 0x04
|
|
||||||
#define BCP_FMT_SERVER_COL 0x05
|
|
||||||
#define BCP_FMT_COLLATION 0x06
|
|
||||||
#define BCP_FMT_COLLATION_ID 0x07
|
|
||||||
// BCP functions
|
|
||||||
DBINT SQL_API bcp_batch (HDBC);
|
|
||||||
RETCODE SQL_API bcp_bind (HDBC, LPCBYTE, INT, DBINT, LPCBYTE, INT, INT, INT);
|
|
||||||
RETCODE SQL_API bcp_colfmt (HDBC, INT, BYTE, INT, DBINT, LPCBYTE, INT, INT);
|
|
||||||
RETCODE SQL_API bcp_collen (HDBC, DBINT, INT);
|
|
||||||
RETCODE SQL_API bcp_colptr (HDBC, LPCBYTE, INT);
|
|
||||||
RETCODE SQL_API bcp_columns (HDBC, INT);
|
|
||||||
RETCODE SQL_API bcp_control (HDBC, INT, void *);
|
|
||||||
DBINT SQL_API bcp_done (HDBC);
|
|
||||||
RETCODE SQL_API bcp_exec (HDBC, LPDBINT);
|
|
||||||
RETCODE SQL_API bcp_getcolfmt (HDBC, INT, INT, void *, INT, INT *);
|
|
||||||
RETCODE SQL_API bcp_initA (HDBC, LPCSTR, LPCSTR, LPCSTR, INT);
|
|
||||||
RETCODE SQL_API bcp_initW (HDBC, LPCWSTR, LPCWSTR, LPCWSTR, INT);
|
|
||||||
RETCODE SQL_API bcp_moretext (HDBC, DBINT, LPCBYTE);
|
|
||||||
RETCODE SQL_API bcp_readfmtA (HDBC, LPCSTR);
|
|
||||||
RETCODE SQL_API bcp_readfmtW (HDBC, LPCWSTR);
|
|
||||||
RETCODE SQL_API bcp_sendrow (HDBC);
|
|
||||||
RETCODE SQL_API bcp_setcolfmt (HDBC, INT, INT, void *, INT);
|
|
||||||
RETCODE SQL_API bcp_writefmtA (HDBC, LPCSTR);
|
|
||||||
RETCODE SQL_API bcp_writefmtW (HDBC, LPCWSTR);
|
|
||||||
CHAR* SQL_API dbprtypeA (INT);
|
|
||||||
WCHAR* SQL_API dbprtypeW (INT);
|
|
||||||
CHAR* SQL_API bcp_gettypenameA (INT, DBBOOL);
|
|
||||||
WCHAR* SQL_API bcp_gettypenameW (INT, DBBOOL);
|
|
||||||
#ifdef UNICODE
|
|
||||||
#define bcp_init bcp_initW
|
|
||||||
#define bcp_readfmt bcp_readfmtW
|
|
||||||
#define bcp_writefmt bcp_writefmtW
|
|
||||||
#define dbprtype dbprtypeW
|
|
||||||
#define bcp_gettypename bcp_gettypenameW
|
|
||||||
#define BCPHINTS BCPHINTSW
|
|
||||||
#else
|
|
||||||
#define bcp_init bcp_initA
|
|
||||||
#define bcp_readfmt bcp_readfmtA
|
|
||||||
#define bcp_writefmt bcp_writefmtA
|
|
||||||
#define dbprtype dbprtypeA
|
|
||||||
#define bcp_gettypename bcp_gettypenameA
|
|
||||||
#define BCPHINTS BCPHINTSA
|
|
||||||
#endif // UNICODE
|
|
||||||
|
|
||||||
#endif // SQLNCLI_NO_BCP
|
|
||||||
|
|
||||||
// The following options have been deprecated
|
|
||||||
#define SQL_FAST_CONNECT (SQL_COPT_SS_BASE+0)
|
|
||||||
// Defines for use with SQL_FAST_CONNECT - only useable before connecting
|
|
||||||
#define SQL_FC_OFF 0L // Fast connect is off
|
|
||||||
#define SQL_FC_ON 1L // Fast connect is on
|
|
||||||
#define SQL_FC_DEFAULT SQL_FC_OFF
|
|
||||||
#define SQL_COPT_SS_ANSI_OEM (SQL_COPT_SS_BASE+6)
|
|
||||||
#define SQL_AO_OFF 0L
|
|
||||||
#define SQL_AO_ON 1L
|
|
||||||
#define SQL_AO_DEFAULT SQL_AO_OFF
|
|
||||||
#define SQL_CA_SS_BASE_COLUMN_NAME SQL_DESC_BASE_COLUMN_NAME
|
|
||||||
|
|
||||||
#endif // ODBCVER
|
|
||||||
#endif // defined(_SQLNCLI_ODBC_) || !defined(_SQLNCLI_OLEDB_)
|
|
||||||
// ODBC part of SQL Server Native Client header - end here!
|
|
||||||
|
|
||||||
//The following facilitates opening a handle to a SQL filestream
|
|
||||||
typedef enum _SQL_FILESTREAM_DESIRED_ACCESS {
|
|
||||||
SQL_FILESTREAM_READ = 0,
|
|
||||||
SQL_FILESTREAM_WRITE = 1,
|
|
||||||
SQL_FILESTREAM_READWRITE = 2
|
|
||||||
} SQL_FILESTREAM_DESIRED_ACCESS;
|
|
||||||
#define SQL_FILESTREAM_OPEN_FLAG_ASYNC 0x00000001L
|
|
||||||
#define SQL_FILESTREAM_OPEN_FLAG_NO_BUFFERING 0x00000002L
|
|
||||||
#define SQL_FILESTREAM_OPEN_FLAG_NO_WRITE_THROUGH 0x00000004L
|
|
||||||
#define SQL_FILESTREAM_OPEN_FLAG_SEQUENTIAL_SCAN 0x00000008L
|
|
||||||
#define SQL_FILESTREAM_OPEN_FLAG_RANDOM_ACCESS 0x00000010L
|
|
||||||
HANDLE __stdcall OpenSqlFilestream (
|
|
||||||
LPCWSTR FilestreamPath,
|
|
||||||
SQL_FILESTREAM_DESIRED_ACCESS DesiredAccess,
|
|
||||||
ULONG OpenOptions,
|
|
||||||
LPBYTE FilestreamTransactionContext,
|
|
||||||
SSIZE_T FilestreamTransactionContextLength,
|
|
||||||
PLARGE_INTEGER AllocationSize);
|
|
||||||
#define FSCTL_SQL_FILESTREAM_FETCH_OLD_CONTENT CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 2392, METHOD_BUFFERED, FILE_ANY_ACCESS)
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
extern RPC_IF_HANDLE __MIDL_itf_sqlncli_0000_0010_v0_0_c_ifspec;
|
|
||||||
extern RPC_IF_HANDLE __MIDL_itf_sqlncli_0000_0010_v0_0_s_ifspec;
|
|
||||||
|
|
||||||
/* Additional Prototypes for ALL interfaces */
|
|
||||||
|
|
||||||
/* end of Additional Prototypes */
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
|
@ -537,7 +537,7 @@ PHP_FUNCTION( sqlsrv_field_metadata )
|
||||||
// specified statement active. The first (or only) result returned by a batch
|
// specified statement active. The first (or only) result returned by a batch
|
||||||
// query or stored procedure is active without a call to sqlsrv_next_result.
|
// query or stored procedure is active without a call to sqlsrv_next_result.
|
||||||
// Any output parameters bound are only available after sqlsrv_next_result returns
|
// Any output parameters bound are only available after sqlsrv_next_result returns
|
||||||
// null as per SQL Native Client specs: http://msdn.microsoft.com/en-us/library/ms403283.aspx
|
// null as per ODBC Driver 11 for SQL Server specs: http://msdn.microsoft.com/en-us/library/ms403283.aspx
|
||||||
//
|
//
|
||||||
// Parameters
|
// Parameters
|
||||||
// $stmt: The executed statement on which the next result is made active.
|
// $stmt: The executed statement on which the next result is made active.
|
||||||
|
|
|
@ -301,8 +301,8 @@ ss_error SS_ERRORS[] = {
|
||||||
|
|
||||||
{
|
{
|
||||||
SQLSRV_ERROR_DRIVER_NOT_INSTALLED,
|
SQLSRV_ERROR_DRIVER_NOT_INSTALLED,
|
||||||
{ IMSSP, (SQLCHAR*) "This extension requires the Microsoft SQL Server 2012 Native Client. "
|
{ IMSSP, (SQLCHAR*) "This extension requires the ODBC Driver 11 for SQL Server. "
|
||||||
"Access the following URL to download the Microsoft SQL Server 2012 Native Client ODBC driver for %1!s!: "
|
"Access the following URL to download the ODBC Driver 11 for SQL Server for %1!s!: "
|
||||||
"http://go.microsoft.com/fwlink/?LinkId=163712", -49, true }
|
"http://go.microsoft.com/fwlink/?LinkId=163712", -49, true }
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@ -445,8 +445,8 @@ bool ss_error_handler(sqlsrv_context& ctx, unsigned int sqlsrv_error_code, bool
|
||||||
// [SQLSTATE] => HYT00
|
// [SQLSTATE] => HYT00
|
||||||
// [1] => 0
|
// [1] => 0
|
||||||
// [code] => 0
|
// [code] => 0
|
||||||
// [2] => [Microsoft][SQL Native Client]Query timeout expired
|
// [2] => [Microsoft][ODBC Driver 11 for SQL Server]Query timeout expired
|
||||||
// [message] => [Microsoft][SQL Native Client]Query timeout expired
|
// [message] => [Microsoft][ODBC Driver 11 for SQL Server]Query timeout expired
|
||||||
// )
|
// )
|
||||||
// )
|
// )
|
||||||
|
|
||||||
|
|
|
@ -3,24 +3,25 @@
|
||||||
//
|
//
|
||||||
// Contents: Version number constants
|
// Contents: Version number constants
|
||||||
//
|
//
|
||||||
// Copyright Microsoft Corporation
|
// Microsoft Drivers for PHP for SQL Server
|
||||||
|
// Copyright (c) Microsoft Corporation. All rights reserved.
|
||||||
//
|
//
|
||||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
// you may not use this file except in compliance with the License.
|
// you may not use these files except in compliance with the License.
|
||||||
//
|
|
||||||
// You may obtain a copy of the License at:
|
// You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0
|
||||||
// http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
//
|
|
||||||
// Unless required by applicable law or agreed to in writing, software
|
// Unless required by applicable law or agreed to in writing, software
|
||||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
// See the License for the specific language governing permissions and
|
// See the License for the specific language governing permissions and
|
||||||
// limitations under the License.
|
// limitations under the License.
|
||||||
|
//
|
||||||
//----------------------------------------------------------------------------------------------------------------------------------
|
//----------------------------------------------------------------------------------------------------------------------------------
|
||||||
|
|
||||||
#define VER_FILEVERSION_STR "3.0.1.0"
|
#define VER_FILEVERSION_STR "3.1.0.0"
|
||||||
#define _FILEVERSION 3,0,1,0
|
#define _FILEVERSION 3,1,0,0
|
||||||
#define SQLVERSION_MAJOR 3
|
#define SQLVERSION_MAJOR 3
|
||||||
#define SQLVERSION_MINOR 0
|
#define SQLVERSION_MINOR 1
|
||||||
#define SQLVERSION_MMDD 1
|
#define SQLVERSION_MMDD 0
|
||||||
#define SQLVERSION_REVISION 0
|
#define SQLVERSION_REVISION 0
|
||||||
|
|
Loading…
Reference in a new issue