Puede hacerlo sin tener que tocar SqlConnection, lo que me parece una ventaja.
Este utiliza el espacio de nombres SqlServer.Management.Smo
, por lo que necesita una referencia a Microsoft.SqlServer.ConnectionInfo
, Microsoft.SqlServer.Management.Sdk
y Microsoft.SqlServer.Smo
en su proyecto.
A continuación, utilice el siguiente código:
Server srv = new Server("serverNameHere");
srv.ConnectionContext.AutoDisconnectMode = AutoDisconnectMode.NoAutoDisconnect;
srv.ConnectionContext.LoginSecure = false; //if using username/password
srv.ConnectionContext.Login = "username";
srv.ConnectionContext.Password = "password";
srv.ConnectionContext.Connect();
Database db = srv.Databases["databaseNameHere"];
foreach(StoredProcedure sp in db.StoredProcedures)
{
foreach(var param in sp.Parameters)
{
string paramName = param.Name;
var dataType = param.DataType;
object defaultValue = param.DefaultValue;
}
}
Hay muchos métodos para hacer esto en SQL. Consulte esta publicación para conocer más métodos https://madhivanan.wordpress.com/2016/10/14/different-methods-to-get-parameter-list-of-a-stored-procedure/ – Madhivanan