2010年10月26日 星期二

VS2008無法進入debug 模式

前幾天,想要debug一下某個vs2008的專案檔.
按F5進入debug後, 原本應該disable變成灰色的綠色執行鍵, 在一開啟ie後, 就變回綠色,完全無法進入debug模式.

試了二天, 網路上一堆相同問題,但各有不同解決的方法, 我都試過而且還將windows 7重裝,vs2008重裝.....實在很雖小,在那麼clean的環境下, 仍然無法debug, 強烈懷疑是某個windows 更新造成的?

幹....這一個月來我得了電腦災害, 一堆問題突然湧現, 我心中吶喊這個字不止上千遍了.

今天, 試最後一招, 用run as administrator開啟vs2008......

太神奇....我明明就是用adminstrators的帳號登入本機的啊... WHY, 開過一次後, 這個無法debug的問題就解決了..

一頭霧水................................................法客

2010年10月23日 星期六

BugNet Email寄送

啟用寄發Email通知的功能

1.在 /Administration/Host/Settings.aspx 下的 Mail / SMTP 設定mail server , host email

2.在web.config 將

    <system.net>

    <mailsettings>

    <smtp deliverymethod="SpecifiedPickupDirectory">

    <specifiedpickupdirectory pickupdirectorylocation="C:\Email">

    </specifiedpickupdirectory>

    </smtp>

    </mailsettings>

    </system.net>

    改成

    <system.net>

        <mailSettings>

          <smtp deliveryMethod="Network">

          </smtp>

        </mailSettings>

    </system.net>

3.新增issue時,assigned to 時, Notify 要checked (default is true)
4.自已assign給自已的issue異動,你不會收到mail通知的, 但若是別人異動這個issue則會收到.
  You won't receive email notifications for your own actions, but others will.

2010年10月18日 星期一

已經為連結伺服器 "test" 的提供者 "SQLNCLI" 指定無效的結構描述或目錄

更改了server test 中的某一個table schema

因為資料量很大,所以通常都是先create 新table後,再用匯入匯出精靈將資料轉到新table, 轉換完畢後再將舊的table drop , 然後rename 新table.

以前都直接在Enterprise Manager上做reanme的動作, 但這次改用sp_reanme來更名.

sp_rename 'new_table', 'old_table '

結果今天查詢linkd db時,  select  count(*)  from test.mydb.dbo.old_table

出現了以下的錯誤

已經為連結伺服器 "test" 的提供者 "SQLNCLI" 指定無效的結構描述或目錄。

參考 NSDN這篇文章,

How to set up and troubleshoot a linked server to an Oracle database in SQL Server

里頭提到, 要嗎沒有permission,要嗎就是table name 不存在......

利用 sp_tables_ex  @table_server=test, @table_name='old_table'  

來查看linkdb中的table是否存在, 結果竟然沒有半筆資料......可是table 明明都在啊

直接用select * from openquery (test, 'select count(*) from old_tab') 來查詢,卻又有筆數..
select  count(*)  from test.mydb.dbo.old_table  比較
以結果筆數來說,這二個語法不應該是相同的嗎? 真是沒道理啊....

再來,  select * from sysobjects where name like '%old_table%'

table也是存在的. select 其他table都OK, 唯獨這個table都查不到....WHY????

回頭檢查了一那天跑的sql syntax...

原來 sp_rename 'new_table', 'old_table '  , 'old_table ' 後面多了一個空白, 
這個空白,讓linkdb 不認得了....


sp_tables_ex 執行時, 如果出現

伺服器 'MOJSS' 並未設定給 DATA ACCESS

請執行  exec sp_serveroption 'your server name','data access',true



CInt vs Int

完成參考 Microsoft® Visual Basic® Scripting Edition

其中附註說明
附註 CInt 函數與 Fix 及 Int 函數不同,Fix 和 Int 函數會將小數部分去除,然後傳回整數值。當小數部分恰好為 0.5 時, CInt 函數會將它轉換成最接近的偶數值。例如,0.5 轉換成 0,而 1.5 轉換成 2。

2010年10月6日 星期三

SQL Server Job查看

--查看job 
SELECT job_id, [name] FROM msdb.dbo.sysjobs

--查看job step
SELECT job.job_id,notify_level_email ,name,
enabled,description ,step_name,command,SERVER,database_name
FROM msdb.dbo.sysjobs job JOIN msdb.dbo.sysjobsteps steps
ON job.job_id = steps.job_id

--查看job history 歷程1, 最多1000筆(可在agent設size)
SELECT j.job_id, j.name, h.run_duration,h.step_id    FROM sysjobs j
INNER JOIN sysjobhistory h ON h.job_id=j.job_id
INNER JOIN (
SELECT job_id, MAX(STR(run_date,8)+STR(run_time,8)) AS LastRunDate
FROM sysjobhistory GROUP BY job_id
) x ON j.job_id=x.job_id
WHERE h.step_id=0 
AND STR(h.run_date,8)+STR(h.run_time,8)=x.LastRunDate

--查看job history 歷程2
SELECT run_date, run_time FROM sysjobhistory a INNER JOIN sysjobs b
ON a.job_id = b.job_id
WHERE  name LIKE  'OLAP%'

--查看job sysjobschedules
SELECT b.name,active_start_date,active_start_time,active_end_date,active_end_time
 FROM sysjobschedules a INNER JOIN sysjobs b
ON a.job_id = b.job_id
WHERE b.name LIKE 'OLAP%'

2010年9月17日 星期五

BugNet Devepoler 角色查看Issue

同事使用BugNet的角色將之設定為Developer, 因為望文生義,所以只幫他勾選了這個角色

有天他登入後,查看Issue List, 點選了某一筆的IssueTitle, 接著畫面就呆住不動等啊等的,出現了了這個錯誤.

Object reference not set to an instance of an object.

Stack Trace:

[NullReferenceException: Object reference not set to an instance of an object.]
   BugNET.Issues.IssueDetail.SetFieldSecurity() in C:\BugNet\WebSite\Issues\IssueDetail.aspx.cs:487
   BugNET.Issues.IssueDetail.Page_PreRender(Object sender, EventArgs e) in C:\NET\BugNet\WebSite\Issues\IssueDetail.aspx.cs:139
   System.Web.Util.CalliHelper.EventArgFunctionCaller(IntPtr fp, Object o, Object t, EventArgs e) +24
   System.EventHandler.Invoke(Object sender, EventArgs e) +0
   System.Web.UI.Control.PreRenderRecursiveInternal() +112
   System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +4184


debug後在 IssueDetail.aspx.cs SetFieldSecurity 方法, 倒數幾行
if (!ITUser.HasPermission(ProjectId, Globals.Permission.CLOSE_ISSUE.ToString()))
 {
     Status s = Status.GetStatusByProjectId(ProjectId).Find(delegate(Status status){return status.IsClosedState == true;});
       if (s !=null)
        {
            DropDownList stat = (DropDownList)DropStatus.FindControl("dropStatus");
            stat.Items.Remove(stat.Items.FindByValue(s.Id.ToString()));
        }
  }

加入紅字判斷物件是否存在即可.


另外原先下載的sourcre中,少了一個 /jHtmlArea/scripts/jHtmlArea-0.7.0.js目錄及檔案,導致查看issue detail時,會有javascript 找不到屬性或方法的錯.

可以到此網站下載, 在專案中將目錄及檔案加入即可,不然開啟查看明細的page時,要等很久.

2010年9月14日 星期二

BugNet 禁止匿名進入

BugNet預設是可以讓使用者一進入網站後就看到所有的public project的訊息,雖然是唯讀,但總覺得應該先登入後再依來查看project會比較好.

原本以為要改寫程式碼,但後來在資料表BugNet_HostSettings中看到,SettingName有一列名為 DisableAnonymousAccess,將其SettingValue設為True即可禁止匿名登入

2010/09/16....原來在 /Administration/Host/Settings.aspx 下,已經有這個選項的設定了...(汗...)

ps2.如果要依使用者權限來顯示project,則在Admin projects下,進入project administration,將其Security 的Access Type設為private,如此,當使用者登入時project就會依權限角色的設定來顯示了.
預設的Access Type是public ,代表只要登入後,所有人都可直接唯讀該project 內容.

另外,如要停用網站register功能,同樣的找到 DisableUserRegistration 將其SettingValue設為True即可

離線安裝SSMS 22 launched extracted application exiting with result code 0x138b

SSMS 22 安裝器下載頁面 https://learn.microsoft.com/zh-tw/ssms/install/install https://aka.ms/ssms/22/release/vs_SSMS.exe 將安裝檔下載到本機,檔案好大2.5G  https:...