I am trying to get DefaultValue of all parameters in StoredProcedure. My application is built on C # .NET, access to Microsoft SQL 2008 database.
I use SqlCommandBuilder.DeriveParameters to get most of the parameter information quite efficiently, however it does not return the value "DefaultValue" of the parameter, so I turned to SMO to get this specific property.
Here is my current code:
Server svr = new Server(new ServerConnection(new SqlConnection(ConfigurationManager.ConnectionStrings["MyConnectionString"].ConnectionString))); StoredProcedure sp = svr.Databases["MyDatabase"].StoredProcedures["mySproc", "myScheme"]; svr.SetDefaultInitFields(typeof(StoredProcedureParameter), "Name"); svr.SetDefaultInitFields(typeof(StoredProcedureParameter), "DefaultValue"); Dictionary<string, string> defaultValueLookup = new Dictionary<string, string>(); foreach (StoredProcedureParameter parameter in sp.Parameters) { string defaultValue = parameter.DefaultValue; string parameterName = parameter.Name; defaultValueLookup.Add(parameterName, defaultValue); }
However, it is very slow, even after I added svr.SetDefaultInitFields optimization (which significantly improved the improvement by 10x).
Has anyone got further optimization ideas?
source share