Вы можете использовать sys.sql_modules
, чтобы найти определение представлений.Для таблиц один вариант - объекты SMO.Приведенный ниже пример C # возвращает DDL для таблицы в указанной базе данных.Для этого потребуются ссылки на пространства имен Microsoft.SqlServer.Management.Sdk.Sfc
, Microsoft.SqlServer.Smo
и Microsoft.SqlServer.ConnectionInfo
.System.Collections.Specialized
также используется, но только для StringCollection
в этом примере.Это может быть отфильтровано с использованием свойства Name
класса Table
, как указано ниже.
//set source server and database using SMO objects
Server srv = new Server(@"YourServer");
//for Windows Authentication
srv.ConnectionContext.LoginSecure = true;
srv.ConnectionContext.StatementTimeout = 600;
Database db = srv.Databases["YourDatabase"];
//configure Scripter for DDL
Scripter script = new Scripter(srv);
ScriptingOptions scriptOpt = new ScriptingOptions();
//this can changed to views, stored procedures, or other objects
foreach (Table t in db.Tables)
{
//check for system objects
//use t.Name to check table name if needed
if (!t.IsSystemObject)
{
StringCollection sc = t.Script(scriptOpt);
foreach (string s in sc)
{
//DDL is here, it can accessed/used as needed
Console.WriteLine(s);
}
}
}