發表文章

目前顯示的是有「Sybase」標籤的文章

Sybase 資料庫發生 Error: 644, Severity: 21, State: 1

通常此錯誤都是 索引損毀造成,在非資料庫伺服器等級機器上容易出現,官方說法通常是硬體問題引起,但實際狀況不一定。 Error: 644, Severity: 21, State: 1 後通常還會接這樣訊息: Index row entry for data row id (11316867, 0) is missing from index page 11405926 of index id 5 of table ' myTable ' in database ' CURDB '. Xactid is (7099705,6). Drop and re-create the index . 雖然 官方說法 建議使用 dbcc checktable 或是 sp_fixindex 來處理,但是效果不理想,建議還是重建比較好。 但是怎麼知道錯誤是哪個索引檔呢? 先用 sysindexes 列出全部索引 select si.* from sysindexes si,sysobjects so where so.id = si.id and so.type = 'U' and so.name = 'myTable' go 然後錯誤訊息指名 index id 5 ,所以找到欄位 indid 為 5 的索引名稱 'CUST_IDX'。 接下來就是 DROP 索引 drop index myTable.CUST_INDEX go 再來重建,由於此索引不是主索引所以下面使用 nonclustered 建立 create nonclustered index CUST_IDX on dbo.myTable (column1,column2,column3....) on 'default' go ※如果該資料表資料量很大,依照機器速度可能會花上半天左右。 參考: How to find Index List in a Sybase database? Error 644 - Sybase Infocenter

C# 存取 Sybase 資料庫

圖片
要讓 dotNet 程式存取 Sybase 資料庫,首先,你必須取得 Sybase PC Client 的幾個DLL檔案: Sybase.Data.AseClient.dll sybdrvado11.dll sybdrvssl.dll 如果是開發者,可能需要先安裝 PC Client <<這裡下載>> ,安裝完後再到 Visual Studio的專案下,把 Sybase.Data.AseClient.dll 加入參考 當要執行時,記得把 sybdrvado11.dll、sybdrvssl.dll 一並複製到執行路徑下(Sybase.Data.AseClient.dll 會自動在編譯時加入到路徑下所以不用特別拷貝) 使用時要引用: using Sybase.Data.AseClient; 程式流程部分 : 1、建立連線 → 2、建立SQL命令 → 3、建立傳遞參數(如果需要) → 4、傳遞參數值(如果有建立傳遞參數) → 5、執行命令 → 6、取得查詢資料 連線資料庫 //連線資料庫 AseConnection aseCon; aseCon = new AseConnection ( "DataSource= ServerIPorName ;Port= 5000 ;Database= Windstone ;UID= sa ;PWD= adminPassw0rd " ); aseCon.Open(); SQL指令準備有兩種處理方式 : 一次性執行或是重複執行。 //一次執行的方式 string employeeNo = "052419" ; DateTime inDate = new DateTime (2016,5,1); AseCommand GetEmplName = new AseCommand ( "SELECT empl_name FROM employee WHERE empl_no = '" + employeeNo + "' and job_date > '" + inDate.toString( "yyyy/MM/dd"

sybase 資料庫查詢 table ID 和 table name 對應

連入指定資料庫後,查詢指令 Select name , id , uid , sysstat From sysobjects Where type = 'U' 其他類型資料庫例如MS SQL,where好像用 xtype 來查: Select name , id From sysobjects Where xtype = 'U'