OLE DB 客户端驱动程序是 Microsoft Analysis Services (SSAS) 和 C# 客户端应用程序与 Vertica 数据库交互的接口。
OLE DB 客户端驱动程序
- 1: 安装 OLE DB 客户端驱动程序
- 1.1: OLE DB 连接属性
- 1.2: 配置 OLE DB 日志
- 2: 适用于 Windows 的 Microsoft Connectivity Pack
- 2.1: Microsoft 组件
- 2.1.1: Microsoft 组件配置
- 2.1.2: BIDS 和 SSDT-BI
- 2.1.3: SQL Server Analysis Services (SSAS) 支持
- 2.1.4: SQL Server Integration Services (SSIS) 支持
- 2.1.5: SQL Server Reporting Services (SSRS) 支持
- 2.2: 兼容性问题和限制
- 2.2.1: BIDS 和 SSDT-BI 限制
- 2.2.2: SSAS 限制
- 2.2.3: SSIS 数据类型限制
- 2.2.4: SSRS 限制
1 - 安装 OLE DB 客户端驱动程序
要安装 Vertica OLE DB 客户端驱动程序:
-
下载 Windows 客户端驱动安装程序。有关此安装程序中包含的驱动程序的详细信息,请参阅 Windows 客户端驱动程序安装程序。
-
运行安装程序并按照提示安装驱动程序。
-
重新启动系统。
安装 OLE DB 客户端驱动程序后,您可以配置 ETW 日志记录。
有关 OLE DB 客户端驱动程序如何与其他 Microsoft 组件集成的详细信息,请参阅 Microsoft 组件配置。
有关连接属性的列表,请参阅 OLE DB 连接属性。
1.1 - OLE DB 连接属性
可以使用“连接管理器 (Connection Manager)”设置 OLE DB 连接字符串属性,这些属性定义了连接。可以从 Visual Studio 中访问“连接管理器 (Connection Manager)”。
这些连接参数会显示在“连接 (Connection)”页面上。
连接管理器 (Connection Manager) 对话框中的 全部 (All) 页面列出了提供程序的所有可能的连接字符串属性。
下表列出了全部 (All) 页面中的连接参数。
有关特定于 Microsoft 的 OLE DB 属性,请参阅 Microsoft 文档 [OLE DB Properties](https://msdn.microsoft.com/en-us/library/windows/desktop/ms723130(v=vs.85)。
1.2 - 配置 OLE DB 日志
以下参数控制 OLE DB 客户端驱动程序如何记录客户端和服务器之间的消息。要设置它们,请编辑 Windows 注册表中 HKEY_LOCAL_MACHINE\SOFTWARE\Vertica\OLEDB\Driver
下的密钥:
-
LogLevel:在客户端和服务器之间记录的消息的严重性。有效值包括:
-
0:无日志记录
-
1:严重错误
-
2:错误
-
3:警告
-
4:信息
-
5:调试
-
6:跟踪(所有消息)
为此设置指定的值设置了要记录的消息的最低严重性。例如,如果将 LogLevel 设置为 3,则表示客户端驱动程序将记录所有警告、错误和严重错误。
-
-
LogPath:用于存储日志文件的目录的绝对路径。例如:
/var/log/verticaoledb
将 OLE DB 日志条目转移到 ETW
在 Windows 客户端上,您可以指示 Vertica 将 OLE DB 日志条目发送到 Windows 事件跟踪 (ETW)。设置后,OLE DB 日志条目将出现在 Windows 事件查看器中。要使用 ETW:
-
将驱动程序注册为 Windows 事件日志提供程序,并启用日志。
-
通过将字符串值添加到 Windows 注册表来激活 ETW。
-
了解 Vertica 如何压缩 Windows 事件查看器的日志级别。
-
了解在事件查看器中的何处可以找到日志。
-
了解日志条目中事件 ID 的含义。
将 OLE DB 驱动程序注册为 Windows 事件日志提供程序
要使用 ETW 日志记录,您必须将 OLE DB 驱动程序注册为 Windows 事件日志提供程序。您可以选择注册 32 位或 64 位驱动程序。注册驱动程序后,您必须启用日志。
重要
如果您既未注册驱动程序也未启用日志,则输出将定向到 stdout。-
以管理员身份打开命令提示符窗口,或使用“以管理员身份运行 (Run as Administrator)”选项启动命令提示符。
重要
您必须具有管理员权限才能成功完成下一步。 -
运行命令
wevtutil im
以注册 32 位或 64 位版本的驱动程序。-
对于 64 位 OLE DB 驱动程序,运行:
wevtutil im "c:\Program Files\Vertica Systems\OLEDB64\lib\VerticaOLEDB64.man" /resourceFilePath:"c:\Program Files\Vertica Systems\OLEDB64\lib\vertica_8.1_oledb.dll" /messageFilePath:"c:\Program Files\Vertica Systems\OLEDB64\lib\vertica_8.1_oledb.dll"
-
对于 32 位 OLE DB 驱动程序,运行:
wevtutil im "c:\Program Files (x86)\Vertica Systems\OLEDB32\lib\VerticaOLEDB32.man" /resourceFilePath:"c:\Program Files (x86)\Vertica Systems\OLEDB32\lib\vertica_8.1_oledb.dll" /messageFilePath:"c:\Program Files (x86)\Vertica Systems\OLEDB32\lib\vertica_8.1_oledb.dll"
-
-
运行命令
wevtutil sl
以启用日志。-
对于 64 位 OLE DB 驱动程序日志,运行:
wevtutil sl VerticaOLEDB64/e:true
-
对于 32 位 ODBC 驱动程序日志,运行:
wevtutil sl VerticaOLEDB32/e:true
注意
如果您想稍后禁用日志,则可以使用相同的wevtutil sl
命令,在发出语句时用/e:false
代替/e:true
。或者,您可以在 Windows 事件查看器本身中启用或禁用日志。 -
添加字符串值 LogType
默认情况下,Vertica 不会将 OLE DB 日志条目发送到 ETW。要激活 ETW,请将字符串 LogType
添加到 Windows 注册表,并将其值设置为 ETW
。
-
通过在 Windows“运行 (Run)”命令框中键入
regedit.exe
来启动注册表编辑器。 -
在注册表中,导航到:
HKEY_LOCAL_MACHINE\SOFTWARE\Vertica\OLEDB\Driver
。 -
在注册表编辑器 (Registry Editor) 窗口的右窗格中右键单击。
-
选择新建 (New),然后选择字符串值 (String Value)。
-
将字符串值的名称从
New Value #1
更改为LogType
。 -
双击新的
LogType
条目。当系统提示输入新值时,输入ETW
。 -
退出注册表编辑器。
默认情况下,ETW 设置为 off。激活 ETW 后,您可以稍后通过从 LogType 字符串中清除值 ETW 将其关闭。
虽然 LogLevel 的范围从 0 到 6,但对于 Windows 事件查看器,此范围被压缩到 0 到 3 的范围。
以下示例显示了在 Windows 事件查看器中显示时如何转换 LogLevel。
-
LogLevel 为 5 将致命错误、错误、警告、信息和调试日志级别条目作为级别 4(信息)发送到事件查看器。
-
LogLevel 为 6 将致命错误、错误、警告、调试和跟踪日志级别条目作为级别 4 发送到事件查看器。
在事件查看器中查找日志
-
启动 Windows 事件查看器。
-
从事件查看器(本地) (Event Viewer (Local)),展开应用程序和服务日志 (Applications and Services Logs)。
-
展开包含您要查看的日志的文件夹(例如
VerticaOLEDB64
)。 -
选择文件夹下的 Vertica ODBC 日志。条目出现在右窗格中。
-
请注意事件 ID (Event ID) 字段中的值。每个事件日志条目包含四个事件 ID 之一:
-
0:信息性(调试、信息和跟踪事件)
-
1:错误
-
2:严重事件
-
3:警告
-
2 - 适用于 Windows 的 Microsoft Connectivity Pack
适用于 Windows 的 Vertica Microsoft Connectivity Pack 提供了一个用于访问 Microsoft Business Intelligence 工具的配置文件。Connectivity Pack 作为 Windows 客户端驱动程序和工具的一部分安装。
有关 Microsoft Connectivity Pack 中包含的组件的详细信息,请参阅 Microsoft 组件。
2.1 - Microsoft 组件
本节介绍可与 Microsoft Visual Studio 和 Microsoft SQL Server 结合使用的 Microsoft Business Intelligence 组件。配置后,您可以使用这些 Microsoft 组件来开发使用 Vertica 服务器的业务解决方案。
重要
适用于 Windows 的客户端驱动程序和工具包括 Vertica Microsoft 连接包。要使用连接包访问 Microsoft 商业智能工具,请在安装后重新启动系统以确保集成。2.1.1 - Microsoft 组件配置
使用 Vertica ADO.NET 驱动程序、Visual Studio 插件和 OLE DB 驱动程序,您可以将 Vertica 服务器与包含先前已安装在系统上的 Microsoft 组件的环境集成。还有其他工具可用于与 Microsoft SQL Server 集成。
可用的驱动程序提供了与以下 Microsoft 组件的集成:
-
适用于 Visual Studio 2008 的 Business Intelligence Development Studio (BIDS),与 SQL Server 2012 结合使用。BIDS 是一个基于客户端的应用程序,用于开发基于 Microsoft Visual Studio 开发环境的商业智能解决方案。此应用程序包含其他特定于 SQL Server Business Intelligence 的项目类型。作为开发人员,您可以使用 BIDS 开发业务解决方案。
-
适用于 Visual Studio 2008/2010/2012/2013/2015 的 SQL Server Data Tools - Business Intelligence (SSDT-BI),与 SQL Server 2012、SQL Server 2014 和 SQL Server 2016 结合使用。SSDT-BI 取代适用于 Visual Studio 2008、Visual Studio 2010、Visual Studio 2012、Visual Studio 2013 和 Visual Studio 2015 的 BIDS。此组件的用途与 BIDS 相同,即提供用于开发商业智能解决方案的开发环境。
-
适用于 SQL Server 2012、SQL Server 2014 和 SQL Server 2016 的 SQL Server Analysis Services (SSAS)。可以使用 SSAS 进行 OLAP 和数据挖掘,同时使用 Vertica 作为多维数据集创建的源。
-
适用于 SQL Server 2012、SQL Server 2014 和 SQL Server 2016 的 SQL Server Integration Services (SSIS)。SSIS 提供了 SQL Server 类型映射,用于在 Vertica 和 SQL Server 之间映射数据类型。可以将 SSIS 用于数据迁移、数据集成和工作流以及 ETL。
下图显示了 Microsoft 组件和 Vertica 依赖项之间的关系。
2.1.2 - BIDS 和 SSDT-BI
Microsoft Visual Studio 2008 中提供 Business Intelligence Development Studio (BIDS) 和其他特定于 SQL Server Business Intelligence 的项目类型。BIDS 是用于开发包括分析服务、集成服务和报告服务项目在内的业务解决方案的主要环境。
SQL Server Data Tools - Business Intelligence (SSDT-BI) 取代适用于 Visual Studio 2010、2012、2013 和 2015 的 BIDS。此组件的用途与 BIDS 相同,即提供用于开发业务解决方案的开发环境。
BIDS 和 SSDT-BI 都是基于客户端的应用程序,并且都包含其他特定于 SQL Server Business Intelligence 的项目类型。
可以使用 Visual Studio Shell 集成插件从 Visual Studio Server Explorer 中浏览数据库。使用此功能,您可以在 BIDS 或 SSDT-BI 开发环境外部工作,以执行诸如列出表或插入数据等任务。在 BIDS 或 SSDT-BI 模式下使用 Visual Studio 时,您可以使用 Vertica 数据库中的数据开发业务解决方案。例如,您可以创建多维数据集或打开表。
Microsoft 不支持以下配置:
-
不能将 Microsoft Visual Studio 2008 与 BIDS 开发环境结合使用以创建 SQL Server 2012 Business Intelligence 解决方案。
-
不能将 Microsoft Visual Studio 2010/2012/2013/2015 与 SSDT-BI 开发环境结合使用以创建 SQL Server 2008 Business Intelligence 解决方案。
2.1.3 - SQL Server Analysis Services (SSAS) 支持
BIDS 或 SSDT-BI 包含 Analysis Services 项目,该项目可用于开发适用于商业智能应用程序的联机分析处理 (Online Analytical Processing, OLAP)。此项目类型包含以下内容的模板:
-
多维数据集
-
维度
-
数据源
-
数据源视图
它还提供处理这些对象的工具。
注意
注意: Micro Focus 建议使用 Vertica OLE DB 驱动程序从 SSAS 连接到 Vertica 服务器以提高性能。可以在 OLE DB 连接属性 中找到 OLE DB 连接属性。
2.1.4 - SQL Server Integration Services (SSIS) 支持
BIDS 或 SSDT-BI 包含用于开发 ETL 解决方案的 Integration Services 项目。此项目类型包含以下内容的模板:
-
包
-
数据源
-
数据源视图
它还提供处理这些对象的工具。
通过 SSIS 和导入/导出向导,您可以使用 Vertica 作为数据源和数据目标。必须在集成服务器和 BIDS 工作站或 SSDT-BI 工作站上安装特定于 Vertica 的映射文件才能启用此功能。适用于 Windows 的 Vertica 客户端驱动程序和工具将以 32 位和 64 位版本安装这些映射文件作为“SQL Server 类型映射”组件。
注意
注意: 始终应使用 Vertica ADO.NET 驱动程序从 SSIS 连接到 Vertica 服务器。2.1.5 - SQL Server Reporting Services (SSRS) 支持
BIDS 或 SSDT-BI 包含用于开发报表解决方案的报表项目。
可以使用 Vertica 作为 Reporting Services 的数据源。安装程序将实施各种配置文件修改,以在 BIDS 工作站或 SSDT-BI 工作站和 Reporting Services 服务器上启用此功能。
2.2 - 兼容性问题和限制
本节列出兼容性问题以及将 Microsoft Connectivity Pack 与 Microsoft Visual Studio 和 Microsoft SQL Server 集成的限制。
2.2.1 - BIDS 和 SSDT-BI 限制
BIDS 和 SSDT-BI 是适用于 Analysis Services、Integration Services 和 Reporting Services 项目的 32 位开发环境。它们并非设计用于在 64 位 Itanium 架构上运行,因此不会安装在 Itanium 服务器上。
2.2.2 - SSAS 限制
-
不支持 SSAS 表格模型。
-
安装 Vertica OLE DB 驱动程序后,如果 SSAS 多维数据集构建失败,请重新启动 SSAS 服务。
2.2.3 - SSIS 数据类型限制
以下部分介绍了使用 SQL Server Integration Services (SSIS) 时的数据类型限制。
时间数据传输
传输时间数据时,SSIS 使用支持超过六位数精度的 TimeSpan 数据类型。Vertica ADO.NET 驱动程序会将 TimeSpan 转换为最多支持六位数的 Interval 数据类型。传输过程中,Interval 类型不会转换为 TimeSpan 类型。因此,如果时间值的精度超过六位数,则数据会被截断(而不是舍入)。
有关 ADO.NET 数据类型的信息,请参考 ADO.NET 数据类型。
DATE 和 DATETIME 精度
为确保正常运行而不发生错误,DATE 和 DATETIME 的范围介于 0001-01-01 00:00:00.0000000 到 9999-12-31 23:59:59.999999 之间。
在 SSIS 中,DATETIME 类型 (DT_TIMESTAMP) 对秒最多支持三个小数位。系统会自动丢弃后面的小数。只能对介于 January 1, 1753 到 December 31, 9999 之间的 DATETIME 值执行派生列转换。
数值精度
允许的最大和最小十进制值为:
-
最大值:
+79,228,162,514,264,337,593,543,950,335
-
最小值:
-79,228,162,514,264,337,593,543,950,335
例如,如果位数是 16,值的范围为:
+/- 7,922,816,251,426.4337593543950335
有效位数范围为小于 29 以及大于 38 的任何数字。使用 29 和 38 之间的小数位数不会生成错误。
请参阅:http://msdn.microsoft.com/en-us/library/system.decimal.maxvalue.aspx
不支持的浮点值
SQL Server 不支持 NaN、Infinity 或 –Infinity 值。使用 SSIS 在 Vertica 实例之间进行传输时,可以使用这些值,但这些值不能用于 SQL Server 目标。
字符串转换
在 SSIS 中使用的 CHAR 和 VARCHAR 数据类型为 DT_WSTR,其最大长度是 4000 个字符。
在 SSIS 中,Vertica 字符串会转换为 SSIS 中的 Unicode 字符串,以处理多语言数据。可以使用数据转换任务将这些字符串转换为 ASCII。
标度
只要所使用的小数位数超过 38,SSIS 就会将其替换为值 4。
区间转换
SSIS 不支持间隔类型。它会将这些类型转换为 TIME,并去除日组件。时间间隔类型超过一天的任何包将返回不正确的结果。
SQL Server 导入和导出向导的数据映射问题
使用 SQL Server 导入和导出向导创建集成服务包 (SSIS) 时,某些数据类型无法自动正确映射。将该向导与以下提供程序结合使用时,将出现映射问题:
-
适用于 SQL Server 2008 或 SQL Server 2012 的 SQL Server Native OLE DB 提供程序
-
适用于 SQL Server 2010/2012 的 SQL Server Native Client 10.0/11.0 提供程序
要避免此问题,请使用 BIDS 或 SSDT-BI 手动更改类型映射。
数据传输失败
将集成服务包 (SSIS) 与适用于 SQL Server 2008 或 SQL Server 2012 的 SQL Server OLE DB 提供程序结合使用时,如果是从 Vertica 传输到 SQL Server,则某些数据类型的传输会失败。若要避免此问题,请使用 BIDS 或 SSDT-BI 传输数据。
VARBINARY/LONG VARBINARY 数据类型的批量插入
有时,VARBINARY 或 LONG VARBINARY 数据类型的批量插入的行之一会超过数据类型限制:
-
VARBINARY:65 KB
-
LONG VARBINARY:32 MB
在这种情况下,将拒绝所有行,而非仅拒绝长度超过类型限制的行。批量插入将失败,并显示消息“行被拒绝 (row(s) are rejected)”。
若要避免此问题,请使用谓词从源中筛选出无法适应接收数据库的行。
SQL Server 查询设计器布尔查询
在 SQL Server 查询设计器中发出布尔查询时,必须用引号将布尔列值括起来。否则,您将收到 SQL 执行错误(例如,someboolean = 'true'
)。
2.2.4 - SSRS 限制
数据连接向导解决方法
SSRS 报表向导提供一个数据连接向导。选择该向导并输入所有连接信息后,确定 按钮被禁用。您无法保存工作,也无法继续操作。解决方法是不要使用该向导,并改为使用以下面板:
报表向导 - 查询设计器
Vertica 使用报表向导的通用查询设计器。其他数据源使用支持以可视化方式构建查询的图形查询设计器。图形查询设计器是名为 Visual Data Tools (VDT) 的程序包的一部分。图形查询设计器只能与通用 OLE DB 提供程序和内置提供程序配合工作。您不能将其与 Vertica 数据提供程序结合使用。
报表生成器
Report Builder 是一款基于 Web 的报告设计工具。此工具不支持使用自定义数据扩展来创建报表,因此您不能将其与 Vertica 结合使用。使用报表生成器创建报表时,现有 Vertica 数据源会显示在可用数据源的列表中。但是,选择 Vertica 数据源会导致发生错误。
映射 Vertica ** 目标时未自动提供架构名称**
目前,当您映射 Vertica 目标时,不会自动提供架构名称。您必须手动输入架构名称或从下拉菜单中选择架构名称,如下所示: