2009-01-09 46 views
2

沒有人知道如何從(SQL)數據庫返回值到MSBuild腳本?我想將值傳遞給一個屬性,以便將它傳遞給後續的構建任務。從數據庫MSBuild返回值

我現在正在處理類似下面的事情,但這是返回-1來表示查詢已成功執行,而我想要的是查詢的實際結果。 (SqlExecute從社區任務)。

<SqlExecute Command="select count(*) from dbo.trade" 
     ConnectionString="XXXX" > 
     <Output PropertyName="TradeCount" TaskParameter="Result" /> 
    </SqlExecute> 
    <Message Text="$(TradeCount)" /> 

回答

0

在Reflector中打開社區任務通常是最容易的,或者直接查看代碼庫以瞭解它是如何使用的。

+0

謝謝羅布你讓我回答了我的問題 - 擴展了MSBuildCommunity任務。 我已經擴展了SQLExecute任務來返回一個標量值,並且在某個時候打算將其更新到社區代碼庫中。已經有一些代碼可以做到這一點,但它並不完整。 – NeedHack 2009-01-14 13:59:35

0

您是否嘗試過「select * from dbo.trade」? 根據msbuild communitytasks文檔,Result將返回給定語句的行數,而您的語句可能會返回包含您的計數的單個行。

0

試過「select * from dbo.trade」,仍然給出-1。

社區任務文檔中顯示輸出「輸出返回計數/值」,但它沒有進一步介紹如何使用它。

+0

是啊,這一個例子是真的很難找到。 – 2009-01-09 14:30:53

1

Rob,

好想法。在反射器中打開社區任務顯示SqlExecute任務永遠不會返回查詢的值。

this._result = command.ExecuteNonQuery(); 

這可把我帶回試圖讓它與OSQL和Exec的任務工作...

<Exec Command="osql -n -S $(DatabaseMachineName) -E -q &quot;select count(*) from trade&quot; -b -d $(DatabaseName)"> 
     <Output PropertyName="TradeCount" TaskParameter="Outputs"/> 
    </Exec> 

    <Message Text="Result:$(TradeCount)" />