這錯誤很明顯是找不到路徑,
如果你使用的是dbq參數來打開資料庫,那你就必須要使用server.mappath(path)方法,映射其完整物理路徑(不要問為什麼,規定就這樣,沒辦法的事~)
如:
set dbconnection=Server.CREATEOBJECT("ADODB.CONNECTION")
DBPath = Server.MapPath("customer.mdb")
dbconnection.Open "driver=;dbq=" & DBPath
另外,站長團上有產品團購,便宜有保證
㈡ asp資料庫由access轉換為sql後速度變慢
這是由於access對於數據的處理已經過加工和優化。
轉換成SQL後,速度變慢很可能時因為沒有很好的處理分頁問題引起的,即每次讀取的數據量過大。每頁需顯示多少,則只從資料庫讀取多少條記錄,而不是一次讀取20W+的數據量。
比如每頁顯示100條數據,按ID降序排列顯示,則:
第1頁的SQL語句select top 100 * from TABLE order by ID DESC
第2頁的SQL語句select top 200 * from TABLE where ID NOT IN(select top 100 * from TABLE order by ID DESC) order by ID DESC
第3頁的SQL語句select top 300 * from TABLE where ID NOT IN(select top 200 * from TABLE order by ID DESC) order by ID DESC
...
第N頁的SQL語句select top 100*N * from TABLE where ID NOT IN(select top (N-1)*100 * from TABLE order by ID DESC) order by ID DESC
如果寫成存儲過程,性能更佳。
㈢ access資料庫轉換成sql的,連接好資料庫之後不知道為什麼很慢
sql訪問第一次讀取是比較慢,正常的,會有緩存第二次就會很快了,如果每次都很慢,就是有問題了,你這全是前台代碼,要看new.asp頁里的代碼寫的有沒有問題。
㈣ 怎麼解決ACCESS資料庫太大造成運行慢的問題
1.時候在使用Access文件的時候,隨著增刪改的不斷的連續,會導致文件越來越大。即使手動刪除或者使用delete語句刪除了大量的數據記錄,會發現文件的大小依然沒有減掉,而且隨著你再往裡寫數據,又會增大。
2.產生這個現象的原因跟Access本身的機制有關,具體也不清楚,好像是有什麼歷史記錄還是什麼存儲碎片。ACCESS資料庫在進行刪除操作後,並不從該資料庫中把數據清除掉,而是刪除其索引相關的東西,雖然顯示不出來,但是那些東西還是在文件中存在的,所以會引起ACCESS資料庫文件越來越大。即使是我們不通過代碼來訪問access文件,而只是通過用戶界面訪問,隨著文件的增大,也會帶來一系列的問題。其症狀包括:對象可能打開得更慢,查詢可能比正常情況下運行的時間更長,各種典型操作通常似乎也需要使用更長時間。更何況如果在網站應用中,採用的是Access作為資料庫的話,這里就有了性能上的問題。文件越來越大,會影響查詢的速度,而且ACCESS是採用獨占方式工作的,也就是說一次只能一個進程打開這個資料庫執行操作,如果是多個用戶的話就要"排隊"了,所以ACCESS資料庫如果變為很大的話,執行一個查詢時間就會變長,而進程"排隊"的等待時間也就會變得很久,專業型的資料庫就不同,可以同時接收多個並發的訪問,可以採用SQL資料庫或其它大型並發數很強的資料庫。
3.但是很多時候我們是需要Access文件,往不同的地方拷貝的,比如說,一個Server上生成了一個Access文件,需要拷貝到另外的Server上,而且Server間如果網速不是很好的話,會需要很長的時間來傳輸這個文件。所以這時候我們希望這個文件在內容不變的前提下,越小越好。所以我們可以去除這個Access的冗餘信息。
4.Office Access本身就有這種功能,我們可以通過菜單找到這個工具,然後單擊這個圖標手動壓縮。
5.執行以下這幾句代碼就可以了。
首先引用C:Program FilesCommon FilesSystemadomsadox.dll,該DLL包含ADOX命名空間;
接著引用C:Program FilesCommon FilesSystemadomsjro.dll,該DLL包含JRO命名空間
注意:如,導入dll不成功,手動把com組件 導入為 .net組件,在用vs.net工具導入
///壓縮修復ACCESS資料庫,mdbPath為資料庫絕對路徑
public void Compact(string mdbPath)
{
if (!File.Exists(mdbPath)) //檢查資料庫是否已存在
{
throw new Exception("目標資料庫不存在,無法壓縮");
}
//聲明臨時資料庫的名稱
string temp = DateTime.Now.Year.ToString();
temp += DateTime.Now.Month.ToString();
temp += DateTime.Now.Day.ToString();
temp += DateTime.Now.Hour.ToString();
temp += DateTime.Now.Minute.ToString();
temp += DateTime.Now.Second.ToString() + ".bak";
temp = mdbPath.Substring(0, mdbPath.LastIndexOf("\") + 1) + temp;
//定義臨時資料庫的連接字元串
string temp2 = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + temp;
//定義目標資料庫的連接字元串
string mdbPath2 = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + mdbPath + ";Jet OLEDB:Database Password=l1epc2";
//創建一個JetEngineClass對象的實例
JetEngineClass jt = new JetEngineClass();
//使用JetEngineClass對象的CompactDatabase方法壓縮修復資料庫
jt.CompactDatabase(mdbPath2, temp2);
//拷貝臨時資料庫到目標資料庫(覆蓋)
File.Copy(temp, mdbPath, true);
//最後刪除臨時資料庫
File.Delete(temp);
}
㈤ access 資料庫速度慢的原因是什麼
問題在於Access 本身
SQL, Sybase, Oracle等大型資料庫管理系統, 不僅在管理大容量資料庫時性能好,速度快. 更重要的是在並發處理有優勢.而並發處理對於資料庫管理系統是最重要的, 你想新浪, 網路等這些網站, 同一時刻有多少人在訪問啊, 資料庫要同時快速響應多個用戶的數據處理請求顯得尤為重要.
你單位的區域網至少應該是百M的吧 , 所以網速應該不是問題; 就伺服器本身的配置而言, 性能也應該滿足了; 在一個客戶端的情況下, 能夠快速的訪問, 表明跟客戶端配置也沒有關系; 所以可以認為, 是由於Access本身對於並發處理的性能低下, 才導致以上問題. 建議你可以裝個SQL Server2005, 用它可以把Access的資料庫轉換為Sql server資料庫, 當然你程序中和資料庫相關的連接, 訪問語句也要改一下.
PS: 你文中所講的"生產管理系統", 可能將來也不止在兩個客戶端上訪問, 當將來客戶端越來越多的時候, 這個問題會更加明顯. 所以建議你及早升級到 SQL Server, 畢竟Access只是個桌面型的資料庫, 並不適合應用在這種場合下. 另外, 個人認為建虛擬盤並不會有太大的性能改善.
㈥ Access查詢為什麼越來越慢
可能導致速度慢的原因很多,例如:
1.檢索出來的數據量確實太大;
2.資料庫的數據結構設計不佳;
3.SQL語句設計優化不佳;
4.網速慢、帶寬被限制或並發用戶量太多;
5.伺服器、交換機、用戶電腦等硬體性能不好;
6.其它N多理由......。
導致變慢的原因很多,可能是一種或多種原因綜合造成的。
不過根據樓主的描述來看很可能是你們的IT部門改變了網路參數所致。例如變更了伺服器的IP地址、網段、伺服器名等等,很多情況下因為有交換機內部的自學習機制,一開始運行會比較慢,經過一段時間使用後速度又會正常,但是某些情況下,速度始終回不到從前的水平。這時可以嘗試刪除ACCESS里原有的MSSQL鏈接表,再重新鏈接回來這些MSSQL表。這樣做通常都會使得查詢的運行速度回恢復正常。不妨嘗試一下,希望能幫到你。
㈦ ACCESS資料庫關聯兩個錶速度慢的問題,求優化方案! 卡號後8位相同的兩個表的數據關聯起來,數據2萬條以上
Right(Table1.Card,8) 用不到索引 當然慢了
你如果有這樣的設計需求 就應該用 空間換取時間 的做法
對兩個表都增加一個列 這個列就存 卡號後 8位 然後對這個列做索引 聚集或者非聚集 看你具體情況
㈧ SQL和ACCESS哪個速度更快
access有極限,sql可以完全修復這些問題~一旦access上了100mb,很容易造成伺服器iis假死,或者吃光你機子的內存~而且相對而言sql的數據備份比較方便,功能強大很多啊~,要看想用它來做什麼了一個小型一個大型!
access相對來說容易一些,但是安全性上比較差一些,適合一些比較小型的而且沒有什麼機密的網站,sql比較復雜,但是在安全性上要比access好得多,適合比較大,訪問頻率比較高,數據量比較大的網站。還有什麼問題,請留言或者發email:[email protected]
㈨ 我有兩個表都是18W條記錄,要比對,我在access中用sql查詢只用1秒鍾,在mysql中查詢過了1個小時仍沒查出來。
你好,由於記錄比較多,在mysql中查詢你可以將作為條件的欄位做為索引,這樣就會很快,添加索引的方式:
例如:alter table emp add index(empno);即對表emp中的欄位empno設置索引。
㈩ Sql server 中數據與access中數據對比速度太慢
檢查一下,檢索的兩張表上是否有索引,最好是where條件包含在索引中。