将MS SQL Server 2005 View与MS Access 2003查询连接时出错

时间:2011-10-31 17:43:13

标签: sql sql-server ms-access connection-string

问题:无法找到可安装的ISAM

我正在从MS Access执行查询,以便从MS SQL Server 2005中提取信息。 当我尝试直接打开到表的链接ODBC连接时,它打开没有问题。但是,当我尝试创建无DSN连接时,我收到ISAM错误。

当我尝试执行SELECT查询时出现以下错误:

  

“无法找到可安装的ISAM。”

我正在使用的代码如下:

SELECT * FROM [Driver={SQL Server};
   Server=Server_Name\Instance;
   Database=Database_Name;
   Integrated Security=SSPI;].[My_View_Name]

MS Access的帮助提供以下信息:

  

无法找到可安装的ISAM。 (错误3170)   找不到可安装ISAM文件的DLL。   链接外部表(ODBC或Microsoft除外)需要此文件   Jet数据库表)。所有ISAM驱动程序的位置是   在Microsoft®Windows®注册表中维护。这些条目是   安装应用程序时自动创建。如果你改变了   这些驱动程序的位置,您需要更正您的应用程序   安装程序以反映此更改并在中进行正确的输入   登记处。

     

可能的原因:

     

+ 注册表中的条目无效。例如,如果您使用的是Paradox外部数据库和Paradox,则会发生此错误   入口指向不存在的目录或驱动程序。退出   应用程序,更正Windows注册表,并尝试操作   再次。

     

+ 注册表中的一个条目指向网络驱动器,并且该网络未连接。确保网络可用,并且   然后再次尝试操作。

我还发现了微软的KB文章,解释了何时以及如何处理这些文章。但是,如果它们实际上源于另一类问题,我们就不清楚它们了。

例如:

283881209805告诉我,ISAM的目的是告诉我如何格式化数据,MS Access的原生格式。 (但我不想以其他方式格式化它,其他格式不列出我认为合适的格式 - 呃)

和,90111告诉我们.ini文件中的驱动程序可能指向MS Access 2.0中错误的位置,版本97 +中不再存在。

奇怪的是我为另一个表设置了无DNS设置,工作正常。我在这里看到的唯一区别是数据库对象的默认命名不是标准的,所以我可能没有在我的语法中正确引用模式。

  • 我在这里做错了什么?它真的是语法错误吗?*
  • 是否需要在服务器端进行“查看”权限考虑?

1 个答案:

答案 0 :(得分:2)

尝试在连接字符串的开头添加ODBC;并删除视图名称周围的括号:

SELECT * FROM [ODBC;Driver={SQL Server};
Server=Server_Name\Instance;
Database=Database_Name;
Integrated Security=SSPI;].My_View_Name