bestlong 怕失憶筆記

當健忘由隨機逐漸趨向常態時,作筆記是非常必要的

[DB] MS SQL 6.5 發現有 Database 的狀態為 Suspect 如何處理?

因為想移動 MS SQL 6.5 的其中一個資料庫到速度較快的磁碟機,所以在 Query 工具下改好 master.sysdevices 中的紀錄後,停止 SQL Server 服務並將 Data 與 Log 的 Device 檔案移動好,然後再啟動 SQL Server 服務。卻發現在 Enterprice Manager 程式內所移動的 Database 的圖示變成灰色並且顯示 Suspect 的訊息。重新檢查過程發現是因為改 master.sysdevices 的 phyname 時所指定的路徑有誤,所以 SQL Server 找不到檔案所以造成問題。

不過 Enterprice Manager 程式沒有支援解決 Suspect 的功能,必須手動處理步驟如下:

1. 確定 Database 所在的 Device 檔案都存在。
2. 在 ISQL/W 下開啟 MSSQL\Install\Instsupl.sql 並執行。
3. 執行下列指令:

use master
go
exec sp_resetstatus suspect_db_name

4. 重新啟動 SQL Server
5. 確定 之前 Suspect 的 Database 是否已恢復正常。
6. 執行 dbcc newalloc, dbcc textall, and dbcc checkdb 檢查 Database 狀況。

Leave a Comment

[DB] 如何設定 Client 連線至 MS SQL 2005

微軟的 MS SQL 2005 在 2005/12 發表上市,去了官方網站下載 Express 版本來研究一下。安裝過程還算平順,然後開始用 Delphi 5 寫程式來連線卻碰到找不到主機連接失敗的問題。用了幾個小時的時間摸索與上網找資料終於有了概念並成功建立連線。並且在其他 MS SQL2000 的 Client 電腦,在不安裝任何程式下也成功建立連線。

可以參考下列資料:
http://www.datamasker.com/SSE2005_NetworkCfg.htm
http://blogs.msdn.com/sqlexpress/archive/2005/05/05/415084.aspx
http://blogs.msdn.com/sqlexpress/archive/2004/07/23/192044.aspx

http://blogs.msdn.com/sqlexpress/

Comments (4)

[Delphi] 遇上錯誤訊息 OLE error 80030002

使用 ADO 做資料庫連接,在 MainForm 上放置兩個 TADOConnection 各自連接 MS SQL 2000 與 MS Access 2000 兩個資料庫。

原本相安無事,但隨著程式碼的累積,忽然間,連接 Access 的 TADOConnection 居然一直造成錯誤。

出現的錯誤對話框顯示著 OLE error 80030002 訊息。

在網路上找到此篇
INFO: Translating Automation Errors for VB/VBA (Long)

其中有列出

-2147287038 (80030002) %1 could not be found.

因為要開啟的檔案不存在所以找不到,所以是參數的問題。

只好重新追蹤看看,花了將近ㄧ個下午的時間終於找到原因。居然是因為使用了 FileListBox1 元件的問題。就是因為下列幾行指令的影響

procedure TfmMain.FormCreate(Sender: TObject);
(省略)
gs_AppPath := AddSlash(ExtractFilePath(Application.ExeName));
gs_DownLoadPath := AddSlash(gs_AppPath + ‘download’);
FileListBox1.Directory := gs_DownLoadPath; // 因為加了此行造成錯誤
(省略)
end;

執行 FileListBox1.Directory := gs_DownLoadPath; 後會導致程式執行時的工作目錄也改變成 gs_DownLoadPath 的內容。所以之後的程式碼若是有使用相對路徑的方式就有可能會導致路徑錯誤。

也剛好讀取 Access 的 TADOConnection 的 ConnectionString 屬性就是使用相對路徑的方式,來連接應用程式相同目錄下的 DB.UDL 資料連接設定檔。因為是在工作目錄的變動後才連線所以造成錯誤。

Leave a Comment

如何在 MS SQL 環境計算 SQL 語法的執行時間

對於資料異動量大的資料庫來說,將其調校至最佳化的狀況,唯有透過不斷的進行綜合分析與測試,來決定調校的方向。
想要計算出 SQL 語法的執行時間,可以使用以下簡單的方式

使用 MSSQL 6.5

declare @d datetime
select @d = getdate()
— 要計算時間的 SQL 語法開始
select * from TableName
— 要計算時間的 SQL 語法結束
select datediff(ms,@d,getdate())

使用 MSSQL 2000

declare @d datetime
set @d = getdate()
— 要計算時間的 SQL 語法開始
select * from TableName
— 要計算時間的 SQL 語法結束
select datediff(ms,@d,getdate())

Leave a Comment

[Delphi] 避免浮點數型態變數運算的四捨五入錯誤

這是一個令程式設計師有些傷腦筋的問題,在網路上找到此簡體版的技術文件,作者未知,記錄起來當筆記。

資料型態 為 Single、Double 和 Extended 的浮點數變數存在著四捨五入的問題。舉個例子,假設我們用電腦使用小數四位,那麼:

   1 / 3 = 0.3333

我們都知道 3 * 1 / 3 = 1 但如果我們這樣

   X := 1 / 3;
   X := X * 3;
   if X = 1 then //比對結果將會不正確

為什麼呢?
(Read the rest of this entry…)

Comments (4)

  • 近期留言

  • 標籤

  • 彙整