如果是因為資料庫太大造成程序運行很慢,那麼根據一定規則(比如時間等)把資料庫劃分成幾個小的資料庫表,這樣可以顯著增加數據速度
② sql資料庫日誌文件過大怎麼辦
經過幾個小時的測試,最有用的方法如下:
停止資料庫MSSQL實
復制資料庫目標庫文件('***.mdf')重新命名
執行如下SQL語句,注意修改正確的庫名
EXECsp_attach_single_file_db@dbname='庫名',
@physname='D:_50.MSSQLSERVERMSSQLDATA庫名.mdf'資料庫屬性/文件/限制文件增長
資料庫屬性/選項/設置資料庫收縮為[自動收縮]
③ SQL SERVER 日誌過大怎麼辦
/*--特別注意
請按步驟進行,未進行前面的步驟,請不要做後面的步驟
否則可能損壞你的資料庫.
一般不建議做第4,6兩步
第4步不安全,有可能損壞資料庫或丟失數據
第6步如果日誌達到上限,則以後的資料庫處理會失敗,在清理日誌後才能恢復.
--*/
--下面的所有庫名都指你要處理的資料庫的庫名
1.清空日誌(SQL2000時可用)
DUMP TRANSACTION 庫名 WITH NO_LOG
2.截斷事務日誌:
BACKUP LOG 庫名 WITH NO_LOG
3.收縮資料庫文件(如果不壓縮,資料庫的文件不會減小
企業管理器--右鍵你要壓縮的資料庫--所有任務--收縮資料庫--收縮文件
--選擇日誌文件--在收縮方式里選擇收縮至XXM,這里會給出一個允許收縮到的最小M數,直接輸入這個數,確定就可以了
--選擇數據文件--在收縮方式里選擇收縮至XXM,這里會給出一個允許收縮到的最小M數,直接輸入這個數,確定就可以了
也可以用SQL語句來完成
--收縮資料庫
DBCC SHRINKDATABASE(庫名)
--收縮指定數據文件,1是文件號,可以通過這個語句查詢到:select * from sysfiles
DBCC SHRINKFILE(1)
4.為了最大化的縮小日誌文件(如果是sql 7.0,這步只能在查詢分析器中進行)
a.分離資料庫:
企業管理器--伺服器--資料庫--右鍵--分離資料庫
b.在我的電腦中刪除LOG文件
c.附加資料庫:
企業管理器--伺服器--資料庫--右鍵--附加資料庫
此法將生成新的LOG,大小隻有500多K
或用代碼:
下面的示例分離 pubs,然後將 pubs 中的一個文件附加到當前伺服器。
a.分離
EXEC sp_detach_db @dbname = '庫名'
b.刪除日誌文件
c.再附加
EXEC sp_attach_single_file_db @dbname = '庫名',
@physname = 'c:\Program Files\Microsoft SQL Server\MSSQL\Data\庫名.mdf'
5.為了以後能自動收縮,做如下設置:
企業管理器--伺服器--右鍵資料庫--屬性--選項--選擇"自動收縮"
--SQL語句設置方式:
EXEC sp_dboption '庫名', 'autoshrink', 'TRUE'
6.如果想以後不讓它日誌增長得太大
企業管理器--伺服器--右鍵資料庫--屬性--事務日誌
--將文件增長限制為xM(x是你允許的最大數據文件大小)
--SQL語句的設置方式:
alter database 庫名 modify file(name=邏輯文件名,maxsize=20)
④ SQL2000資料庫過大,備份不了,又不能脫離,怎麼備份
可以使用差異備份,如果先前沒有完全備份,那就這樣,選擇分離資料庫,然後在異地(估計要使用移動硬碟類似的東西)把文件mdf和ldf復制過去。
⑤ sql資料庫文件過大,程序運行非常慢,怎麼辦
收縮資料庫
一般情況下,SQL資料庫的收縮並不能很大程度上減小資料庫大小,其主要作用是收縮日誌大小,應當定期進行此操作以免資料庫日誌過大
1、設置資料庫模式為簡單模式:打開SQL企業管理器,在控制台根目錄中依次點開Microsoft SQL Server-->SQL Server組-->雙擊打開你的伺服器-->雙擊打開資料庫目錄-->選擇你的資料庫名稱(如論壇資料庫Forum)-->然後點擊右鍵選擇屬性-->選擇選項-->在故障還原的模式中選擇「簡單」,然後按確定保存
2、在當前資料庫上點右鍵,看所有任務中的收縮資料庫,一般裡面的默認設置不用調整,直接點確定
3、收縮資料庫完成後,建議將您的資料庫屬性重新設置為標准模式,操作方法同第一點,因為日誌在一些異常情況下往往是恢復資料庫的重要依據
⑥ sql資料庫伺服器,內存佔用過大怎麼辦
SqlServer系統內存管理在沒有配置內存最大值,很多時候我們會發現運行SqlServer的系統內存往往居高不下。這是由於他對於內存使用的策略是有多少閑置的內存就佔用多少,直到內存使用慮達到系統峰值時(預留內存根據系統默認預留使用為准,至少4M),才會清除一些緩存釋放少量的內存為新的緩存騰出空間。
這些內存一般都是SqlServer運行時候用作緩存的,例如你運行一個select語句,執行個存儲過程,調用函數;
1.數據緩存:執行個查詢語句,SqlServer會將相關的數據頁(SqlServer操作的數據都是以頁為單位的)載入到內存中來,下一次如果再次請求此頁的數據的時候,就無需讀取磁碟了,大大提高了速度。
2.執行命令緩存:在執行存儲過程,自定函數時,SqlServer需要先二進制編譯再運行,編譯後的結果也會緩存起來,再次調用時就無需再次編譯。
在我們執行完相應的查詢語句,或存儲過程,如果我們不在需要這些緩存,我可以將它清除,DBCC管理命令緩存清除如下:
--清除存儲過程緩存
DBCCFREEPROCCACHE
--註:方便記住關鍵字FREEPROCCACHE可以拆解成FREE(割捨,清除)PROC(存儲過程關鍵字簡寫),CACHE(緩存)
--清除會話緩存
DBCCFREESESSIONCACHE
--註:FREE(割捨,清除)SESSION(會話)CACHE(緩存)
--清除系統緩存
DBCCFREESYSTEMCACHE('All')
--註:FREESYSTEMCACHE
--清除所有緩存
DBCCDROPCLEANBUFFERS
--註:DROPCLEANBUFFERS
⑦ sql資料庫伺服器,內存佔用過大怎麼辦
1、1.選擇逗開始
>
所有程序
>
microsoft
sql
server
2008
r2
>
sql
server
management
studio地。系統顯示逗連接到伺服器地界面。
2、2.輸入各項數據,單輪派渣擊連接
3、3.系羨姿統顯示逗對象資源管理器地界面
4、4.上圖單擊右鍵,在彈出的快捷菜單中選擇逗屬性地。
5、5.在左側導航欄中選擇逗內存地,將右側逗最大伺服器臘悄內存地的值設置為物理內存的60%,本例以8g內存為例
6、6.最後單擊確定,設置完成
⑧ MSSQL資料庫佔用內存過大造成伺服器死機問題的解決方法
使用MSSQL的站長朋友都會被MSSQL資料庫吃內存的能力佩服得五體投地 一個小小的網站 運行若干天之後 MSSQL就會把伺服器上所有的內存都吃光 此時你不得不重新啟動一下伺服器或MSSQL來釋放內存 有人認為是MSSQL有內存泄露問題 其實不然 微軟給我們了明確說明:
在您啟動 SQL Server 之後 SQL Server 內存使用量將會持續穩定上升 即使當伺服器上活動很少時也不會下降 另外 任務管理器和性能監視器將顯示計算機上可用的物理內存穩定下降 直到可用內存降到 至 MB 為止
僅僅出現這種狀態不表示內存泄漏 此行為是正常的 並且是 SQL Server 緩沖池的預期行為
默認情況下 SQL Server 根據操作系統報告的物理內存載入動態增大和收縮其緩沖池(緩存)的大小 只要有足夠的內存可用於防止內存頁面交換(在 至 MB 之間) SQL Server 緩沖池就會繼續增大 像在與 SQL Server 分配內存位於相同計算機上的其他進程一樣 SQL Server 緩沖區管理器將在需要的時候釋放內存 SQL Server 每秒可以釋放和獲取幾兆位元組的內存 從而使它可以快速適應內存分配變化
更多信息
您可以通過伺服器內存最小值和伺服器內存最大值配置選項設置 SQL Server 資料庫引擎使用的內存(緩沖池)量的上下限 在設置伺服器內存最小值和伺服器內存最大值選項之前 請查閱以下 Microsoft 知識庫文章中標題為"內存"一節中的參考信息
HOW TO Determine Proper SQL Server Configuration Settings(確定正確的 SQL Server 配置設置)
請注意 伺服器內存最大值選項只限制 SQL Server 緩沖池的大小 伺服器內存最大值選項不限制剩餘的未保留內存區域 SQL Server 准備將該區域分配給其他組件 例如擴展存儲過程 對象 以及非共享 DLL EXE 和 MAPI 組件 由於前面的分配 SQL Server 專用位元組超過伺服器內存最大值配置是很正常的 有關此未保留內存區域中分配的其他信息 請單擊下面的文章編號 以查看 Microsoft 知識庫中相應的文章
PRB 在使用大量資料庫時可能沒有足夠的虛擬內存
參考
SQL Server 聯機圖書;主題 "伺服器內存最小值和最大值的影響";"內存體系結構";"伺服器內存選項";"SQL Server 內存池"
下面我們就來實戰如何限制MSSQL內存使用:
第一步:打開企業管理雙擊進入要修改的MSSQL
第二步:在左側MSSQL上點擊右鍵 選擇屬性 彈出SQL Server屬性(配置)對話框
第三步:點擊內存選項卡
在這里 你會看到MSSQL默認設置為使用最大內存 也就是你所有的內存 根據你的需要 設置它的最大值吧
lishixin/Article/program/MySQL/201311/29533