У меня была похожая проблема некоторое время назад.Вот сценарий, который я написал с использованием SMO Sql Server:
public static string GetForeignKeyScript()
{
SqlConnection conn = new System.Data.SqlClient.SqlConnection("SOME_CONNECTION_STRING");
Server server = new Server(new ServerConnection(conn));
Database db = server.Databases["SOME_DATABASE"];
Table Roles = db.Tables["SOME_TABLE"];
var sb = new StringBuilder();
foreach (Table table in db.Tables)
foreach (ForeignKey fk in table.ForeignKeys)
foreach (string s in fk.Script())
sb.AppendLine(s);
return sb.ToString();
}
. Это выведет строку, содержащую сценарии для создания внешних ключей.
Отредактировал код, чтобы удалить материал, который был довольноспецифичные для моего проекта (например, меня интересовали только таблицы, оканчивающиеся определенной строкой)