手動執行壓縮資料庫記錄檔的SQL語法
ALTER DATABASE REPORT SET RECOVERY SIMPLE;
GO
DBCC SHRINKFILE (REPORT_Log, 1);
GO
ALTER DATABASE REPORT SET RECOVERY FULL;
GO
手動清除Replication的distribution記錄
執行以下SQL,會清除在distribution資料庫中的所有紀錄,
EXEC dbo.sp_MSdistribution_cleanup @min_distretention = 0, @max_distretention = 0
如果清除時發生下以錯誤時,
以下列使用者的身分執行: NT AUTHORITY\SYSTEM。無法移除目錄 '\\dl380x1\ReplData\unc\DL380W1_ITUSE_ARTIE_TEST\20100726150914\'。請檢查 xp_cmdshell 的安全性內容並關閉其他可能在存取這個目錄的程序。 [SQLSTATE 42000] (錯誤 20015). 步驟失敗。
首先要先開啟xp_cmdshell:
-- To allow advanced options to be changed. EXEC sp_configure 'show advanced options', 1 GO -- To update the currently configured value for advanced options. RECONFIGURE GO -- To enable the feature. EXEC sp_configure 'xp_cmdshell', 1 GO -- To update the currently configured value for this feature. RECONFIGURE GO
再來檢查存放snapshot的目錄權限:
這裡要注意的是,權限的部分是要設定共用的部分而非安全性的部分,
共用的使用權限中,帳號要開啟完全控制。
壓縮記錄檔(ldf)沒有效果的狀況
該資料庫有設定發行集,需要重新匯入資料,但是不想讓異動記錄寫入distribution DB,
關閉replication log read agent可以不讓異動記錄進入distribution DB,
但是異動記錄還是會寫入該資料庫的ldf,
重新啟動replication log read agent後,在ldf內的異動資料還是會被寫入distribution DB。
該資料庫有設定發行集,無法使用truncate來清空資料,只能使用delete進行資料刪除,
但是delete會將所有的異動都寫入log file,造成ldf增長的非常大,
此時嘗試使用壓縮的功能來釋放ldf空間,卻沒有任何效果,
原因在於該資料庫處於replication的狀態,
使用select * from sys.databases這個SQL指令可以看到該資料庫的log_reuse_wait不是0,
log_reuse_wait_desc的值是REPLICATION,
最後只好刪除發行集再進行資料匯入,然後再壓縮ldf。
SQL Server 2005 SSMS出現Sqlwb.exe錯誤而關閉
狀況:
使用SQL Server 2005的SSMS進行SQL語法查詢時,
出現Sqlwb.exe的錯誤而導致整個SSMS關閉。
解法:
到這個目錄下,
%SystemDrive%\Documents and Settings\
刪除shell這個目錄,再重新執行SSMS即可!
還原資料庫時出現錯誤
RESTORE DATABASE [COSSTwmDB] FILE = N'cossdb', FILE = N'cossdb_log' FROM DISK = N'E:\SQLBackup\COSSDB\COSSDB_backup_201007250405.bak' WITH FILE = 1, MOVE N'cossdb' TO N'D:\SQLDATA\COSSTwmDB.mdf', MOVE N'cossdb_log' TO N'D:\SQLDATA\COSSTwmDB_log.ldf', NOUNLOAD, REPLACE, STATS = 10
執行以上還原資料庫的SQL時,會出現錯誤,需修改成下面的SQL。
RESTORE DATABASE [COSSTwmDB] FROM DISK = N'E:\SQLBackup\COSSDB\COSSDB_backup_201007250405.bak' WITH FILE = 1, MOVE N'cossdb' TO N'D:\SQLDATA\COSSTwmDB.mdf', MOVE N'cossdb_log' TO N'D:\SQLDATA\COSSTwmDB_log.ldf', NOUNLOAD, REPLACE, STATS = 10
當Log Shipping出問題,如何事後補救…
在某次改了OS管理者帳號的密碼之後,由於沒同步修改SQL Server上的相關設定,
所以Log Shipping機制也同時失效,這件事到了第5天我才發現,而Log Shipping的檔案我只留3天@@
所以接下來要趕快想補救辦法!
首先,拿Server B上的最後一次transaction log把DB還原成NORECOVERY MODE,
接著拿Server A上最後一次的差異備份到Server B,然後把DB還原成NORECOVERY MODE,
但此時卻發生還原失敗的錯誤(好像是什麼資料庫目的地不同還是不存在之類的),
沒關係,我們改用SQL語法來做,成功!
接下來找出差異備份之後的那一次transaction log,再把DB還原成STANDBY MODE,
OK!完成!之後Log Shipping就又繼續順利的跑下去了!
OS管理者密碼變更時,記得Check SQL Server的相關設定!
事情是這樣的.....
有一天,系統管理者(就是我)忘記了管理者帳號的密碼,
所以就使用另一個有管理者權限的帳號登入,然後改了管理者帳號的密碼,
然後,過了5天後才發現..... Full Backup失敗,兩台Server間的LogShipping也失敗,
原來~~~ SQL Server裡面有個地方也需要同步做修改,如下: