Использование определяемых пользователем типов в SQL Server Native ClientUsing User-Defined Types in SQL Server Native Client

ОБЛАСТЬ ПРИМЕНЕНИЯ: SQL Server База данных SQL Azure Azure Synapse Analytics (Хранилище данных SQL) Parallel Data Warehouse

В SQL Server 2005 (9.x)SQL Server 2005 (9.x) представлены определяемые пользователем типы данных (UDT).SQL Server 2005 (9.x)SQL Server 2005 (9.x) introduced user-defined types (UDTs). Пользовательские типы расширяют систему типов SQL путем разрешения хранения объектов и пользовательских структур данных в базе данных SQL ServerSQL Server.UDTs extend the SQL type system by allowing you to store objects and custom data structures in a SQL ServerSQL Server database. Определяемые пользователем типы могут содержать несколько типов данных, и их поведение может отличаться от традиционных псевдонимов типов данных, которые состоят из одного системного типа данных SQL ServerSQL Server.UDTs can contain multiple data types and can have behaviors, differentiating them from the traditional alias data types that consist of a single SQL ServerSQL Server system data type. Определяемые пользователем типы определяются с помощью любого языка, поддерживаемого средой .NET CLR, который создает поддающийся проверке код.UDTs are defined using any of the languages supported by the .NET common language runtime (CLR) that produce verifiable code. Сюда входят языки Microsoft Visual C#® и Visual Basic® .NET.This includes Microsoft Visual C#® and Visual Basic® .NET. Данные представляются в виде полей и свойств класса или структуры .NET, а поведения определяются методами класса или структуры.The data is exposed as fields and properties of a .NET class or structure, and behaviors are defined by methods of the class or structure.

Пользовательский тип можно использовать в качестве определения столбца таблицы, переменной в пакете Transact-SQLTransact-SQL, аргумента функции или хранимой процедуры Transact-SQLTransact-SQL.A UDT can be used as the column definition of a table, as a variable in a Transact-SQLTransact-SQL batch, or as an argument of a Transact-SQLTransact-SQL function or stored procedure.

Поставщик OLE DB для собственного клиента SQL ServerSQL Server Native Client OLE DB Provider

SQL ServerSQL ServerПоставщик OLE DB собственного клиента поддерживает UDT как двоичные типы со сведениями о метаданных, что позволяет управлять определяемыми пользователем типами как объектами.The SQL ServerSQL Server Native Client OLE DB provider supports UDTs as binary types with metadata information, which allows you to manage UDTs as objects. Столбцы пользовательских типов представляются как DBTYPE_UDT, и их метаданные доступны через основной интерфейс OLE DB IColumnRowset и новый интерфейс ISSCommandWithParameters.UDT columns are exposed as DBTYPE_UDT, and their metadata are exposed through the core OLE DB interface IColumnRowset, and the new ISSCommandWithParameters interface.

Примечание

Метод IRowsetFind::FindNextRow не работает с пользовательским типом данных.The IRowsetFind::FindNextRow method does not work with the UDT data type. Если определяемый пользователем тип используется в качестве типа столбца поиска, возвращается значение DB_E_BADCOMPAREOP.DB_E_BADCOMPAREOP is returned if the UDT is used as a search column type.

Привязки данных и приведение типовData Bindings and Coercions

В следующей таблице описаны привязка и приведение типа данных, которые возникают при использовании перечисленных определенных пользователем типов данных SQL ServerSQL Server.The following table describes the binding and coercion that occurs when using the listed data types with a SQL ServerSQL Server UDT. Столбцы определяемого пользователем типа предоставляются с помощью SQL ServerSQL Server собственного клиента OLE DB поставщика в качестве DBTYPE_UDT.UDT columns are exposed through the SQL ServerSQL Server Native Client OLE DB provider as DBTYPE_UDT. Метаданные можно получать через соответствующие наборы строк схемы, так что можно управлять собственными определенными типами как объектами.You can get metadata through the appropriate schema rowsets so you can manage your own defined types as objects.

Тип данныхData type На серверTo Server

UDTUDT
На серверTo Server

Не пользовательский типnon-UDT
С сервераFrom Server

UDTUDT
С сервераFrom Server

Не пользовательский типnon-UDT
DBTYPE_UDTDBTYPE_UDT Поддерживается6Supported6 Error1Error1 Поддерживается6Supported6 Ошибка5Error5
DBTYPE_BYTESDBTYPE_BYTES Поддерживается6Supported6 Н/Д2N/A2 Поддерживается6Supported6 Н/Д2N/A2
DBTYPE_WSTRDBTYPE_WSTR Поддерживается3,6Supported3,6 Н/Д2N/A2 Поддерживается4,6Supported4,6 Н/Д2N/A2
DBTYPE_BSTRDBTYPE_BSTR Поддерживается3,6Supported3,6 Н/Д2N/A2 Поддерживается4Supported4 Н/Д2N/A2
DBTYPE_STRDBTYPE_STR Поддерживается3,6Supported3,6 Н/Д2N/A2 Поддерживается4,6Supported4,6 Н/Д2N/A2
DBTYPE_IUNKNOWNDBTYPE_IUNKNOWN Не поддерживаетсяNot supported Н/Д2N/A2 Не поддерживаетсяNot supported Н/Д2N/A2
DBTYPE_VARIANT (VT_UI1 | VT_ARRAY)DBTYPE_VARIANT (VT_UI1 | VT_ARRAY) Поддерживается6Supported6 Н/Д2N/A2 Поддерживается4Supported4 Н/Д2N/A2
DBTYPE_VARIANT (VT_BSTR)DBTYPE_VARIANT (VT_BSTR) Поддерживается3,6Supported3,6 Н/Д2N/A2 НедоступноN/A Н/Д2N/A2

1Если тип сервера, отличный от DBTYPE_UDT, указывается с помощью метода ICommandWithParameters::SetParameterInfo и типом метода доступа является DBTYPE_UDT, то при выполнении инструкции возникает ошибка (DB_E_ERRORSOCCURRED; состояние параметра — DBSTATUS_E_BADACCESSOR).1If a server type other than DBTYPE_UDT is specified with ICommandWithParameters::SetParameterInfo and the accessor type is DBTYPE_UDT, an error occurs when the statement is executed (DB_E_ERRORSOCCURRED; the parameter status is DBSTATUS_E_BADACCESSOR). В остальных случаях данные отсылаются на сервер, но сервер возвращает ошибку, указывающую на то, что нет неявного преобразования определяемого пользовательского типа в тип данных параметра.Otherwise the data is sent to the server, but the server returns an error indicating that there is no implicit conversion from UDT to the parameter's data type.

2 Кроме области этого раздела.2Beyond the scope of this topic.

3 Происходит преобразование шестнадцатеричной строки в двоичные данные.3 Data conversion from hex string to binary data occurs.

4 Происходит преобразование двоичных данных в шестнадцатеричную строку.4 Data conversion from binary data to hex string occurs.

5Во время создания метода доступа или во время выборки может произойти проверка данных. Ошибка — DB_E_ERRORSOCCURRED, состояние привязки устанавливается в значение DBBINDSTATUS_UNSUPPORTEDCONVERSION.5Validation can occur at create accessor time, or at fetch time, the error is DB_E_ERRORSOCCURRED, binding status set to DBBINDSTATUS_UNSUPPORTEDCONVERSION.

6Может использоваться BY_REF.6BY_REF may be used.

Типы DBTYPE_NULL и DBTYPE_EMPTY могут быть привязаны только для входных параметров. Они не могут быть привязаны для выходных параметров или результатов.DBTYPE_NULL and DBTYPE_EMPTY can be bound for input parameters but not for output parameters or results. При привязке входных параметров состояние должно быть установлено в значение DBSTATUS_S_ISNULL или DBSTATUS_S_DEFAULT.When bound for input parameters, the status must be set to DBSTATUS_S_ISNULL or DBSTATUS_S_DEFAULT.

Тип DBTYPE_UDT также может быть преобразован в типы DBTYPE_EMPTY и DBTYPE_NULL, но тип DBTYPE_NULL и DBTYPE_EMPTY нельзя преобразовать в тип DBTYPE_UDT.DBTYPE_UDT can also be converted to DBTYPE_EMPTY and DBTYPE_NULL, but DBTYPE_NULL and DBTYPE_EMPTY cannot be converted to DBTYPE_UDT. Это правило обеспечивает согласование с DBTYPE_BYTES.This is consistent with DBTYPE_BYTES.

Примечание

Новый интерфейс ISSCommandWithParameters, наследуемый от интерфейса ICommandWithParameters, используется для работы с пользовательскими типами как с параметрами.A new interface is used for dealing with UDTs as parameters, ISSCommandWithParameters, which inherits from ICommandWithParameters. Приложения должны использовать этот интерфейс для установки, по крайней мере, атрибута SSPROP_PARAM_UDT_NAME набора свойств DBPROPSET_SQLSERVERPARAMETER для параметров определяемых пользователем типов.Applications must use this interface to set at least the SSPROP_PARAM_UDT_NAME of the DBPROPSET_SQLSERVERPARAMETER property set for UDT parameters. Если это не сделано, метод ICommand::Execute возвратит ошибку DB_E_ERRORSOCCURRED.If this is not done, ICommand::Execute will return DB_E_ERRORSOCCURRED. Этот интерфейс и набор свойств описан далее в этом разделе.This interface and property set is described later in this topic.

Если определяемый пользователем тип вставлен в столбец, который недостаточно велик для хранения всех его данных, метод ICommand::Execute вернет S_OK с состоянием DB_E_ERRORSOCCURRED.If a user-defined type is inserted into a column that is not large enough to hold all its data, ICommand::Execute will return S_OK with a status of DB_E_ERRORSOCCURRED.

Преобразования данных, выполняемые основными службами OLE DB (IDataConvert), неприменимы к типу DBTYPE_UDT.Data conversions supplied by OLE DB core services (IDataConvert) are not applicable to DBTYPE_UDT. Другие привязки не поддерживаются.No other bindings are supported.

Добавления и изменения для наборов строк OLE DBOLE DB Rowset Additions and Changes

SQL ServerSQL Server Собственный клиент добавляет новые значения или изменения во многие базовые наборы строк схемы OLE DB.Native Client adds new values or changes to many of the core OLE DB schema rowsets.

Набор строк схемы PROCEDURE_PARAMETERSThe PROCEDURE_PARAMETERS Schema Rowset

В набор строк схемы PROCEDURE_PARAMETERS были сделаны следующие добавления.The following additions have been made to the PROCEDURE_PARAMETERS schema rowset.

Имя столбцаColumn name ТипType DescriptionDescription
SS_UDT_CATALOGNAMESS_UDT_CATALOGNAME DBTYPE_WSTRDBTYPE_WSTR Идентификатор трехкомпонентного имени.The three-part name identifier.
SS_UDT_SCHEMANAMESS_UDT_SCHEMANAME DBTYPE_WSTRDBTYPE_WSTR Идентификатор трехкомпонентного имени.The three-part name identifier.
SS_UDT_NAMESS_UDT_NAME DBTYPE_WSTRDBTYPE_WSTR Идентификатор трехкомпонентного имени.The three-part name identifier.
SS_UDT_ASSEMBLY_TYPENAMESS_UDT_ASSEMBLY_TYPENAME DBTYPE_WSTRDBTYPE_WSTR Полное имя сборки, которое включает имя типа и все идентификационные данные сборки, необходимые для ссылки на сборку из среды CLR.The Assembly Qualified Name, which includes the type name and all the assembly identification necessary to be referenced by the CLR.

Набор строк схемы SQL_ASSEMBLIESThe SQL_ASSEMBLIES Schema Rowset

SQL ServerSQL ServerПоставщик OLE DB собственного клиента предоставляет новый набор строк схемы конкретного поставщика, который описывает зарегистрированные определяемые пользователем типы.The SQL ServerSQL Server Native Client OLE DB provider exposes a new provider specific schema rowset that describes the registered UDTs. Сервер ASSEMBLY может быть указан как тип DBTYPE_WSTR, но он отсутствует в наборе строк.The ASSEMBLY server may be specified as a DBTYPE_WSTR, but is not present in the rowset. Если значение не задано, то по умолчанию для набора строк будет использоваться текущий сервер.If not specified, the rowset will default to the current server. Набор строк схемы SQL_ASSEMBLIES определен в следующей таблице.The SQL_ASSEMBLIES schema rowset is defined in the following table.

Имя столбцаColumn name ТипType DescriptionDescription
ASSEMBLY_CATALOGASSEMBLY_CATALOG DBTYPE_WSTRDBTYPE_WSTR Имя каталога сборки, содержащей тип.The catalog name of the assembly that contains the type.
ASSEMBLY_SCHEMAASSEMBLY_SCHEMA DBTYPE_WSTRDBTYPE_WSTR Имя схемы или имя владельца сборки, содержащей тип.The schema name, or owner name, of the assembly that contains the type. Хотя сборки ограничены базой данных, а не схемой, они все еще имеют владельца, отраженного здесь.Although assemblies are scoped by database and not by schema, they still have an owner which is reflected here.
ASSEMBLY_NAMEASSEMBLY_NAME DBTYPE_WSTRDBTYPE_WSTR Имя сборки, содержащей тип.The name of the assembly that contains the type.
ASSEMBLY_IDASSEMBLY_ID DBTYPE_UI4DBTYPE_UI4 Идентификатор объекта сборки, содержащей тип.The object id of the assembly that contains the type.
PERMISSION_SETPERMISSION_SET DBTYPE_WSTRDBTYPE_WSTR Значение, определяющее область доступа сборки.A value that indicates the scope of access for the assembly. Значения включают «SAFE», «EXTERNAL_ACCESS» и «UNSAFE».Values include "SAFE", "EXTERNAL_ACCESS", and "UNSAFE".
ASSEMBLY_BINARYASSEMBLY_BINARY DBTYPE_BYTESDBTYPE_BYTES Двоичное представление сборки.The binary representation of the assembly.

Набор строк схемы SQL_ASSEMBLIES_ DEPENDENCIESThe SQL_ASSEMBLIES_ DEPENDENCIES Schema Rowset

SQL ServerSQL Server Поставщик OLE DB собственного клиента предоставляет новый набор строк схемы, зависящий от поставщика, который описывает зависимости сборки для указанного сервера.Native Client OLE DB provider exposes a new provider-specific schema rowset that describes the assembly dependencies for a specified server. ASSEMBLY_SERVER может быть указан участником как тип DBTYPE_WSTR, но отсутствовать в наборе строк.ASSEMBLY_SERVER may be specified by the caller as a DBTYPE_WSTR, but is not present in the rowset. Если значение не задано, то по умолчанию для набора строк будет использоваться текущий сервер.If not specified, the rowset will default to the current server. Набор строк схемы SQL_ASSEMBLY_DEPENDENCIES определен в следующей таблице.The SQL_ASSEMBLY_DEPENDENCIES schema rowset is defined in the following table.

Имя столбцаColumn name ТипType DescriptionDescription
ASSEMBLY_CATALOGASSEMBLY_CATALOG DBTYPE_WSTRDBTYPE_WSTR Имя каталога сборки, содержащей тип.The catalog name of the assembly that contains the type.
ASSEMBLY_SCHEMAASSEMBLY_SCHEMA DBTYPE_WSTRDBTYPE_WSTR Имя схемы или имя владельца сборки, содержащей тип.The schema name, or owner name, of the assembly that contains the type. Хотя сборки ограничены базой данных, а не схемой, они все еще имеют владельца, отраженного здесь.Although assemblies are scoped by database and not by schema, they still have an owner, which is reflected here.
ASSEMBLY_IDASSEMBLY_ID DBTYPE_UI4DBTYPE_UI4 Идентификатор объекта сборки.The object id of the assembly.
REFERENCED_ASSEMBLY_IDREFERENCED_ASSEMBLY_ID DBTYPE_UI4DBTYPE_UI4 Идентификатор объекта сборки, на которую присутствует ссылка.The object id of the referenced assembly.

Набор строк схемы SQL_USER_TYPESThe SQL_USER_TYPES Schema Rowset

SQL ServerSQL Server Поставщик OLE DB собственного клиента предоставляет новый набор строк схемы, SQL_USER_TYPES, который описывает, когда добавляется зарегистрированный определяемый пользователем типов для указанного сервера.Native Client OLE DB provider exposes new schema rowset, SQL_USER_TYPES, that describes when the registered UDTs for a specified server is added. UDT_SERVER должен быть указан участником как тип DBTYPE_WSTR, но отсутствовать в наборе строк.UDT_SERVER must be specified as a DBTYPE_WSTR by the caller but is not present in the rowset. Набор строк схемы SQL_USER_TYPES определен в следующей таблице.The SQL_USER_TYPES schema rowset is defined in the following table.

Имя столбцаColumn name ТипType DescriptionDescription
UDT_CATALOGNAMEUDT_CATALOGNAME DBTYPE_WSTRDBTYPE_WSTR Для столбцов определяемого пользователем типа данное свойство содержит строку, представляющую имя каталога, в котором определен этот тип.For UDT columns this property is a string specifying the name of the catalog where the UDT is defined.
UDT_SCHEMANAMEUDT_SCHEMANAME DBTYPE_WSTRDBTYPE_WSTR Для столбцов определяемого пользователем типа данное свойство содержит строку, представляющую имя схемы, в которой определен этот тип.For UDT columns this property is a string specifying the name of the schema where the UDT is defined.
UDT_NAMEUDT_NAME DBTYPE_WSTRDBTYPE_WSTR Имя сборки, содержащей класс определяемого пользователем типа.The name of the assembly containing the UDT class.
UDT_ASSEMBLY_TYPENAMEUDT_ASSEMBLY_TYPENAME DBTYPE_WSTRDBTYPE_WSTR Полное имя типа (AQN) включает имя типа и префикс пространства имен (если оно задано).Full type name (AQN) includes type name prefixed by namespace if applicable.

Набор строк схемы COLUMNSThe COLUMNS Schema Rowset

Добавления в наборе строк схемы COLUMNS включает следующие столбцы.Additions to the COLUMNS schema rowset include the following columns.

Имя столбцаColumn name ТипType DescriptionDescription
SS_UDT_CATALOGNAMESS_UDT_CATALOGNAME DBTYPE_WSTRDBTYPE_WSTR Для столбцов определяемого пользователем типа данное свойство содержит строку, представляющую имя каталога, в котором определен этот тип.For UDT columns this property is a string specifying the name of the catalog where the UDT is defined.
SS_UDT_SCHEMANAMESS_UDT_SCHEMANAME DBTYPE_WSTRDBTYPE_WSTR Для столбцов определяемого пользователем типа данное свойство содержит строку, представляющую имя схемы, в которой определен этот тип.For UDT columns this property is a string specifying the name of the schema where the UDT is defined.
SS_UDT_NAMESS_UDT_NAME DBTYPE_WSTRDBTYPE_WSTR Имя определяемого пользователем типа.The name of the UDT
SS_UDT_ASSEMBLY_TYPENAMESS_UDT_ASSEMBLY_TYPENAME DBTYPE_WSTRDBTYPE_WSTR Полное имя типа (AQN) включает имя типа и префикс пространства имен (если оно задано).Full type name (AQN) includes type name prefixed by namespace if applicable.

Добавления и изменения для наборов свойств OLE DBOLE DB Property Set Additions and Changes

SQL ServerSQL Server Собственный клиент добавляет новые значения или изменения во многие из основных наборов свойств OLE DB.Native Client adds new values or changes to many of the core OLE DB property sets.

Набор свойств DBPROPSET_SQLSERVERPARAMETERThe DBPROPSET_SQLSERVERPARAMETER Property Set

Для поддержки определяемых пользователем типов с помощью OLE DB SQL ServerSQL Server собственный клиент реализует новый набор свойств DBPROPSET_SQLSERVERPARAMETER, который содержит следующие значения.In order to support UDTs through OLE DB, SQL ServerSQL Server Native Client implements the new DBPROPSET_SQLSERVERPARAMETER property set which contains the following values.

ИмяName ТипType DescriptionDescription
SSPROP_PARAM_UDT_CATALOGNAMESSPROP_PARAM_UDT_CATALOGNAME DBTYPE_WSTRDBTYPE_WSTR Идентификатор трехкомпонентного имени.The three-part name identifier.

Для параметров определяемого пользователем типа это свойство содержит строку, представляющую имя каталога, в котором определен этот тип.For UDT parameters, this property is a string that specifies the name of the catalog where the user-defined type is defined.
SSPROP_PARAM_UDT_SCHEMANAMESSPROP_PARAM_UDT_SCHEMANAME DBTYPE_WSTRDBTYPE_WSTR Идентификатор трехкомпонентного имени.The three-part name identifier.

Для параметров определяемого пользователем типа данное свойство содержит строку, представляющую имя схемы, в которой определен этот тип.For UDT parameters, this property is a string that specifies the name of the schema where the user-defined type is defined.
SSPROP_PARAM_UDT_NAMESSPROP_PARAM_UDT_NAME DBTYPE_WSTRDBTYPE_WSTR Идентификатор трехкомпонентного имени.The three-part name identifier.

Для столбцов определяемого пользователем типа это свойство содержит строку, представляющую однокомпонентное имя определяемого пользователем типа.For UDT columns, this property is a string that specifies the single part name of the user-defined type.

Свойство SSPROP_PARAM_UDT_NAME является обязательным.SSPROP_PARAM_UDT_NAME is mandatory. Свойства SSPROP_PARAM_UDT_CATALOGNAME и SSPROP_PARAM_UDT_SCHEMANAME не обязательны.SSPROP_PARAM_UDT_CATALOGNAME and SSPROP_PARAM_UDT_SCHEMANAME are optional. Если какое-либо свойство указывается неправильно, возвращается ошибка DB_E_ERRORSINCOMMAND.If any of the properties are specified incorrectly DB_E_ERRORSINCOMMAND will be returned. Если свойства SSPROP_PARAM_UDT_CATALOGNAME и SSPROP_PARAM_UDT_SCHEMANAME не указаны, то определяемый пользователем тип должен быть определен в той же базе данных и схеме, что и таблица.If both SSPROP_PARAM_UDT_CATALOGNAME and SSPROP_PARAM_UDT_SCHEMANAME are not specified, then the UDT must be defined in the same database and schema as the table. Если определение определяемого пользователем типа и таблица находятся в разных схемах (но в одной базе данных), то должно быть указано свойство SSPROP_PARAM_UDT_SCHEMANAME.If the UDT definition is not in the same schema as the table (but is in the same database), then SSPROP_PARAM_UDT_SCHEMANAME must be specified. Если определение определяемого пользователем типа находится в другой базе данных, то должны быть указаны свойства SSPROP_PARAM_UDT_CATALOGNAME и SSPROP_PARAM_UDT_SCHEMANAME.If the UDT definition is in a different database then both SSPROP_PARAM_UDT_CATALOGNAME and SSPROP_PARAM_UDT_SCHEMANAME must be specified.

Набор свойств DBPROPSET_SQLSERVERCOLUMNThe DBPROPSET_SQLSERVERCOLUMN Property Set

Для поддержки создания таблиц в интерфейсе ITableDefinition SQL ServerSQL Server Native Client добавляет следующие три новых столбца в набор свойств DBPROPSET_SQLSERVERCOLUMN.To support the creation of tables in the ITableDefinition interface, SQL ServerSQL Server Native Client adds the following three new columns to the DBPROPSET_SQLSERVERCOLUMN property set.

ИмяName DescriptionDescription ТипType DescriptionDescription
SSPROP_COL_UDT_CATALOGNAMESSPROP_COL_UDT_CATALOGNAME UDT_CATALOGNAMEUDT_CATALOGNAME VT_BSTRVT_BSTR Для столбцов типа DBTYPE_UDT это свойство содержит строку, указывающую имя каталога, в котором определен определяемый пользователем тип.For columns of type DBTYPE_UDT, this property is a string specifying the name of the catalog where the UDT is defined.
SSPROP_COL_UDT_SCHEMANAMESSPROP_COL_UDT_SCHEMANAME UDT_SCHEMANAMEUDT_SCHEMANAME VT_BSTRVT_BSTR Для столбцов типа DBTYPE_UDT это свойство содержит строку, указывающую имя схемы, в которой определен определяемый пользователем тип.For columns of type DBTYPE_UDT, this property is a string specifying the name of the schema where the UDT is defined.
SSPROP_COL_UDT_NAMESSPROP_COL_UDT_NAME UDT_NAMEUDT_NAME VT_BSTRVT_BSTR Для столбцов типа DBTYPE_UDT это свойство содержит строку, указывающую однокомпонентное имя определяемого пользователем типа.For columns of type DBTYPE_UDT, this property is a string specifying the single part name of the UDT. Для других типов столбцов это свойство возвращает пустую строку.For other column types, this property returns an empty string.

Примечание

Определяемые пользователем типы не отображаются в наборе строк схемы PROVIDER_TYPES.UDTs do not appear in the PROVIDER_TYPES schema rowset. Все столбцы доступны для чтения и записи.All columns have read and write access.

ADO будет ссылаться на эти свойства с помощью соответствующей записи в столбце «Описание».ADO will refer to these properties by using the corresponding entry in the Description column.

Свойство SSPROP_COL_UDTNAME является обязательным.SSPROP_COL_UDTNAME is mandatory. Свойства SSPROP_COL_UDT_CATALOGNAME и SSPROP_COL_UDT_SCHEMANAME не обязательны.SSPROP_COL_UDT_CATALOGNAME and SSPROP_COL_UDT_SCHEMANAME are optional. Если какое-либо свойство указывается неправильно, возвращается ошибка DB_E_ERRORSINCOMMAND.If any of the properties are specified incorrectly, DB_E_ERRORSINCOMMAND will be returned.

Если ни свойство SSPROP_PARAM_UDT_CATALOGNAME, ни свойство SSPROP_PARAM_UDT_SCHEMANAME не указаны, то определяемый пользователем тип должен быть определен в той же базе данных и схеме, что и таблица.If neither SSPROP_COL_UDT_CATALOGNAME nor SSPROP_COL_UDT_SCHEMANAME is specified, the UDT must be defined in the same database and schema as the table.

Если определение определяемого пользователем типа и таблица находятся в разных схемах (но в одной базе данных), то должно быть указано свойство SSPROP_COL_UDT_SCHEMANAME.If the UDT definition is not in the same schema as the table (but is in the same database), SSPROP_COL_UDT_SCHEMANAME must be specified.

Если определение определяемого пользователем типа находится в другой базе данных, то должны быть указаны свойства SSPROP_COL_UDT_CATALOGNAME и SSPROP_COL_UDT_CATALOGNAME.If the UDT definition is in a different database, both SSPROP_COL_UDT_CATALOGNAME and SSPROP_COL_UDT_SCHEMANAME must be specified.

Добавления и изменения для интерфейсов OLE DBOLE DB Interface Additions and Changes

SQL ServerSQL Server Собственный клиент добавляет новые значения или изменения во многие основные OLE DB интерфейсы.Native Client adds new values or changes to many of the core OLE DB interfaces.

Интерфейс ISSCommandWithParametersThe ISSCommandWithParameters Interface

Для поддержки определяемых пользователем типов с помощью OLE DB в SQL ServerSQL Server собственном клиенте реализован ряд изменений, включая Добавление интерфейса ISSCommandWithParameters .To support UDTs through OLE DB, SQL ServerSQL Server Native Client implements a number of changes, including the addition of the ISSCommandWithParameters interface. Этот новый интерфейс наследует основной интерфейс OLE DB — ICommandWithParameters.This new interface inherits from the core OLE DB interface ICommandWithParameters. В дополнение к трем методам, унаследованным от ICommandWithParameters; GetParameterInfo, MapParameterNamesи SetParameterInfo; ISSCommandWithParameters предоставляет методы GetParameterProperties и SetParameterProperties , используемые для работы с конкретными типами данных сервера.In addition to the three methods inherited from ICommandWithParameters; GetParameterInfo, MapParameterNames, and SetParameterInfo; ISSCommandWithParameters provides the GetParameterProperties and SetParameterProperties methods that are used to handle server specific data types.

Примечание

Интерфейс ISSCommandWithParameters также задействует возможности новой структуры SSPARAMPROPS.The ISSCommandWithParameters interface also makes use of the new SSPARAMPROPS structure.

Интерфейс IColumnsRowsetThe IColumnsRowset Interface

Помимо интерфейса ISSCommandWithParameters , SQL ServerSQL Server Native Client также добавляет новые значения в набор строк, возвращаемый из вызова метода IColumnsRowset:: GetColumnRowset , включая следующие.In addition to the ISSCommandWithParameters interface, SQL ServerSQL Server Native Client also adds new values to the rowset returned from calling the IColumnsRowset::GetColumnRowset method including the following.

Имя столбцаColumn Name ТипType DescriptionDescription
DBCOLUMN_SS_UDT_CATALOGNAMEDBCOLUMN_SS_UDT_CATALOGNAME DBTYPE_WSTRDBTYPE_WSTR Идентификатор имени каталога определяемого пользователем типа.A UDT catalog name identifier.
DBCOLUMN_SS_UDT_SCHEMANAMEDBCOLUMN_SS_UDT_SCHEMANAME DBTYPE_WSTRDBTYPE_WSTR Идентификатор имени схемы определяемого пользователем типа.A UDT schema name identifier.
DBCOLUMN_SS_UDT_NAMEDBCOLUMN_SS_UDT_NAME DBTYPE_WSTRDBTYPE_WSTR Идентификатор имени определяемого пользователем типа.A UDT name identifier.
DBCOLUMN_SS_ASSEMBLY_TYPENAMEDBCOLUMN_SS_ASSEMBLY_TYPENAME DBTYPE_WSTRDBTYPE_WSTR Полное имя сборки, которое включает имя типа и все идентификационные данные сборки, необходимые для ссылки на сборку из среды CLR.The assembly qualified name, which includes the type name and all the assembly identification necessary to be referenced by the CLR.

Если столбец DBCOLUMN_TYPE имеет значение DBTYPE_UDT, то столбец определяемого пользователем типа сервера можно отличить от других двоичных типов, изучив добавленные метаданные определяемого пользователем типа, указанные выше.You can differentiate a server UDT column from other binary types when the DBCOLUMN_TYPE is set to DBTYPE_UDT by looking at the added UDT metadata specified above. Если данные частично завершены, то тип сервера является определяемым пользователем типом.If that data is partially complete, the server type is a UDT. Для типов сервера, отличных от определяемых пользователем типов, эти столбцы всегда возвращают значение NULL.For non-UDT server types, these columns are always returned as NULL.

Драйвер ODBC для собственного клиента SQL ServerSQL Server Native Client ODBC Driver

В SQL ServerSQL Server драйвере ODBC для собственного клиента внесены некоторые изменения для поддержки определяемых пользователем типов.A number of changes have been made in the SQL ServerSQL Server Native Client ODBC driver to support UDTs. SQL ServerSQL ServerДрайвер ODBC для собственного клиента сопоставляет SQL ServerSQL Server определяемый пользователем тип с SQL_SS_UDT идентификатором типа данных SQL конкретного драйвера.The SQL ServerSQL Server Native Client ODBC driver maps the SQL ServerSQL Server UDT to SQL_SS_UDT driver-specific SQL data type identifier. Столбцы определяемого пользователем типа отображаются как тип SQL_SS_UDT.UDT columns are surfaced as SQL_SS_UDT. Если явно сопоставлять столбец UDT с другим типом в инструкции SQL с помощью методов ToString или токсмлстринг определяемого пользователем типа или с помощью функции CAST/CONVERT , тип столбца в результирующем наборе отражает фактический тип, в который был преобразован столбец.If you map a UDT column explicitly to another type in a SQL statement by using the ToString or ToXMLString methods of the UDT or via the CAST/CONVERT function, the type of the column in the result set reflects the actual type the column was converted to

SQLColAttribute, SQLDescribeParam, SQLGetDescFieldSQLColAttribute, SQLDescribeParam, SQLGetDescField

Были добавлены четыре новых поля дескриптора для конкретного драйвера, которые предоставляют дополнительные сведения для столбца определяемого пользователем типа в результирующем наборе или параметра определяемого пользователем типа для хранимой процедуры или параметризованного запроса, которые должны быть получены с помощью функций SQLColAttribute, SQLDescribeParamи SQLGetDescField .Four new driver-specific descriptor fields have been added to provide additional information for either a UDT column of a result set, or a UDT parameter of stored procedure/parameterized query, to be retrieved via the SQLColAttribute, SQLDescribeParam, and SQLGetDescField functions.

Это следующие поля дескриптора: SQL_CA_SS_UDT_CATALOG_NAME, SQL_CA_SS_UDT_SCHEMA_NAME, SQL_CA_SS_UDT_TYPE_NAME и SQL_CA_SS_UDT_ASSEMBLY_TYPE_NAME.The four new descriptor fields that have been added are SQL_CA_SS_UDT_CATALOG_NAME, SQL_CA_SS_UDT_SCHEMA_NAME, SQL_CA_SS_UDT_TYPE_NAME, and SQL_CA_SS_UDT_ASSEMBLY_TYPE_NAME.

SQLColumns, SQLProcedureColumnsSQLColumns, SQLProcedureColumns

Кроме того, к результирующему набору, возвращаемому из функций SQLColumns и SQLProcedureColumns , добавляются три новых столбца, относящиеся к набору, которые содержат дополнительные сведения о СТОЛБЦЕ результирующего набора UDT или параметре UDT.In addition, three new driver specific columns are added to the result set returned from the SQLColumns and SQLProcedureColumns functions to provide additional information about either a UDT result set column or a UDT parameter. Это следующие столбцы: SS_UDT_CATALOG_NAME, SS_UDT_SCHEMA_NAME и SS_UDT_ASSEMBLY_TYPE_NAME.These three new columns are SS_UDT_CATALOG_NAME, SS_UDT_SCHEMA_NAME, and SS_UDT_ASSEMBLY_TYPE_NAME.

Поддерживаемые преобразованияSupported Conversions

При преобразовании из типов данных SQL в типы данных C типы SQL_C_WCHAR, SQL_C_BINARY и SQL_C_CHAR могут быть преобразованы в SQL_SS_UDT.When converting from SQL to C data types, SQL_C_WCHAR, SQL_C_BINARY, and SQL_C_CHAR can all be converted to SQL_SS_UDT. Однако обратите внимание, что при преобразовании из типов данных SQL_C_WCHAR и SQL_C_CHAR SQL двоичные данные преобразуются в шестнадцатеричную строку.Note, however, that binary data is converted to a hex string when converting from the SQL_C_WCHAR and SQL_C_CHAR SQL data types.

При преобразовании из типов данных C в типы данных SQL типы SQL_C_WCHAR, SQL_C_BINARY и SQL_C_CHAR могут быть преобразованы в SQL_SS_UDT.When converting from C to SQL data types, SQL_C_WCHAR, SQL_C_BINARY, and SQL_C_CHAR can all be converted to SQL_SS_UDT. Однако обратите внимание, что при преобразовании из типов данных SQL_C_WCHAR и SQL_C_CHAR SQL двоичные данные преобразуются в шестнадцатеричную строку.Note however that binary data is converted to a hex string when converting from the SQL_C_WCHAR and SQL_C_CHAR SQL data types.

См. также:See Also

Компоненты собственного клиента SQL Server SQL Server Native Client Features
ISSCommandWithParameters (OLE DB)ISSCommandWithParameters (OLE DB)