工作小筆記 年紀大了,常常會忘記….

25十月/10關閉

手動執行壓縮資料庫記錄檔的SQL語法

ALTER DATABASE REPORT SET RECOVERY SIMPLE;
GO

DBCC SHRINKFILE (REPORT_Log, 1);
GO

ALTER DATABASE REPORT SET RECOVERY FULL;
GO

16九月/10關閉

手動清除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的目錄權限:
這裡要注意的是,權限的部分是要設定共用的部分而非安全性的部分,
共用的使用權限中,帳號要開啟完全控制。

如果只是設定安全性的部分是沒有用的!

9九月/10關閉

壓縮記錄檔(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。

3九月/10關閉

SQL Server 2005 SSMS出現Sqlwb.exe錯誤而關閉

狀況:
使用SQL Server 2005的SSMS進行SQL語法查詢時,
出現Sqlwb.exe的錯誤而導致整個SSMS關閉。

解法:
到這個目錄下,
%SystemDrive%\Documents and Settings\\Application Data\Microsoft\Microsoft SQL Server\90\Tools\
刪除shell這個目錄,再重新執行SSMS即可!

26七月/10關閉

還原資料庫時出現錯誤

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

1七月/10關閉

建立Oracle DB Link

Step1. 安裝Oracle Client Software

22六月/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就又繼續順利的跑下去了!

22六月/10關閉

OS管理者密碼變更時,記得Check SQL Server的相關設定!

事情是這樣的.....
有一天,系統管理者(就是我)忘記了管理者帳號的密碼,
所以就使用另一個有管理者權限的帳號登入,然後改了管理者帳號的密碼,
然後,過了5天後才發現..... Full Backup失敗,兩台Server間的LogShipping也失敗,
原來~~~ SQL Server裡面有個地方也需要同步做修改,如下: