当前位置: 首页 > news >正文

【VB6|第21期】检查SqlServer数据库置疑损坏的小工具(含源码)

日期:2023年7月25日
作者:Commas
签名:(ง •_•)ง 积跬步以致千里,积小流以成江海……
注释:如果您觉得有所帮助,帮忙点个赞,也可以关注我,我们一起成长;如果有不对的地方,还望各位大佬不吝赐教,谢谢^ - ^
1.01365 = 37.7834;0.99365 = 0.0255
1.02365 = 1377.4083;0.98365 = 0.0006


在这里插入图片描述


文章目录

  • 一、前言
  • 二、使用说明
    • (2-1)数据库连接测试
    • (2-2)数据库完整性检测
  • 三、实现思路
    • (3-1)数据库连接测试
    • (3-2)数据库完整性检测
  • 四、完整源码


一、前言

在这里插入图片描述
当用户电脑、或者我们所要操作的电脑没有 SQL Server Management Studio ,而我们又想确定 SqlServer某个数据库是否损坏的时候,这个时候就有点难办了,只能硬着头皮先安装这种大块头的工具,然后再写 DBCC CHECKDB 的语句检测问题,时间基本都花到了安装软件上了。

为了解决这个问题,不妨自己做一个小工具,如下所示:

在这里插入图片描述

二、使用说明

(2-1)数据库连接测试

输入服务器名称用户名登录名以及数据库密码,点击【数据库连接测试】按钮,可以测试参数是否正确;在这里插入图片描述

(2-2)数据库完整性检测

填写需要检测的数据库名称 ,点击【开始检测】按钮

  • 正确:在这里插入图片描述

  • 数据库置疑的错误:
    在这里插入图片描述

  • 数据库不存在的错误:
    在这里插入图片描述

三、实现思路

实现思路很简单,先实现正常连接数据库功能,再实现数据库检测的功能,如下:

(3-1)数据库连接测试

可以通过 CN.OpenCN.State (其中 Dim CN As New ADODB.Connection)来判断是否可以正常连接上数据库;

Private Sub CmdPing_Click()
On Error Resume NextDim sErr As String: sErr = ""Dim CN As New ADODB.ConnectionCN.ConnectionString = getConnectionString()CN.OpenIf CN.State = adStateOpen ThenMsgBox "连接成功!"CN.CloseElseMsgBox "连接失败:" & err.DescriptionEnd IfSet CN = Nothing
End Sub

其中,获取数据库连接字符串的函数如下所示:

Private Function getConnectionString(Optional ByVal isWinLogin As Boolean = False, Optional ByVal sDbName As String = "master") As String
On Error Resume Next
'函数说明:获取数据库连接字符串
'创建作者:Commas
'创建时间:2023-07-25
'修改时间:
'------传参说明------
'isWinLogin:是否采用 “Windows 身份验证”,默认采用 “SQL Server 身份验证”;
'sDbName:指定需要连接的数据库,默认为master
'------传参说明------Dim sCNStr As StringIf isWinLogin ThensCNStr = "Provider=SQLOLEDB;Data Source={ServerName};Initial Catalog={DatabaseName};Trusted_Connection=Yes;Persist Security Info=True;"If Trim(Me.TxtDB(0).Text) = "127.0.0.1" ThensCNStr = Replace(sCNStr, "{ServerName}", ".")ElsesCNStr = Replace(sCNStr, "{ServerName}", Trim(Me.TxtDB(0).Text))End IfsCNStr = Replace(sCNStr, "{DatabaseName}", "master")ElsesCNStr = "Provider=SQLOLEDB;Data Source={ServerName};Initial Catalog={DatabaseName};User Id={Username};Password={Password};"'也可以先不指定 Initial Catalog={DatabaseName};'sCNStr = "Provider=SQLOLEDB;Data Source={ServerName};User Id={Username};Password={Password};"sCNStr = Replace(sCNStr, "{ServerName}", Trim(Me.TxtDB(0).Text))sCNStr = Replace(sCNStr, "{DatabaseName}", "master")sCNStr = Replace(sCNStr, "{Username}", Trim(Me.TxtDB(1).Text))sCNStr = Replace(sCNStr, "{Password}", Trim(Me.TxtDB(2).Text))End IfgetConnectionString = sCNStr
End Function

(3-2)数据库完整性检测

首先,我们用 SQL 先进行数据库数据库检查,如下:

DBCC CHECKDB ('<DataBaseName>') WITH NO_INFOMSGS;

其中,<DataBaseName> 改为需要检测的数据库名称

接着,我们借用 CN.Errors (其中 Dim CN As New ADODB.Connection)来捕获精确的错误信息。当执行数据库查询或操作时,ADO 对象会自动将错误信息添加到 Errors 集合中,我们可以通过检查该集合来获取更详细的错误信息,包括错误号、错误描述和可能的原因等。

CN.Execute "DBCC CHECKDB ('" & sDbName & "') WITH NO_INFOMSGS;"
If CN.Errors.Count > 0 Then' 捕获错误并进行相应的处理Dim errMsg As ADODB.ErrorFor Each errMsg In CN.Errors'MsgBox "错误号:" & errMsg.Number & vbCrLf & "错误描述:" & errMsg.Description, vbExclamationIf InStr(errMsg.Description, "表错误") > 0 ThenIf sErr <> "" Then sErr = sErr & Chr(10)sErr = sErr & errMsg.DescriptionEnd IfNext errMsgErr.Clear
End If

四、完整源码

Option ExplicitPrivate Function getConnectionString(Optional ByVal isWinLogin As Boolean = False, Optional ByVal sDbName As String = "master") As String
On Error Resume Next
'函数说明:获取数据库连接字符串
'创建作者:Commas
'创建时间:2023-07-26
'修改时间:
'------传参说明------
'isWinLogin:是否采用 “Windows 身份验证”,默认采用 “SQL Server 身份验证”;
'sDbName:指定需要连接的数据库,默认为master
'------传参说明------Dim sCNStr As StringIf isWinLogin ThensCNStr = "Provider=SQLOLEDB;Data Source={ServerName};Initial Catalog={DatabaseName};Trusted_Connection=Yes;Persist Security Info=True;"If Trim(Me.TxtDB(0).Text) = "127.0.0.1" ThensCNStr = Replace(sCNStr, "{ServerName}", ".")ElsesCNStr = Replace(sCNStr, "{ServerName}", Trim(Me.TxtDB(0).Text))End IfsCNStr = Replace(sCNStr, "{DatabaseName}", "master")ElsesCNStr = "Provider=SQLOLEDB;Data Source={ServerName};Initial Catalog={DatabaseName};User Id={Username};Password={Password};"'也可以先不指定 Initial Catalog={DatabaseName};'sCNStr = "Provider=SQLOLEDB;Data Source={ServerName};User Id={Username};Password={Password};"sCNStr = Replace(sCNStr, "{ServerName}", Trim(Me.TxtDB(0).Text))sCNStr = Replace(sCNStr, "{DatabaseName}", "master")sCNStr = Replace(sCNStr, "{Username}", Trim(Me.TxtDB(1).Text))sCNStr = Replace(sCNStr, "{Password}", Trim(Me.TxtDB(2).Text))End IfgetConnectionString = sCNStr
End FunctionPrivate Sub CmdPing_Click()
On Error Resume NextDim sErr As String: sErr = ""Dim CN As New ADODB.ConnectionCN.ConnectionString = getConnectionString()CN.OpenIf CN.State = adStateOpen ThenMsgBox "连接成功!"CN.CloseElseMsgBox "连接失败:" & Err.DescriptionEnd IfSet CN = Nothing
End SubPrivate Sub CheckDatabaseIntegrity(ByVal sDbName As String)
On Error Resume Next
'函数说明:获取数据库连接字符串
'创建作者:Commas
'创建时间:2023-07-25
'修改时间:
'------传参说明------
'sDbName:指定需要连接的数据库,默认为master
'------传参说明------Dim sErr As String: sErr = ""Dim CN As New ADODB.Connection' 设置数据库连接字符串CN.ConnectionString = getConnectionString()' 打开数据库连接CN.Open' 设置要执行的 SQL 查询CN.Execute "DBCC CHECKDB ('" & sDbName & "') WITH NO_INFOMSGS;"If CN.Errors.Count > 0 Then' 捕获错误并进行相应的处理Dim errMsg As ADODB.ErrorFor Each errMsg In CN.Errors'MsgBox "错误号:" & errMsg.Number & vbCrLf & "错误描述:" & errMsg.Description, vbExclamationIf InStr(errMsg.Description, "表错误") > 0 ThenIf sErr <> "" Then sErr = sErr & Chr(10)sErr = sErr & errMsg.DescriptionEnd IfNext errMsgErr.ClearEnd If' 关闭数据库连接CN.CloseIf sErr <> "" ThenMsgBox "【" & "SuperMarket" & "】检测异常,详情如下:”" & Chr(10) & sErrElseMsgBox "【" & sDbName & "】检测正常"End If
End SubPrivate Sub CmdRun_Click()
On Error Resume NextCall CheckDatabaseIntegrity(Me.TxtDB(3).Text)
End Sub

版权声明:本文为博主原创文章,如需转载,请给出:
原文链接:https://blog.csdn.net/qq_35844043/article/details/131915284

相关文章:

【VB6|第21期】检查SqlServer数据库置疑损坏的小工具(含源码)

日期&#xff1a;2023年7月25日 作者&#xff1a;Commas 签名&#xff1a;(ง •_•)ง 积跬步以致千里,积小流以成江海…… 注释&#xff1a;如果您觉得有所帮助&#xff0c;帮忙点个赞&#xff0c;也可以关注我&#xff0c;我们一起成长&#xff1b;如果有不对的地方&#xf…...

React的hooks---useCallback useMemo

useCallback 和 useMemo 结合 React.Memo 方法的使用是常见的性能优化方式&#xff0c;可以避免由于父组件状态变更导致不必要的子组件进行重新渲染 useCallback useCallback 用于创建返回一个回调函数&#xff0c;该回调函数只会在某个依赖项发生改变时才会更新&#xff0c;…...

05. 容器资源管理

目录 1、前言 2、CGroup 2.1、是否开启CGroup 2.2、Linux CGroup限制资源能使用 2.2.1、创建一个demo 2.2.2、CGroup限制CPU使用 2.3、Linux CGroup限制内存使用 2.4、Linux CGroup限制IO 3、Docker对资源的管理 3.1、Docker对CPU的限制 3.1.1、构建一个镜像 3.1.2…...

通过ETL自动化同步飞书数据到本地数仓

一、飞书数据同步到数据库需求 使用飞书的企业都有将飞书的数据自动同步到本地数据库、数仓以及其他业务系统表的需求&#xff0c;主要是为了实现飞书的数据与业务系统进行流程拉通或数据分析时使用&#xff0c;以下是一些具体的同步场景示例&#xff1a; 组织架构同步&#…...

MySQL基础扎实——MySQL中各种数据类型之间的区别

在MySQL中&#xff0c;有各种不同的数据类型可供选择来存储不同类型的数据。下面是一些常见的数据类型以及它们之间的区别&#xff1a; 整数类型&#xff1a; TINYINT&#xff1a;1字节&#xff0c;范围为-128到127或0到255&#xff08;无符号&#xff09;。SMALLINT&#xff1…...

每天五分钟机器学习:多项式非线性回归模型

本文重点 在前面的课程中,我们学习了线性回归模型和非线性回归模型的区别和联系。多项式非线性回归模型是一种用于拟合非线性数据的回归模型。与线性回归模型不同,多项式非线性回归模型可以通过增加多项式的次数来适应更复杂的数据模式。在本文中,我们将介绍多项式非线性回…...

ETH网络学习

概要 ETH网络是一个P2P网络&#xff0c;整个网络又区分为“执行层”与“共识层”。“执行层”节点负责交易交换&#xff0c;“共识层”节点负责区块打包、区块验证、区块同步和链同步。 执行层 执行层分为“服务发现”与“DevP2P”&#xff0c;两者共同并行执行。 服务发现…...

01-将函数参数化进行传递

项目源码&#xff1a;https://github.com/java8/ 1 应对不断变化的需求 在我们进行开发中&#xff0c;经常需要面临需求的不断变更&#xff0c;我们可以将行为参数化以适应不断变更的需求。 行为参数化就是可以帮助我们处理频繁变更的需求的一种软件开发模式 我们可以将代码…...

数据结构【栈和队列】

第三章 栈与队列 一、栈 1.定义&#xff1a;只允许一端进行插入和删除的线性表&#xff0c;结构与手枪的弹夹差不多&#xff0c;可以作为实现递归函数&#xff08;调用和返回都是后进先出&#xff09;调用的一种数据结构&#xff1b; 栈顶&#xff1a;允许插入删除的那端&…...

MATLAB | 产生阿尔法稳定分布噪声并作出概率密度函数

一、问题描述 想产生不同特征参数的α稳定随机变量&#xff0c;并且作出其概率密度函数进行对比。 二、解决思路 运行了MATLAB的官方实例代码&#xff1a; openExample(‘stats/ComparePDFsOfStableDistributionsExample’) &#xff08;1&#xff09;使用makedist()函数生成…...

深入浅出Pytorch函数——torch.softmax/torch.nn.functional.softmax

分类目录&#xff1a;《深入浅出Pytorch函数》总目录 相关文章&#xff1a; 机器学习中的数学——激活函数&#xff1a;Softmax函数 深入浅出Pytorch函数——torch.softmax/torch.nn.functional.softmax 深入浅出Pytorch函数——torch.nn.Softmax 将Softmax函数应用于沿dim的…...

Vue2学习笔记

vue是根据数据来构建用户界面的一套框架 创建一个vue实例 <!-- 1.创建一个容器 2.引入vue.js开发版本&#xff08;全局的&#xff09; 3.创建实例对象 4.配置选项 > 完成渲染 --> <div id"app">{{ msg }} </div> <script srcvue.js><…...

Java 悲观锁 乐观锁

锁可以从不同的角都分类。其中乐观锁和悲观锁是一种分类方式 一、悲观锁、乐观锁定义 悲观锁就是我们常说到的锁。对于悲观锁来说&#xff0c;他总是认为每次访问共享资源时会发生冲突&#xff0c;所以必须每次数据操作加上锁&#xff0c;以保证临界区的程序同一时间只能有一个…...

优惠券秒杀(二)

库存超卖问题分析 库存超卖问题其本质就是多个线程操作共享数据产生的线程安全问题&#xff0c;即当一个线程在执行操作共享数据的多条代码的过程中&#xff0c;其他线程也参与了进来&#xff0c;导致了线程安全问题的产生。例如&#xff1a;线程1发送请求&#xff0c;查询库存…...

selenium的java方式打开IE浏览器

1.下载软件Selenium Driver 官方下载地址&#xff1a; ​ https://www.selenium.dev/downloads/解压selenium-java-3.141.59.zip文件到java项目 seleniumDemo&#xff0c;并降解压的文件放入依赖中&#xff08;1&#xff09;双击项目的src打开项目结构&#xff0c;或右键-打开…...

分类评估指标

文章目录 1. 混淆矩阵2. Precision(精准率)3. Recall(召回率)4. F1-score5. ROC曲线和AUC指标5.1 ROC 曲线5.2 绘制 ROC 曲线5.3 AUC 值6. API介绍6.1 **分类评估报告api**6.2 **AUC计算API**练习-电信客户流失预测1. 数据集介绍2. 处理流程3. 案例实现4. 小结1. 混淆矩阵 …...

OpenCV:图像直方图计算

图像直方图为图像中像素强度的分布提供了有价值的见解。通过了解直方图&#xff0c;你可以获得有关图像对比度、亮度和整体色调分布的信息。这些知识对于图像增强、图像分割和特征提取等任务非常有用。 本文旨在为学习如何使用 OpenCV 执行图像直方图计算提供清晰且全面的指南。…...

用QFramework来重构 祖玛游戏

资料 Unity - 祖玛游戏 GitHub 说明 用QF一个场景就够了&#xff0c;在UIRoot下切换预制体达到面板切换。 但测试中当然要有一个直接跳到测试面板的 测试脚本&#xff0c;保留测试Scene&#xff08;不然初学者也不知道怎么恢复测试Scene&#xff09;&#xff0c;所以全文按S…...

生活杂记-显示器尺寸

以下是常见显示器尺寸的对角线长度换算成厘米的结果&#xff08;已经四舍五入到最接近的厘米数&#xff09;&#xff1a; 19英寸显示器 ≈ 48.26厘米21.5英寸显示器 ≈ 54.61厘米24英寸显示器 ≈ 60.96厘米27英寸显示器 ≈ 68.58厘米32英寸显示器 ≈ 81.28厘米34英寸显示器 ≈…...

在CSDN学Golang云原生(Kubernetes Pod无状态部署)

一&#xff0c;静态pod Kubernetes中的Pod是可以动态创建、销毁的&#xff0c;如果希望Pod只使用静态的IP地址而不是自动生成一个IP地址&#xff0c;那么就需要使用静态Pod。 静态Pod是在kubelet启动时通过指定文件夹路径来加载的。当kubelet检测到这些配置文件变化后&#x…...

LCMV与MVDR傻傻分不清?一个约束矩阵讲透两者的区别与联系

LCMV与MVDR&#xff1a;从约束矩阵维度看波束形成算法的核心差异 在嘈杂的会议室里&#xff0c;智能音箱总能准确捕捉你的声音&#xff1b;雷达系统可以在复杂环境中锁定特定目标——这些场景背后&#xff0c;都离不开阵列信号处理中的波束形成技术。当工程师们深入算法层时&am…...

如何突破语言壁垒?Translumo带来的实时翻译新体验

如何突破语言壁垒&#xff1f;Translumo带来的实时翻译新体验 【免费下载链接】Translumo Advanced real-time screen translator for games, hardcoded subtitles in videos, static text and etc. 项目地址: https://gitcode.com/gh_mirrors/tr/Translumo 在全球化的数…...

从火星车到智能家电:聊聊那些藏在身边的RTOS(FreeRTOS、VxWorks、RT-Thread)

从火星车到智能家电&#xff1a;聊聊那些藏在身边的RTOS 当你清晨按下智能咖啡机的启动键&#xff0c;或是用手机远程调节空调温度时&#xff0c;可能不会想到这些设备内部运行着与NASA火星车同源的实时操作系统&#xff08;RTOS&#xff09;。这类专为即时响应设计的系统&…...

Wan2.2-I2V-A14B开源模型:支持LoRA微调的私有化训练环境准备

Wan2.2-I2V-A14B开源模型&#xff1a;支持LoRA微调的私有化训练环境准备 1. 镜像概述与核心特性 Wan2.2-I2V-A14B是一款强大的文生视频开源模型&#xff0c;本镜像为其提供了完整的私有化部署解决方案。基于RTX 4090D 24GB显存显卡深度优化&#xff0c;内置所有必要组件&…...

CORS跨域问题终极指南:从XMLHttpRequest到Nginx代理的完整解决方案

CORS跨域问题终极指南&#xff1a;从XMLHttpRequest到Nginx代理的完整解决方案 第一次在控制台看到那个鲜红的CORS错误时&#xff0c;我正为一个紧急项目赶工。凌晨三点的咖啡已经凉了&#xff0c;而浏览器的报错信息像一堵墙横在我和 deadline 之间。相信每个全栈开发者都经历…...

Evo-1两阶段训练拆解:如何像“冻住”VLM backbone一样,保住你的模型语义不漂移?

Evo-1两阶段训练拆解&#xff1a;如何像“冻住”VLM backbone一样&#xff0c;保住你的模型语义不漂移&#xff1f; 当你尝试将一个预训练的视觉语言模型&#xff08;VLM&#xff09;适配到机器人控制任务时&#xff0c;是否遇到过这样的困境&#xff1a;模型在训练集上表现良…...

高速ADC采样时钟不准?手把手教你理解时钟占空比校正(DCC)电路的核心原理

高速ADC采样时钟不准&#xff1f;手把手教你理解时钟占空比校正&#xff08;DCC&#xff09;电路的核心原理 当你在调试一块高速ADC板卡时&#xff0c;发现ENOB&#xff08;有效位数&#xff09;始终比规格书低2-3位&#xff0c;频谱分析显示谐波失真异常。这种困扰可能来自一…...

Java函数计算迁移避坑清单:12个被官方文档隐瞒的关键限制(含Classloader隔离失效实录)

第一章&#xff1a;Java函数计算迁移避坑清单&#xff1a;12个被官方文档隐瞒的关键限制&#xff08;含Classloader隔离失效实录&#xff09;Java函数计算&#xff08;如阿里云FC、AWS Lambda Java Runtime&#xff09;在迁移传统Spring Boot应用时&#xff0c;常因底层沙箱机制…...

Java TCC到底要不要用?90%团队踩坑的4个认知误区,今天一次性说透

第一章&#xff1a;Java TCC到底要不要用&#xff1f;90%团队踩坑的4个认知误区&#xff0c;今天一次性说透TCC&#xff08;Try-Confirm-Cancel&#xff09;作为分布式事务的一种经典模式&#xff0c;在 Java 生态中常被误认为“高可用银弹”或“微服务标配”。但真实生产实践中…...

仅剩127天!Python 3.14+原生AOT将成标准解释器默认后端:企业级迁移路线图与兼容性断点预警

第一章&#xff1a;Python 原生 AOT 编译方案 2026 生产环境部署全景概览Python 原生 AOT&#xff08;Ahead-of-Time&#xff09;编译在 2026 年已进入成熟商用阶段&#xff0c;核心由 CPython 官方主导的 cpython-aot 工具链与 PEP 718 所定义的字节码预优化规范共同支撑。该方…...