`
flashcloud
  • 浏览: 185480 次
  • 性别: 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 控件。

分享到:
评论

相关推荐

    SQL SERVER 与ACCESS、EXCEL的数据转换

    熟悉SQL SERVER 2000的数据库管理员都知道,其DTS可以进行数据的导入导出,其实,我们也可以使用Transact-SQL语句进行导入导出操作。在Transact-SQL语句中,我们主要使用OpenDataSource函数、OPENROWSET 函数,关于...

    Office数据库升迁 Access 导入 SQL Server

    Office数据库升迁 Access 导入 SQL Server,相信大家都知道 SQL-Server 数据库导入导出功能吧,但当你装了精简版的SQL-Server这个功能就会没有了,也就是无法实现数据库导入导出,那么怎么办 写SQL语句? Insert ...

    SQL SERVER、ACCESS、EXCEL数据转换

    熟悉SQL SERVER 2000的数据库管理员都知道,其DTS可以进行数据的导入导出,其实,我们也可以使用Transact-SQL语句进行导入导出操作。在Transact-SQL语句中,我们主要使用OpenDataSource函数、OPENROWSET 函数,关于...

    SQL Server中导入导出数据三方法比较

    如果是在SQL Server数据库之间进行数据导入导出时,并且不需要对数据进行复杂的检验,最好使用Transact-SQL方法进行处理,因为在SQL Server数据库之间进行数据操作时,SQL是非常快的。当然,如果要进行复杂的操作,如...

    2009 年度十大 SQL Server 技巧文章

    在向2009年告别之际,我们来回顾一下过去的一年中最受欢迎的SQL Server技巧,包括了OPENROWSET、FILESTREAM等函数的用法、密码工具介绍以及DBA日常工作建议等内容。 通过对这些精华文章的再次回顾,希望可以帮助您...

    将Excel数据导入到SqlServer中

    将Excel中的数据导入到SqlServer中的实现方法总结。还有一个简单的例子

    连接其它服务器数据库查询数据(sql server)

    exec sp_dropserver '链接名', 'droplogins ' --连接远程/局域网数据(openrowset/openquery/opendatasource) --1、openrowset --查询示例 select * from openrowset( 'SQLOLEDB ', 'sql服务器名 '; '用户名 '; '密码...

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

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

    C#实现Excel表数据导入Sql Server数据库中的方法

    本文实例讲述了C#实现Excel表数据导入Sql Server数据库中的方法。分享给大家供大家参考,具体如下: Excel表数据导入Sql Server数据库的方法很多,这里只是介绍了其中一种: 1、首先,我们要先在test数据库中新建一...

    SQL SERVER 2000开发与管理应用实例

    涉及安装和配置SQL Server、日期处理、字符处理、排序规则、编号处理、数据统计与汇总、分页处理、树形数据处理、数据导入与导出、作业、数据备份与还原、用户定义数据类型、数据库安全、系统表应用实例、SQL Server...

    SQL Server数据复制到的Access两步走

    我们今天主要向大家讲述的是把SQL Server数据复制到的Access数据库中的实际操作步骤,把SQL Server数据库中的某些数据复制到的Access数据库中,其表的主要结构是相同的,不要提用openrowset,因为Access文件和SQL ...

    SQL SERVER 与ACCESS、EXCEL的数据转换方法分享

    利用下述方法,可以十分容易地实现SQL SERVER、ACCESS、EXCEL数据转换,详细说明如下: 一、SQL SERVER 和ACCESS的数据导入导出 常规的数据导入导出: 使用DTS向导迁移你的Access数据到SQL Server,你可以使用这些...

    SQL Server 阻止了对组件 'Ad Hoc Distributed Queries'

    SQL Server 阻止了对组件 'Ad Hoc Distributed Queries'2009年08月28日 星期五 15:00SQL Server 阻止了对组件 'Ad Hoc Distributed Queries' 的 STATEMENT'OpenRowset/OpenDatasource' 的访问,因为此组件已作为此...

    SQL Server 2008高级程序设计 4/6

     本书首先介绍SQL Server 2008的新功能,然后在更详实的示例代码的引导下全面深入地展开论述,讨论了如何编写复杂查询、构建各种数据结构以及提高应用程序性能,还讲述了如何管理高级脚本和数据库以及如何确定和...

    excel导入sql2005的几种方法归纳

    [SQL]将Excel表数据导入SQL Server2005的几种方法归纳 数据库 2010-07-27 11:14:26 阅读201 评论0 字号:大中小 订阅 近日在巨轮着手车间负荷数据处理,反馈回来的数据是保存在Excel文件中的,我必须将其导入SQL ...

    SQL SERVER2005下不能使用OpenRowset创建链接服务器的问题

    SQL SERVER2005下不能使用OpenRowset创建链接服务器的问题

    SQL Server 2008高级程序设计 2/6

     本书首先介绍SQL Server 2008的新功能,然后在更详实的示例代码的引导下全面深入地展开论述,讨论了如何编写复杂查询、构建各种数据结构以及提高应用程序性能,还讲述了如何管理高级脚本和数据库以及如何确定和...

    SQL2005Express中导入ACCESS数据库的两种方法

    (1)打开”SQL Server 外围应用配置器”–&gt;”功能的外围应用配置器” –&gt;些服务默认是关闭的,若不打开,将不能进行导入操作。 在”Database Engine”下选择”即席远程查询”–&gt;启用 openrowset 和opendatasource ...

Global site tag (gtag.js) - Google Analytics