@@ -182,8 +182,8 @@ func (c *MssqlBase) AddFlags(
182182 addFlag (cmdparser.FlagOptions {
183183 Int : & c .port ,
184184 DefaultInt : 0 ,
185- Name : "port-override " ,
186- Usage : "Port override (next available port from 1433 upwards used by default)" ,
185+ Name : "port" ,
186+ Usage : "Port (next available port from 1433 upwards used by default)" ,
187187 })
188188
189189 addFlag (cmdparser.FlagOptions {
@@ -328,17 +328,17 @@ func (c *MssqlBase) createContainer(imageName string, contextName string) {
328328
329329 c .sql .Connect (endpoint , saUser , sql.ConnectOptions {Interactive : false })
330330
331+ c .createNonSaUser (userName , password )
332+
331333 // Download and restore DB if asked
332- defaultDbAlreadyCreated := false
333334 if c .usingDatabaseUrl != "" {
334- defaultDbAlreadyCreated = c .downloadAndRestoreDb (
335+ c .downloadAndRestoreDb (
335336 controller ,
336337 containerId ,
338+ userName ,
337339 )
338340 }
339341
340- c .createNonSaUser (userName , password , defaultDbAlreadyCreated )
341-
342342 hints := [][]string {
343343 {"Open in Azure Data Studio" , "sqlcmd open ads" },
344344 {"Run a query" , "sqlcmd query \" SELECT @@version\" " },
@@ -402,7 +402,6 @@ func (c *MssqlBase) query(commandText string) {
402402func (c * MssqlBase ) createNonSaUser (
403403 userName string ,
404404 password string ,
405- defaultDbAlreadyCreated bool ,
406405) {
407406 output := c .Cmd .Output ()
408407
@@ -411,11 +410,9 @@ func (c *MssqlBase) createNonSaUser(
411410 if c .defaultDatabase != "" {
412411 defaultDatabase = c .defaultDatabase
413412
414- if ! defaultDbAlreadyCreated {
415- // Create the default database, if it isn't a downloaded database
416- output .Infof ("Creating default database [%s]" , defaultDatabase )
417- c .query (fmt .Sprintf ("CREATE DATABASE [%s]" , defaultDatabase ))
418- }
413+ // Create the default database, if it isn't a downloaded database
414+ output .Infof ("Creating default database [%s]" , defaultDatabase )
415+ c .query (fmt .Sprintf ("CREATE DATABASE [%s]" , defaultDatabase ))
419416 }
420417
421418 const createLogin = `CREATE LOGIN [%s]
@@ -445,7 +442,8 @@ CHECK_POLICY=OFF`
445442func (c * MssqlBase ) downloadAndRestoreDb (
446443 controller * container.Controller ,
447444 containerId string ,
448- ) (defaultDatabaseAlreadyCreated bool ) {
445+ userName string ,
446+ ) {
449447 output := c .Cmd .Output ()
450448
451449 u , err := url .Parse (c .usingDatabaseUrl )
@@ -456,7 +454,7 @@ func (c *MssqlBase) downloadAndRestoreDb(
456454 // Download file from URL into container
457455 output .Infof ("Downloading %s from %s" , file , u .Hostname ())
458456
459- temporaryFolder := "/tmp "
457+ temporaryFolder := "/var/opt/mssql/backup "
460458
461459 controller .DownloadFile (
462460 containerId ,
@@ -502,18 +500,20 @@ DECLARE @fileListTable TABLE (
502500INSERT INTO @fileListTable
503501EXEC('RESTORE FILELISTONLY FROM DISK = ''%s/%s''')
504502SET @sql = 'RESTORE DATABASE [%s] FROM DISK = ''%s/%s'' WITH '
505- SELECT @sql = @sql + char(13) + ' MOVE ''' + LogicalName + ''' TO ''/var/opt/sql /' + LogicalName + '.' + RIGHT(PhysicalName,CHARINDEX('\',PhysicalName)) + ''','
503+ SELECT @sql = @sql + char(13) + ' MOVE ''' + LogicalName + ''' TO ''/var/opt/mssql /' + LogicalName + '.' + RIGHT(PhysicalName,CHARINDEX('\',PhysicalName)) + ''','
506504FROM @fileListTable
507505WHERE IsPresent = 1
508506SET @sql = SUBSTRING(@sql, 1, LEN(@sql)-1)
509507EXEC(@sql)`
510508
511509 c .query (fmt .Sprintf (text , temporaryFolder , file , fileNameWithNoExt , temporaryFolder , file ))
512510
513- if c .defaultDatabase == "" {
514- c .defaultDatabase = fileNameWithNoExt
515- defaultDatabaseAlreadyCreated = true
516- }
511+ alterDefaultDb := fmt .Sprintf (
512+ "ALTER LOGIN [%s] WITH DEFAULT_DATABASE = [%s]" ,
513+ userName ,
514+ fileNameWithNoExt )
515+ c .query (alterDefaultDb )
516+
517517 return
518518}
519519
@@ -571,8 +571,5 @@ func (c *MssqlBase) validateDbName(s string) bool {
571571 return false
572572 }
573573 }
574- if strings .ContainsAny (s , "'\" `'" ) {
575- return false
576- }
577- return true
574+ return ! strings .ContainsAny (s , "'\" `'" )
578575}
0 commit comments