网络编程
位置:首页>> 网络编程>> 数据库>> 用 SQL 脚本将 Access 导入 MSSQL 2000/2005 方法

用 SQL 脚本将 Access 导入 MSSQL 2000/2005 方法

  发布时间:2008-10-22 13:51:00 

标签:导入,access,MSSQL,sql,脚本

上次介绍了Access 导入 MSSQL 2000/2005 数据库工具,不过,在使用这个工具时还是有一些地方需要注意的,我把整个导入过程记录了下来,算是笔记吧,希望对其他人有所帮助。

由于CooSel2.0 CreateSQL这个工具相当不错,能够将Access的数据库表的结构转换成SQL Server的更加复杂的结构,也就是数据库的升迁,你不必担心由于Access的结构与SQL Server的不同而产生错误!因此,我们不需要做任何手工改动与设置,直接使用该工具生成SQL脚本后,放到SQL Server中执行查询即可。当然该工具还提供了生成ASP文件以及直接导入SQL Server方式,笔者推荐使用SQL脚本,这样便于修改脚本内容。

我想在SQL Server中执行SQL脚本应该就不用再说了吧,如果这个还不会,那你就应该在虚拟机里多操练操练,服务器可不是闹着玩的,等你熟悉了SQL Server的操作方式后,再看下面的内容。

我们尝试来分析一下使用CooSel2.0 CreateSQL生成的SQL脚本,通过修改,才能符合我们的需求(比如仅创建数据库而不添加用户)。我们现在创建一个测试数据名为data.mdb,添加2个表,并添加几个测试字段。

在脚本头部,我们看到这几行:

Create Database [data]
go
use [data]
go


显然,这里是在SQL Server中创建一个数据库,名为data,然后使用这个数据库。如果我们已经自行创建好了,可以把开头的2行去掉,只留下use这2行就可以了。

exec sp_addlogin 'data_login','123','data'
go
exec sp_adduser 'data_login','data_login','db_owner'
go


这里是创建SQL登录帐号,这些是在你用CooSel2.0 CreateSQL创建脚本时输入的,当然如果你不需要创建的话,可以随便输入,然后把这里几行删除。不过记得给你的用户添加映射。

--[data]:

CREATE TABLE [dbo].[data] (
[ID] integer IDENTITY (1,1) not null,
[字段1] nvarchar(255) null ,
[字段2] integer null
) ON [Primary]
go
–这里可能还有其他表
–[data]:

Alter TABLE [dbo].[data] WITH NOCHECK ADD CONSTRAINT [PK_data] Primary Key Clustered ([ID] ) ON [Primary]
go
–这里可能还有其他表


从这里开始就正式开始创建数据库中的表结构了,这些我们不需要改动,如果你已经创建好了结构,那么可以把这块也删除了。在Access数据库中有几个表,就会有几块这样的语句。

--[data]:
SET IDENTITY_INSERT [dbo].[data] ON
go

INSERT INTO [dbo].[data] ([ID],[字段1],[字段2])
SELECT [ID],[字段1],[字段2]
FROM OPENDATASOURCE(’Microsoft.Jet.OLEDB.4.0′,’Data Source=”C:\data.mdb”‘)…[data]
go

SET IDENTITY_INSERT [dbo].[data] Off
go
–这里可能还有其他表


这里是插入数据的地方,会读取Access数据库中每个表中的数据然后插入到SQL Server中的相应的表中。其中Data Source=你Access在硬盘中的位置,如果是虚拟主机的话,用个ASP的探针就能很容易看到自己站点所在目录了。

好了,一个完整的SQL脚本我们就全部分析完了,你可以根据你的情况来删除不需要的部分。

如果你在执行SQL脚本以后,出现如下错误:

SQL Server 2005:
SQL Server 阻止了对组件 'Ad Hoc Distributed Queries' 的 STATEMENT'OpenRowset/OpenDatasource'
的访问,因为此组件已作为此服务器安全配置的一部分而被关闭。系统管理员可以通过使用 sp_configure 启用
'Ad Hoc Distributed Queries'。有关启用 'Ad Hoc Distributed Queries' 的详细信息,请参阅 SQL
Server 联机丛书中的 "外围应用配置器"。


那么说明你的SQL Server的Ad Hoc Distributed Queries没有开启,需要在你的SQL脚本顶部添加:

EXEC sp_configure 'show advanced options', 1;
GO
RECONFIGURE;
GO
EXEC sp_configure 'Ad Hoc Distributed Queries', 1;
GO
RECONFIGURE;
GO


再次执行你的SQL脚本,如果你是使用的最高权限帐号(Windwos模式或SA帐号),应该是成功的。
如果提示:

服务器: 消息 15247,级别 16,状态 1,过程 sp_configure,行 170
用户没有执行此操作的权限。
服务器: 消息 5812,级别 14,状态 1,行 1
您没有运行 RECONFIGURE 语句的权限。
服务器: 消息 15123,级别 16,状态 1,过程 sp_configure,行 79
配置选项 'Ad Hoc Distributed Queries' 不存在,也可能是高级选项。

SQL Server 2000提示:
已拒绝对 OLE DB 提供程序 'Microsoft.Jet.OLEDB.4.0' 的特殊访问。必须通过链接服务器来访问此提供程序。


说明你的帐号权限不够,需要SQL Server用户具用SystemAdministrators”服务器角色”。如果是虚拟主机,那么就麻烦你的空间商帮你做这些吧。

0
投稿

猜你喜欢

  • 在Firefox推出3.5后,他增加了许多新的支持,今天抽空将他们整理一下。属性image-renderingtext-renderingi
  • 项目有时要用一些Ajax的效果,因为比较简单,也就没有去用什么Ajax.net之类的东西,手写代码也就实现了。、第二天,有人反馈错误;说是只
  • 如果在 Access 数据库中删除数据或对象,或者在 Access 项目中删除对象,Access 数据库或 Access 项目可能会产生碎片
  • 以下是menu.asp代码 程序代码 <% '-----------------------------------
  • 原始结构:Column1 Column2----------- ----------1 A1 B2 C2 D2 E3 F查询效果:Colum
  • 随着互联网的飞速发展,很多主页都是越做越漂亮、越来越有个性。如果你是一个资深的网虫不会没有自己的主页吧!下面小弟就来谈谈如何使你的网上“小窝
  • 在html里的每一个标签都有其自身的意义,而H标签作为标题标签,它的意义更是至关重要。对于H标签的用法特别是h1的用法一直是个争议的问题,也
  • 一、基本思想本文思想是基于用asp和DOM来读取和存储XML数据,并利用XML数据来存储留言信息,达到同用数据库存储数据的功能。二、XML留
  • 制作网页可说是易学难精,因此,不断吸收经验可弥补不足,以下列出的50个制作主页的独门招数可帮助你尽快成为高手,哈哈!1、让读者有理由逗留。要
  • Cookie是一种小型文本文件,存储在用户计算机中,用于跟踪用户在互联网上的活动。Cookie通常由网站创建,以便记住用户的偏好和登录状态,
  • 在动态删除iframe时,同时把iframe里嵌套的iframe 删除,遇到了这个问题。本来之前都没报错,突然昨天他们嵌套了一个 跨域 的网
  • 加密解密字符串的asp函数,如用于ASP链接地址栏参数的加密,看代码就明白。比如:show.asp?id=DB26538FA54C70E1E
  • 为什么我把自己机子上的数据库备份文件往另一台机子上还原不成功?可能是你在Restore的对话框中选项不正确。Restore 有三个选项,分别
  •  asp使用fso读取驱动器信息:<%vv=drive()response.write vv funct
  • 在MySQL中,一个字符串中,如果某个序列具有特殊的含义,则这个序列以反斜线符号(‘\’)开头,称为转义字符。常见的转义字符:\0 ASCI
  • Oracle客户端精简后的文件,可以实现数据库的通信,直接和软件打包: 第一步:拷贝文件:主要是四个目录:bin,nls,oracore,N
  • 来自某个nb招聘的题目:请给Array本地对象增加一个原型方法,它的用途是删除数组条目中重复的条目(可能有多个),返回值是一个包含被删除的重
  • 前两天看的时候,所用的歌曲地址加密方式已变更。将以前的发出来供大家赏玩。解密函数是从flash里面反编译出来的,加密函数是自己根据解密函数写
  • 问题:如何在报表中每隔N行显示一条粗线如何为报表增加一个行号列?回答:1、在设计模式里打开该报表,在报表主体里面加一个TextBox,把Na
  • 去年淘宝做了个“胖子”项目,就是把网页的默认宽度从780提升到了950。也就是说,基本放弃了800×600的用户(没有完全放弃,如果你仔细研
手机版 网络编程 asp之家 www.aspxhome.com