顯示具有 Troubleshooting 標籤的文章。 顯示所有文章
顯示具有 Troubleshooting 標籤的文章。 顯示所有文章

2012年11月4日 星期日

如何解決Unable to start service: OOXX services stop automatically if they have no work to do


今天早上USER通知我TM1的Data Server不能啟動。

原因是他在機器加了一個新的data server ,但是忘了改 tm1s.cfg 裡面的設定
後來USER修改 tm1s.cfg 時忘了先停止 data server 就直接改 tm1s.cfg 裡面的內容,結果再次啟動時就發生Unable to start service: OOXX services stop automatically if they have no work to do這個錯誤。

解法:
先去事件檢視器去看詳細的錯誤訊息,發現是 data server路徑DataBaseDirectory錯誤。
Goole了一下,發現是註冊檔的路徑與tm1s.cfg的DataBaseDirectory。

於是我就執行了以下的動作
1. Start => Run
2. 在cmd.exe輸入Regedit
3. 尋找HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services
4. 找尋你的TM1 DataServer名稱。
5. 修改ConfigPath與tm1s.cfg的DataBaseDirectory一樣的路徑。

6. 在Service上啟動DataServer。
7. 搞定收工


參考網址


2012年10月25日 星期四

ActiveX control (msmask32.ocx) could not be instantiated


今天想要試一下如何在檢視TM1 Transaction log,於是在Architect上點選View Transaction log,結果出現下列的錯誤訊息

ActiveX control (msmask32.ocx) could not be instantiated. Reinstall or register control again and try again.

OMG,當下真的想罵髒話,可是我是斯文人不可以這樣做。於是我就Google一下發現是缺少msmask32.ocx這個檔案,必須要重新註冊。
解決方法如下:
1.      請在這裡http://activex.microsoft.com/controls/vb6/msmask32.cab 下載檔案
2.      解壓縮msmask32.cab,將msmask32.ocx放置於C:\Windows\SysWOW64
3.      進入cmd模式
I.            CD C:\Windows\SysWOW64(我的OS WIN 2008 R2 X64所以是放在這個路徑)
II.         Regsvr32.exe msmask32.ocx

4.      重新在Architect上點選View Transaction log,就可以正常看到Transaction log的內容。


參考網址: http://www-01.ibm.com/support/docview.wss?uid=swg21469061

2012年2月22日 星期三

如何解決REPLICATION的IO太高的問題

最近發現Sql server在執行Transactional Replication同步資料時有時候會有效能相當低落的情況,於是我使用了活動檢視器檢查Sql server,結果發現IO一直居高不下:
 
查了一下網路,發現是『清除散發: distribution的緣故(= =又是它)因為我們只有兩台機器,所以有一台要負責一邊Replication與刪除MSrepl_commands造成IO增加,於是我把這個作業的排程從每10分鐘執行改為在中午12點鐘執行減少產生IO的頻率後效能低落的情況大大減少,不過順道一提在修改JOB執行的頻率時要考量到硬碟空間是否足夠,如果硬碟不夠千萬別這樣做。

阿肥的SQL SERVER replication troubleshooting第五集

訊息20015,層級16,狀態1,程序sp_MSreplremoveuncdir,行83
無法移除目錄'\\RYO\ReplData\unc\RYO$SQL2008R2_REPLICATIONDB_PUB\20120204141716\'。請檢查xp_cmdshell 的安全性內容並關閉其他可能在存取這個目錄的程序。
(1)    開啟xp_cmdshell
(2)    檢查存放snapshot的目錄權限要有full control這裡要注意的是,權限的部分是要設定共用的部分而非安全性的部分。

如何解決在 TRANSACTIONAL REPLICATION的DISTRIBUTION資料庫的MDF過大的問題

如何清除REPLICATIONDISTRIBUTION資料庫

最近發現DISTRIBUTIONMDF過大,後來發現是因為『清除散發: distribution這個SQL JOB執行失敗的而造成無法刪除MSrepl_commands這個table的資料,而該JOB所產生的『訊息20015,層級16,狀態1,程序sp_MSreplremoveuncdir,行8』錯誤訊息解決方法請參考該網址,解決該問題後,重新執行該job後, MSrepl_commands這個table的資料就可以刪除了,以下是我解決問題DISTRIBUTION資料庫過大問題的步驟:
(1)    確認散發者的交易與紀錄保留時間

(2)    執行SELECT TOP 10 OBJECT_NAME(id) OBJECTNAME,reserved,rowcnt FROM SYSINDEXES ORDER BY 2 DESC;查看MSrepl_commands這個TABLE的容量,如果太大要執行sp_MSdistribution_cleanup使用清除MSrepl_commands這個TABLE,執行指令為:EXEC dbo.sp_MSdistribution_cleanup @min_distretention = 0, @max_distretention = 48
執行結果:

(3)    將發行集的訂閱過期從永遠不會過期改為間隔12小時未同步就卸除。

另外若有多個發行集可以使用下列SQL指令來觀察間隔時間
SELECT DISTINCT
srv.srvname publication_server
, a.publisher_db
, p.publication publication_name
, p.retention
, ss.srvname subscription_server
, s.subscriber_db
FROM MSArticles a
JOIN MSpublications p ON a.publication_id = p.publication_id
JOIN MSsubscriptions s ON p.publication_id = s.publication_id
JOIN master..sysservers ss ON s.subscriber_id = ss.srvid
JOIN master..sysservers srv ON srv.srvid = p.publisher_id
JOIN MSdistribution_agents da ON da.publisher_id = p.publisher_id
AND da.subscriber_id = s.subscriber_id
ORDER BY p.retention

執行結果如下:

執行上述步驟後使用DBCC SHRINKDATABASE 來壓縮資料庫即可。


參考網址

2011年9月23日 星期五

訊息2760,層級16,狀態1,程序OOXX,行3 指定的結構描述名稱"dbo" 不存在,或您沒有使用它的權限。

--建立測試的帳號與權限
USE [master]
GO
--1.建立LOGIN
CREATE LOGIN ryo2011 WITH PASSWORD=N'ryo@2011', DEFAULT_DATABASE=DemoPermission
, CHECK_EXPIRATION=OFF, CHECK_POLICY=OFF
GO
USE DemoPermission
GO
--2.建立USER
CREATE USER ryo2011 FOR LOGIN ryo2011
--3.設定USER預設的SCHEMAdbo
ALTER USER ryo2011 WITH DEFAULT_SCHEMA=[dbo]
--4.授權讀的權限,可以讀取所有的Table
EXEC sp_addrolemember N'db_datareader', N'ryo2011'
--5.授權建立VIEWPROCFUNCTION與執行PROC的權限
GRANT CREATE VIEW TO ryo2011;
GRANT CREATE PROC TO ryo2011;
GRANT CREATE FUNCTION TO ryo2011;
GRANT EXEC TO ryo2011;


--使用測試帳號登入並執行CREATE VIEW的指令後會有錯誤訊息如下;
訊息2760,層級16,狀態1,程序testview,行3
指定的結構描述名稱"dbo" 不存在,或您沒有使用它的權限。

--切回到SA,給予ryo2011擁有GRANT ALTER ON SCHEMA的權限
GRANT ALTER ON SCHEMA::dbo TO ryo2011;
--再次使用測試帳號登入並執行CREATE VIEW的指令後執行指令成功

--使用測試帳號登入並測試SELECT的指令

--搞定收工

2011年9月12日 星期一

開啟檔案時發生下列錯誤\\?\C:\Microsoft SQL Server\MSSQL.2\OLAP\Data\TestCube.0.db\統計維度.0.dim\1.(All).astore。中繼資料管理員有錯誤。

問題:今天早上同事反映Cube看不到任何物件,遠端連進去使用SSMS想打開CUBE,結果發生以下的錯誤訊息:
開啟檔案時發生下列錯誤
\\?\C:\Microsoft SQL Server\MSSQL.2\OLAP\Data\TestCube.0.db\統計維度.0.dim\1.(All).astore
中繼資料管理員有錯誤。 
解決:
1.先停用SSAS服務。
2.刪除有問題的Dimension(本例是統計維度,路徑在C:\Microsoft SQL Server\MSSQL.2\OLAP\Data\ TestCube.0.db)
3.重新還原或重新佈署Cube
如果還是不行的話直接把C:\Microsoft SQL Server\MSSQL.2\OLAP\Data\ TestCube.0.db的目錄砍了,再重新還原或重新佈署Cube

2011年8月24日 星期三

訊息 3201,層級 16,狀態 1,行 1 無法開啟備份裝置。作業系統錯誤 5(存取被拒。)。 訊息 3013,層級 16,狀態 1,行 1 BACKUP DATABASE 正在異常結束。


問題:備份資料庫發生訊息 3201,層級 16,狀態 1,行 1的錯誤訊息
解決方法:設定登入的內建帳戶為本機系統(Local System)

步驟:
1.確認登入帳戶
打開Sql Server Configuration Manager檢視內建帳戶是否為Local System,結果發現內建帳戶是網路服務(Network Service)
2.修改內建帳戶為Local System
3.重新備份資料庫
搞定收工~

2011年7月8日 星期五

登入報表管理員(Report Manager)時不斷被詢問帳號密碼

問題:
當我進入報表管理員時網頁瀏覽器(IE)會要求我輸入報表管理員的登入帳號和密碼,
當我輸入administrator的帳號和密碼之後還是不斷詢問我帳號和密碼。

解決方法:後來發現是IE安全性設定的問題

1.打開IE選擇工具(T)==>網際網路選項(O):

2.接著點選安全性後,選擇近端內部網路,並點選網站(S):

3.點選進階(A)

4.把本機的網址加入網站(W)中,如此就可以順利登入報表管理員了。

2011年3月24日 星期四

在Win2008 R2(64位元) 設定的SQL Server 2005(64位元) -Oracle Client相關設定

裝完SQL SERVER後,接下來就是要測試功能是否正常,首先就是Reporting Service啦,
開啟BIDS後,會有相容性的警告訊息,不過不管它繼續執行,進入BIDS後,建立一個報表專案,測試資料來源連接到SQL SERVER,跑起來是OK的,然後換到連到ORACLE,結果出現
需有 Oracle 用戶端軟體版本 8.1.7 或以上版本的訊息)的錯誤訊息,上網查了一下後,得知因為BIDS某些元件是32位元,於是才會有這樣的錯誤訊息。
於是我安裝了ORACLE CLIENT 10G R2後並重開機,就可以正常建立連到ORACLE的資料來源了,真是謝天謝地,裝完後,把報表佈署到REPORTING SERVICE上,預覽資料來源為ORACLE的報表,結果又出現需有 Oracle 用戶端軟體版本 8.1.7 或以上版本的訊息)的錯誤訊息,一整個超無言,我又要上網查了,發現需要安裝ORACLE CLIENT 11G R2 X64,裝完後要做以下的設定:

(1)在執行上打REGEDIT,加上KEY_LOCAL_MACHINE\SOFTWARE\ORACLE\KEY_ODACHome1加上TNS_ADMIN字串

(2)在TNS_ADMIN的值打上C:\oracle\product\10.2.0\client_1\NETWORK\ADMIN(視個人安裝路徑而定)並重開機就可以在REPORTSERVER上正常執行報表了。

PS:如果沒安裝ORACLE CLIENT 11G R2 X64,REGEDIT時會看不到KEY_LOCAL_MACHINE\SOFTWARE\ORACLE這個目錄。

2011年3月21日 星期一

在Win2008 R2(64位元) 設定的SQL Server 2005(64位元) -LINK SERVER設定

話說裝完SQL SERVER 之後,因為有一些報表需要使用到LINK SERVER去撈ORACLE的資料,於是我安裝了ORACLE Client 10G R2的版本,裝完後發現少了Microsoft OLE DB Provider for Oracle,阿~真的好煩,GOOGLE了一下後我裝了ORACLE Client  11G R2 X64的CLINT,改用OLEDB Provider for Oracle,終於可以建立LINK SERVER了,喔耶~可是我測了一下SELECT又有那該死的錯誤訊息:
Msg 7302, Level 16, State 1, Line 1 Cannot create an instance of OLE DB provider "OraOLEDB.Oracle" for linked server "ORACLESERVER"。
真是一波三折,於是我拜了GOOGLE大神,執行EXEC master.dbo.sp_MSset_oledb_prop N'OraOLEDB.Oracle', N'AllowInProcess', 1然後重新啟動SQL SERVER就可以了,真是夠了。
但是問題還沒完,我都快哭了。
PS:如果有報表要佈署到REPORTSERVER上,一定要安裝ORACLE CLIENT 11G R2 X64,否則在REPORTSERVER上看有連到ORACLE的報表會有錯誤訊息。

2011年3月7日 星期一

在Win2008 R2(64位元) 設定的SQL Server 2005(64位元) -IIS設定

因為顧客要換機器,連作業系統都要換成WIN2008 R2 X64,可是SQL SERVER卻還是2005 X64,於是來了一場超痛苦的安裝之旅。

首先是安裝的時候,SQL SERVER做系統檢查發現IIS沒裝,我檢查了一下,打了LOCALHOST,有出現IIS7的網頁呀,明明就有裝起來,於是無奈之下重裝IIS7,並且在網路上找到這篇文章照著他的設定做,喔耶~終於WORK了。

原來我是少勾ISAPI這個選項。感謝神.....終於過了第一關。

2010年9月22日 星期三

使用sp_change_users_login消除SQLServer的孤立帳戶

/*
孤立帳戶:
就是資料庫的帳戶只有username而沒有sqlserverlogin。
原因:
為該資料庫的sysusers系統表中存在username,而在master資料庫的syslogins中卻沒有對應的login。
*/
--可以將被"孤立"的帳號列出
exec sp_change_users_login 'Report'
--將資料庫使用者對應至新的SQLServer登入
EXEC sp_change_users_login 'Update_One', 'User', 'login';
--使用 Auto_Fix 將現有使用者對應至相同名稱的登入
EXEC sp_change_users_login 'Auto_Fix', 'UserName'