目前分類:SQL (13)
- Jul 28 Thu 2016 15:53
MS SQL 自動編號 identity 欄位(字段) 歸零 reset
- Jul 27 Wed 2016 11:44
MS SQL 清除 LOG 並縮減空間的語法
其實有比較簡短的語法 就是 SQL 內定的 SP 寶寶知道 但是寶寶先不說
又臭又長的 只要把有中文說明的部份改成你要的對象
P.S. 完整內容及持續更新版本請連結至原文查看:http://www.imp.idv.tw/play/forum/viewthread?thread=990
SET NOCOUNT ON DECLARE @LogicalFileName sysname, @MaxMinutes INT, @NewSize INT USE {DBName ex HRMS} -- 要操作的資料庫名 SELECT @LogicalFileName = '{Log file name ex HRMS_Log}', -- 日誌文件名 @MaxMinutes = 10, -- Limit on time allowed to wrap log. (M) @NewSize = 1 -- 你想設定的日誌文件的大小(M) -- Setup / initialize DECLARE @OriginalSize int SELECT @OriginalSize = size FROM sysfiles WHERE name = @LogicalFileName SELECT 'Original Size of ' + db_name() + ' LOG is ' + CONVERT(VARCHAR(30),@OriginalSize) + ' 8K pages or ' + CONVERT(VARCHAR(30),(@OriginalSize*8/1024)) + 'MB' FROM sysfiles WHERE name = @LogicalFileName CREATE TABLE DummyTrans (DummyColumn char (8000) not null) DECLARE @Counter INT, @StartTime DATETIME, @TruncLog VARCHAR(255) SELECT @StartTime = GETDATE(), @TruncLog = 'BACKUP LOG ' + db_name() + ' WITH TRUNCATE_ONLY' DBCC SHRINKFILE (@LogicalFileName, @NewSize) EXEC (@TruncLog) -- Wrap the log if necessary. WHILE @MaxMinutes > DATEDIFF (mi, @StartTime, GETDATE()) -- time has not expired AND @OriginalSize = (SELECT size FROM sysfiles WHERE name = @LogicalFileName) AND (@OriginalSize * 8 /1024) > @NewSize BEGIN -- Outer loop. SELECT @Counter = 0 WHILE ((@Counter < @OriginalSize / 16) AND (@Counter < 50000)) BEGIN -- update INSERT DummyTrans VALUES ('Fill Log') DELETE DummyTrans SELECT @Counter = @Counter + 1 END EXEC (@TruncLog) END SELECT 'Final Size of ' + db_name() + ' LOG is ' + CONVERT(VARCHAR(30),size) + ' 8K pages or ' + CONVERT(VARCHAR(30),(size*8/1024)) + 'MB' FROM sysfiles WHERE name = @LogicalFileName DROP TABLE DummyTrans SET NOCOUNT OFF
引用自:藍色小惡魔《MS SQL 清除 LOG 並縮減空間的語法》
http://www.imp.idv.tw/play/forum/viewthread?thread=990
事隔這麼久... 我現在來公佈那個簡短的語法 但是請注意這個語法的缺點!!!
DUMP TRANSACTION DBName WITH NO_LOG
為什麼我不一開始就推薦這個語法勒...
因為這個內建的方法他不會重新設定 LOG 檔的初始大小
請注意我原本的語法中 〝@NewSize = 1 -- 你想設定的日誌文件的大小(M)〞
很多時候我們剛接手別人的系統,發現磁碟空間老是爆滿,第一手段就是控制 LOG 的成長。
然而如果你只會這個簡單的語法,如果不是很了解原理也許一開始你會猛按卻沒有效果,因為很多偷懶或不懂的資料庫設計者,就是愛把 LOG 開個幾百幾千妹的,很討厭......
但是去問他會不會解 LOG 抓賊啊?只有無言的答案!
而上面提到的簡短語法他只會把 LOG 清除,然後呢?該DB 的 LOG 檔就會強佔他被設定的初始空間。
舉例你會看到一個 LOG 檔有 2 G,其實他幾百年都是 2 G,你以為他用到 2 G 了所以用力清卻沒用。
使用了我樂樂長的可重設初始空間的語法後,你才發現該資料庫這輩子根本用不到 200 M。
廢話好多... 就是要告訴各位一件事情,萬事都別偷懶,最難的和最簡單的都要學,交叉使用才能讓你的系統設計達到藝術的完美境界!
引用自:藍色小惡魔《MS SQL 清除 LOG 並縮減空間的語法》
http://www.imp.idv.tw/play/forum/viewthread?thread=990
- Jul 26 Tue 2016 17:03
SQL 日期時間轉換 (Convert Date Time to string)
- Jul 25 Thu 2013 18:49
用 SQL 追殺 SPAM 垃圾留言
這種 以己之矛攻己之盾的方法 真的是很高招,目前小惡魔網站應該還沒有被盯上的價值,不過先留下武功秘笈以備不時之需。
重點說明:
- Jul 24 Wed 2013 22:09
動態語法 Part 4 : Final 完整範例
drop table ICMS30Bak.dbo.JobBak_V2_繳款記錄 select * into ICMS30Bak.dbo.JobBak_V2_繳款記錄 from confer.dbo.V2_繳款記錄 |
- Jul 24 Wed 2013 22:08
動態語法 Part 3 : 動態欄位抄寫 Table
declare @vSQL1 nvarchar(1000), @vSQL2 nvarchar(500), @ColumnName varchar(50), @RunDate datetime -- 取得 Table 中以年月設計的欄位最大值 (考慮未來維護的人只知道增加欄位而未修改程式) |
- Jul 24 Wed 2013 22:03
動態語法 Part 2 : 動態欄位名稱更新 SQL
declare @vSQL nvarchar(500), @ColumnName varchar(50), @RunDate datetime, @DateStr char(8) set @RunDate = '2007-12-25' |
- Jul 24 Wed 2013 21:51
動態語法 Part 1 : 用 SQL 語法動態組合 SQL
今天實在對本公司為了讓 User 直接強姦資料庫而用 Excel 白痴法開的 Table
造成本人懶得寫程式 而接手過來貼得拉拉長的 SQL 很不爽
直接上討論區只能用 "欄位" 兩個字當關鍵字 (不得以的 其他太直接的關鍵字找不到文章)
- Jul 24 Wed 2013 21:41
用 SQL 把數字補 0
剛剛有個 寫了個補 0 的 SQL 問我怎麼寫不出來
主要當然是他沒把數字轉字串所以 SQL 很雞婆會自動轉回數字
- Jul 24 Wed 2013 01:38
自動重新啟動資料庫工作排程
MS SQL 教學
MIS 或 DBA 經常會設計定時抓取資料的 Schedule SQL Job,但因為上游資料來源(或程式)延遲或失敗,過了 Job 執行時間也許才差幾秒幾分鐘或可容許的延遲時間內來源資料變已產生完畢了,可是定時抓取的 SQL Job 早已停工,此時 User 來上工了發現系統有問題通知 MIS 處理,這時也只能癡癡地等上游資料跑完後,MIS 再手動執行 SQL JOB... 或者更慘的是,假日被急摳來處理...!!
MIS 轄下受連累的系統因為資料不夠新鮮以致使用單位無法作業,只好吃下問題單 ="=... 接著安排人跟催上遊甚麼時候補好資料庫。
- Sep 17 Sat 2011 00:50
MS SQL 資料庫備份語法
關鍵語法就是 backup database [@db_name] to disk = '@path_filename'
而以下範例我將檔明訂為 資料庫名稱 + 時間戳記 (yyyymmddhhmuss),檔名原則就看自己怎麼湊囉~~
- Sep 02 Fri 2011 20:58
Windows 漏洞與修補程式安裝管理
這是一篇由 國家資通安全會報 技術中心 游啟勝 於 2004/6/21 撰寫的文章,從網路論壇上分享到的,好文章分享給給每個在 MIS 領域奮戰的朋友!
2004_07_windows_patch_management.pdf
- Apr 22 Fri 2011 16:24
[SQL]MSSQL & MySQL 星期判斷語法
MySQL
select dayofweek(now())
1=星期天 ... 7=星期六 看不順眼自己倒減囉~