以编程方式生成SQL脚本以使用脚本编写器创建没有PRIMARY语句的数据库

时间:2013-01-25 05:55:43

标签: sql sql-server-2008 c#-4.0 sql-scripts

我创建了由Scripter.Script()方法自动生成的脚本。 但是如果想要摆脱脚本中包含的文件路径。使用Scripter类生成脚本时需要设置哪个属性?

SQL脚本:

CREATE DATABASE [ContactManager] ON  PRIMARY 
( NAME = N'ContactManager', FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL10_50.SQLEXPRESS\MSSQL\DATA\ContactManager.mdf' , SIZE = 8192KB , MAXSIZE = UNLIMITED, FILEGROWTH = 1024KB )
 LOG ON 
( NAME = N'ContactManager_log', FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL10_50.SQLEXPRESS\MSSQL\DATA\ContactManager.ldf' , SIZE = 5184KB , MAXSIZE = 2048GB , FILEGROWTH = 10%)
GO

但现在我想生成没有主语句的脚本,如下所示:

CREATE DATABASE [ContactManager] GO 

1 个答案:

答案 0 :(得分:4)

ScriptingOptions.NoFileGroup应该禁止其他文件组子句。

More info here

此外,似乎只是在没有启用属性的情况下调用db.Script()无论如何都会省略文件组,所以我不肯定这会在没有看到您的代码的情况下为您工作。

请参阅下面的示例:

Microsoft.SqlServer.Management.Smo.Server srv = new Server(".");
Microsoft.SqlServer.Management.Smo.Database db = new Database(srv, "Yak");       

System.Collections.Specialized.StringCollection statements = db.Script();

Console.WriteLine(statements);

ScriptingOptions so = new ScriptingOptions();
so.NoFileGroup = false;


foreach (string s in db.Script(so))
{
      Console.WriteLine(s);
}