Windows Server 2012
SQL Server 2014
Visual Studio 2013专业版
SpiceWorks 7.5.00101 / SQLite 3.7.15.2
我正在尝试将SQL Server / Visual Studio连接到SpiceWorks SQLite数据库,因此我可以生成一个报告,显示当前打开的故障单以及分配给他们的人员。此报告适用于前台接待员,因此她可以参考呼叫适合IT人员的票务创建者。我们不希望她能够在故障单中查看潜在的敏感数据。
我无法连接工作!
我从这里尝试了32位和64位sqlite odbc驱动程序:http://www.ch-werner.de/sqliteodbc/
我使用 C:\ Windows \ SysWOW64 \ odbcad32.exe 使用SQLite3驱动程序创建 32位 ODBC DSN
我使用 C:\ Windows \ System32 \ odbcad32.exe 使用SQLite3驱动程序创建 64位 ODBC DSN
当我尝试使用32位DSN创建链接服务器或在SQL报告(SSRS)中用作数据源时,我收到此错误:
The specified DSN contains an architecture mismatch between the Driver and Application
这应该意味着我使用了错误的odbcad32来创建它 - 但我没有(我已经多次重建了这个该死的东西)
当我尝试使用64位DSN时,出现此错误:
IM006[Microsoft][ODBC Driver Manager] Driver's SQLSetConnectAttr failed
我所能找到的只是针对此报告错误的HotFix https://support.microsoft.com/en-us/help/822841/fix-setting-of-connection-attribute-fails-when-you-use-connection-pool
我在安装了SpiceWorks软件/数据库的Windows Server 2008上使用完全限定的路径" \ \ spwrks \ c $ \ Program Files从我们的Windows 2012 w / SQL Server尝试了这个86)\ Spiceworks还在\分贝\ spiceworks_prod.db"并获得相同的结果。
我试过指向生产数据库和数据库的副本。 我试图卸载所有SQLite驱动程序并从头开始。当32位的一个失败时,我卸载,重新启动并安装64位的一个,它失败了。
这是一个非常奇怪的部分,如果我创建一个服务器资源管理器> Visual Studio 2013内部的数据连接指向32位DSN,我可以看到所有表,创建并执行查询,没有任何问题。
一旦我发布(部署)SSRS报告并从浏览器中尝试,我就得到了#34;指定的DSN包含驱动程序和应用程序之间的体系结构不匹配。浏览器内部出错。
这让我疯了。救命!
我已尝试按照这些链接上的说明操作: https://community.spiceworks.com/how_to/128624-export-spiceworks-sqlite-data-to-ms-sql
https://community.spiceworks.com/how_to/28362-view-the-spiceworks-database-and-create-sql-reports
答案 0 :(得分:0)
只是更新
我已经创建了一个首先复制现有SQLite数据库的SSIS导入作业,因此我不会混淆生产,然后将我需要的两个表(票证和用户)导入到2014 SQL Server中。然后,我想从这些表中运行报告。
当我在Visual Studio中运行作业时似乎工作,但是一旦我尝试使用SQL Agent安排作业,它就无法连接到ODBC。这让我想到了一个权限问题,因为它在SSIS中运行它。我回到了SpiceWorks文件夹和数据库,并为Everyone设置了Full Control的权限,但它仍然不想连接。
因为,我一直试图让它发挥作用;一个小时前,我的制作和复制的SpiceWorks数据库被破坏了 - 不确定复制它是否发生了什么。整件事情非常......“挑剔”。我没有写任何东西,只是尝试连接并做两个简单的SELECT语句。
幸运的是,我有SpiceWorks数据库的备份副本,并且能够恢复它。
我尝试从数据库中获取数据时从未遇到过这么多麻烦!
答案 1 :(得分:0)
在Robert与Microsoft的协助下,解决方案是禁用SSIS项目属性页下的 Run64BitRuntime 选项(右键单击项目,选择属性,然后在配置属性>下;调试,将Run64BitRuntime设置为False),因为SQLite是32位。