Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How can I step into a SQL Server stored proc from my C# code?

I am debugging some C# code that uses Ado.net to call a stored proc (TSQL) in SQL Server. How can I step into the stored proc?

(I think I have seen this demoed by Microsoft staff, but can’t recall the 101 “magic” settings that are needed to get it to work.)

like image 319
Ian Ringrose Avatar asked Jan 19 '11 14:01

Ian Ringrose


People also ask

How do I navigate to a stored procedure in SQL Server?

Using SQL Server Management Studio Expand Databases, expand the database in which the procedure belongs, and then expand Programmability. Expand Stored Procedures, right-click the procedure and then select Script Stored Procedure as, and then select one of the following: Create To, Alter To, or Drop and Create To.

How debug SQL stored procedure when called from C#?

Start by going to the Server Explorer and expand the Northwind database node. Next, drill down into the Stored Procedures folder, right-click on the Products_SelectByCategoryID stored procedure, and choose the Step Into Stored Procedure option from the context menu. This will start the debugger.

Is there a way to debug stored procedure?

To debugging SP, go to database->Programmability->Stored Procedures-> right click the procedure you want to debug->select Debug Procedure.


1 Answers

I'll build on Davide's answer and Ian's comment to it because that was the exactly the process I have gone through.

Assumption: answer is based on VS2008 & VS2010.

To step through a T-SQL stored procedure on SQL Server while debugging a .NET app you need to do the following:

  1. Follow the MS Support instructions "How to debug stored procedures in Visual Studio .NET (Option 2)"

    • Ensure that you have enabled SQL Server debugging in the project's properties (Step 4 in the linked instructions).
    • Ensure you have set a breakpoint in the stored procedure itself (Steps 6-7)
  2. Enable the Allow SQL/CLR Debugging on the Data Connection on which the stored procedure is called:

    • (without this second step you'll be getting "The breakpoint will not currently be hit. Unable to bind SQL breakponit at this time. Object containing the breakpoint not loaded." as reported by Ian)
    • Server Explorer > Data Connections
    • Right-click on the connection that you are using in the code
    • Tick the Allow SQL/CLR Debugging option in the menu

Added from comments: (This seem to be key to getting it to work)

It works with a programmatically created connection, too. You just have to use the exact same connection string that is displayed when you right-click the server instance, click on 'Properties' and scroll down to 'Connection string' (Verbindungszeichenfolge in German).

like image 113
Dmitry Selitskiy Avatar answered Oct 11 '22 13:10

Dmitry Selitskiy