Для доступа к MSSQL из командной строки у Microsoft есть утилита sqlcmd.
Ее последняя версия требует для работы ODBC драйвер версии 17. Ранее я писал, что для PHP7 нужен драйвер версии не выше 13. Ничего страшного, как оаказалось, обе версии нормально уживаются.
После установки можно открыть командную строку или powershell и подключаться:
sqlcmd /S 192.168.0.3 /d databasename -U username -P password
Основные ключи:
/S = адрес сервера
/d = имя базы данных
-E = Windows authentication (при необходимости)
-U = SQL Server authentication/user.
-P = пароль
После успешной авторизации попадаем в интерфейс утилиты. Слева идут номера строк. Текст запроса вводится обычным образом. Окончание запроса - точка с запятой. Запуск на выполнение - команда GO.
Можно писать текст запроса непосредственно при вызове утилиты:
sqlcmd /S 192.168.0.3 /d databasename -U username -P password -Q "select col1, col2, col3 from SomeTable"
Можно поместить текст запроса в текстовый файл и импортировать его в утилиту. Ниже пример с импортом запроса из файла и выгрузкой результатов в csv:
sqlcmd /S 192.168.0.3 /d databasename -U username -P password -u -i "C:\TEMP\sql.txt" -o "C:\TEMP\sql-out.csv" -W -s ","
Здесь ключи:
-i = путь к файлу с текстом запроса
-o = путь к выходному файлу
-u = кодировка utf-8
-W = удалить конечные пробелы во всех полях
-s "," = разделитель полей - запятая
В случае экспорта есть особенность. В файл попадает весь вывод результатов запроса, в том числе и количество затронутых строк. Очевидно, что при экспорте в csv это только мешает. Избавиться от подсчета количества строк можно добавив перед запросом set nocount on;
и set nocount off;
после запроса.