Skip to content

Commit 076e0e2

Browse files
authored
Merge pull request #482 from serilog-mssql/478-autocreatedb-no-exception-if-db-exists
478 autocreatedb no exception if db exists
2 parents 9f28d00 + 12c265e commit 076e0e2

File tree

4 files changed

+18
-7
lines changed

4 files changed

+18
-7
lines changed

src/Serilog.Sinks.MSSqlServer/Sinks/MSSqlServer/Platform/SqlCommandExecutor.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@ public void Execute()
3232
catch (Exception ex)
3333
{
3434
HandleException(ex);
35+
throw;
3536
}
3637
}
3738

src/Serilog.Sinks.MSSqlServer/Sinks/MSSqlServer/Platform/SqlCreateDatabaseWriter.cs

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
using System;
2+
using System.Text;
23
using static System.FormattableString;
34

45
namespace Serilog.Sinks.MSSqlServer.Platform
@@ -15,6 +16,15 @@ public SqlCreateDatabaseWriter(string databaseName)
1516
public string DatabaseName => _databaseName;
1617

1718
public string GetSql()
18-
=> Invariant($"CREATE DATABASE [{_databaseName}]");
19+
{
20+
var sql = new StringBuilder();
21+
22+
sql.AppendLine(Invariant($"IF NOT EXISTS (SELECT name FROM sys.databases WHERE name = '{_databaseName}')"));
23+
sql.AppendLine("BEGIN");
24+
sql.AppendLine(Invariant($"CREATE DATABASE [{_databaseName}]"));
25+
sql.AppendLine("END");
26+
27+
return sql.ToString();
28+
}
1929
}
2030
}

test/Serilog.Sinks.MSSqlServer.Tests/Sinks/MSSqlServer/Platform/SqlCommandExecutorTests.cs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -100,7 +100,7 @@ public void HandlesExceptionFromSqlWriter()
100100
};
101101

102102
// Act
103-
_sut.Execute();
103+
Assert.Throws<InvalidOperationException>(() => _sut.Execute());
104104

105105
// Assert
106106
Assert.True(handlerCalled);
@@ -124,7 +124,7 @@ public void HandlesExceptionFromConnectionFactory()
124124
};
125125

126126
// Act
127-
_sut.Execute();
127+
Assert.Throws<InvalidOperationException>(() => _sut.Execute());
128128

129129
// Assert
130130
Assert.True(handlerCalled);
@@ -148,7 +148,7 @@ public void HandlesExceptionFromConnection()
148148
};
149149

150150
// Act
151-
_sut.Execute();
151+
Assert.Throws<InvalidOperationException>(() => _sut.Execute());
152152

153153
// Assert
154154
Assert.True(handlerCalled);
@@ -172,7 +172,7 @@ public void HandlesExceptionFromCommand()
172172
};
173173

174174
// Act
175-
_sut.Execute();
175+
Assert.Throws<InvalidOperationException>(() => _sut.Execute());
176176

177177
// Assert
178178
Assert.True(handlerCalled);

test/Serilog.Sinks.MSSqlServer.Tests/Sinks/MSSqlServer/Platform/SqlCreateDatabaseWriterTests.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ public void GetSqlWritesCorrectCommand()
1212
{
1313
// Arrange
1414
const string databaseName = "LogDatabase";
15-
const string expectedResult = "CREATE DATABASE [LogDatabase]";
15+
const string expectedResult = "IF NOT EXISTS (SELECT name FROM sys.databases WHERE name = 'LogDatabase')\r\nBEGIN\r\nCREATE DATABASE [LogDatabase]\r\nEND\r\n";
1616
var sut = new SqlCreateDatabaseWriter(databaseName);
1717

1818
// Act
@@ -27,7 +27,7 @@ public void GetSqlWritesCorrectCommandForDatabaseNameWithSpaces()
2727
{
2828
// Arrange
2929
const string databaseName = "Log Data Base";
30-
const string expectedResult = "CREATE DATABASE [Log Data Base]";
30+
const string expectedResult = "IF NOT EXISTS (SELECT name FROM sys.databases WHERE name = 'Log Data Base')\r\nBEGIN\r\nCREATE DATABASE [Log Data Base]\r\nEND\r\n";
3131
var sut = new SqlCreateDatabaseWriter(databaseName);
3232

3333
// Act

0 commit comments

Comments
 (0)