Мне удалось добиться некоторого прогресса, выделив переменные по умолчанию в скрипте, например так:
/** DEFAULTS **/
declare @id int
set @id = 43
/** END DEFAULTS **/
Затем выполняется предварительная обработка скрипта в моей программе на C #, вот так;
script = RemoveBlock(script, "DEFAULTS");
И реализовать функцию так;
public static string RemoveBlock(string script, string blockName)
{
if (script == null) { return null; }
var startTag = string.Format("/** {0} **/", blockName);
var endTag = string.Format("/** END {0} **/", blockName);
var startTagIdx = script.IndexOf(startTag);
if (startTagIdx == -1) { return script; }
var endTagIdx = script.IndexOf(endTag, startTagIdx + startTag.Length);
if (endTagIdx == -1) { return script; }
var endOfEndTag = endTagIdx + endTag.Length;
var beforeBlock = script.Substring(0, startTagIdx);
var afterBlock = script.Substring(endOfEndTag);
return beforeBlock + afterBlock;
}
Таким образом, программа на C # запускает версию без переменных, но с параметрами.