En utilisant l'objet Microsoft.SqlServer.Management.Smo.Scripter, je génère des scripts pour chacune des tables de ma base de données, y compris les index/contraintes. Quand il génère le script, cependant, il inclut toutes les options d'index, même si elles sont les valeurs par défaut, par exemple,Suppression des options d'index relationnelles lors de la création d'un script dans Microsoft SQL Server 2005
CREATE TABLE [dbo].[AgeGroup](
[AgeGroupID] [int] NOT NULL),
CONSTRAINT [PK_AgeGroup] PRIMARY KEY CLUSTERED
(
[AgeGroupID] ASC
) WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF,
ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY],
Toutes les options La clause de la contrainte de clé primaire sont réglées sur les valeurs par défaut (au moins selon la documentation en ligne de SQL Server). Comment puis-je obtenir l'objet Scripter à pas afficher ces options?
Voici mon code:
Server server = new Server("MYSERVER");
Scripter scripter = new Scripter(server);
scripter.Options.Indexes = true;
scripter.Options.AnsiPadding = true;
scripter.Options.AnsiFile = true;
scripter.Options.Permissions = true;
scripter.Options.ClusteredIndexes = true;
scripter.Options.DriAll = true;
Urn[] urns = new Urn[1];
Table t = server.Databases["MYDATABASE"].Tables["AgeGroup"];
urns[0] = t.Urn;
StringCollection sc = scripter.Script(urns);
using (StreamWriter sw = File.CreateText("AgeGroup.Table.sql"))
foreach (string str in sc)
sw.WriteLine(str);
Telle est l'approche que j'ai fini prendre avant de voir ta réponse. Cela fonctionne bien. –