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

推荐订阅源

Martin Fowler
Martin Fowler
Microsoft Security Blog
Microsoft Security Blog
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
Vercel News
Vercel News
Y
Y Combinator Blog
D
DataBreaches.Net
IT之家
IT之家
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
博客园_首页
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
H
Hackread – Cybersecurity News, Data Breaches, AI and More
WordPress大学
WordPress大学
H
Help Net Security
GbyAI
GbyAI
C
Check Point Blog
L
LangChain Blog
小众软件
小众软件
T
The Blog of Author Tim Ferriss
MyScale Blog
MyScale Blog
G
Google Developers Blog
月光博客
月光博客
V
V2EX
M
MIT News - Artificial intelligence
博客园 - 叶小钗

博客园 - 鬼画符

我要翻译《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版权归 美国微软公司所有,本实例仅供参考学习!