Si está utilizando .NET, puede utilizar objetos de administración del servidor:
var so = new ScriptingOptions();
so.Triggers = true;
so.DriForeignKeys = true;
so.DriDefaults = true;
so.DriAllConstraints = true;
so.DriAllKeys = true;
so.DriIndexes = true;
so.DriUniqueKeys = true;
so.DriPrimaryKey = true;
so.Indexes = true;
so.Default = true;
so.ClusteredIndexes = true;
so.IncludeDatabaseContext = true;
so.TargetServerVersion = SqlServerVersion.Version90;
var server = new Server("ServerName");
var db = server.Databases["DatabaseName"];
var stringColl = db.Tables["Table"].Script(so);
que había necesidad de sustituir los nombres de la tabla y objetos asociados (por ejemplo FK_OldTableName_xxx con FK_NewTableName_xxx) en el script generado:
var sb = new StringBuilder();
foreach(var s in stringColl)
{
var r = s.Replace("OldTableName", "NewTableName");
sb.AppendLine(r);
}
y luego ejecutar:
db.Execute(sb.ToString());
Tenga en cuenta que este es un código bastante ingenuo: solo funcionará si los nombres de sus restricciones y claves siguen el formato: FK_OldTableName_xxx/CK_OldTableName_xxx .. si tienen otros nombres, necesitará reforzar el código de reemplazo de cadena , probablemente usando Regexes para buscar patrones de creación de objetos T-SQL (es decir, CREAR ÍNDICE, LLAVE EXTRANJERA ... etc.).
¿Qué idioma/plataforma? DO#? – MusiGenesis
C# y ASP.NET, pero eso realmente no importa demasiado. Estoy más buscando el SQL que necesitaría ejecutar. –
No lo sigo del todo. El SQL que necesitaría ejecutar es el script CREATE TABLE con el nombre de tabla modificado, como se explica en las respuestas. Necesita saber cómo generar programáticamente este script desde SQL Server (cambiar el nombre de la tabla una vez que tenga esto no sería demasiado difícil), para lo cual el idioma es relevante. No sé la respuesta a esto, y estoy interesado en ver cómo se puede hacer esto. – MusiGenesis