Skip to content

emacs-lsp/lsp-mssql

Repository files navigation

https://melpa.org/packages/lsp-mssql-badge.svg https://github.com/emacs-lsp/lsp-mssql/actions/workflows/test.yml/badge.svg

lsp-mode mssql client

Emacs client for sqltoolsservice (port of vscode-mssql)

Demo

screenshots/demo.gif

Installation

Melpa (TBD)

Manual

Install lsp-mode and lsp-treemacs clone the repo and add the following lines in your config:

(add-to-load-path ".../lsp-mssql/")
(require 'lsp-mssql)
(add-hook 'sql-mode-hook 'lsp)

Configuration

Confgure the connections.

(setq lsp-mssql-connections
      [(:server "localhost"
                :database ""
                :user "SA"
                :password "demoPWD2")])

Open a *.sql file and do M-x lsp. On the first run, it will ask you whether to install the language server. Then when you are in the sql buffer do M-x lsp-mssql-connect which will ask you to select connection. After the connection is established the current buffer will be associated with the SQL Server and the completion and the query exection will be performed against that server.

lsp-mssql also supports Azure MSSQL. To connect using Service Principals, you need to use raw connection string:

(setq lsp-mssql-connections
      [(:server "SERVER-NAME.database.windows.net"
        :connectionString "SERVER=SERVER-NAME.database.windows.net;DATABASE=...;UID=...;PWD=...;AUTHENTICATION=ActiveDirectoryServicePrincipal")])

Commands

  • Editor
    • lsp-mssql-connect - connect the editor to MSSQL server.
    • lsp-mssql-disconnect - disconnect the editor MSSQL server.
    • lsp-mssql-execute-buffer - execute current buffer
    • lsp-mssql-execute-region - execute selected region.
  • MSSQL Object Explorer
    • lsp-mssql-object-explorer - display MSSQL object explorer to the right.
    • lsp-mssql-object-explorer-connect - connect the connection under point. Bound to C in the object explorer.
    • lsp-mssql-object-explorer-refresh - refresh the node. Bound to R in the object explorer.

Run mssql in docker

docker run -e "ACCEPT_EULA=Y" -e "SA_PASSWORD=demoPWD2" \
  -p 1433:1433 --name sql1 \
  -d mcr.microsoft.com/mssql/server:2019-GA-ubuntu-16.04

Snippets

snippets directory contains the snippets from vscode-mssql.

(add-to-list 'yas-snippets-dir "path to stippets dir.")

TBD

  • Implement disconnect.
  • Implement cancel query
  • Provide options to customize the output