4
4
package root
5
5
6
6
import (
7
+ "fmt"
7
8
"github.com/microsoft/go-sqlcmd/internal/cmdparser"
8
9
"github.com/microsoft/go-sqlcmd/internal/config"
10
+ "github.com/microsoft/go-sqlcmd/internal/pal"
9
11
"github.com/microsoft/go-sqlcmd/internal/sql"
10
12
)
11
13
12
14
// Query defines the `sqlcmd query` command
13
15
type Query struct {
14
16
cmdparser.Cmd
15
17
16
- text string
18
+ text string
19
+ database string
17
20
}
18
21
19
22
func (c * Query ) DefineCommand (... cmdparser.CommandOptions ) {
@@ -25,7 +28,15 @@ func (c *Query) DefineCommand(...cmdparser.CommandOptions) {
25
28
`sqlcmd query "SELECT @@SERVERNAME"` ,
26
29
`sqlcmd query --text "SELECT @@SERVERNAME"` ,
27
30
`sqlcmd query --query "SELECT @@SERVERNAME"` ,
28
- }}},
31
+ }},
32
+ {Description : "Run a query using [master] database" , Steps : []string {
33
+ `sqlcmd query "SELECT DB_NAME()" --database master` ,
34
+ }},
35
+ {Description : "Set new default database" , Steps : []string {
36
+ fmt .Sprintf (`sqlcmd query "ALTER LOGIN [%s] WITH DEFAULT_DATABASE = [tempdb]" --database master` ,
37
+ pal .UserName ()),
38
+ }},
39
+ },
29
40
Run : c .run ,
30
41
FirstArgAlternativeForFlag : & cmdparser.AlternativeForFlagOptions {
31
42
Flag : "text" ,
@@ -47,6 +58,12 @@ func (c *Query) DefineCommand(...cmdparser.CommandOptions) {
47
58
Name : "query" ,
48
59
Shorthand : "q" ,
49
60
Usage : "Command text to run" })
61
+
62
+ c .AddFlag (cmdparser.FlagOptions {
63
+ String : & c .database ,
64
+ Name : "database" ,
65
+ Shorthand : "d" ,
66
+ Usage : "Database to use" })
50
67
}
51
68
52
69
// run executes the Query command.
@@ -58,9 +75,9 @@ func (c *Query) run() {
58
75
59
76
s := sql .New (sql.SqlOptions {})
60
77
if c .text == "" {
61
- s .Connect (endpoint , user , sql.ConnectOptions {Interactive : true })
78
+ s .Connect (endpoint , user , sql.ConnectOptions {Database : c . database , Interactive : true })
62
79
} else {
63
- s .Connect (endpoint , user , sql.ConnectOptions {Interactive : false })
80
+ s .Connect (endpoint , user , sql.ConnectOptions {Database : c . database , Interactive : false })
64
81
}
65
82
66
83
s .Query (c .text )
0 commit comments