简介GSQL 6.5.2.1是一款面向个人测试与软件开发场景的SQL Server 2000精简版适合需要轻量级数据库管理能力、又不想部署完整企业级环境的开发者使用。压缩包共410个文件以dll动态库、rll资源文件、tql查询脚本、exe可执行程序为主另含mdf/ldf数据库文件、bat批处理及chm帮助文档等整体体积37.91MB结构紧凑。通过该工具可完成数据库创建、附加与基本查询操作支持T-SQL脚本编写便于在不同环境中快速验证程序与数据库的交互逻辑。对于学习SQL Server 2000或开展数据库相关开发测试的用户而言它提供了一条低资源消耗的实践路径。已有602人学习下载作为非生产环境的测试与教学平台实用性和便捷性都值得关注。1. 不装完整服务就能跑 SQL2000GSQL 6.5.2.1 值得下吗老项目升级或者接手旧系统时最怕的就是机器上躺着一套完整的 SQL Server 2000装了嫌重、卸了怕牵连其他程序。GSQL 6.5.2.1 本质上是 sql2000 的精简绿色版核心思路是不创建 Windows 服务、不往系统目录写东西解压后直接把数据库引擎跑起来。它能做基础库的操作、附加 mdf/ldf 文件、执行 T-SQL 和 osql 脚本适合给开发环境做一个隔离实例、跑老业务调试、或者纯粹学习 T-SQL 不污染正式服务。这篇就按「包里有什么 → 怎么启动 → 怎么附加数据 → 坑在哪 → 怎么收尾」的顺序拆一遍新手能跟着跑通熟手可以对照参数和边界。2. 解压即用的目录拆解批处理、chm、cnt 各管哪一段整个压缩包体积很小根目录下一眼能看到四个批处理、三个 chm 帮助文档和两个 cnt 目录索引文件。很多第一次用的人习惯性地只双击 GSQL.exe结果连不上、报错最后发现是批处理没跑。2.1 文件清单里每个文件的实际用途文件类型实际用途Reg.Bat批处理注册 SQLDMO 等 COM 组件给外部工具和脚本提供接口RegServer.Bat批处理注册服务端相关组件并初始化本机实例RunSqlScript.Bat批处理用 osql 执行传入的 .sql 脚本文件Del.bat批处理停止进程并清理注册表残留相当于实例重置/卸载sqlmmcem.chm / sqlmmcii.chm / sqlmmcrp.chm帮助文档SQL2000 联机丛书的不同模块分别偏向查询命令、实例管理和复制相关sqldmo80.cnt / sqldts80.cnt目录索引chm 的目录缓存文件供帮助系统定位主题三个 chm 文件名是拆着看的sqlmmcem、sqlmmcii、sqlmmcrp 分别对应联机丛书里的几个分册。sqldmo80.cnt 和 sqldts80.cnt 平时用不上但如果想在帮助系统里手工挂索引缺了它们目录树会空白。这批文件的定位决定了整个 GSQL 的使用方式它不是靠图形界面管理而是靠批处理加 osql 的组合拳。2.2 注册与启动顺序先 Reg 还是先 RegServer首次解压后不能直接双击 GSQL.exe 就完事。常见做法是先跑 Reg.bat 注册 COM 组件再跑 RegServer.bat 完成服务端初始化和启动。顺序反了OSQL 连不上、脚本调 SQLDMO 会报「未注册」。Reg.bat 里通常是这样的逻辑echo off REM 注册 SQLDMO 等 COM 组件供 osql 和外部程序调用 regsvr32.exe /s sqldmo.dll rem 注册完成后不会弹出成功的提示加一行输出方便确认 echo Reg done. Run RegServer.Bat next. pause这段命令的作用是把 sqldmo.dll 写进注册表。sqldmo 是 SQL2000 的分布式管理对象很多备份、附加数据库的脚本都要调用它。如果跳过这一步后面用开发工具连接实例时会一直提示接口找不到。/s参数是静默注册不弹窗避免批处理跑一半卡住。RegServer.bat 侧重点不同echo off REM 注册服务端基础组件并拉起 GSQL 实例进程 regsvr32.exe /s sqlunirl.dll start GSQL.exe echo Server started. Run RunSqlScript.Bat now. pausestart 命令会异步拉起 GSQL.exe 主进程所以批处理里不会卡住。两个批处理都不用改直接跑但要注意Windows 10/11 下面右键必须以管理员身份运行否则写注册表会被系统拦掉。2.3 用 RunSqlScript 跑初始化脚本一条命令代替手工建库GSQL 精简版一般不装企业管理器日常执行 SQL 脚本主要靠 RunSqlScript.bat。它的调用方式是把脚本文件路径作为参数RunSqlScript.bat init.sql内部逻辑大致长这样echo off REM 用法RunSqlScript.bat 脚本文件 if %1 goto usage osql.exe -S localhost -U sa -P 123456 -i %1 goto end :usage echo Usage: RunSqlScript.bat ^script.sql^ :endosql 是 SQL Server 2000 自带的命令行工具。-S指定服务器实例名本地直连写 localhost 就行-U是登录名默认 sa-P是密码GSQL 的默认密码根据下载包不同可能是空也可能是 123456如果密码为空直接把-P 123456改成-P 或者删掉整个参数。-i指定要执行的 SQL 脚本文件。这里有个习惯值得养成初始化脚本不要放在带空格的路径下osql 对路径解析不友好尤其是中文目录。我会把脚本和数据库文件都放 C:\GSQL_Data 这类纯英文路径下。RunSqlScript.bat 每次执行前先查看一下%1是否为空空参数直接提示用法不空才去连库。3. 附加数据库与 T-SQL 实操把 mdf/ldf 挂进来再执行查询GSQL 最有价值的地方是能直接挂载现成的数据库文件。旧系统备份出来的 .mdf 和 .ldf 复制过来不用还原附加就能查。3.1 附加数据库的两种方式第一种是走图形界面GSQL 自带的极简管理器里有 Attach Database 菜单选 mdf 文件即可。第二种是写系统存储过程适合脚本化USE master GO EXEC sp_attach_db dbname NTestDB, filename1 ND:\GSQL_Data\TestDB.mdf, filename2 ND:\GSQL_Data\TestDB_log.ldf GO -- 验证附加结果state_desc 为 ONLINE 才算成功 SELECT name, database_id, state_desc FROM sys.databases GOsp_attach_db 是 SQL Server 2000 时代的标准附加存储过程。dbname指定附加后的逻辑库名filename1、filename2按顺序列出主数据文件和日志文件。执行完查 sys.databases如果 state_desc 是 ONLINE 说明挂载成功。附加失败时最常见的原因是文件被占用另一个 SQL 实例或者杀毒软件在后台锁了文件。解决方式是把数据文件挪到 GSQL 自己的解压目录再重新执行一次。如果日志文件丢了可以用 sp_attach_single_file_db 只挂 mdf但这时候数据库状态是只读或者可疑需要后续修复不是首选。3.2 写一份可重复执行的测试脚本实际开发中脚本要能做到反复执行不报错。下面这个例子包含附加、建表、插入和查询可以直接拿来做冒烟测试USE master GO IF DB_ID(GTest) IS NOT NULL BEGIN EXEC sp_detach_db GTest END GO EXEC sp_attach_db dbnameNGTest, filename1NC:\GSQL_Data\GTest.mdf, filename2NC:\GSQL_Data\GTest_log.ldf GO USE GTest GO IF OBJECT_ID(dbo.users) IS NULL CREATE TABLE dbo.users ( id INT IDENTITY(1,1) PRIMARY KEY, name VARCHAR(50) NOT NULL, created_at DATETIME DEFAULT GETDATE() ) GO INSERT INTO dbo.users (name) VALUES (A同学), (某开发者) GO SELECT COUNT(*) AS total FROM dbo.users GO脚本的逻辑分四段。第一段判断 GTest 是否已存在存在就先 detach这是保证可重复执行的关键如果库不存在detach 语句会被 IF 跳过。第二段执行附加。第三段用IF OBJECT_ID(dbo.users) IS NULL判断表是否存在避免重复建表报错id 字段用 IDENTITY(1,1) 自增created_at 用 GETDATE() 写入当前时间。第四段插入两条数据并统计总数。执行方式就是用 RunSqlScript.batRunSqlScript.bat test_attach.sql注意 osql 对 GO 的批处理分隔支持正常但脚本文件结尾必须留一个空行否则有些版本会把最后一段卡住。密码不对时把批处理参数里的-P改成实际密码再跑。3.3 登录账号、权限与排序规则这三个地方容易忽略附加数据库跑通了不等于后面顺风顺水。GSQL 默认的超级管理员是 sa密码往往为空。空密码可以直接省略-P参数但要注意网络上连到本机实例时SQL2000 默认只启用 Windows 身份验证混合模式没开的话 sa 是连不上的。GSQL 精简版一般默认开混合模式如果不确定在实例配置文件里把身份验证改成 SQL Server and Windows 混合模式改完重启实例。权限方面附加进来的库归属 dbo跨库查询要配好 user 和权限否则连上库但 SELECT 任何表都提示没有对象权限。排序规则是最容易翻车的点国内中文版 SQL2000 默认是 Chinese_PRC_CI_AS如果 mdf 文件是从英文实例或者其他排序规则的库拆出来的经常出现中文乱码或者无法比较中文的情况。这种问题在附加后很难低代价修复最稳的做法是附加前先确认数据文件对应的排序规则不匹配就换一台同规则的 GSQL 实例。4. 避坑指南GSQL 在 Windows 10/11 上的常见问题GSQL 毕竟是 2000 年左右的程序拿到现在的系统上跑几乎必踩几个坑。这里列了五条亲测过的按「现象 → 原因 → 解决」写照着排查能省一个小时。4.1 双击 GSQL.exe 闪退批处理窗口一闪而过现象双击 GSQL.exe 黑窗一闪就没了服务没起来从进程管理器里也看不到进程。原因老程序默认没有请求管理员权限写注册表、建临时文件都会被拦截另一方面杀毒软件经常把这类免安装数据库引擎当作未知程序处理。解决对 GSQL.exe、Reg.bat、RegServer.bat 统一右键「以管理员身份运行」。批处理窗口闪退可以在每个 bat 里补一行pause或者cmd /k看真实报错。杀毒软件加白名单解压目录整个排除掉。如果还是起不来用命令行手动启动并输出日志GSQL.exe -o gsql_error.log 21-o是常见做法里让程序输出运行日志到指定文件重定向错误输出到同文件之后再打开 gsql_error.log 看具体报错。4.2 附加数据库时报文件占用或权限不足现象执行 sp_attach_db 报错提示无法打开物理文件或者访问被拒绝。原因GSQL 进程权限不够或者 mdf/ldf 文件被杀毒软件、另一个 SQL 实例占据。解决把数据文件复制到 GSQL 解压目录下比如 C:\GSQL_Data\给该目录 Everyone 读取权限NTSF 权限不到位最容易出这个问题。同时确认系统里没有第二个 SQL 实例在运行关掉后再执行附加。4.3 chm 和 cnt 打开空白帮助文档不可用现象双击 sqlmmcem.chm 显示空白页面左侧目录树是空的。原因chm 文件是从网络下载的Windows 安全策略默认锁定内容全部拦截。解决右键 chm 文件 → 属性 → 勾选「解除锁定」确认后重新打开。cnt 文件不用动它只是 chm 的目录索引锁定问题只出在 chm 上。4.4 osql 连接报「登录超时」或「无法打开用户默认数据库」现象RunSqlScript.bat 跑任何脚本都连不上报超时。原因大部分不是服务没起来而是参数不对。-S传了机器名或者反斜杠实例名或者账号密码不匹配。解决本地直连统一用-S localhost不要用-S 机器名\GSQL这种写法。密码为空时直接去掉-P参数如果设置过密码确认大小写。跑一遍netstat -ano | findstr 1433看实例监听端口是不是 1433被其他程序占用时改端口osql 用-S localhost,端口号连接。4.5 64 位系统上 regsvr32 注册失败现象Reg.bat 执行到最后提示模块未找到或注册不成功但文件确实存在。原因GSQL 自带的是 32 位 DLL而 64 位系统默认调用 64 位 regsvr32路径对不上。解决把 Reg.bat 里的 regsvr32 改为 32 位版本的完整路径C:\Windows\SysWOW64\regsvr32.exe /s sqldmo.dllSysWOW64 是 64 位系统上运行 32 位组件的兼容目录。改完再跑 Reg.bat注册成功后 RegServer.bat 才能继续。5. 把 GSQL 用成开发环境备份、脚本化与日志排查5.1 用 Del.bat 做「后悔药」实例重置要谨慎Del.bat 的作用是清理注册信息并重置实例。它不会删除数据库文件这点很重要。重置前把数据目录整体复制出来相当于给实例拍了快照。echo off REM 先停掉实例进程再清理注册表项 taskkill /f /im GSQL.exe reg delete HKLM\SOFTWARE\WOW6432Node\GSQL /f echo Done. Instance is reset.5.2 备份数据库到文件老库也要留后路GSQL 精简版没提供图形化的备份向导但可以通过 osql 直接执行备份语句BACKUP DATABASE GTest TO DISKC:\GSQL_Backup\GTest.bak WITH INITWITH INIT 表示覆盖同名备份文件。执行完检查 C:\GSQL_Backup 下文件大小是否在增长备份完成后再用 RunSqlScript 做一次查询验证库可用。从那次接手的系统因为没备份被别人误跑 Del.bat 导致重配之后我形成了固定习惯每次动 GSQL 实例之前强制走一遍备份——先复制 mdf/ldf再执行 BACKUP DATABASE最后才碰批处理。数据库不大整个过程一两分钟但能省下重新建库配数据的半天时间。GSQL 适合当本地测试平台也适合做旧系统验证环境但别把它当生产库用高可用和容灾能力确实没有。希望这篇拆解能帮你少走几条弯路配置一次就顺利把数据跑起来。本文还有配套的精品资源点击获取
阅读完成 · 觉得有帮助?