Targets #

A sample targets.hcl looks like this:

target "D40\SQL2014" {}
target "" {}

The text in quotes is what it will try to connect to. The full layout of a targets file might look like this:

target_defaults {
    dial_timeout = 10
    connect_timeout = 15

target "my-target" {
    fqdn = "host:port"
    dial_timeout = 90
  • The target_defaults block sets the defaults for all targets.
  • The dial_timeout is the timeout to resolve the name and talk to the port. It is in seconds and defaults to 15 seconds.
  • The connect_timeout is the timeout to login. It defaults to 0 which is no timeout and is measured in seconds.
  • If no fqdn is specified, the name in quotes is used (“my-target”).
  • The port should be specified with colon but a comma will also work.
  • The application uses a trusted connection unless a SQL Server login is specified (see below).

Connecting with SQL Server Logins #

Targets support connecting with SQL Server logins. For each Target, you can specify a Credential (see the CredentialVault). That looks like this:

target "server-name" {
    sqldsc_credential = "cred_name"

A sqldsc_credential can also be specified in the target_defaults block. That will be used for all targets in the file unless overridden by a specific target.

Supporting Multiple Users #

A common scenario is to manage SQL Servers in a domain with no trust relationship using SQL Server logins. The DOMAIN.targets.hcl might look like this:

target_defaults {
    sqldsc_credential = "dba_credential"

In my Vault, I map dba_credential to my login like this:

sqldsc vault save dba_credential bgraziano

This creates a Credential named dba_credential with the login named bgraziano. Other DBA’s on the team would each map their own login for dba_credential. This allows a common configuration but avoids shared logins.