如何解决将 Access 数据导入 SQL Server 的身份问题
Posted
技术标签:
【中文标题】如何解决将 Access 数据导入 SQL Server 的身份问题【英文标题】:How can I get round identity issues with Importing Access data into SQL Server 【发布时间】:2011-05-03 12:58:30 【问题描述】:我正在研究如何将我的数据从 Access 数据库迁移到 SQL Server(2008 R2 Express Edition)数据库。我假设使用 Task->Import 并以这种方式加载数据将是可行的方法,但我刚刚遇到了一个问题。
我正在导入的表中的数据设置了自动增量键,我必须在加载数据时对其进行维护。这是因为值存在(未强制执行)外键引用。我现在发现我必须在 SQL Server 中创建带有 IDENTITY 选项集的表,然后在导入之前对表使用 SET IDENTITY_INSERT 为 ON。实验表明,如果需要,脚本(我看不到)会失败。
我尝试了一个实验来手动创建做一些事情来显示表“Prospect”,第一次尝试是
SELECT * FROM OPENDATASOURCE('Microsoft.Jet.OLEDB.4.0','Datasource="C:\Users\Alan\Documents\db\backend.mdb";Jet OLEDB:System Database="C:\Users\Alan\Documents\db\Secured.mdw";User ID=Alan;Password=xxxxxx;')...Prospect;
但这失败了以下
链接服务器“(null)”的 OLE DB 提供程序“Microsoft.Jet.OLEDB.4.0”返回消息“未指定的错误”。 消息 7303,第 16 层,状态 1,第 1 行 无法为链接服务器“(null)”初始化 OLE DB 提供程序“Microsoft.Jet.OLEDB.4.0”的数据源对象。
在互联网上找到表明可以使用其他驱动程序解决此问题的声明,我天真地尝试了
SELECT * FROM OPENDATASOURCE('Microsoft.ACE.OLEDB.12.0','Datasource="C:\Users\Alan\Documents\db\beckendn.mdb";Jet OLEDB:System Database="C:\Users\Alan\Documents\db\Secured.mdw";User ID=Alan;Password=xxxxxx;')...Prospect;
但这也失败了...
链接服务器“(null)”的 OLE DB 提供程序“Microsoft.ACE.OLEDB.12.0”返回消息“找不到可安装的 ISAM。”。 消息 7303,第 16 层,状态 1,第 1 行 无法为链接服务器“(null)”初始化 OLE DB 提供程序“Microsoft.ACE.OLEDB.12.0”的数据源对象。
谁能告诉我我做错了什么
[注意:在仔细检查此消息时,我尝试再次将表导入新数据库,但无法复制条目。它看起来像字节类型的访问字段,其中非零值(复制的表包含零的大量条目,但没有一个非零一个)到类型的字段引起溢出错误] p >
【问题讨论】:
SQL Server 是安装在 32 位还是 64 位操作系统上? 【参考方案1】:尝试使用来自 Microsoft 的名为 SQL Server Migration Assistant 的免费软件工具: http://www.microsoft.com/downloads/en/details.aspx?FamilyID=5abe098d-c7e1-46c6-994a-09a2856eef0b&displaylang=en
【讨论】:
我试过这个,尽管在安装过程中更新了我的 Access 副本,但最初看起来不错。它非常适合指出数据库中的轻微不一致(例如,允许具有空值的主键)。但是,它实际上无法复制任何数据,这表明我可能希望将日志文件发送给产品支持。我也还没弄清楚如何重新运行保存的项目。 如果不是导入数据,那你的数据肯定有未更正的错误。我发现 SSMA 是一个非常好的工具,因为它允许您模拟导入并找出问题所在,这样您就可以在运行真正的导入之前纠正所有问题。我注意到它失败的唯一地方是某些类型的 Access/Jet/ACE 验证规则,这些规则很容易编辑以符合 SQL Server 格式。 是的,我发现了一个日期/时间字段,其中的时间看起来像是损坏的时间。 我实际上选择了一条替代路径,因为我希望尽可能少地思考,并且我意识到并不是所有的东西都需要直接导入(一些配置表是不同的)。所以我使用管理工作室创建一个空白数据库,然后使用它的任务/导入数据将 .mdb 文件导入其中。然后我在主数据库中有两个存储过程,它们复制数据并插入它(打开 IDENTIY_INSERT)。第一阶段(手动)10 分钟,第二阶段(自动)90 秒以上是关于如何解决将 Access 数据导入 SQL Server 的身份问题的主要内容,如果未能解决你的问题,请参考以下文章
如何通过编码将数据从 MS Access 导入 Sql Server [关闭]
ASP+ACCESS转换成ASP+SQL问题,请高手来帮忙!!