November 14, 2012 at 1:37 pm
Hi there I am working on automating the process of scripting creates for our SQL Views and object dependencies of the views (namely functions in this case). I don't care about table dependencies. I was able to easily script the objects not in dependency order, but I am struggling with walking the dependency tree in my code.
Here is where I am so far. You can see in the last loop (blank) that I am struggling. Would someone be so kind as to point me in the appropriate direction?
//Trying to Connect to Source Database and Server
Server SrcServerCon = new Server(SrcServer);
SrcServerCon.ConnectionContext.LoginSecure = Convert.ToBoolean(isWindowsAuth);
try
{
if (SrcServerCon.ConnectionContext.LoginSecure == false)
{
SrcServerCon.ConnectionContext.Login = SQLAuthLogin;
SrcServerCon.ConnectionContext.Password = SQLAuthPword;
}
}
catch (Exception sqlConnect)
{
using (System.IO.StreamWriter exAtvws = new System.IO.StreamWriter(Logger, true))
{
exAtvws.WriteLine("SQLConnect - " + DateTime.Now.ToString() + "-" + sqlConnect.Message );
}
Environment.Exit(1);
}
Scripter vwScripter = new Scripter(SrcServerCon);
//Initiating Scripter Constructor
vwScripter.Options = new ScriptingOptions();
vwScripter.Options.ScriptDrops = true;
vwScripter.Options.IncludeIfNotExists = true;
vwScripter.Options.SchemaQualify = true;
vwScripter.Options.WithDependencies = true;
vwScripter.Options.NoCollation = true;
//Deleteing the File if it exists in the target location
if (System.IO.File.Exists(ScriptOutputLoc))
{
System.IO.File.Delete(ScriptOutputLoc);
}
try
{
Database SrcDbCOn = SrcServerCon.Databases[SrcDbName];
//Adding UDFs and Vws to Urn Collection
UrnCollection udfobjs = new UrnCollection();
foreach (UserDefinedFunction udf in SrcDbCOn.UserDefinedFunctions)
{
if (!udf.IsSystemObject)
{
udfobjs.Add(udf.Urn);
}
}
foreach (View views in SrcDbCOn.Views)
{
if (!views.IsSystemObject)
{
udfobjs.Add(views.Urn);
}
}
//Creating Dependency Tree
DependencyTree dtree = vwScripter.DiscoverDependencies(udfobjs, true);
DependencyWalker dwalker = new DependencyWalker();
DependencyCollection dcollect = dwalker.WalkDependencies(dtree);
using (System.IO.StreamWriter FxscriptsToFile = new System.IO.StreamWriter(ScriptOutputLoc, true))
{
foreach (DependencyCollectionNode dcoln in dcollect)
{
}
July 18, 2013 at 8:55 am
use the Urn.Type for your requirement
foreach (DependencyCollectionNode dcoln in dcollect)
{
if( dcoln.urn.Type=="View")
-- do what you want
}
Every rule in a world of bits and bytes, can be bend or eventually be broken
MyBlog About Common dialog control
A Visualizer for viewing SqlCommand object script [/url]
January 5, 2015 at 8:25 am
You can look at this. I used a dependency tree.
Viewing 3 posts - 1 through 2 (of 2 total)
You must be logged in to reply to this topic. Login to reply
This website stores cookies on your computer.
These cookies are used to improve your website experience and provide more personalized services to you, both on this website and through other media.
To find out more about the cookies we use, see our Privacy Policy