小编Mar*_*ATS的帖子

如何解决"无法找到可安装的ISAM".OLE DB提供程序"Microsoft.ACE.OLEDB.12.0"的错误

我正在尝试使用带有"Microsoft.ACE.OLEDB.12.0"OLE DB提供程序的T-SQL OpenRowset()命令将Excel 2007(.xlsx)文件中的数据导入SQL Server 2008,并且我得到一个持久的"找不到可安装的ISAM"错误.所有硬件都是32位.

[修订于2012年1月10日,试图更加集中于异常]

以下T-SQL语句产生错误:

SELECT * FROM OPENROWSET('Microsoft.ACE.OLEDB.12.0',
    'Data Source=C:\work\TestData.xlsx;Extended Properties="Excel 12.0 XML;HDR=YES"',
    'SELECT * FROM [Sheet1$]'
)
Run Code Online (Sandbox Code Playgroud)

如果我以"Excel 97-2003"格式(.xls)保存Excel文件并使用较旧的Microsoft.Jet.OLEDB.4.0提供程序导入数据,它可以正常工作.这让我觉得这不是安全或其他环境问题.

SELECT * FROM OPENROWSET('Microsoft.Jet.OLEDB.4.0', 
    'Excel 8.0;Database=C:\work\TestData.xls;HDR=YES', 
    'SELECT * FROM [Sheet1$]'
)
Run Code Online (Sandbox Code Playgroud)

但是,当我尝试使用Microsoft.ACE.OLEDB.12.0提供程序的*.xls文件时,它应该向后兼容*.xls格式,它再次失败并出现相同的错误:

SELECT * FROM OPENROWSET('Microsoft.ACE.OLEDB.12.0',
    'Data Source=C:\work\TestData.xls;Extended Properties="Excel 8.0;HDR=YES";', 
    'SELECT * FROM [Sheet1$]'
)
Run Code Online (Sandbox Code Playgroud)

另外,有趣的是,当我使用SSMS"导入数据..."向导时,它工作正常.我将导入数据向导输出保存为SSIS包,并查看SSIS文件以试图弄清楚它是如何工作的,并且它已成功使用Microsoft.ACE.OLEDB.12.0提供程序.这是SSIS包中的连接字符串:

<DTS:Property DTS:Name="ConnectionString">
Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\work\TestData.xlsx;Extended Properties="Excel 12.0 XML;HDR=YES";
</DTS:Property>
Run Code Online (Sandbox Code Playgroud)

我还完成了相关的SQL Server配置以允许OPENROWSET分布式查询:

sp_configure 'show advanced options', 1
reconfigure
GO
sp_configure 'Ad Hoc Distributed Queries', 1
reconfigure
GO
Run Code Online (Sandbox Code Playgroud)

如果我还设置了以下*sp_MSset_oledb_prop*值(我在某个帖子中找到)...

USE [master] 
GO 
EXEC …
Run Code Online (Sandbox Code Playgroud)

t-sql oledb excel-2007 isam openrowset

18
推荐指数
1
解决办法
5万
查看次数

DBeaver SQL Editor:如何仅在当前窗口中搜索/替换?

在DBeaver SQL编辑器中,有没有办法只在当前脚本窗口中搜索和替换?看起来这应该是简单明了的,但对我来说事实并非如此。

我的搜索对话框如下所示。我不知道如何将范围限制为当前窗口(假设我在不同的选项卡中打开了多个脚本)。我也不明白为什么“活动编辑器中的资源”选项被禁用。我已经在“工作集”下面进行了探索,但也不清楚如何仅指定当前窗口。

DBeaver 搜索对话框

我在 Windows 10 上运行 DBeaver v.21.0.1。

DBeaver 的文件搜索文档页面没有解释这些搜索范围选项。

DBeaver 是一个很棒的工具,但有时却很迟钝!

editor dbeaver

8
推荐指数
1
解决办法
1万
查看次数

实体框架4.1数据库首先不向DbContext T4生成的类添加主键

我刚刚开始使用Entity Framework 4.1,尝试"数据库优先"模式.当EF使用"ADO.Net DbContext Generator"生成Model类时,它不应该使用[Key]属性识别类的主键吗?没有它,它似乎与T4 MVCScaffolding不兼容.

以下是详细信息:

使用实体数据模型设计器GUI,我从现有数据库向模型添加了一个简单的"国家/地区"表.GUI正确地将名为"PK"的单个整数身份密钥字段标识为我的主键.(唉!我是新用户所以我无法添加屏幕截图.我已经在下面添加了CSDL.)但是,当EF使用"ADO.Net DbContext Generator"生成代码时,它无法识别PK field作为生成的类中的关键字段(请参阅下面的代码摘录).

"国家"表的CSDL:

<edmx:ConceptualModels>
  <Schema Namespace="EpiDataModel" Alias="Self" xmlns:annotation="http://schemas.microsoft.com/ado/2009/02/edm/annotation" xmlns="http://schemas.microsoft.com/ado/2008/09/edm">
    <EntityContainer Name="EpiModelEntities" annotation:LazyLoadingEnabled="true">
      <EntitySet Name="countries" EntityType="EpiDataModel.country" />
    </EntityContainer>
    <EntityType Name="country">
      <Key>
        <PropertyRef Name="PK" />
      </Key>
      <Property Name="PK" Type="Int32" Nullable="false" annotation:StoreGeneratedPattern="Identity" />
      <Property Name="Abbreviation" Type="String" Nullable="false" MaxLength="200" Unicode="false" FixedLength="false" />
      <Property Name="Name" Type="String" MaxLength="1024" Unicode="false" FixedLength="false" />
      <Property Name="Description" Type="String" MaxLength="1024" Unicode="false" FixedLength="false" />
      <Property Name="Sequence" Type="Int32" />
    </EntityType>
  </Schema>
</edmx:ConceptualModels>
Run Code Online (Sandbox Code Playgroud)

这是自动生成的代码:

//------------------------------------------------------------------------------
// <auto-generated>
//    This code was generated from a template. …
Run Code Online (Sandbox Code Playgroud)

primary-key entity-framework-4.1 ef-database-first dbcontext asp.net-mvc-scaffolding

7
推荐指数
1
解决办法
6688
查看次数