如何将ACCESS数据库导入到SQL SERVER?

如何将ACCESS数据库导入到SQL SERVER?,第1张

A1 安装 SQLServer

A2 建立 SQLServer 数据

在sqlserver数据库的“企业管理器”中新建一个数据库,命名为sample,建好后在sqlserver安装目录\MSSQL\Data

文件夹下会生成sample_DataMDF、sample_LogLDF两个文件

具体步骤:依次展开sql server 组 ==》右击数据库==》新建数据库==》命名sample==》确定

A3 导入表结构

a 建立表结构脚本 –

执行SqlSvrTblbat从samplemdb抽取表结构,samplemdb一定是当前型号的数据库,即执行makemdb、getmdb后获取的,

注:SqlSvrTblbat可以在任意目录执行,执行时会出现如下信息(此报错信息可以忽略,该命令执行时间比较长):

javasqlSQLException: [Microsoft][ODBC Microsoft Access Driver] 不能读取记录;

在 'MSysQueries' 上没有读取数据权限。

at

sunjdbcodbcJdbcOdbccreateSQLException(JdbcOdbcjava:6026)

……

b 读入表结构脚本

在sqlserver数据库的“查询分析器”界面中读入上一步生成的SqlSvrTblsql脚本,生成数据库结构

具体步骤:打开上一步生成的SqlSvrTblsql脚本===》点击工具栏的“执行查询”按钮(或 按F5 执行)

注意:类似警告信息可忽略,错误要查明原因。

警告: 已创建表 'Department',但其最大行大小(17573)超过了每行的最大字节数(8060)。如果结果行长度超过 8060

字节,则此表中行的 INSERT 或 UPDATE 将失败。

A4 导入数据

使用sqlserver的“导入和导出数据”功能,按步骤将access数据库中的数据导入到sqlserver数据库的sample数据库中

具体步骤:运行“导入导出数据”工具==》下一步 ==》选择 数据源:Microsoft

Access

==》在“文件名”处,浏览打开需要导入的数据源 samplemdb ==》下一步

==》选择目的数据库:在“数据库”下拉列表中选择之前建好的sample

==》一直“下一步” 到“选择源表和视图”将所有要导入的表和视图

“勾选” 执行“下一步” ==》点“下一步”==》点“完成”开始导入

注意:如果在导入完成后报如下错误提示,说明导入有错

错误提示:

在目的的行号为1处出错到目前为止,在改任务中遇到错误数:1

插入错误、列58("Birthday",DBTYPE_DBTIMESTAMP)、状态6:数据溢出。

对于造型说明无效的字符值。

A5 NHS 服务器连接数据库

a 将nhssystemmdb 手工拷到本机的%JXCRUN%\Bin文件夹中

b用客户端登录软件。

如果出现“admin”用户不存在,在sqlserver中用查询管理器查询“select from sysuser ”

看结果跟access中数据库中sysuser中数据是否匹配。如果不匹配说明数据库有误,需要更换数据库。

如果出现sa用户密码错误,没有连接上,先关掉软件。在sqlserver企业管理器中,打开“安全性”==》“登录”==》右击sa更改密码即可。

在没有插网线的情况下,如果出现“不能连接SqlServer 或SqlServer

拒绝连接”的错误,将网线插上试试看是否可以。如果还不行,查看SqlServer是否启动。

一使用SQL Server的数据库导入/导出功能。首先在要导入到的SQL Srever数据库上右键,选择“任务”,然后选择“导入数据”,按照提示下一步直到完成即可成功将Access数据库导入到SQL Server数据库中,此种方法如果SQLServer数据库中没有相应的数据表,则会自动创建改表,但是约束等表关系不会同步导入,如果SQLServer中有相同名称并且属性相同的数据表,则会直接将Access数据库中的对应表的数据导入。

在导入过程中,还可以通过SQL语句指定要导入的数据。

使用这种方法一般会出现以下两种错误:

(1)无法建立数据流连接

为连接管理器“{FFBF32BF-EE84-4F94-ACDB-D4C5AC4C2941}”指定的连接类型“OLEDB”未被识别为有效的连接管理器类型。当视图创建未知连接类型的连接管理器时会返回此错误。请检查连接类型名称的拼写是否正确。

(2)无法连接源组件

找不到连接“SourceConnectionOLEDB”。如果找不到特定的连接元素,Connections集合将发生此错误。

其他信息:

找不到连接“SourceConnectionOLEDB”。如果找不到特定的连接元素,Connections集合将发生此错误。

({0DE0CDBB-BCD6-4261-A118-B0CB22DA3C4A})

具体解决办法是打开SqlServerConfiguration Manage,右键单击“SqlServer Integration Services”,选择“属性”,将登录身份修改为“LocalSystem(本地系统)”,然后重新启动该服务。

二使用Access数据库的数据升迁功能。首先点击“工具”菜单,选择“数据库实用工具”,选择“升迁向导”,这是会提示该功能尚未安装,需要安装XXX之类的信息,点击安装,等待安装成功后,即可弹出“升迁向导”对话框,按照提示下一步直到完成,即可将Access数据库导入到SQLServer数据库中。使用此种方法的好处是Access数据库中的所有数据以及表关系都会被原样导入到SQL Server数据库中。

三使用SQL语句批量导入。1当只需要导入Access数据库中的指定表以及指定表的指定列到SQLServer数据库中时,前面的两种方法就显得不那么方便了。而使用SQL语句导入可以方便快捷的导入需要的数据。具体代码如下

(1)SQLServe数据库中已存在要导入数据的表(这样可以事先按照要导入的Access数据库的数据表创建好需要的关系)

Insert intotable(tid,tname)SELECT id,nameFROM OPENDATASOURCE ('MicrosoftJetOLEDB40','Data Source="c:\Shopmdb";User ID=Admin;Password=' )ShopGoods

(2)SQLServer数据库中不存在要存储导入数据的表(使用下面的代码会直接在SQL Server数据库中创建相应的数据表)

SELECTid,nameINTO table(tid,tname)FROM OPENDATASOURCE ('MicrosoftJetOLEDB40','Data Source="c:\Shopmdb";User ID=Admin;Password=' )ShopGoods

其中,table是SQL Server中用来存储Access导入数据的数据表名,ShopGoods是指要导入到SQLServer中的Access数据库中的数据表名。前面的三个点不能省略。

但使用这种方法时有可能出现以下错误:

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

具体解决办法是使用如下语句启用“'AdHoc Distributed Querie”

EXECsp_configure 'show advanced options', 1 GO RECONFIGURE GO EXEC sp_configure 'AdHoc Distributed Queries', 1 GO RECONFIGURE GO

ACCESS数据库是个文件来的,不用配置的了,在解决方案中添加你创建的ACCESS数据文件中,系统会提示你是否创建App_Data目录并将ACCESS文件添加到此目录中,选择"是"就可以了,再在程序中创建连接到此文件的连接字符串即可(此文后面有在webconfig中配置的方法)例如

String con = "PROVIDER=MicrosoftJetOLEDB40;DATA Source=" + SystemWebHttpContextCurrentServerMapPath("App_Data/YouAccessDatamdb");

然后就像用其它数据库一样用了

完全示例:

C#连接Access程序代码:

usingSystemData;

usingSystemDataOleDb; stringstrConnection="Provider=MicrosoftJetOleDb40;";

strConnection+=@"DataSource=C:\ASPNET\YouAccessDatamdb";

OleDbConnectionobjConnection=newOleDbConnection(strConnection);

//或

//stringstrConnection = "PROVIDER=MicrosoftJetOLEDB40;DATA Source=" + SystemWebHttpContextCurrentServerMapPath("App_Data/YouAccessDatamdb");

objConnectionOpen();

objConnectionClose();

解释:

C#连接Access数据库需要导入额外的命名空间,所以有了最前面的两条using命令,这是必不可少的!

strConnection这个变量里存放的是连接数据库所需要的连接字符串,他指定了要使用的数据提供者和要使用的数据源。

“Provider=MicrosoftJetOleDb40;”是指数据提供者,这里使用的是Microsoft Jet引擎,也就是Access中的数据引擎,aspnet就是靠这个和Access的数据库连接的。

“Data Source=C:\BegASPNET\Northwindmdb”是指明数据源的位置,他的标准形式是“Data Source=MyDrive:MyPath\MyFileMDB”。

PS:

1“+=”后面的“@”符号是防止将后面字符串中的“\”解析为转义字符。

2如果要连接的数据库文件和当前文件在同一个目录下,还可以使用如下的方法连接:

strConnection+="Data Source=";strConnection+=MapPath("Northwindmdb");

3要注意连接字符串中的参数之间要用分号来分隔。

“OleDbConnection objConnection=new OleDbConnection(strConnection);”这一句是利用定义好的连接字符串来建立了一个链接对象,以后对数据库的操作我们都要和这个对象打交道。

“objConnectionOpen();”这用来打开连接。至此,与Access数据库的连接完成。

再来一个示例:

using SystemDataOleDb;

using SystemData;

//连接指定的Access数据库

String ConnString =@"Provider=MicrosoftJetOLEDB40;Data Source=App_Data\YouAccessDatamdb";

//SQL语句

String SQLString ="select from TestDB";

//创建一个OleDbConnection对象

SystemDataOleDbOleDbConnection OleDBConn1 = new SystemDataOleDbOleDbConnection(ConnString);

//创建一个DataSet对象

DataSet DataSet1 = new DataSet();

//创建一个OleDbDataAdapter对象

SystemDataOleDbOleDbDataAdapter OleDbDataAdapter1 = new SystemDataOleDbOleDbDataAdapter(SQLString,OleDBConn1);

//打开连接

OleDBConn1Open();

//通过OleDbDataAdapter对象填充数据集

OleDbDataAdapter1。Fill(DataSet1,"TT");

另外是在webconfig中如何使用access数据库连接了,估计就是你所要的了:

一: 一种是通过使用 DataDirectory 目录的方法,但是 access 文件必须放在 ASPNET 的特殊目录中,如 app_data ;

<addname="access"connectionString="Provider=MicrosoftJetOledb40;

Data Source=|DataDirectory|dbmdb"/>

二:另外一种方法则比较灵活,具体方法是:在 webconfig 文件中保存两个字符串,一个是驱动字符串,另一个是 access 文件的相对路径;

使用时用 ServerMapPath 来获取绝对路径然后组合出来的连接字符串就可以使用了;

在webconfig中的写法如下:

<appSettings>

<add key="ConnStr" value="provider=microsoftjetoledb40;data source="/>

<add key="dbPath" value="/AppData/dbmdb"/>

</appSettings>

程序中的数据访问类中我把"ConnStr"和"dbPath"取出来再连接成一个字符串

代码如下:

/// <summary>

/// (静态)返回数据库连接串。

/// </summary>

protected static string GetConnString()

{

return

SystemConfigurationConfigurationSettingsAppSettings["ConnStr"]+ SystemWebHttpContextCurrentServerMapPath(SystemConfigurationConfigurationSettingsAppSettings["dbPath"])+";";

}

三:直接写数据库的物理路径

<connectionStrings>

<add name="qxConnectionString" connectionString="Provider=MicrosoftJetOLEDB40;Data Source=D:\Inetpub\wwwroot\web\App_Data\dbmdb"

providerName="SystemDataOleDb" />

</connectionStrings>

注意:Data Source字符的写法一定要正确,否则可能会出现“找不到可安装的ISAM”的错误。

创建新数据库文件的方法有很多。主要有两种方法:一、空白数据库,直接结构与数据同时进行输入(如果果建立完成后再修改结构,原内容可能丢失);二、结构和数据分两步进行了操作(推荐);那么第一种方法注意在ACCESS主窗口中区域左上角的"空白数据库"按钮。该按钮和"文件"菜单中的"新建"按钮都可以展现主窗口右侧的"空白数据库"区域。单击二者中的任何一个按钮都可以转换到主窗口,如图右所示。" 空白数据库"区域代替了主窗口中的最近打开的数据库列表。

在"空白数据库"区域的"文件名"框中输入新数据库的名称。默认情况下, Access 会在一个最近使用Access 打开的Windows 文件夹中创建新的数据库文件。如需使用不同的文件夹,可以使用"文件名"右侧的文件夹图标进行浏览并将数据库创建在所需的位置。

Access 为新数据库提供了Dat abaselaccdb 的默认名称。

需确保提供的名称可以识别。在图右中,新的数据库命名为教务信息管理accdb (扩展名accdb 为可选项,这是因为在未提供扩展名时, Access 将自动提供扩展名)。创建完新的数据库后, Access 将自动打开该数据库。

图右 在"空白数据库" 区域的"文件名"框中输入新数据库的名称

ACCESS数据库 Microsoft Access是一种关系式数据库,关系式数据库由一系列表组成,表又由一系列行和列组成,每一行是一个记录,每一列是一个字段,每个字段有一个字段名,字段名在一个表中不能重复。图1是一个“产品”表的例子。“产品”表由10个记录组成,一个记录占一行,每一个记录由产品ID、产品名称、库存量、订货量、单价和折扣率6个字段组成。“产品ID”是字段名,其下面的1,2等是字段的值。

  表与表之间可以建立关系(或称关联,连接),以便查询相关联的信息。Access数据库以文件形式保存,文件的扩展名是MDB。

  Access 数据库由七种对象组成,它们是表、查询、窗体、报表、宏、页和模块。

  表(Table) ——表是数据库的基本对象,是创建其他5种对象的基础。表由记录组成,记录由字段组成,表用来存贮数据库的数据,故又称数据表。

  查询(Query)——查询可以按索引快速查找到需要的记录,按要求筛选记录并能连接若干个表的字段组成新表。

  窗体(Form)——窗体提供了一种方便的浏览、输入及更改数据的窗口。还可以创建子窗体显示相关联的表的内容。窗体也称表单。

  报表(Report)——报表的功能是将数据库中的数据分类汇总,然后打印出来,以便分析。

  宏(Macro)——宏相当于DOS中的批处理,用来自动执行一系列操作。Access列出了一些常用的操作供用户选择,使用起来十分方便。

  模块(Module)——模块的功能与宏类似,但它定义的操作比宏更精细和复杂,用户可以根据自己的需要编写程序。模块使用Visual Basic编程。

  页——是一种特殊的直接连接到数据库中数据的一种WEB页。通过数据访问页将数据发布到Internet 或Intranet上,并可以适用浏览器进行数据的维护和操作。

  ACCESS 缺点:

  安全性不够,加了用户级密码容易破解,如果做为服务器的话,对服务器要求很高,否则容易造成 MDB 损坏

  并发数255,但是对高强度操作适应性差,如果服务器不够好,网络不够好,编程的方法不够好,多人同时访问就能导致 MDB 损坏

  不能将 VBA 代码开发的软件系统直接编译成 EXE 可执行文件,不能脱离 ACCESS 或者 ACCESS RUNTIME 环境,该环境相对其他软件体积较大(50M左右)。

  每个数据库文件最大限制只有2G,对于大型网站显然不能够胜任。

1前提是每个用户都不能使用独占的方式打开。

2共享数据库 (MDB) 注释 本主题中的信息仅适用于 Microsoft Access 数据库 (mdb)。

3若要从另一台计算机上访问共享的 Microsoft Access 数据库, 另一台计算机上必 须具备下列条件之一:Access 的本地安装、Access 的网络安装(逐个用户地授 权)或运行时应用程序。

4设置共享文件夹。

5有关共享文件夹的详细信息,请使用 Microsoft Windows 的“帮助索引”。

6如果 共享文件夹位于网络服务器上,则可能需要网络管理员的协助。

7将 Microsoft Access 数据库复制到一个共享文件夹。 确保 Access 数据库设为在共享方式下打开,这是默认设置。 操作方法: 在“工具”菜单上,单击“选项” 。

8在“高级”选项卡上“默认打开模式”下,单击“共享” 。

9注释:共享数据库之前,应该删除文件中可能存储的任何个人信息。

注释 :本主题中的信息仅适用于 Microsoft Access 数据库 (mdb)。

10用于共享数据的方法 在多用户环境下共享数据的方法有多种。

11共享整个 Access 数据库 可以将整个 Access 数据库放在网络服务器或共享文 件夹中。

这是实现整个 Access 数据库共享的最简单的方法。

12每个用户都能共享 数据,并能使用相同的窗体、报表、查询、宏和模块。

13如果要让每个用户都以相 同的方式使用 Access 数据库,或者不能支持其他用户创建其自己的对象,则 可以采取这种策略。

14仅共享 Access 数据库中的表 可以只将表放在网络服务器上,而将其他数据库 对象都留在用户的计算机上。这种情况下,Access 数据库的性能会有所提高, 因为只有数据是通过网络发送的。当将一个数据库拆分为后端(表)和前端时, 用户可以在不影响别人的情况下,对其自己的前端数据库中的窗体、报表和其他 对象进行自定义。 在 Internet 上共享 Access 数据库对象或数据访问页 可以将一个或多个数据库 或者创建数据访问页, 对象输出为静态的 HTML 或服务器生成的 HTML 格式,

DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
网站模板库 » 如何将ACCESS数据库导入到SQL SERVER?

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情