设为首页 收藏本站
查看: 667|回复: 0

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

[复制链接]

尚未签到

发表于 2016-11-9 01:17:14 | 显示全部楼层 |阅读模式
  注:找这个解决方法很辛苦,有些笨拙,但还好,可以解决问题。适用于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 登录的登录映射。

http://support.microsoft.com/library/images/support/en-us/uparrow.gif回到顶端

查询受保护的 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 控件。

http://support.microsoft.com/library/images/support/en-us/uparrow.gif回到顶端


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-297512-1-1.html 上篇帖子: Internet Security and Acceleration (ISA) Server 下篇帖子: ibatis like 防止sql注入
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表