最近在一個項目,要求業務數據存放在本地。 最初考慮了MySQL和SQLite,可是MySQL體積略大,再者本人也不太習慣使用MySQL; SQLite呢功能太弱,效率隨着數據量的增大會有所降低;Oracle功能強大,是個人最愛,可是又沒有綠色版本的;Access什麼的也就算了,不在考慮之列。sql
無心中找到了一個MiniSQL2000,其實就是多年前的GSQL,大小合適,又是關係型數據庫,存儲過程什麼的都支持,功能足以知足業務需求。 本想聯繫一下MiniSQL2000的做者,諮詢一下核心進程sqlservr.exe的運行原理,誰曾想入羣居然須要先交100塊錢!!!! 雖然說是小錢,我也尊重這位做者的付出,可是實在是無力吐槽,誰讓人家掌握那麼一點點我不知道的技術呢! 數據庫
本着有事沒事找度孃的原則,網上搜了一下運行參數和原理,其實很簡單,只要虛擬註冊一下SQL Server的註冊表信息便可。 另外在網上又找到了一段GSQL做者寫的註冊虛擬註冊表的關鍵代碼,因此略加改動作了一個最簡單的啓用SQL Server 2000服務的小程序,源代碼也分享給想學習的同窗,但願能夠節省你們的時間,少走彎路! 小程序
源碼下載傳送門:https://download.csdn.net/download/valesgubb/10864668ide
sa用戶默認密碼admin,SQL實例名:BMSSQL,或者經過8899端口訪問。學習
源碼說明:spa
有兩個註冊表信息RegUnInstall.Bin 和 RegInstall.Bin 放在資源文件裏面,經過Brcc32 REG.rc編譯到.res文件,程序中釋放出來替換實例名和數據庫文件路徑以後進行虛擬註冊。.net
另外下載的源碼裏面有兩個地方要改一下,不然實例名和端口不能經過配置文件進行配置。code
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;
遺留問題: blog
本代碼只適用於Delphi2007及如下版本進行編譯,我用Delphi 10編譯運行會報版本不一致的錯誤,這個問題還沒有解決,若是哪位牛 人知道緣由,請告知解決方案,萬分感謝! 進程
申明: SQL Server版權歸 美國微軟公司全部,本實例僅供參考學習!