如何啓動綠色迷你SQL2000服務

最近在一個項目,要求業務數據存放在本地。 最初考慮了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版權歸 美國微軟公司全部,本實例僅供參考學習!

相關文章
相關標籤/搜索