星期二, 9月 25, 2012

MSSQL 2008 如何清空交易記錄檔(*_Log.LDF)

在 MSSQL 2000 可以下 T-SQL 指令

backup log database_name with TRUNCATE_ONLY

dbcc shrinkdatabase (database_name, TRUNCATEONLY)

“database_name”是資料庫檔案的實際名稱。

來清空交易記錄檔(*_Log.LDF)。

但在 MSSQL 2005 以後,此 T-SQL 指令就不能使用了,必須改用其他方法,以下是方法之一。
(提醒您執行處理之前,務必先備份原來的資料庫。)

一、將資料庫切換至【簡單】復原模式。
use master
go
ALTER DATABASE 【database_name】 SET RECOVERY SIMPLE WITH NO_WAIT


二、查詢資料庫交易記錄檔的邏輯名稱(如果已經知道【database_log_name】的名稱可以省略 select 那一行指令 )。
use 【database_name】
go
select name from sys.database_files where type_desc = 'log'

三、將交易記錄檔還原成 1MB。
DBCC SHRINKFILE(【database_log_name】, 1)

四、將資料庫切換回【完正】復原模式。
use master
go
ALTER DATABASE 【database_name】SET RECOVERY FULL WITH NO_WAIT

最後再次提醒您,在執行任何處理之前,請務必先備份原來的資料庫。

用 yum 將 CentOS 5.x 的 php 5.1.x 升級到 5.3.x - Part II

發現一種官方提供的 yum 安裝方法。

做更新動作之前還是提醒請先備份(網管千古名言:【沒事多備份,多備份沒事。】)。

一、先停止 apache 服務。
#service httpd stop

二、查詢已經有安裝了哪些 php 相關的程式記錄下來(後面安裝 php 5.3 模組時會用到)。
#rpm -qa | grep php

三、移除原先安裝的 php(包含 php 模組)。
#yum remove php php-*
(如果不移除 php-*,會導致後面安裝 php 5.3 的錯誤)

四、安裝 php 5.3。
#yum install php53

五、安裝 php 5.3 模組。
#yum install php53-gd php53-pdo php53-mbstring php53-mysql php53-ldap php53-devel php53-odbc
(上述是我安裝的 php 模組,您可以依照步驟二查詢結果的去安裝)

六、啟動apache 服務。
#service httpd start

七、查詢 php 版本是否正確更新。
#php -v

打完收工。
備註: 似乎從 5.2 開始 php 的 date() 函數會因為預設時區的問題而出現錯誤。
所以網頁 php 要加上一行(date_default_timezone_set("Asia/Taipei");)來解決。

星期一, 4月 16, 2012

MSSQL SQL-Injection 時的資料復原

單一Table單一欄位的復原法:

UPDATE tableName SET columnName = REPLACE ( convert(varchar(8000), columnName ) , '要被取代的字串', '取代的字串' ) WHERE columnName LIKE '%要被取代的字串%' ;


改寫為 Stored Procedure (只使用單引號):
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE procedureName
AS
BEGIN
DECLARE cursor_T CURSOR FOR
(SELECT obj.name AS tableName,
clum.name AS colName
FROM dbo.sysobjects AS obj INNER JOIN
dbo.syscolumns AS clum ON obj.id = clum.id INNER JOIN
dbo.systypes AS sType ON clum.xusertype = sType.xusertype
WHERE (obj.xtype = 'U') AND (clum.xusertype IN (35, 99, 167, 231))
)
DECLARE @tableName nvarchar(255),
@col nvarchar(255)
OPEN cursor_T
FETCH NEXT FROM cursor_T INTO @tableName,@col
WHILE (@@FETCH_STATUS = 0)
BEGIN EXEC('UPDATE ' + @tableName +
' SET ' + @col + ' = REPLACE( convert(varchar(8000),' + @col + ') , ''要被取代的字串'', ''取代的字串'' )
WHERE ' + @col + ' LIKE ''%要被取代的字串%''')
FETCH NEXT FROM cursor_T INTO @tableName,@col
END
CLOSE cursor_T
DEALLOCATE cursor_T
END


Stored Procedure 執行指令:

exec procedureName




星期五, 3月 16, 2012

用 yum 將 CentOS 5.x 的 php 5.1.x 升級到 5.3.x

做更新動作之前請先備份。
網管千古名言:【沒事多備份,多備份沒事。】
一、下載 yum 更新資料檔並安裝之。
#wget http://repo.webtatic.com/yum/centos/5/latest.rpm
#rpm -Uvh latest.rpm

二、編輯 yum 更新索引檔內容。
#vi /etc/yum.repos.d/webtatic.repo
將每個段落都加上一行 priority=1(如果沒加上這行,yum 更新時就只會依原 yum 內建的更新索引檔為主。)

三、開始執行 yum 更新 php。
#yum --enablerepo=webtatic update php
 
四、重新啟動 apache。
#/etc/rc.d/init.d/httpd restart
 
五、查詢 php 版本是否正確更新。
#php -v
 
備註:
發現當由 CentOS 內建的php 5.1.x 升級到 5.3.x 後,php 的 date() 函數會因為預設時區的問題而出現錯誤。
建議在網頁 php 主 include 檔中加上一行(date_default_timezone_set("Asia/Taipei");)來解決。

星期四, 12月 08, 2011

限制某目錄不能執行 php

限制某目錄不能執行 php,可以在該目錄的 .htaccess 裡設定:

RemoveHandler .php .phtml .php3
RemoveType .php .phtml .php3
php_flag engine off

星期五, 11月 26, 2010

如何備份 Outlook Express 郵件規則

Outlook Express 的郵件規則是儲存在機碼裡面,而非像郵件一樣是儲存在郵件檔裡面,因此要備份 Outlook Express 郵件規則就是將相關的機碼匯出,方法如下:

1.請由 [開始]->[執行],輸入 [regedit] 並按下 [Enter]
2.找到 HKEY_CURRENT_USER\Identities\{一串識別碼}\Software\Microsoft\Outlook Express\5.0\Rules\Mail(Outlook Express 5 或 6)
(Outlook Express 4 機碼位置在:HKEY_CURRENT_USER\Software\Microsoft\Outlook Express\Mail\Inbox Rules)
3.由功能表 [登錄]->[匯出登錄檔],將登錄檔存檔

星期四, 10月 21, 2010

IIS7.x 關閉指令檔(aspx, asp...等)的執行權限

點選 IIS 區塊的「處理常式對應」功能(如果是關閉特定目錄的執行權限,請先選取該目錄),再點選「開啟功能」:


再點選「編輯功能權限」:


將「指令碼」取消勾選,這時你會發現許多 處理常式對應 (Handler Mappings) 都會被自動設定為「已停用」,按下確定後就設定完成:


設定完成後會在該目錄下新增一個 web.config 設定檔,裡面會有該目錄執行權限的存取政策定義: