【问题标题】:LogParser SQL Server driver windows 2012 x64LogParser SQL Server 驱动程序 windows 2012 x64
【发布时间】:2015-05-16 09:22:28
【问题描述】:

我有一个日志解析器,它在 SQL Server 数据库中输出。

我在 logparser 时间戳和 SQL Server date(7) 类型之间遇到了转换问题。我通过指定驱动程序解决了这个问题

-driver "sql server native client 10.0"

这是整个 oneliner:

LogParser "select to_date(to_timestamp('2015-03-13','yyyy-MM-dd')) AS REQ_DATE_DT, count(*) as REQ_REQUESTS_NU, 5 INTO MyTable from \\myServer\MyIISlog.log where time >= '12:00:00' and time <='14:59:59' " -i:IISW3C -o:SQL -createTable:OFF -server:MyServer\MyInstance -database:MyDB -username:myUser -password:MyPass -driver "sql server native client 10.0"

此命令在我的开发机器上运行良好(Windows 7 x64,安装了 SQL Server Management Studio)。现在我想从脚本服务器运行它(没有 ssms 的 windows 2012r2)

如果我运行相同的命令,则会出现以下错误:

任务中止。
连接到 ODBC 服务器时出错
SQL 状态:IM002
本机错误:0
错误消息:[Microsoft][ODBC Driver Manager] Data source name not found and no default driver specified

如果我将“SQL Server native client 10.0”更改为“SQL Server”,我也会遇到同样的错误。

如果我省略 -driver sql server 部分,我会收到通常的转换错误消息

SQL 表列“REQ_DATE_DT”数据类型与 SELECT 子句项“REQ_DATE_DT”(类型 TIMESTAMP)不兼容

所以数据库服务器是可访问的,并且可以使用我提供的凭据进行查询。

我从 microsoft msi 安装了 odbc 驱动程序,它们出现在 ODBC Data Source Administrator x32 和 x64 中。

我试过odbc server 10(SQL Server 2008 R2)和11(SQL Server 2012)

我错过了什么?

编辑 1:

我测试了安装几个 sql 功能但没有成功

  • sqlncli、sqlCmdLnUtils 和 SharedManagementObjects (x64)。我将 sqlcmd.exe 的路径添加到我的 $Path 中。问题仍然存在,我可以运行 sqlcmd 并且“Odbc 数据源”显示 sql server 2008 驱动程序(x86 和 x64)。
  • 我安装了更多功能但没有成功。这是我安装的组件列表 (x64):SQL 2008 命令行实用程序、管理对象、Native Client、复制管理对象、SQLXML 4.0 SP1、SQL Server 系统 CLR 类型、SQL Server 2008 的 Powershell 扩展。所有这些都是 x64特征。
  • 在安装了整个 sql server 的东西(包括 ssms、cli ...)后,我总是遇到同样的错误

我会在其他服务器上尝试,但我认为这是仅涉及 x64 sql 本机客户端或 windows 2012r2 x64 的问题...

【问题讨论】:

    标签: sql-server odbc windows-server-2012-r2 logparser


    【解决方案1】:

    您可能需要安装 SQL Server Native Client(与 ODBC 驱动程序不同),可以在 https://msdn.microsoft.com/en-us/data/ff658533.aspx?f=255&MSPPError=-2147217396 找到。

    【讨论】:

    • 所以,我卸载了 2008/2008R2/2012 年拥有的所有 sql 功能。然后我安装了 sqlncli、sqlCmdLnUtils 和 SharedManagementObjects (x64)。我将 sqlcmd.exe 的路径添加到我的 $Path 中。问题仍然存在,我可以运行 sqlcmd 并且“Odbc 数据源”显示 sql server 2008 驱动程序(x86 和 x64)。我将尝试从 SqlServer 2008 SP3 安装更多功能。
    • 我安装了更多功能但没有成功。这是我安装的组件列表 (x64):SQL 2008 命令行实用程序、管理对象、Native Client、复制管理对象、SQLXML 4.0 SP1、SQL Server 系统 CLR 类型、SQL Server 2008 的 Powershell 扩展。所有这些都是 x64特征。我想知道 LogParser (x86) 是否可以与 x64 本机客户端交互。我认为我的下一步将是在服务器中安装完整的 ssms...
    • 在安装了整个 sql server 的东西(包括 ssms、cli ...)之后,我总是遇到同样的错误“[Microsoft][ODBC Driver Manager] Data source name not found and no default driver specified” .我会在其他服务器上尝试,但我认为这是涉及 windows 2012r2 x64 的问题...
    【解决方案2】:

    我设法使用-oConnString LogParser 选项而不是-driver -server -database ... 解决了这个问题:

    LogParser "select to_date(to_timestamp('2015-03-13','yyyy-MM-dd')) AS REQ_DATE_DT, count(*) as REQ_REQUESTS_NU, 5 INTO MyTable from \\myServer\MyIISlog.log where time >= '12:00:00' and time <='14:59:59' " -i:IISW3C -o:SQL -createTable:OFF -oConnString:"Driver={SQL server native client 10.0};server=MyServer;database=MyDB;uid=MyUser;pwd=MyUser;"
    

    由于这种解决方法,我认为最初的问题是 ODBC x86 和 x64 的问题。

    以下是一些对我有帮助的问题:

    【讨论】:

      猜你喜欢
      • 2023-03-20
      • 1970-01-01
      • 2015-06-30
      • 1970-01-01
      • 2015-03-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-05-24
      相关资源
      最近更新 更多