注:找这个解决方法很辛苦,有些笨拙,但还好,可以解决问题。适用于SQL Server 2000
原文出自:如何在链接服务器中使用 SQL Server 7.0 分布式查询来访问受保护的 Access 数据库(http://support.microsoft.com/?kbid=246255)
Microsoft SQL Server 7.0 版提供了通过使用 OLE DB 提供程序对不同数据库执行查询的功能。可以使用以下方式查询数据库:
- OpenQuery 或 OpenRowset Transact-SQL 函数。
- 或 -
- 具有四部分名称(包括链接服务器名称)的查询。
要将链接服务器设置为访问受保护的 Microsoft Access 数据库,请使用下列步骤:
- 使用注册表编辑器将注册表配置为使用正确的 Microsoft Access 工作组信息文件(.mdw 文件),然后向以下注册表项中添加工作组信息文件的完整路径名:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Jet\4.0\Engines\SystemDB
接下来,将其值设置为该文件的路径和名称,例如:
C:\...\MySystem.mdw
- 要打开注册表编辑器,请定位到“开始”按钮,然后单击“运行”。在“运行”对话框中,键入 Regedit,然后按“确定”。
- 在注册表编辑器中,定位到以下项:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Jet\4.0\Engines\
- 单击右键,然后依次选择“新建”、“字符串值”。
- 键入 SystemDb,然后按 Enter。
- 双击左窗格中的“SystemDb”项。
- 在“数值数据”文本框中,键入 .mdw 文件的完整路径。
- 关闭注册表编辑器。
- 执行 sp_addlinkedserver 存储过程创建链接服务器。指定 Microsoft.Jet.OLEDB.4.0 作为 provider_name,并指定 Microsoft Access .mdb 数据库文件的完整路径名作为 data_source。data_source 将在服务器而不是客户端上进行计算,因此该路径在服务器上必须有效。
- 执行 sp_addlinkedsrvlogin 存储过程创建从本地登录到 Microsoft Access 登录的登录映射。
查询受保护的 Microsoft Access 数据库的步骤
- 修改步骤 1(请参见“更多信息”部分)中显示的注册表项并添加 .mdw 文件的位置。
- 启动 Microsoft Visual Basic 6.0 并选择一个标准 EXE 项目。默认情况下会创建 Form1。
- 在“项目”菜单上,选择“引用”,然后将其中一个引用设置为“Microsoft ActiveX Data Objects 2.1 库”(或更高版本)。
- 在 Form1 上放置两个命令按钮和一个 DataGrid 控件(分别名为 Command1、Command2 和 DataGrid1)。
- 将以下代码粘贴到 Form1 的“声明”部分中:
注意:在运行此代码之前,必须将 User ID=<User ID> 和 password=<Strong Password> 更改为正确的值。请确保该用户 ID 具有在数据库中执行此操作所需的适当权限。
Dim adorst As New ADODB.Recordset
Dim adoconn As New ADODB.Connection
Private Sub Command1_Click()
Dim strConn As String
adoconn.Open "Provider=SQLOLEDB;Data Source=MyServer;Initial Catalog=master;User Id=<User ID>;Password=<Strong Password>;"
adoconn.Execute "EXEC sp_addlinkedserver 'SecuredJetLS', 'Jet 4.0', 'Microsoft.Jet.OLEDB.4.0', 'c:\.....\MyDatabase.mdb'"
adoconn.Execute "EXEC sp_addlinkedsrvlogin 'SecuredJetLS', FALSE, NULL, 'UserName', 'Password'"
adoconn.Close
MsgBox "Successful Setup"
End Sub
Private Sub Command2_Click()
Dim SQL As String
' Using OpenQuery syntax.
SQL = " Select a.* from OPENQUERY(SecuredJetLS, 'Select * from MyTable') a"
' Using OpenRowset syntax.
' SQL = "SELECT * From OpenRowset('Microsoft.Jet.OLEDB.4.0','c:\....\MyDatabase.mdb'; 'UserName';'Password', MyTable)"
' Using four-part name syntax.
' SQL = "Select * from SecuredJetLS...MyTable"
adoconn.CursorLocation = adUseClient
adoconn.Open "Provider=SQLOLEDB;Data Source=MyServer;Initial Catalog=master;User Id=<User ID>;Password=<Strong Password>;"
adorst.Open SQL, adoconn, adOpenStatic, adLockReadOnly
Set DataGrid1.DataSource = adorst
End Sub
Private Sub Form_Load()
Command1.Caption = "Setup Linked Server"
Command2.Caption = "Query Linked Server"
End Sub
Private Sub Form_Unload(Cancel As Integer)
adorst.Close
Set adorst = Nothing
adoconn.Close
Set adoconn = Nothing
End Sub
- 运行该项目。
- 单击“设置链接服务器”。如果将连接字符串中的 sp_addlinkedserver 和sp_addlinkedsrvlogin 修改为正确的参数,则可以成功创建链接服务器。
- 单击“查询链接服务器”。如果将连接字符串和查询文本修改为正确的参数,将使用您的数据填充 DataGrid 控件。
分享到:
相关推荐
熟悉SQL SERVER 2000的数据库管理员都知道,其DTS可以进行数据的导入导出,其实,我们也可以使用Transact-SQL语句进行导入导出操作。在Transact-SQL语句中,我们主要使用OpenDataSource函数、OPENROWSET 函数,关于...
Office数据库升迁 Access 导入 SQL Server,相信大家都知道 SQL-Server 数据库导入导出功能吧,但当你装了精简版的SQL-Server这个功能就会没有了,也就是无法实现数据库导入导出,那么怎么办 写SQL语句? Insert ...
熟悉SQL SERVER 2000的数据库管理员都知道,其DTS可以进行数据的导入导出,其实,我们也可以使用Transact-SQL语句进行导入导出操作。在Transact-SQL语句中,我们主要使用OpenDataSource函数、OPENROWSET 函数,关于...
如果是在SQL Server数据库之间进行数据导入导出时,并且不需要对数据进行复杂的检验,最好使用Transact-SQL方法进行处理,因为在SQL Server数据库之间进行数据操作时,SQL是非常快的。当然,如果要进行复杂的操作,如...
在向2009年告别之际,我们来回顾一下过去的一年中最受欢迎的SQL Server技巧,包括了OPENROWSET、FILESTREAM等函数的用法、密码工具介绍以及DBA日常工作建议等内容。 通过对这些精华文章的再次回顾,希望可以帮助您...
将Excel中的数据导入到SqlServer中的实现方法总结。还有一个简单的例子
exec sp_dropserver '链接名', 'droplogins ' --连接远程/局域网数据(openrowset/openquery/opendatasource) --1、openrowset --查询示例 select * from openrowset( 'SQLOLEDB ', 'sql服务器名 '; '用户名 '; '密码...
sqlserver调用OPENROWSET的方法[参照].pdf
本文实例讲述了C#实现Excel表数据导入Sql Server数据库中的方法。分享给大家供大家参考,具体如下: Excel表数据导入Sql Server数据库的方法很多,这里只是介绍了其中一种: 1、首先,我们要先在test数据库中新建一...
涉及安装和配置SQL Server、日期处理、字符处理、排序规则、编号处理、数据统计与汇总、分页处理、树形数据处理、数据导入与导出、作业、数据备份与还原、用户定义数据类型、数据库安全、系统表应用实例、SQL Server...
我们今天主要向大家讲述的是把SQL Server数据复制到的Access数据库中的实际操作步骤,把SQL Server数据库中的某些数据复制到的Access数据库中,其表的主要结构是相同的,不要提用openrowset,因为Access文件和SQL ...
利用下述方法,可以十分容易地实现SQL SERVER、ACCESS、EXCEL数据转换,详细说明如下: 一、SQL SERVER 和ACCESS的数据导入导出 常规的数据导入导出: 使用DTS向导迁移你的Access数据到SQL Server,你可以使用这些...
SQL Server 阻止了对组件 'Ad Hoc Distributed Queries'2009年08月28日 星期五 15:00SQL Server 阻止了对组件 'Ad Hoc Distributed Queries' 的 STATEMENT'OpenRowset/OpenDatasource' 的访问,因为此组件已作为此...
本书首先介绍SQL Server 2008的新功能,然后在更详实的示例代码的引导下全面深入地展开论述,讨论了如何编写复杂查询、构建各种数据结构以及提高应用程序性能,还讲述了如何管理高级脚本和数据库以及如何确定和...
[SQL]将Excel表数据导入SQL Server2005的几种方法归纳 数据库 2010-07-27 11:14:26 阅读201 评论0 字号:大中小 订阅 近日在巨轮着手车间负荷数据处理,反馈回来的数据是保存在Excel文件中的,我必须将其导入SQL ...
SQL SERVER2005下不能使用OpenRowset创建链接服务器的问题
本书首先介绍SQL Server 2008的新功能,然后在更详实的示例代码的引导下全面深入地展开论述,讨论了如何编写复杂查询、构建各种数据结构以及提高应用程序性能,还讲述了如何管理高级脚本和数据库以及如何确定和...
(1)打开”SQL Server 外围应用配置器”–>”功能的外围应用配置器” –>些服务默认是关闭的,若不打开,将不能进行导入操作。 在”Database Engine”下选择”即席远程查询”–>启用 openrowset 和opendatasource ...