你可以試着這樣做:
1)安裝遠程dubugging工具MSSQL Server機器:
http://msdn.microsoft.com/en-us//library/bt727f1t.aspx
2)運行遠程調試監視器在MSSQL Server機器:
http://msdn.microsoft.com/en-us//library/xf8k2h6a.aspx
3)打開你的數據庫項目並選擇:調試 - 附加到進程...
4)瀏覽並選擇你的服務器。
5)選擇sqlservr.exe並附上
就是這樣,就像我想的那樣。
的代碼示例,我用於測試:
//StoredProcedure sample
public partial class StoredProcedures
{
[Microsoft.SqlServer.Server.SqlProcedure]
public static void StoredProcedure1(string source)
{
SqlDataRecord tempRecord = new SqlDataRecord(new SqlMetaData[] { new SqlMetaData("test", SqlDbType.VarChar, 50) });
tempRecord.SetString(0, "teeeest");
SqlContext.Pipe.Send(tempRecord); // here breakpoint with source=="php" condition
}
};
//PHP code sample
<?php
$connectionInfo = array("Database"=>"db", "UID"=>"sa", "PWD"=>"**************");
$link = sqlsrv_connect('server', $connectionInfo);
if($link === false)
{
echo "Could not connect.\n";
die(print_r(sqlsrv_errors(), true));
}
$sql = " { call StoredProcedure1 (?) } ";
$param1 = 'php';
$params = Array(
Array(&$param1, SQLSRV_PARAM_IN)
);
$stmt = sqlsrv_query($link,$sql,$params);
if ($stmt===false) {
// handle error
echo('1');
print_r(sqlsrv_errors(),true);
} else {
print_r($stmt);
sqlsrv_fetch($stmt);
print_r(sqlsrv_get_field($stmt, 0));
}
感謝您的建議。我已經完成了所有這些。看到我的原始文章 - 我仍然無法在運行應用程序時觸發斷點。 – Shoeless
@Shoeless,呃,對不起。我不明白你。你可以在存儲過程中添加參數(比如'string source'或者'string source ='none''')並且在exec行中將它設置爲「php」,「myserver」或者其他參數。並在斷點處設置條件(source ==「php」)。因此,只有條件成立,你的對手纔會停止。 –
感謝Dimitry,但問題與條件斷點無關。我想在VS的存儲過程中設置斷點,然後在瀏覽器中運行PHP應用程序,並在應用程序調用過程時在斷點處暫停。 – Shoeless