2006年10月25日 星期三

查ORACLE使用者的表格佔多少磁碟空間

SELECT segment_name,segment_type,extents,bytes,
ROUND(bytes/(1024*1024),1) MBytes
FROM user_segments
ORDER BY segment_name

2006年8月24日 星期四

DropDownList 的AppendDataBindItems屬性

今天同事Tad問我,他在FormView的EditItemTemplate中放入一個DropDownList,用來在頁面顯示代理人姓名資訊,以方便使用者編輯時可以直接選擇員工姓名而不是輸入員工代碼。
如果資料中有代理人資料時是都沒問題,但是如果一筆資料沒有代理人時按下編輯,就會出現"DropDownList擁有的 SelectedValue 無效,因為它不在項目清單中"錯誤訊息。
我的作法是:先在DropDownList的Items中加入一筆空白資料(Item的Text和Value都是空白),再將AppendDataBindItems屬性設為True,這樣作就會讓DropDownList的最上方多一筆空白資料,當某筆資料的代理人資訊是空白時,就會繫結到第一筆的空白資料,也就不會有錯誤訊息啦!

2006年8月8日 星期二

VS 2005 無法Debug:無法開始偵錯 . 連結控制碼不正確

今天把一些服務停掉後,在使用Visual Studio 2005寫程式時,發現沒辦法Debug,出現錯誤訊息"無法開始偵錯 . 連結控制碼不正確"。
後來只好試著把停掉的服務一個個的開,最後終於發現是"Terminal Services"不可以停用。

2006年8月5日 星期六

Win XP輸入帳號密碼登入後卻馬上被登出的問題

昨天替NB換硬碟,先用Ghost 9.0將舊硬碟資料複製到新硬碟,換上新硬碟開機,卻發生奇怪的問題!
開機後,一路開到登入畫面都還很正常,還想說沒問題了咧,輸入帳號密碼後,顯示"系統載入個人資料"後立即 就顯示"正在登出",卡在這裡好幾分鐘後,最後又回到登入的畫面。
不死心再登入一次,狀況相同...
換用Administrator帳密再試一次,一樣沒辦法登出....
重開機進安全模式,兩個帳號都試了,還是沒用........
換回舊硬碟開機卻又可以正常登入,上Google搜尋吧!找到一堆負面的答案,無解啦!序號黑名單啦!重灌啦!刪掉Pagefile.sys啦!總之試了半天,都沒用..........
最後在PCZONE討論區看到一位hertw網友的Post,他建議在作Ghost之前先把Registry中 HKEY_LOCAL_MACHINE\SYSTEM\MountedDevices 內的機碼都刪除掉,因為這個機碼紀錄了硬碟的相關訊息,清掉以後,Ghost 完系統重開機才會根據你所使用的硬碟重建那些機碼,我覺得還滿有道理的,就試試吧!
第一次測試是失敗的,因為我是先刪機碼,再插入USB外接式硬碟,然後才作Ghost,我想失敗的原因是在插入USB外接式硬碟時,系統又馬上重建了那些機碼。
第二次就成功了,這次是先插入USB外接式硬碟,再執行Ghost,把Source、Destination都選好後,才去刪機碼,這樣就沒問題囉!!!

2006年6月14日 星期三

連接aspnetdb問題的解決方式

最近在測試ASP .NET 2.0網站登入管理相關的控制項,因為不是用SQL Server 2005的Express版本,所以一開頭就碰了個大釘子,找了不少網站查資料,再加上自己的測試,整理出以下的幾個方法:

方法一:直接修改machine.config(爛方法不要用,除非你以後都不再寫其他網站應用程式)

檔案路徑在C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\CONFIG\machine.config,修改<connectionStrings>區段,改成自己的資料庫連線字串定義。

<connectionStrings>
<add name="LocalSqlServer" connectionString="data source=127.0.0.1;Integrated Security=SSPI;Initial Catalog=aspnetdb;" providerName="System.Data.SqlClient" />
</connectionStrings>

方法二:所有網站應用程式共用同一個apsnetdb(SQL Server 2000也適用)
如果機器上裝的不是Express版,或是資料庫不在本機上,就要先在Visual Studio 2005 命令提示字元執行aspnet_regsql.exe,aspnet_regsql會在SQL SERVER上建立一個aspnetdb資料庫,接著將Web.Config中的<connectionStrings>區段,改成自己的資料庫連線字串定義。
<connectionStrings>
<remove name="LocalSqlServer" />
<add name="LocalSqlServer" connectionString="data source=127.0.0.1;Integrated Security=SSPI;Initial Catalog=aspnetdb;" providerName="System.Data.SqlClient" />
</connectionStrings>
但是因為在C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\CONFIG\machine.config中
<membership>、<profile>、<roleManager>三個區段內的applicationName attrib都設定為"\",所以如果不修改就直接使用,多個網站的member、role及profile資料都會混在一起,除非自行在web.config加入以下這些設定,並設定applicationName attrib(字很小,看到了嗎?我設為applicationName="WebSite1" )

<membership>
<providers>
<remove name="AspNetSqlMembershipProvider" />
<add name="AspNetSqlMembershipProvider"
type="System.Web.Security.SqlMembershipProvider"
connectionStringName="LocalSqlServer"
enablePasswordRetrieval="false"
enablePasswordReset="true"
requiresQuestionAndAnswer="true"
applicationName="WebSite1"
requiresUniqueEmail="false"
passwordFormat="Hashed"
maxInvalidPasswordAttempts="5"
minRequiredPasswordLength="7"
minRequiredNonalphanumericCharacters="1"
passwordAttemptWindow="10"
passwordStrengthRegularExpression="" />
</providers>
</membership>
<profile>
<providers>
<remove name="AspNetSqlProfileProvider" />
<add name="AspNetSqlProfileProvider"
connectionStringName="LocalSqlServer"
applicationName="WebSite1"
type="System.Web.Profile.SqlProfileProvider" />
</providers>
</profile>

<roleManager enabled="true">
<providers>
<remove name="AspNetSqlRoleProvider" />
<remove name="AspNetWindowsTokenRoleProvider" />
<add name="AspNetSqlRoleProvider"
connectionStringName="LocalSqlServer"
applicationName="WebSite1"
type="System.Web.Security.SqlRoleProvider" />
<add name="AspNetWindowsTokenRoleProvider"
applicationName="WebSite1"
type="System.Web.Security.WindowsTokenRoleProvider" />
</providers>
</roleManager>


方法三:每個網站應用程式都用自己的apsnetdb(僅適用於SQL Server 2005)
當您裝了非Express版的SQL SERVER 2005,但卻想像Express版一樣,將資料直接存在程式路徑下App_Data資料夾中的aspnetdb.mdf,
可以這樣作:
1.執行aspnet_regsql.exe在SQL SERVER上建立一個aspnetdb資料庫
2.進入SQL Server Management Studio,將aspnetdb卸離
3.copy C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Data\aspnetdb.mdf及aspnetdb.ldf到程式路徑下的App_Data資料夾
4.修改web.config的<connectionStrings>區段
<connectionStrings>
<remove name="LocalSqlServer" />
<add name="LocalSqlServer"
connectionString="data source=.;Integrated Security=SSPI;AttachDBFilename=DataDirectoryaspnetdb.mdf;"
providerName="System.Data.SqlClient" />
</connectionStrings>

方法四:換Express版吧!

我用Express版試過,就真的很簡單!什麼問題也沒有,直接會幫您將aspnetdb開在程式路徑下的App_Data資料夾中。