用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
直接命令不会经过审查 Prompt;运行前请先检查来源。
npx skills add https://github.com/Dev-Toolbelt/dev-team-agents --skill sqlserver命令会保持在同一行。复制前请横向滚动并检查完整内容。
想先保存到本地?可下载 SkillsMP 当前能够提供的文件。
基于 SOC 职业分类
正在显示 SKILL.md
| name | sqlserver |
| description | SQL Server — T-SQL, indexes, Always On AG, CDC, columnstore. |
Load when the project uses SQL Server or Azure SQL (signal: mssql, tedious, pyodbc, sqlserver in connection string, SQL_SERVER env var, mcr.microsoft.com/mssql in docker-compose).
# sqlcmd (installed with SQL Server tools):
sqlcmd -S "$DB_HOST,$DB_PORT" -U "$DB_USER" -P "$DB_PASSWORD" -d "$DB_NAME"
# with Azure AD:
sqlcmd -S "$DB_HOST" -G -d "$DB_NAME"
# mssql-cli (cross-platform, pip install mssql-cli):
mssql-cli -S "$DB_HOST" -U "$DB_USER" -P "$DB_PASSWORD" -d "$DB_NAME"
# Docker-hosted SQL Server:
docker exec -it <container> /opt/mssql-tools/bin/sqlcmd \
-S localhost -U sa -P "$SA_PASSWORD" -d "$DB_NAME"
Key inspection queries:
SELECT @@VERSION; -- version
SELECT * FROM sys.dm_exec_requests WHERE status = 'running'; -- active queries
SELECT * FROM sys.dm_os_wait_stats ORDER BY waiting_tasks_count DESC; -- waits
EXEC sp_who2; -- connections + blocking
TOP n replaces LIMIT: SELECT TOP 10 * FROM orders ORDER BY created_at DESCISNULL(col, default) vs standard COALESCE — prefer COALESCE for portability@@ROWCOUNT / @@ERROR after DML (use TRY…CATCH for error handling)NOCOUNT ON in stored procedures to suppress row-count messagesOUTPUT clause: capture inserted/deleted rows in a single statementINSERT INTO orders (user_id, total)
OUTPUT INSERTED.id, INSERTED.created_at
VALUES (@user_id, @total);
| Type | Use when |
|---|---|
| Clustered | Physical row order; one per table; choose a sequential, narrow key (INT identity or sequential GUID) |
| Non-clustered | Additional access paths; up to 999 per table |
| Columnstore (clustered) | OLAP / data warehouse; batch-mode execution; 5–10× compression |
| Columnstore (non-clustered) | HTAP: add on OLTP table without changing clustered index |
| Filtered | Index a subset: WHERE deleted_at IS NULL |
| Full-text | CONTAINS, FREETEXT search on varchar/nvarchar columns |
NEWID() as a clustered key — causes page fragmentation; use NEWSEQUENTIALID() or INT IDENTITYsys.dm_db_index_physical_stats; rebuild if > 30%, reorganize if 10–30%Default isolation: READ COMMITTED with shared locks (blocking reads).
| Isolation | Behaviour |
|---|---|
READ COMMITTED SNAPSHOT (RCSI) | Row versioning instead of shared locks; set at DB level; recommended for OLTP |
SNAPSHOT | Full transaction-level read consistency; may get 3960 update conflicts |
SERIALIZABLE | Full locking; use only for strict invariant enforcement |
Enable RCSI: ALTER DATABASE db SET READ_COMMITTED_SNAPSHOT ON; — eliminates most reader/writer blocking with no application code change.
READ_INTENT_ONLY)ApplicationIntent=ReadOnly routes to readable secondarysys.dm_hadr_availability_replica_states, sys.dm_hadr_database_replica_states-- Enable CDC on database:
EXEC sys.sp_cdc_enable_db;
-- Enable CDC on a table:
EXEC sys.sp_cdc_enable_table
@source_schema = N'dbo',
@source_name = N'orders',
@role_name = NULL;
-- Query changes:
SELECT * FROM cdc.fn_cdc_get_all_changes_dbo_orders(
@from_lsn, @to_lsn, N'all');
CDC capture job runs every 5 s by default; cleanup job purges after 3 days.
| Gotcha | Fix |
|---|---|
NVARCHAR vs VARCHAR — implicit conversion blocks index use | Match parameter type to column type; use N'...' for nvarchar literals |
| Statistics not updated → bad query plans | UPDATE STATISTICS or enable AUTO_UPDATE_STATISTICS |
SELECT INTO does not preserve indexes | Create indexes explicitly after SELECT INTO |
| Implicit transactions in some drivers | Set SET IMPLICIT_TRANSACTIONS OFF; or use explicit BEGIN TRAN |
| Parameter sniffing causes slow plans after data distribution changes | Use OPTION (RECOMPILE) or OPTIMIZE FOR UNKNOWN on affected queries |
GETDATE() vs GETUTCDATE() | Always store in UTC; use GETUTCDATE() or SYSUTCDATETIME() |