私はStoredProcedureのすべてのパラメータのDefaultValueを取得しようとしています。私のアプリケーションは、C#.NETでビルドされ、Microsoft SQL 2008データベースにアクセスします。SMOでSQLストアドプロシージャパラメータをより効率的に取得するにはどうすればよいですか?
私はSqlCommandBuilder.DeriveParametersを使用してパラメータ情報の大半を効率的に取得しますが、パラメータの "DefaultValue"を返さないため、SMOを使用して特定のプロパティを取得しています。
は、ここに私の現在のコードです:
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);
}
しかし、これは私が(〜10倍改善有意な改善を行いました)svr.SetDefaultInitFieldsの最適化を追加した後でも、非常に遅いです。
誰かがさらに最適化のアイディアを得ましたか?
これを実行している他の貧しい人々には、StoredProcedure sp = svr.Databases ["MyDatabase"]。UserDefinedFunctions – tbone