程序笔记
随心而记

本文来自: Steve Luo's Blog   原文地址:http://www.steveluo.name/use-sql-access-to-mssql

 

们现建一个测试数据名data.mdb,添加2个表,并添加几个测试字段。

在脚本部,我看到几行: 

Create Database [data]
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登录帐号,当然如果你不需要创建的话,可以随便输入,然后把这里几行删除。不过记得给你的用户添加映射。

 

--[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”服务器角色”。如果是虚拟主机,那么就麻烦你的空间商帮你做这些吧。
本文来自: Steve Luo's Blog   原文地址:http://www.steveluo.name/use-sql-access-to-mssql
posted on 2008-10-16 19:09    阅读(589)  评论(0编辑  收藏  举报