注:找这个解决方法很辛苦,有些笨拙,但还好,可以解决问题。适用于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 数据库上右键,选择“任务”,然后选择“导入数据”,按照提示下一步直到完成即可成功将 Access 数据库导入到 SQL Server 数据库中。此种方法如果 SQL Server 数据库中没有相应的数据...
使用Transact-SQL语句可以将ACCESS数据导入到SQL Server,步骤如下: 1. 在SQL Server中查询ACCESS数据: ``` SELECT * FROM OpenDataSource( 'Microsoft.Jet.OLEDB.4.0', 'Data Source="c:\DB.mdb";User ID=Admin;...
SQL Server数据库导入导出技术是数据库管理员和开发人员在整合数据、迁移数据库或进行数据备份时常用的一种功能。SQL Server提供了多种方式进行数据导入和导出,以满足不同场景的需求。下面我们将详细介绍这些方法...
3. **Transact-SQL与OPENROWSET函数**:在SQL Server中,可以通过Transact-SQL查询数据,并使用OPENROWSET函数将结果集转换为文本或XML格式,然后利用外部程序(如Word)进行处理。例如,可以使用BULK INSERT或...
首先,导入Excel数据到SQL Server通常有几种方法:使用SQL Server Management Studio (SSMS) 的“导入和导出数据”向导、T-SQL语句(如BULK INSERT或OPENROWSET函数)以及编写存储过程。标题提到的“通过自动编写...
这些操作利用了SQL Server与Access之间的ODBC连接,OpenRowSet和OpenDataSource函数允许我们跨越不同数据库平台,执行数据操作。 最后,还有一项操作是使用BCP(Bulk Copy Program)工具,它可以直接从命令行执行...
- **Openrowset函数**:在SQL Server查询中,可以利用OPENROWSET函数直接读取Excel文件内容,然后插入到数据库表中。 - **编程接口**:使用编程语言(如C#、VB.NET)编写代码来实现数据导入。这涉及到ADO.NET、OLE...
- **Openrowset函数**:通过在查询中使用Openrowset函数,可以直接读取Excel文件内容插入到SQL Server表中,但这种方法可能对Excel版本有限制。 - **Integration Services (SSIS)**:对于复杂的数据转换和ETL...
SQL Server 异构数据库之间数据的导入导出 ...本文讨论了如何通过 Transact-SQL 以及系统函数 OPENDATASOURCE 和 OPENROWSET 在同构和异构数据库之间进行数据的导入导出,并给出了详细的例子以供参考。
SQL Server 提供了多种方式来调用 OPENROWSET,OPENROWSET 是 SQL Server 中的一种函数,可以用来从其他数据源中读取数据。OPENROWSET 函数可以用来读取OLE DB 或 ODBC 数据源中的数据。 在 SQL Server 中,...
例如,可以使用BULK INSERT语句将大量数据一次性导入到SQL Server,或者使用OPENROWSET函数直接读取Excel文件。 6个实例: 1. 导出Access数据到Excel:通过VBA编写宏,调用ExportObject方法将Access表或查询导出为...
使用 OPENROWSET 函数可以实现从 Access 导入数据到 SQL Server,例如: ```sql INSERT INTO OPENROWSET('Microsoft.Jet.OLEDB.4.0', 'c:\trade.mdb';'admin';'', Test) SELECT id, name FROM Test ``` 这些方法...
另一种方法是通过Access的链接表功能,将SQL Server的表链接到Access中,然后使用Access的“导出”功能将数据写回SQL Server,或者直接在SQL Server中创建新的表,然后通过SQL INSERT语句将Access中的数据导入。...
总结起来,SQL SERVER、ACCESS和EXCEL之间的数据转换可以通过DTS向导或Transact-SQL语句来实现,具体使用哪种方式取决于你的需求、数据量以及对效率和安全性的考虑。在实际操作中,要根据具体情况选择合适的方法,并...
2. **使用Openrowset函数**:在SQL Server中,你可以通过T-SQL语句利用Openrowset函数直接从Access数据库读取数据。例如: ```sql INSERT INTO YourSQLTable SELECT * FROM OPENROWSET('Microsoft.Jet.OLEDB.4.0'...
例如,我们可以使用DTS将Access数据导入到SQL Server中,或者将SQL Server数据导出到Excel中。DTS还提供了多种数据转换功能,例如将数据从一个格式转换为另一个格式,或者将数据从一个数据源转换为另一个数据源。 ...
在SQL Server数据库之间进行数据导入导出是数据库管理中常见的操作,主要目的是为了数据备份、迁移、合并或者处理跨数据库的数据需求。以下详细介绍几种常用的方法。 1. **使用SELECT INTO导出数据** SELECT INTO...
为了将数据从 FoxPro 数据库导入到 SQL Server,使用 SELECT * FROM openrowset(’MSDASQL’, ’Driver=Microsoft Visual FoxPro Driver;SourceType=DBF;SourceDB=c:’, ’select * from [aa.DBF]’) 命令。这里使用...
SQL Server 三种导入导出数据方式比较 在本文中,我们将详细比较 SQL Server 中的三种导入导出数据方式:使用 Transact-SQL 对数据进行处理;调用命令行工具 bcp 处理数据;使用数据转换服务(DTS)对数据进行处理...