📄 sqlole.h
字号:
/////////////////////////////////////////////////////////////////////////////////////////
// Header file for SQLOLE C/C++ Client Component Object interfaces.
// Copyright 1994-1995 Microsoft Corporation.
/////////////////////////////////////////////////////////////////////////////////////////
#ifndef _SQLOLE_H_
#pragma option push -b -a8 -pc -A- /*P_O_Push*/
#define _SQLOLE_H_
// SQLOLE versions supported for this header file.
#define SQLOLEVERSION_600 0x00060000
#define SQLOLEVERSION_650 0x00063200
// Current version of sqlole for this header file (matches sp_MSSQLOLE_version).
#define SQLOLEVERSION_CURRENT SQLOLEVERSION_650
/////////////////////////////////////////////////////////////////////////////////////////
// Constant enumerations.
/////////////////////////////////////////////////////////////////////////////////////////
#ifndef _SQLOLE_CONSTANTS_
#define _SQLOLE_CONSTANTS_
#ifdef _SQLOLE_ODL_ // Generate helpids if in ODL file.
#define SQLOLE_HELPID(id) [helpcontext(H_##id)]
#else
#define SQLOLE_HELPID(id)
#endif
typedef SQLOLE_HELPID(SQLOLE_OBJECT_TYPE) enum {
SQLOLEObj_Unknown = 16384, // Make it the only bit set
SQLOLEObj_Application = 0,
// Database objects, value is power(2, sysobjects.sysstat & 0x0f), plus UDDTs in 0.
// These values can be bitmasked together for object listings.
SQLOLEObj_UserDefinedDatatype = 1,
SQLOLEObj_SystemTable = 2,
SQLOLEObj_View = 4,
SQLOLEObj_UserTable = 8,
SQLOLEObj_StoredProcedure = 16,
SQLOLEObj_Default = 64,
SQLOLEObj_Rule = 128,
SQLOLEObj_Trigger = 256,
SQLOLEObj_AllDatabaseUserObjects = 0x01fd,
SQLOLEObj_AllDatabaseObjects = 0x01ff,
// Other Database objects (not in sysobjects)
SQLOLEObj_SystemDatatype = 10021,
SQLOLEObj_User = 10022,
SQLOLEObj_Group = 10023,
SQLOLEObj_Index = 10024,
SQLOLEObj_Key = 10025,
SQLOLEObj_Column = 10026,
SQLOLEObj_DBObject = 10027,
SQLOLEObj_DBOption = 10028,
SQLOLEObj_ProcedureParameter = 10029,
SQLOLEObj_Permission = 10033,
SQLOLEObj_IntegratedSecurity = 10034,
SQLOLEObj_Check = 10035,
SQLOLEObj_DRIDefault = 10036,
// Objects not in databases.
SQLOLEObj_SQLServer = 10050,
SQLOLEObj_Database = 10051,
SQLOLEObj_Device = 10052,
SQLOLEObj_Login = 10054,
SQLOLEObj_Language = 10055,
SQLOLEObj_RemoteServer = 10056,
SQLOLEObj_RemoteLogin = 10057,
SQLOLEObj_Configuration = 10059,
SQLOLEObj_ConfigValue = 10060,
SQLOLEObj_AlertSystem = 10061,
SQLOLEObj_Executive = 10062,
SQLOLEObj_QueryResults = 10063,
SQLOLEObj_TransactionLog = 10064,
SQLOLEObj_Registry = 10065,
SQLOLEObj_Transfer = 10066,
SQLOLEObj_Backup = 10067,
SQLOLEObj_Task = 10068,
SQLOLEObj_Alert = 10069,
SQLOLEObj_Operator = 10070,
SQLOLEObj_HistoryFilter = 10071,
SQLOLEObj_Publication = 10072,
SQLOLEObj_Article = 10073,
SQLOLEObj_Subscription = 10074,
SQLOLEObj_SubscriberInfo = 10075,
SQLOLEObj_AutoProperty = 10076, // Automation property or properties collection.
SQLOLEObj_ServerGroup = 10077,
SQLOLEObj_RegisteredServer = 10078,
SQLOLEObj_BulkCopy = 10079
} SQLOLE_OBJECT_TYPE;
typedef SQLOLE_HELPID(SQLOLE_KEY_TYPE) enum {
SQLOLEKey_Unknown = 0,
SQLOLEKey_Primary = 1,
SQLOLEKey_Unique = 2,
SQLOLEKey_Foreign = 3
} SQLOLE_KEY_TYPE;
typedef SQLOLE_HELPID(SQLOLE_DEVICE_TYPE) enum {
SQLOLEDevice_Unknown = 100,
SQLOLEDevice_Database = 0,
SQLOLEDevice_DiskDump = 2,
SQLOLEDevice_FloppyADump = 3,
SQLOLEDevice_FloppyBDump = 4,
SQLOLEDevice_TapeDump = 5,
SQLOLEDevice_PipeDump = 6,
SQLOLEDevice_CDROM = 7
} SQLOLE_DEVICE_TYPE;
typedef SQLOLE_HELPID(SQLOLE_MIRROR_TYPE) enum {
// Mirror states:
// None = no mirror specified
// Inactive = mirror specified but not active
// RunningOnMirror = mirror device is functioning as the active device (after SwitchToMirrorTemp)
// Active = mirror is specified and actively mirroring the device.
SQLOLEMirror_None = 0,
SQLOLEMirror_Inactive = 64,
SQLOLEMirror_RunningOnMirror = 320,
SQLOLEMirror_Active = 576
} SQLOLE_MIRROR_TYPE;
typedef SQLOLE_HELPID(SQLOLE_PRIVILEGE_TYPE) enum {
SQLOLEPriv_Unknown = 0,
// Privilege values, different from sysprotects as we need to bitmask.
// Object privileges.
SQLOLEPriv_Select = 1,
SQLOLEPriv_Insert = 2,
SQLOLEPriv_Update = 4,
SQLOLEPriv_Delete = 8,
SQLOLEPriv_Execute = 16,
SQLOLEPriv_References = 32,
SQLOLEPriv_AllObjectPrivs = 63,
// Database (statement) privileges.
SQLOLEPriv_CreateTable = 128,
SQLOLEPriv_CreateDatabase = 256,
SQLOLEPriv_CreateView = 512,
SQLOLEPriv_CreateProcedure = 1024,
SQLOLEPriv_DumpDatabase = 2048,
SQLOLEPriv_CreateDefault = 4096,
SQLOLEPriv_DumpTransaction = 8192,
SQLOLEPriv_CreateRule = 16384,
SQLOLEPriv_AllDatabasePrivs = 32640
} SQLOLE_PRIVILEGE_TYPE;
typedef SQLOLE_HELPID(SQLOLE_PROCEDURE_TYPE) enum {
SQLOLEProc_Unknown = 0,
SQLOLEProc_Standard = 1,
SQLOLEProc_Extended = 2,
SQLOLEProc_Macro = 3,
SQLOLEProc_ReplicationFilter = 4
} SQLOLE_PROCEDURE_TYPE;
// Trigger types may be OR'd together.
typedef SQLOLE_HELPID(SQLOLE_TRIGGER_TYPE) enum {
SQLOLETrig_Unknown = 0,
SQLOLETrig_Insert = 1,
SQLOLETrig_Update = 2,
SQLOLETrig_Delete = 4,
SQLOLETrig_All = 7
} SQLOLE_TRIGGER_TYPE;
typedef SQLOLE_HELPID(SQLOLE_INDEX_TYPE) enum { // SQLOLE Internal: sync with ntinc\index.h
// Index type values as in sysindexes.status.
SQLOLEIndex_Default = 0x0000,
SQLOLEIndex_IgnoreDupKey = 0x0001,
SQLOLEIndex_Unique = 0x0002,
SQLOLEIndex_IgnoreDupRow = 0x0004,
SQLOLEIndex_Clustered = 0x0010,
SQLOLEIndex_AllowDupRow = 0x0040,
SQLOLEIndex_SortedData = 0x0200,
SQLOLEIndex_SortedDataReorg = 0x2000, // 6.0-only; sorted-data with reorganization
SQLOLEIndex_Valid = 0x2257, // Any of foregoing (writable) types
SQLOLEIndex_DRIPrimaryKey = 0x0800, // 6.0-only, readonly; DRI-generated types
SQLOLEIndex_DRIUniqueKey = 0x1000,
SQLOLEIndex_DRIIndex = 0x1800 // Index implements DRI (DRIPrimaryKey | DRIUniqueKey)
} SQLOLE_INDEX_TYPE;
typedef SQLOLE_HELPID(SQLOLE_QUERY_DATATYPE) enum {
// Indexed as per ..\common\inc\sql.hpp and sqlfront.h datatype constants.
SQLOLE_DTypeUnknown = 0,
SQLOLE_DTypeChar = 0x2f,
SQLOLE_DTypeText = 0x23,
SQLOLE_DTypeVarchar = 0x27,
SQLOLE_DTypeVarBinary= 0x25,
SQLOLE_DTypeBinary = 0x2d,
SQLOLE_DTypeImage = 0x22,
SQLOLE_DTypeFloat4 = 0x3b,
SQLOLE_DTypeFloat8 = 0x3e,
SQLOLE_DTypeInt1 = 0x30,
SQLOLE_DTypeInt2 = 0x34,
SQLOLE_DTypeInt4 = 0x38,
SQLOLE_DTypeMoney4 = 0x7a,
SQLOLE_DTypeMoney = 0x3c,
SQLOLE_DTypeDateTime = 0x3d,
SQLOLE_DTypeDateTime4= 0x3a,
SQLOLE_DTypeBit = 0x32
} SQLOLE_QUERY_DATATYPE;
typedef SQLOLE_HELPID(SQLOLE_AUDIT_TYPE) enum {
SQLOLEAudit_None = 0,
SQLOLEAudit_Success = 1,
SQLOLEAudit_Failure = 2,
SQLOLEAudit_All = 3
} SQLOLE_AUDIT_TYPE;
typedef SQLOLE_HELPID(SQLOLE_SECURITY_TYPE) enum {
SQLOLESecurity_Min = 0,
SQLOLESecurity_Normal = 0,
SQLOLESecurity_Integrated = 1,
SQLOLESecurity_Mixed = 2,
SQLOLESecurity_Max = 2
} SQLOLE_SECURITY_TYPE;
typedef SQLOLE_HELPID(SQLOLE_MEDIA_TYPE) enum {
SQLOLEMedia_Floppy = 1,
SQLOLEMedia_FixedDisk = 2,
SQLOLEMedia_Tape = 4,
SQLOLEMedia_CDROM = 8,
SQLOLEMedia_All = 15
} SQLOLE_MEDIA_TYPE;
typedef SQLOLE_HELPID(SQLOLE_PERFMON_TYPE) enum {
SQLOLEPerfmon_None = 1000, // No perfmon integration
SQLOLEPerfmon_MinSet = 0,
SQLOLEPerfmon_Continuous = 0,
SQLOLEPerfmon_OnDemand = 1,
SQLOLEPerfmon_MaxSet = 1
} SQLOLE_PERFMON_TYPE;
typedef SQLOLE_HELPID(SQLOLE_STARTSRV_TYPE) enum {
SQLOLEStart_NoServiceControl = 1,
SQLOLEStart_NTErrorLogging = 2,
SQLOLEStart_SingleUser = 4,
SQLOLEStart_StartAndConnect = 8,
SQLOLEStart_RealTime = 16,
SQLOLEStart_Defaults = 10 // ServiceControl, StartAndConnect, and NTErrorLogging
} SQLOLE_STARTSRV_TYPE;
typedef SQLOLE_HELPID(SQLOLE_DBSTATUS_TYPE) enum {
SQLOLEDBStat_Normal = 0x0000,
SQLOLEDBStat_Loading = 0x0020,
SQLOLEDBStat_Recovering = 0x00c0, // 0x40 | 0x80
SQLOLEDBStat_Suspect = 0x0100,
SQLOLEDBStat_Offline = 0x0200,
SQLOLEDBStat_Inaccessible = 0x03e0, // Loading | Recovering | Suspect | Offline
SQLOLEDBStat_EmergencyMode = 0x8000,
SQLOLEDBStat_All = 0x83e0
} SQLOLE_DBSTATUS_TYPE;
typedef SQLOLE_HELPID(SQLOLE_COPYDATA_TYPE) enum {
SQLOLECopyData_False = 0,
SQLOLECopyData_Replace = 1,
SQLOLECopyData_Append = 2
} SQLOLE_COPYDATA_TYPE;
typedef SQLOLE_HELPID(SQLOLE_DATAFILE_TYPE) enum {
// Bulk-copy datafile options (Table/View.Export and Table.Import). These are mutually exclusive.
SQLOLEDataFile_CommaDelimitedChar = 0x00000001, // ColumnDelimiter == Comma, RowDelimiter == <CRLF>
SQLOLEDataFile_Default = 0x00000001, // Default == csv
SQLOLEDataFile_TabDelimitedChar = 0x00000002, // ColumnDelimiter == <TAB>, RowDelimiter == <CRLF>
SQLOLEDataFile_SpecialDelimitedChar = 0x00000003, // Set BulkCopy.ColumnDelimiter and .RowDelimiter
SQLOLEDataFile_NativeFormat = 0x00000004, // Use native datatype formats
SQLOLEDataFile_UseFormatFile = 0x00000005, // Use an existing format file.
} SQLOLE_DATAFILE_TYPE;
typedef SQLOLE_HELPID(SQLOLE_STATUSINFO_TYPE) enum {
SQLOLEStatInfo_Unknown = 0, // Initialization value, not valid as a parameter
SQLOLEStatInfo_DatabaseStatus = 0x0001, // Database.Status
SQLOLEStatInfo_DatabaseSpace = 0x0002, // Database.SpaceAvailable
SQLOLEStatInfo_AutoVerifyConnection = 0x0004, // Server.VerifyConnection done automatically.
SQLOLEStatInfo_All = 0x0007 // All the foregoing
} SQLOLE_STATUSINFO_TYPE;
typedef SQLOLE_HELPID(SQLOLE_SCRIPT_TYPE) enum {
// What's included in the Script method output.
SQLOLEScript_Default = 0x0004, // Object creation only
SQLOLEScript_Drops = 0x0001, // Include object drops
SQLOLEScript_ObjectPermissions = 0x0002, // Include object permissions
SQLOLEScript_PrimaryObject = 0x0004, // Include object creation
SQLOLEScript_ClusteredIndexes = 0x0008, // Include clustered index creation (table only)
SQLOLEScript_Triggers = 0x0010, // Include trigger creation (table only)
SQLOLEScript_DatabasePermissions = 0x0020, // Database (statement) permissions
SQLOLEScript_Permissions = 0x0022, // Both database and object permissions (for scripting users).
SQLOLEScript_ToFileOnly = 0x0040, // If not set, a string is returned (if file nonnull, both are done)
SQLOLEScript_Bindings = 0x0080, // Include rule/default bindings (table only)
SQLOLEScript_AppendToFile = 0x0100, // Append to output file if it already exists.
SQLOLEScript_NoDRI = 0x0200, // Do not include DRI (intended for use if targeting pre-6.0 server with scripts)
SQLOLEScript_UDDTsToBaseType = 0x0400, // Convert UserDefinedDatatypes to base type when creating columns (table only)
SQLOLEScript_42Syntax = 0x0800, // Use SQL 4.2x syntax (convert numerics, skip identity, etc.)
SQLOLEScript_ODBCSyntax = 0x0E00, // Use ODBC syntax (strip SQL-specifics); includes NoDRI, UDDTsToBaseTypes.
SQLOLEScript_IncludeIfNotExists = 0x1000, // Include "if not exists" on object creation.
SQLOLEScript_NonClusteredIndexes = 0x2000, // Include nonclustered index creation (table only)
SQLOLEScript_Indexes = 0x12008, // Include all index creation (table only)
SQLOLEScript_Aliases = 0x4000, // For users, script aliases
SQLOLEScript_NoCommandTerm = 0x8000, // Do not append "GO" to commands.
SQLOLEScript_DRIIndexes = 0x10000, // Script DRI-generated indexes as indexes if NoDRI is specified.
SQLOLEScript_IncludeHeaders = 0x20000, // Include descriptive header in individual object script output.
SQLOLEScript_OwnerQualify = 0x40000, // Owner-qualify DROP statements (and CREATE where possible).
SQLOLEScript_TimestampToBinary = 0x80000, // Convert timestamp columns to binary(8) (for replication, etc.).
SQLOLEScript_SortedData = 0x100000, // If the index or constraint was clustered, append sorted_data
SQLOLEScript_SortedDataReorg = 0x200000, // Same as SQLOLEScript_SortedData, but Reorg is used to preserve fillfactor.
SQLOLEScript_TransferDefault = 0x670ff, //The default script type for Transfer. This is combination of following flags:
//SQLOLEScript_PrimaryObject | SQLOLEScript_Bindings | SQLOLEScript_ClusteredIndexes | SQLOLEScript_NonClusteredIndexes |
//SQLOLEScript_Triggers| SQLOLEScript_ToFileOnly|SQLOLEScript_Permissions| SQLOLEScript_IncludeHeaders|
//SQLOLEScript_Aliases|SQLOLEScript_IncludeIfNotExists|SQLOLEScript_OwnerQualify
// DRI-restrictive flags. These may be combined with PrimaryObject as desired.
// These are to be used to include or exclude specific DRI components, such
// as for multi-pass scripting.
SQLOLEScript_DRI_NonClustered = 0x00400000,
SQLOLEScript_DRI_Clustered = 0x00800000,
SQLOLEScript_DRI_Checks = 0x01000000,
SQLOLEScript_DRI_Defaults = 0x02000000,
SQLOLEScript_DRI_UniqueKeys = 0x04000000,
SQLOLEScript_DRI_ForeignKeys = 0x08000000,
SQLOLEScript_DRI_PrimaryKey = 0x10000000,
SQLOLEScript_DRI_AllKeys = 0x1c000000, // Bitmask of all key types (PK, FK, Unique).
SQLOLEScript_DRI_AllConstraints = 0x1f000000, // Bitmask of all constraint types (PK, FK, Unique, Check, Default).
SQLOLEScript_DRI_All = 0x1fc00000, // All the foregoing (specifying this and not PrimaryObject gets just DRI output).
SQLOLEScript_DRIWithNoCheck = 0x20000000, // Script DRI with nocheck (not included in _DRI_All).
SQLOLEScript_NoIdentity = 0x40000000, // Script with no IDENTITY attribute (e.g. for Replication).
// Scripts with quoted identifiers. Also will cause Transfer to SET QUOTED_IDENTIFIER ON on the destination.
SQLOLEScript_UseQuotedIdentifiers = 0x80000000
} SQLOLE_SCRIPT_TYPE;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -