diff --git a/SqlScriptDom/ScriptDom/SqlServer/ScriptGenerator/SqlScriptGeneratorVisitor.StatementList.cs b/SqlScriptDom/ScriptDom/SqlServer/ScriptGenerator/SqlScriptGeneratorVisitor.StatementList.cs
index 1f6945f..6dedb21 100644
--- a/SqlScriptDom/ScriptDom/SqlServer/ScriptGenerator/SqlScriptGeneratorVisitor.StatementList.cs
+++ b/SqlScriptDom/ScriptDom/SqlServer/ScriptGenerator/SqlScriptGeneratorVisitor.StatementList.cs
@@ -23,7 +23,10 @@ public override void ExplicitVisit(StatementList node)
}
else
{
- NewLine();
+ for (var i = 0; i < _options.NumNewlinesAfterStatement; i++)
+ {
+ NewLine();
+ }
}
GenerateFragmentIfNotNull(statement);
diff --git a/SqlScriptDom/ScriptDom/SqlServer/Settings/SqlScriptGeneratorOptions.xml b/SqlScriptDom/ScriptDom/SqlServer/Settings/SqlScriptGeneratorOptions.xml
index e81fc47..1706235 100644
--- a/SqlScriptDom/ScriptDom/SqlServer/Settings/SqlScriptGeneratorOptions.xml
+++ b/SqlScriptDom/ScriptDom/SqlServer/Settings/SqlScriptGeneratorOptions.xml
@@ -28,6 +28,9 @@
IncludeSemiColons_Description
Gets or sets a boolean indicating if a semi colon should be included after each statement
+
+ Gets or sets the number of newlines to include after each statement
+
diff --git a/Test/SqlDom/ScriptGeneratorTests.cs b/Test/SqlDom/ScriptGeneratorTests.cs
index 28e7404..ee21d8b 100644
--- a/Test/SqlDom/ScriptGeneratorTests.cs
+++ b/Test/SqlDom/ScriptGeneratorTests.cs
@@ -4,6 +4,7 @@
//
//------------------------------------------------------------------------------
+using System;
using Microsoft.SqlServer.TransactSql.ScriptDom;
using Microsoft.VisualStudio.TestTools.UnitTesting;
using SqlStudio.Tests.AssemblyTools.TestCategory;
@@ -113,5 +114,48 @@ public void TestSqlServerlessScriptGenerator()
var scriptGenerator = new SqlServerlessScriptGenerator(options);
Assert.AreEqual(SqlVersion.Sql160, scriptGenerator.Options.SqlVersion);
}
+
+ [TestMethod]
+ [Priority(0)]
+ [SqlStudioTestCategory(Category.UnitTest)]
+ public void TestNewlinesBetweenStatementsGeneratorOption() {
+ var tableName = new SchemaObjectName();
+ tableName.Identifiers.Add(new Identifier { Value = "TableName" });
+
+ var tableStatement = new CreateTableStatement
+ {
+ SchemaObjectName = tableName
+ };
+ var tableStatementString = "CREATE TABLE TableName;";
+
+ var statements = new StatementList();
+ statements.Statements.Add(tableStatement);
+ statements.Statements.Add(tableStatement);
+
+ var generatorOptions = new SqlScriptGeneratorOptions {
+ KeywordCasing = KeywordCasing.Uppercase,
+ IncludeSemicolons = true,
+ NumNewlinesAfterStatement = 0
+ };
+
+ var generator = new Sql80ScriptGenerator(generatorOptions);
+
+ generator.GenerateScript(statements, out var sql);
+
+ Assert.AreEqual(tableStatementString + tableStatementString, sql);
+
+ generatorOptions.NumNewlinesAfterStatement = 1;
+ generator = new Sql80ScriptGenerator(generatorOptions);
+
+ generator.GenerateScript(statements, out sql);
+
+ Assert.AreEqual(tableStatementString + Environment.NewLine + tableStatementString, sql);
+
+ generatorOptions.NumNewlinesAfterStatement = 2;
+ generator = new Sql80ScriptGenerator(generatorOptions);
+
+ generator.GenerateScript(statements, out sql);
+ Assert.AreEqual(tableStatementString + Environment.NewLine + Environment.NewLine + tableStatementString, sql);
+ }
}
}