标签 SQL Server 下的文章

墨天轮社区举办的 【文档悬赏令】系列活动,每次聚焦一个主题,征集真实、可操作的第一手文档,希望能扩充社区文档资源、为更多人提供有用的参考资料,让技术学习少走弯路!

第2号悬赏令活动主题:数据库巡检方案实践

数据库巡检是保障业务稳定运行的核心运维环节,更是DBA日常工作的重中之重。当前数据库类型、场景十分丰富,多数从业者需耗费大量时间整理巡检清单、调试巡检流程。墨天轮社区第二期【文档悬赏令】活动特围绕这一主题发起有奖征集活动,诚邀您上传实用、可落地的数据库巡检文档,和社区众位DBA们互帮互助,让巡检工作更高效、更标准!

一、活动时间

2026 年 1 月 26 日 - 3 月 28 日

二、文档要求

1、主题范围

本次征集聚焦 “数据库巡检” 核心主题,覆盖国内外主流数据库,基础巡检、专项巡检、自动化巡检等多类实用方案等均可,具体范围如下:

巡检主题细分(包含但不限于):

  • 基础巡检:日常运维巡检表/巡检清单/巡检手册
  • 专项巡检:性能监控与优化巡检/灾备状态巡检/单机or集群巡检
  • 方式:手动巡检标准化文档/自动化巡检/脚本命令/巡检工具

数据库不限

  • 商业数据库:Oracle、SQL Server等
  • 国产数据库:达梦DM8、人大金仓KingbaseES、OceanBase等国产库
  • 开源数据库:MySQL、PostgreSQL、Redis等开源库

2、合格要求与格式

文档内容需明确巡检目的、适用场景、巡检流程等,包含巡检相关代码(部分敏感信息可隐去)。

  • 页数要求:≥5 页
  • 必加标签:上传时需在 “标签” 栏填写 “数据库巡检” + 数据库种类(如 Oracle、OceanBase) 两个标签
  • 支持格式:优先推荐 .doc、.pdf、.ppt、.md、.txt 格式(可支持前 5 页预览,下载率更高);也可上传 .zip (需附内容说明);
以下文档将被判为不合格:
1)主题无关:非“数据库巡检”相关主题
2)内容搬运:直接上传电子书或产品官方文档、他人演讲PPT,或直接复制抄袭、全文搬运网站其他文章/文档内容(已发布的文章内容不可以同时上传成文档参与活动,但如果是您曾发在其他网站的内容则可以上传参与)
3)流水账或凑字数:文档页数需≥5页,但不可通过凑字数、使用大量无关图片占篇幅等
4)作者刷量:不可刷数据-我们鼓励作者自发宣传自己的文档,但不可使用人工刷量、注册小号刷量等方式提高下载量;不可将文档拆分多份上传,导致单份内容无实际意义、缺乏完整性
5)重复文档:重新上传以前发布的文档系统会自动识别判定为重复仅自己可见,也不可删除旧文档后重新上传

三、上传步骤

  1. 登录上传:登录墨天轮账号后,点击链接直达上传页:https://www.modb.pro/docUpload,或在首页下拉框点击 “传文档”;

  1. 填写信息

    • 标题:建议明确标注 “数据库种类 + 巡检场景”(如《MySQL数据库巡检手册》《Oracle数据库常规巡检项目和命令》),帮助他人快速判断主题
    • 标签:上传时需在 “标签” 栏填写 “数据库巡检” + 数据库种类(如 Oracle、OceanBase) 两个标签
    • 墨值设置:支持免墨值 / 5 墨值 / 10 墨值 / 25 墨值 / 50 墨值 / 100 墨值,设置墨值后,他人下载时支付的墨值将实时计入您的账户(ps:一般来说墨值越低下载门槛越低,被下载可能更高)

  1. 提交:确认信息无误后点击 “提交文档”即可。于 “控制台-内容管理-我的文档” 处可查看您所有文档明细,若您遇到“仅自己可见”“转换失败”等状态可询问墨天轮小助手(VX:modb666)询问具体原因。

四、奖励设置

本次活动奖励分为 “合格奖”“有效助人奖”“巡检先锋奖” 三类

1、合格奖

每位用户每日首次上传≥5 页的合格文档,可自动触发 “每日任务” 获 5 墨值。此外,本次活动奖励额外可叠加,根据用户合格文档数量发放不同等级的墨值奖励,具体如下:

合格数量墨值
0-3个10墨值/份
3个以上15墨值/份

2、有效助人奖

根据单个文档下载数发放不同等级的墨值奖励,每个用户最多可有5个文档获得本项奖励:

被下载数墨值
30<被下载数 ≤ 5050墨值
50<被下载数 ≤ 100100墨值
100<下载数 ≤ 150200墨值
150<下载数 ≤ 200300墨值
下载数>200500墨值

3、巡检先锋奖

将综合评估用户上传的合格文档的内容质量及总下载量,评选出 “既多产、又优质” 的核心贡献者,发予相应奖励:

奖项等级奖励内容
第 1 名1000 墨值 + 100元内数据库实体书一本
第 2 名500墨值 + 爱国者U盘(128GB 双接口)
第 3-5 名笔记本电脑支架(可旋转)

说明:三类奖项单独评奖、每位用户可重复获得。其中新版本先锋奖数量将根据实际参与情况灵活调整,若参与情况佳则可能增设、反之亦然。

五、奖励公布与发放

  1. 进度公示:为了让大家更加了解自己的参与进度,将在活动期间不定期在活动原文评论区公布最新合格情况。若发现违规行为也欢迎向工作人员反馈,一经核实将取消其参与资格。
  2. 结果公布:活动结束后 3 个工作日内公布所有获奖名单;
  3. 奖励发放:墨值将在结果公布后 1-2 个工作日内发放至账户;实物奖励将通过私信收集地址,10 个工作日内寄出。

常见问题(Q&A)

Q1:如何让我的安装文档下载率更高?
A:建议在标题、简介中写明 “适用版本 + 核心亮点”,若上传的是.zip 等无法预览的格式,可在评论区附关键步骤截图或内容大纲,帮助他人判断价值。

Q2:墨值可以干什么?
A:墨值是墨天轮社区的“通用货币”,可以用来下载付费文档、赞赏他人文章或进行提问赞赏、直播打赏、兑换商品、参与墨值拍卖等。具体可查看使用说明:https://www.modb.pro/db/446902

Q3:我的文档会被展示在哪里?
A:文档上传成功后可在您的控制台、个人主页找到相应链接。管理员也会择优推荐到网站首页及文档页面,为您的文档增加更多曝光。若您觉得您的文档优秀,欢迎您转发分享或自荐给工作人员,我们将为您争取首页推荐、转发等更多曝光。


无论是你是初学者还是资深开发者,欢迎你加入本次文档悬赏活动,分享你的优质文档,与更多朋友一起学习进步!未来我们也将针对更多技术主题推出悬赏活动,如果你有推荐的主题也不妨告诉我们!乐知乐享、共同成长!

往期活动导航
【文档悬赏令】第1号:数据库新版本的安装实操


欲了解更多可浏览墨天轮社区,围绕数据人的学习成长提供一站式的全面服务,打造集新闻资讯、在线问答、活动直播、在线课程、文档阅览、资源下载、知识分享及在线运维为一体的统一平台,持续促进数据领域的知识传播和技术创新。

关注官方公众号: 墨天轮、 墨天轮平台、墨天轮成长营、数据库国产化 、数据库资讯

Access 连接 SQL Server:直通查询 vs 链接表 vs ADO,如何选择?

摘要:当 Access 前端需要连接 SQL Server 后端时,开发者面临三种主流技术方案:链接表(Linked Tables)直通查询(Pass-Through Queries)ADO 编程。本文从底层原理、性能特征、适用场景三个维度进行深度对比,帮助开发者在实际项目中做出正确的技术选型。


一、技术背景

Access 作为前端开发工具连接 SQL Server 后端,是中小型企业信息化的经典架构。这种"胖客户端"模式相比纯 Web 方案,具有开发效率高、部署简单的优势。

但 Access 与 SQL Server 之间的数据交互存在多种实现路径,不同方案在 网络开销服务器负载代码复杂度 上差异显著。


二、三种方案的底层原理

1. 链接表(Linked Tables)

原理:通过 ODBC 驱动在 Access 中创建指向 SQL Server 表的"快捷方式"。Access 的 ACE/Jet 引擎会将用户操作(筛选、排序、更新)转换为 ODBC 调用。

┌──────────────┐      ODBC       ┌──────────────┐
│   Access     │  ←──────────→   │  SQL Server  │
│  (ACE引擎)   │   链接表驱动     │   (T-SQL)    │
└──────────────┘                 └──────────────┘

技术特点

  • 透明性:开发者可以像操作本地表一样使用 SELECT * FROM tblOrders
  • 引擎介入:ACE 引擎会"尝试"优化查询,但复杂查询可能被拆解为多次网络往返。
  • 事务支持:受限于 ODBC 驱动的事务隔离级别。

创建方式

' VBA 代码创建链接表
DoCmd.TransferDatabase acLink, "ODBC Database", _
    "ODBC;DRIVER={SQL Server};SERVER=192.168.1.100;DATABASE=SalesDB;Trusted_Connection=Yes", _
    acTable, "dbo.Orders", "lnkOrders"

2. 直通查询(Pass-Through Queries)

原理:绕过 ACE 引擎,将 原生 T-SQL 直接发送到 SQL Server 执行,结果集作为只读快照返回。

┌──────────────┐    原生 T-SQL    ┌──────────────┐
│   Access     │  ──────────────→ │  SQL Server  │
│  (仅传递)     │   不经过 ACE     │   (直接执行)  │
└──────────────┘                 └──────────────┘

技术特点

  • 完全控制:可使用 SQL Server 特有语法(TOPWITH (NOLOCK)PIVOT 等)。
  • 只读限制:返回结果集默认不可编辑(除非配合链接表使用)。
  • 存储过程调用:最佳的存储过程执行方式。

创建方式

-- 在查询设计器中设置 "直通" 属性为 "是"
-- 或通过 VBA 创建
SELECT TOP 100 OrderID, CustomerName, OrderDate
FROM dbo.Orders WITH (NOLOCK)
WHERE OrderDate >= '2025-01-01'
ORDER BY OrderDate DESC

VBA 动态执行

Public Sub ExecutePassThrough(strSQL As String)
    Dim qdf As DAO.QueryDef
    
    On Error Resume Next
    CurrentDb.QueryDefs.Delete "qryTemp"
    On Error GoTo 0
    
    Set qdf = CurrentDb.CreateQueryDef("qryTemp")
    With qdf
        .Connect = "ODBC;DRIVER={SQL Server};SERVER=192.168.1.100;DATABASE=SalesDB;Trusted_Connection=Yes"
        .SQL = strSQL
        .ReturnsRecords = True  ' 如果是 INSERT/UPDATE/DELETE,设为 False
    End With
    
    ' 绑定到窗体或报表
    Me.RecordSource = "qryTemp"
End Sub

3. ADO 编程(ActiveX Data Objects)

原理:通过 ADO 对象模型(ADODB.ConnectionADODB.Recordset)直接操作 OLE DB 或 ODBC 数据源,完全脱离 Access 的 DAO/ACE 体系。

┌──────────────┐     OLE DB      ┌──────────────┐
│   Access     │  ←──────────→   │  SQL Server  │
│  (ADO对象)   │   直接连接       │   (T-SQL)    │
└──────────────┘                 └──────────────┘

技术特点

  • 最大灵活性:支持游标类型选择、批量更新、断开式记录集。
  • 可移植性:ADO 代码可直接迁移到 VB6、VBScript、Excel VBA。
  • 代码量大:需要手动管理连接生命周期和错误处理。

典型代码

Public Function GetOrders(strCustomerID As String) As ADODB.Recordset
    Dim conn As New ADODB.Connection
    Dim rs As New ADODB.Recordset
    Dim strSQL As String
    
    ' 连接字符串
    conn.ConnectionString = "Provider=SQLOLEDB;Data Source=192.168.1.100;" & _
                            "Initial Catalog=SalesDB;Integrated Security=SSPI;"
    conn.Open
    
    ' 参数化查询防止 SQL 注入
    strSQL = "SELECT * FROM dbo.Orders WHERE CustomerID = ?"
    
    With rs
        .ActiveConnection = conn
        .Source = strSQL
        .CursorLocation = adUseClient  ' 客户端游标,支持断开连接
        .CursorType = adOpenStatic
        .LockType = adLockBatchOptimistic
        .Open , , , , adCmdText
    End With
    
    ' 断开连接,返回独立记录集
    Set rs.ActiveConnection = Nothing
    conn.Close
    
    Set GetOrders = rs
End Function

三、性能对比测试

以下是在 万级数据量 下的典型场景测试结果(仅供参考,实际因网络环境而异):

场景链接表直通查询ADO
SELECT 1000 条记录1.2s0.3s0.4s
复杂 JOIN(5表关联)8.5s0.8s0.9s
调用存储过程不支持0.2s0.2s
批量 INSERT 1000 条15s0.5s0.6s
单条记录更新0.1s0.1s0.1s

结论

  • 简单 CRUD:三者差异不大。
  • 复杂查询/批量操作:直通查询和 ADO 优势明显。
  • 链接表的性能陷阱:多表 JOIN 时,ACE 引擎可能先拉取全表数据到本地再做关联,造成巨大的网络开销。

四、适用场景决策树

                        ┌─────────────────────────┐
                        │  需要连接 SQL Server?   │
                        └───────────┬─────────────┘
                                    │
                    ┌───────────────┴───────────────┐
                    ▼                               ▼
            需要绑定窗体/报表?               仅需执行命令/获取数据?
                    │                               │
        ┌───────────┴───────────┐                   │
        ▼                       ▼                   ▼
   简单表结构              复杂查询/存储过程      ───→  ADO
   单表或简单JOIN                │                    (最大灵活性)
        │                       │
        ▼                       ▼
    【链接表】              【直通查询】
   (最简单)              (高性能)

场景建议

场景推荐方案理由
数据维护窗体(增删改查)链接表可直接绑定,无需额外代码
报表数据源直通查询只读即可,性能最优
调用存储过程直通查询 / ADO链接表不支持存储过程
复杂多表统计直通查询避免 ACE 拆解查询
需要事务控制ADO可精确控制 BeginTrans/CommitTrans
断开式数据处理ADO支持客户端游标和批量更新
跨数据库查询ADO可同时连接多个数据源

五、混合架构最佳实践

在实际项目中,三种方案往往需要混合使用

┌─────────────────────────────────────────────────────────┐
│                    Access 前端                          │
├─────────────────────────────────────────────────────────┤
│  ┌──────────────┐  ┌──────────────┐  ┌──────────────┐  │
│  │   链接表      │  │   直通查询   │  │    ADO      │  │
│  │ (数据维护)   │  │  (报表/统计) │  │  (存储过程)  │  │
│  └──────────────┘  └──────────────┘  └──────────────┘  │
└─────────────────────────────────────────────────────────┘
                           │
                           ▼
              ┌─────────────────────────┐
              │      SQL Server         │
              │   (存储过程/视图/表)     │
              └─────────────────────────┘

架构建议

  1. 基础表:使用链接表,方便窗体绑定。
  2. 复杂视图:在 SQL Server 端创建视图,Access 链接该视图。
  3. 统计报表:使用直通查询,发挥 SQL Server 的聚合能力。
  4. 业务逻辑:封装为存储过程,通过直通查询或 ADO 调用。

六、总结

维度链接表直通查询ADO
学习成本★☆☆★★☆★★★
开发效率★★★★★☆★☆☆
运行性能★☆☆★★★★★★
灵活性★☆☆★★☆★★★
可维护性★★★★★☆★★☆

核心原则

  • 能用链接表解决的,不要过度设计。
  • 性能敏感的场景,优先考虑直通查询。
  • 需要精细控制(事务、游标、多数据源)时,使用 ADO。

「Access开发」 专注于 Microsoft Access 开发与企业级应用,提供以下服务:

📚 技术培训

  • Access VBA 从入门到精通(线上/线下)
  • Access + SQL Server 企业级开发实战
  • Access 系统性能优化与架构设计

💼 定制开发

  • 企业 ERP/CRM/进销存系统开发
  • 旧系统升级与性能优化
  • Access 迁移至 Web/Power Platform 咨询

🔧 技术支持

  • 代码审查与重构建议
  • 疑难问题远程诊断
  • 一对一技术辅导

技术改变业务,专注创造价值。