【问题标题】:Programmatically generate SQL script to create database without PRIMARY statement .. using scripter以编程方式生成 SQL 脚本以在没有 PRIMARY 语句的情况下创建数据库 .. 使用脚本
【发布时间】:2013-01-25 05:55:42
【问题描述】:

我创建了由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 

【问题讨论】:

  • CREATE DATABASE ContactManager; 是一个有效的声明。主要语句是可选的。如果你不指定文件名,SQL 将只使用数据库名。
  • @NathanSkerl 请参考编辑后的问题

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


【解决方案1】:

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);
}

【讨论】:

    猜你喜欢
    • 2011-06-17
    • 1970-01-01
    • 2010-12-14
    • 2018-04-17
    • 2010-09-08
    • 1970-01-01
    • 1970-01-01
    • 2021-04-18
    • 1970-01-01
    相关资源
    最近更新 更多