Skip to main content

MSSQL

  • SQL Server
    • 产品名字
  • Microsoft SQL Server
    • 完整产品名字
  • MSSQL
    • 常用缩写
abbr.stand formean
MSSQLMicrosoft SQL Server微软 SQL Server
T-SQLTransact-SQL事务 SQL
SSMSSQL Server Management StudioSQL Server 管理工作室
SSDTSQL Server Data ToolsSQL Server 数据工具
SSISSQL Server Integration ServicesSQL Server 集成服务
SSRSSQL Server Reporting ServicesSQL Server 报告服务
SSASSQL Server Analysis ServicesSQL Server 分析服务
portfor
1433default
1434browser service
nmap -p 1433,1434 HOST
-- 服务器信息
SELECT @@VERSION;

SELECT SERVERPROPERTY('ProductVersion') AS ProductVersion, -- e.g., 15.0.2112.4
SERVERPROPERTY('ProductLevel') AS ProductLevel, -- e.g., RTM, SP1, SP2
SERVERPROPERTY('ProductMajorVersion') AS ProductMajorVersion, -- e.g., 15 (for SQL 2019)
SERVERPROPERTY('Edition') AS Edition -- e.g., Developer Edition, Standard Edition
;


SELECT TOP 3 * FROM Users;
sqlmssql
limittop

Awesome

docker run --rm -it \
-v $PWD:/host \
-w /host \
-e ACCEPT_EULA=Y \
--name mssql-tools mcr.microsoft.com/mssql-tools

sqlcmd -S localhost -U sa -P password -d master -Q "select @@version"

sqlcmd

  • 推荐使用 go-sqlcmd
    • 能管理多个上下文
    • 能在本地管理开发环境,直接启动容器
  • 注意⚠️ 没有 bcp 功能
# go-sqlcmd
brew install sqlcmd

curl -LO https://github.com/microsoft/go-sqlcmd/releases/download/v1.8.2/sqlcmd-linux-amd64.tar.bz2
tar zxvf sqlcmd-linux-amd64.tar.bz2 sqlcmd
./sqlcmd
  • 如果服务器太老 SQL Server 2008, 可能只支持 TLS 1.0, 会出现错误
sqlcmd

# 可以关闭 TLS 避免错误,但是 sqlconfig 方式目前没看到可以设置 Encrypt
sqlcmd -N disable

sqlcmd config current-context
sqlcmd config connection-strings

sqlcmd query "SELECT @@version"
flagenvdefaultfor
-CTRUSTSERVERCERTIFICATE
-d <db_name>SQLCMDDBNAMEUSE <db_name>
-Dserver name as DSN
-l <login_timeout>SQLCMDLOGINTIMEOUT8
-Etrusted connection, 忽略 SQLCMDPASSWORD 变量
-gColumn Encryption
-GSQLCMDUSEAAD使用 Microsoft Entra authentication 连接 Azure SQL Database, Azure Synapse Analytics
-H <workstation_name>SQLCMDWORKSTATION
-jprint raw error messages
-K <application_intent>ApplicationIntent=ReadOnly
-M <multisubnet_failover>
-N <encrypt>Encrypt=True
-P <password>SQLCMDPASSWORD
-S <server>SQLCMDSERVERDefaultLocalInstance
-U <login_id>SQLCMDUSER
-H <>SQLCMDWORKSTATIONComputerName
-z <new_password>
-Z <new_password>修改密码然后退出
-V <error_level>SQLCMDERRORLEVEL
-t <>SQLCMDSTATTIMEOUT0
-hSQLCMDHEADERS0
-wSQLCMDCOLWIDTH0
-aSQLCMDPACKETSIZE4096
-mSQLCMDERRORLEVEL0
-ySQLCMDMAXVARTYPEWIDTH256
-YSQLCMDMAXFIXEDTYPEWIDTH0

Admin

备份

Windows NTbackup archive NT, with file catalog, soft size 1*512, software (0x1200): Microsoft SQL Server

导出

bcp "SELECT * FROM database.schema.table" queryout "output.csv" -c -t, -S servername -U username -P password

Invoke-Sqlcmd -Query "SELECT * FROM database.schema.table" -ServerInstance "servername" | Export-Csv -Path "output.csv" -NoTypeInformation

连接字符串

Server=localhost;Database=master;User Id=sa;Password=your_password;

FAQ

TLS Handshake failed: tls: server selected unsupported protocol version 301

  • TLS version 1.0
  • 尝试 encrypt=disable
  • 服务端太老了