`
flashcloud
  • 浏览: 189268 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

如何通过OPENROWSET函数向SQL Server导入带工作组(mdw)保护的Access数据库数据(转)

阅读更多

注:找这个解决方法很辛苦,有些笨拙,但还好,可以解决问题。适用于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 数据库,请使用下列步骤:
  1. 使用注册表编辑器将注册表配置为使用正确的 Microsoft Access 工作组信息文件(.mdw 文件),然后向以下注册表项中添加工作组信息文件的完整路径名:
    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Jet\4.0\Engines\SystemDB
    接下来,将其值设置为该文件的路径和名称,例如:

    C:\...\MySystem.mdw
    1. 要打开注册表编辑器,请定位到“开始”按钮,然后单击“运行”。在“运行”对话框中,键入 Regedit,然后按“确定”。
    2. 在注册表编辑器中,定位到以下项:
      HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Jet\4.0\Engines\
    3. 单击右键,然后依次选择“新建”、“字符串值”。
    4. 键入 SystemDb,然后按 Enter
    5. 双击左窗格中的“SystemDb”项。
    6. 在“数值数据”文本框中,键入 .mdw 文件的完整路径。
    7. 关闭注册表编辑器。
  2. 执行 sp_addlinkedserver 存储过程创建链接服务器。指定 Microsoft.Jet.OLEDB.4.0 作为 provider_name,并指定 Microsoft Access .mdb 数据库文件的完整路径名作为 data_source。data_source 将在服务器而不是客户端上进行计算,因此该路径在服务器上必须有效。
  3. 执行 sp_addlinkedsrvlogin 存储过程创建从本地登录到 Microsoft Access 登录的登录映射。

查询受保护的 Microsoft Access 数据库的步骤

  1. 修改步骤 1(请参见“更多信息”部分)中显示的注册表项并添加 .mdw 文件的位置。
  2. 启动 Microsoft Visual Basic 6.0 并选择一个标准 EXE 项目。默认情况下会创建 Form1。
  3. 在“项目”菜单上,选择“引用”,然后将其中一个引用设置为“Microsoft ActiveX Data Objects 2.1 库”(或更高版本)。
  4. 在 Form1 上放置两个命令按钮和一个 DataGrid 控件(分别名为 Command1、Command2 和 DataGrid1)。
  5. 将以下代码粘贴到 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
  6. 运行该项目。
  7. 单击“设置链接服务器”。如果将连接字符串中的 sp_addlinkedserver 和sp_addlinkedsrvlogin 修改为正确的参数,则可以成功创建链接服务器。
  8. 单击“查询链接服务器”。如果将连接字符串和查询文本修改为正确的参数,将使用您的数据填充 DataGrid 控件。

分享到:
评论

相关推荐

    Access导入到SQL Server数据库中的三种方法.docx

    首先,在要导入到的 SQL Server 数据库上右键,选择“任务”,然后选择“导入数据”,按照提示下一步直到完成即可成功将 Access 数据库导入到 SQL Server 数据库中。此种方法如果 SQL Server 数据库中没有相应的数据...

    SQL与ACCESS (EXCEL)之间的数据转换

    使用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数据库导入导出技术是数据库管理员和开发人员在整合数据、迁移数据库或进行数据备份时常用的一种功能。SQL Server提供了多种方式进行数据导入和导出,以满足不同场景的需求。下面我们将详细介绍这些方法...

    SQL SERVER自动导出Word数据库文档

    3. **Transact-SQL与OPENROWSET函数**:在SQL Server中,可以通过Transact-SQL查询数据,并使用OPENROWSET函数将结果集转换为文本或XML格式,然后利用外部程序(如Word)进行处理。例如,可以使用BULK INSERT或...

    Excel数据导入到SQLServer数据库中

    首先,导入Excel数据到SQL Server通常有几种方法:使用SQL Server Management Studio (SSMS) 的“导入和导出数据”向导、T-SQL语句(如BULK INSERT或OPENROWSET函数)以及编写存储过程。标题提到的“通过自动编写...

    SQLserver远程或本地连接ACCESS教程.pdf

    这些操作利用了SQL Server与Access之间的ODBC连接,OpenRowSet和OpenDataSource函数允许我们跨越不同数据库平台,执行数据操作。 最后,还有一项操作是使用BCP(Bulk Copy Program)工具,它可以直接从命令行执行...

    excel导入sql server数据库源码

    - **Openrowset函数**:在SQL Server查询中,可以利用OPENROWSET函数直接读取Excel文件内容,然后插入到数据库表中。 - **编程接口**:使用编程语言(如C#、VB.NET)编写代码来实现数据导入。这涉及到ADO.NET、OLE...

    excel数据导入到sql server数据库中,

    - **Openrowset函数**:通过在查询中使用Openrowset函数,可以直接读取Excel文件内容插入到SQL Server表中,但这种方法可能对Excel版本有限制。 - **Integration Services (SSIS)**:对于复杂的数据转换和ETL...

    SQLServer 异构数据库之间数据的导入导出

    SQL Server 异构数据库之间数据的导入导出 ...本文讨论了如何通过 Transact-SQL 以及系统函数 OPENDATASOURCE 和 OPENROWSET 在同构和异构数据库之间进行数据的导入导出,并给出了详细的例子以供参考。

    sqlserver调用OPENROWSET的方法[参照].pdf

    SQL Server 提供了多种方式来调用 OPENROWSET,OPENROWSET 是 SQL Server 中的一种函数,可以用来从其他数据源中读取数据。OPENROWSET 函数可以用来读取OLE DB 或 ODBC 数据源中的数据。 在 SQL Server 中,...

    Access、SQLServer、Excel三者之间实现导入与导出

    例如,可以使用BULK INSERT语句将大量数据一次性导入到SQL Server,或者使用OPENROWSET函数直接读取Excel文件。 6个实例: 1. 导出Access数据到Excel:通过VBA编写宏,调用ExportObject方法将Access表或查询导出为...

    利用SQLServer的DTS操作EXCEL、Access等数据表的导入导出.pdf

    使用 OPENROWSET 函数可以实现从 Access 导入数据到 SQL Server,例如: ```sql INSERT INTO OPENROWSET('Microsoft.Jet.OLEDB.4.0', 'c:\trade.mdb';'admin';'', Test) SELECT id, name FROM Test ``` 这些方法...

    SQL SERVER与ACCESS、EXCEL数据转换

    另一种方法是通过Access的链接表功能,将SQL Server的表链接到Access中,然后使用Access的“导出”功能将数据写回SQL Server,或者直接在SQL Server中创建新的表,然后通过SQL INSERT语句将Access中的数据导入。...

    SQL SERVER 与ACCESS、EXCEL的数据转换

    总结起来,SQL SERVER、ACCESS和EXCEL之间的数据转换可以通过DTS向导或Transact-SQL语句来实现,具体使用哪种方式取决于你的需求、数据量以及对效率和安全性的考虑。在实际操作中,要根据具体情况选择合适的方法,并...

    ACCESS导入SQL数据库的系列方法

    2. **使用Openrowset函数**:在SQL Server中,你可以通过T-SQL语句利用Openrowset函数直接从Access数据库读取数据。例如: ```sql INSERT INTO YourSQLTable SELECT * FROM OPENROWSET('Microsoft.Jet.OLEDB.4.0'...

    利用SQL对EXCEL和Access等数据表的导入导出

    例如,我们可以使用DTS将Access数据导入到SQL Server中,或者将SQL Server数据导出到Excel中。DTS还提供了多种数据转换功能,例如将数据从一个格式转换为另一个格式,或者将数据从一个数据源转换为另一个数据源。 ...

    在SQL Server数据库之间进行数据导入导出

    在SQL Server数据库之间进行数据导入导出是数据库管理中常见的操作,主要目的是为了数据备份、迁移、合并或者处理跨数据库的数据需求。以下详细介绍几种常用的方法。 1. **使用SELECT INTO导出数据** SELECT INTO...

    SQL Server SQL语句导入导出大全

    为了将数据从 FoxPro 数据库导入到 SQL Server,使用 SELECT * FROM openrowset(’MSDASQL’, ’Driver=Microsoft Visual FoxPro Driver;SourceType=DBF;SourceDB=c:’, ’select * from [aa.DBF]’) 命令。这里使用...

    SQL Server三种导入导出数据方式比较

    SQL Server 三种导入导出数据方式比较 在本文中,我们将详细比较 SQL Server 中的三种导入导出数据方式:使用 Transact-SQL 对数据进行处理;调用命令行工具 bcp 处理数据;使用数据转换服务(DTS)对数据进行处理...

Global site tag (gtag.js) - Google Analytics