Skip to content

Commit 088e1ad

Browse files
committed
(FM-5021) Escaping identifiers when creating a database
Previously the name of file and log files were not escaped properly which caused SQL Server to interpret incorrectly. The dashes in the name were being seen as a minus operator. This commit changes the name of the Log and File files to be seen as strings instead of identifiers. This commit also updates the spec tests to expect these names to be escaped.
1 parent e52e9f0 commit 088e1ad

File tree

2 files changed

+11
-5
lines changed

2 files changed

+11
-5
lines changed

spec/defines/database_spec.rb

+9-3
Original file line numberDiff line numberDiff line change
@@ -41,9 +41,15 @@
4141
end
4242
it_behaves_like 'sqlserver_tsql command' do
4343
let(:additional_params) { {
44-
:filespec_filename => 'c:/test/test.mdf', :filespec_name => 'myCreCre',
45-
:log_filename => "c:/test/logfile.ldf", :log_name => "myCrazyLog"} }
46-
let(:should_contain_command) { [/c\:\/test\/logfile\.ldf/] }
44+
:filespec_filename => 'c:/test/test.mdf', :filespec_name => 'myCre-Cre',
45+
:log_filename => "c:/test/logfile.ldf", :log_name => "myCrazy_Log"} }
46+
# Ensure that the parameters are in the TSQL and are correctly escaped
47+
let(:should_contain_command) {[
48+
/NAME = N'myCre-Cre'/,
49+
/FILENAME = N'c\:\/test\/test\.mdf'/,
50+
/NAME = N'myCrazy_Log'/,
51+
/FILENAME = N'c\:\/test\/logfile\.ldf'/
52+
]}
4753
end
4854
end
4955
describe 'collation_name' do

templates/create/database.sql.erb

+2-2
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ CREATE DATABASE [<%= @db_name %>]
1111
CONTAINMENT = <%= @containment %>
1212
<% if @filespec_name && @filespec_filename -%>
1313
ON (
14-
NAME = <%= @filespec_name %>,
14+
NAME = N'<%= @filespec_name %>',
1515
FILENAME = N'<%= @filespec_filename %>'
1616
<% if @filespec_size %>, SIZE = <%= @filespec_size %><% end %>
1717
<% if @filespec_maxsize %>, MAXSIZE = <%= @filespec_maxsize %><% end %>
@@ -21,7 +21,7 @@ CREATE DATABASE [<%= @db_name %>]
2121
<% if @log_name && @log_filename -%>
2222
LOG ON
2323
(
24-
NAME = <%= @log_name %>,
24+
NAME = N'<%= @log_name %>',
2525
FILENAME = N'<%= @log_filename %>'
2626
<% if @log_size %>, SIZE = <%= @log_size %> <% end %>
2727
<% if @log_maxsize %>, MAXSIZE = <%= @log_maxsize %><% end %>

0 commit comments

Comments
 (0)