Mit dem Microsoft.SqlServer.Management.Smo.Scripter-Objekt erzeuge ich Skripts für jede der Tabellen in meiner Datenbank, einschließlich Indizes/Einschränkungen. Wenn es das Skript erzeugt, jedoch enthält es alle Optionen Index, auch wenn sie die Standardwerte sind zBEntfernen Sie relationale Indexoptionen beim Skripten von Tabellenverzeichnissen in 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],
alle Optionen in der WITH-Klausel der Definition des Primärschlüssels auf die Standardwerte gesetzt (Zumindest gemäß SQL Server-Onlinedokumentation). Wie kann ich das Scripter-Objekt auf nicht diese Optionen ausgeben?
Hier ist mein 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);
Dies ist der Ansatz, den ich beendet nehmen, bevor ich deine Antwort sah. Es funktioniert gut. –