diff --git a/autoload/db/adapter/sqlserver.vim b/autoload/db/adapter/sqlserver.vim index b58d074..007d432 100644 --- a/autoload/db/adapter/sqlserver.vim +++ b/autoload/db/adapter/sqlserver.vim @@ -35,15 +35,30 @@ function! s:server(url) abort \ (has_key(a:url, 'port') ? ',' . a:url.port : '') endfunction +function! s:get_value_from_url(url, param) + return get(a:url.params, a:param, get(a:url.params, toupper(a:param[0]) . a:param[1 : -1], '0')) +endfunction + function! s:boolean_param_flag(url, param, flag) abort - let value = get(a:url.params, a:param, get(a:url.params, toupper(a:param[0]) . a:param[1 : -1], '0')) + let value = s:get_value_from_url(a:url, a:param) return value =~# '^[1tTyY]' ? [a:flag] : [] endfunction +function! s:value_param_flag(url, param, flag) abort + let value = s:get_value_from_url(a:url, a:param) + return value == '0' ? [] : [a:flag, value] +endfunction + function! db#adapter#sqlserver#interactive(url) abort let url = db#url#parse(a:url) + " Legacy parameters left just for backward compatibility with older sqlcmd: secure and + " trustServerCertificate return ['env', 'SQLCMDPASSWORD=' . get(url, 'password', ''), 'sqlcmd', '-S', s:server(url)] + - \ s:boolean_param_flag(url, 'encrypt', '-N') + + \ s:value_param_flag(url, 'encrypt', '-N') + + \ s:value_param_flag(url, 'column-separator', '-s') + + \ s:value_param_flag(url, 'format', '-F') + + \ s:boolean_param_flag(url, 'trim-spaces', '-W') + + \ s:boolean_param_flag(url, 'secure', '-N') + \ s:boolean_param_flag(url, 'trustServerCertificate', '-C') + \ (has_key(url, 'user') ? [] : ['-E']) + \ db#url#as_argv(url, '', '', '', '-U ', '', '-d ') diff --git a/doc/dadbod.txt b/doc/dadbod.txt index 38bf73b..f5e5197 100644 --- a/doc/dadbod.txt +++ b/doc/dadbod.txt @@ -175,8 +175,11 @@ SQL Server ~ sqlserver://[[:]@][][:]/[] sqlserver://[[:]][;user=][;...] < -Supported query parameters are `secure` and `trustServerCertificate`, which -correspond to connection properties of the same name. +Supported query parameters are `encrypt-connection`, `format`, +`column-separator`, `trim-spaces` and `trust-server-certificate`, which +correspond to connection properties of the same name (see `sqlcmd -?`). For +backward compatibility with older versions of sqlcmd the boolean query +parameters `secure` and `trustServerCertificate` can be used. To set the `integratedSecurity` connection property and use a trusted connection, omit the user and password.