惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
爱范儿
爱范儿
H
Help Net Security
V
Visual Studio Blog
J
Java Code Geeks
Stack Overflow Blog
Stack Overflow Blog
Microsoft Security Blog
Microsoft Security Blog
Apple Machine Learning Research
Apple Machine Learning Research
MyScale Blog
MyScale Blog
The Cloudflare Blog
Martin Fowler
Martin Fowler
D
Docker
腾讯CDC
F
Fortinet All Blogs
雷峰网
雷峰网
GbyAI
GbyAI
G
Google Developers Blog
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
Recent Announcements
Recent Announcements
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
Blog — PlanetScale
Blog — PlanetScale
Engineering at Meta
Engineering at Meta
博客园 - 聂微东
博客园 - 叶小钗

博客园 - 鬼画符

我要翻译《Think Python》- 006 第四章 学习案例:接口设计 我要翻译《Think Python》- 005 第三章 函数 我要翻译《Think Python》- 004 第二章 变量, 表达式和语句 我要翻译《Think Python》-003 第一章 编程之道 我要翻译《Think Python》-002 贡献列表 & 目录部分 我要翻译《Think Python》 - 001 序言部分 我要翻译《Think Python》 - 开篇申明 ORA-12514 解决方法 Delphi Invalidate的用法 英语邮件怎么写 读书笔记《小狗钱钱》 Words to Live by 生气的时候不要做任何决定 好的技术不一定能给你带来财富,但是好的工具一定可以让你创造财富 Enterprise Library 学习笔记-01 声明:我还活着 如何获得别人的尊重-人格塑造 企业ERP自定义报表辅助系统 V1.0.0.9 自定义报表工具下载 For Oracle9i
如何启动绿色迷你SQL2000服务
鬼画符 · 2018-12-20 · via 博客园 - 鬼画符

最近在一个项目,要求业务数据存放在本地。 最初考虑了MySQL和SQLite,但是MySQL体积略大,再者本人也不太习惯使用MySQL; SQLite呢功能太弱,效率随着数据量的增大会有所下降;Oracle功能强大,是我的最爱,但是又没有绿色版本的;Access什么的也就算了,不在考虑之列。

无意中找到了一个MiniSQL2000,其实就是多年前的GSQL,大小合适,又是关系型数据库,存储过程什么的都支持,功能足以满足业务需求。 本想联系一下MiniSQL2000的作者,咨询一下核心进程sqlservr.exe的运行原理,谁曾想入群竟然需要先交100块钱!!!! 虽说是小钱,我也尊重这位作者的付出,但是实在是无力吐槽,谁让人家掌握那么一点点我不知道的技术呢!

本着有事没事找度娘的原则,网上搜了一下运行参数和原理,其实很简单,只要虚拟注册一下SQL Server的注册表信息即可。 另外在网上又找到了一段GSQL作者写的注册虚拟注册表的关键代码,所以略加改动做了一个最简单的启用SQL Server 2000服务的小程序,源代码也分享给想学习的同学,希望可以节省大家的时间,少走弯路!

源码下载传送门:https://download.csdn.net/download/valesgubb/10864668

sa用户默认密码admin,SQL实例名:BMSSQL,或者通过8899端口访问。

源码说明:

有两个注册表信息RegUnInstall.Bin 和 RegInstall.Bin 放在资源文件里面,通过Brcc32 REG.rc编译到.res文件,程序中释放出来替换实例名和数据库文件路径之后进行虚拟注册。

另外下载的源码里面有两个地方要改一下,否则实例名和端口不能通过配置文件进行配置。

procedure ExecRegFile(AFile: string);

  function FMPath(APath: string): string;
  begin
    Result := StringReplace(APath, '\', '\\', [rfReplaceAll]);
  end;

var
  TempData: string;
  REGBin: TStringList;
  rs: TResourceStream;
begin
  rs := TResourceStream.Create(HInstance, AFile, 'reg');
  rs.Position := 0;
  REGBin := TStringList.Create;
  REGBin.Clear;
  REGBin.LoadFromStream(rs);
  TempData := REGBin.Text;
  TempData := StringReplace(TempData, '$Name', InstanceName, [rfReplaceAll]);
  TempData := StringReplace(TempData, '$Port', InstancePort, [rfReplaceAll]);
  TempData := StringReplace(TempData, '$Path', FMPath(RunPath), [rfReplaceAll]);
  TempData := StringReplace(TempData, '$D', FMPath(RunPath + 'Data\master.mdf'), [rfReplaceAll]);
  TempData := StringReplace(TempData, '$L', FMPath(RunPath + 'Data\mastlog.ldf'), [rfReplaceAll]);
  REGBin.Text := StringReplace(TempData, '$E', FMPath(RunPath + 'Logs\SQL_Logs.log'), [rfReplaceAll]);

  RunRegScript(REGBin);

  FreeAndNil(REGBin);
  FreeAndNil(rs);
end;

遗留问题:

本代码只适用于Delphi2007及以下版本进行编译,我用Delphi 10编译运行会报版本不一致的错误,这个问题尚未解决,如果哪位牛 人知道原因,请告知解决方案,万分感谢!

申明: SQL Server版权归 美国微软公司所有,本实例仅供参考学习!