Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
직접 명령은 검토 Prompt를 거치지 않습니다. 실행하기 전에 소스를 확인하세요.
npx skills add https://github.com/tomevault-io/skills-registry --skill fai-azure-sql-setup명령은 한 줄로 유지됩니다. 복사하기 전에 가로로 스크롤해 전체 내용을 확인하세요.
로컬 사본을 원하시나요? SkillsMP에서 현재 제공할 수 있는 파일을 다운로드하세요.
| Use when this capability is needed.
> Use when this capability is needed.
Review architecture and API design for the vfs-s3 project. Use when the user mentions @architect, asks to review an issue's design, discuss module boundaries, API shape, or architectural decisions for vfs-s3. Also trigger when the user wants to create an ADR (Architecture Decision Record) or evaluate a technical approach for the project. Intended for dispatch from Codex automation or Claude routines; GitHub trigger phrase: @vfs-s3-bot please prepare design doc Use when this capability is needed.
SOC 직업 분류 기준
SKILL.md 표시 중
| name | fai-azure-sql-setup |
| description | | Use when this capability is needed. |
Provision and harden Azure SQL with AAD auth, networking, backup, and performance tuning.
resource sqlServer 'Microsoft.Sql/servers@2023-08-01-preview' = {
name: sqlServerName
location: location
identity: { type: 'SystemAssigned' }
properties: {
administratorLogin: null // AAD-only
administrators: {
azureADOnlyAuthentication: true
login: adminGroupName
principalType: 'Group'
sid: adminGroupObjectId
tenantId: subscription().tenantId
}
publicNetworkAccess: 'Disabled'
minimalTlsVersion: '1.2'
}
}
resource sqlDb 'Microsoft.Sql/servers/databases@2023-08-01-preview' = {
name: dbName
parent: sqlServer
location: location
sku: { name: 'GP_S_Gen5_2', tier: 'GeneralPurpose' } // Serverless
properties: {
autoPauseDelay: 60 // Pause after 60 min idle
minCapacity: '0.5' // Min 0.5 vCores
zoneRedundant: true
backupStorageRedundancy: 'Geo'
requestedBackupStorageRedundancy: 'Geo'
}
}
resource sqlPe 'Microsoft.Network/privateEndpoints@2023-11-01' = {
name: '${sqlServerName}-pe'
location: location
properties: {
subnet: { id: subnetId }
privateLinkServiceConnections: [{
name: 'sql-link'
properties: {
privateLinkServiceId: sqlServer.id
groupIds: ['sqlServer']
}
}]
}
}
import pyodbc
from azure.identity import DefaultAzureCredential
credential = DefaultAzureCredential()
token = credential.get_token("https://database.windows.net/.default")
conn = pyodbc.connect(
f"Driver={{ODBC Driver 18 for SQL Server}};"
f"Server=tcp:{server_name}.database.windows.net,1433;"
f"Database={db_name};"
f"Encrypt=yes;TrustServerCertificate=no;",
attrs_before={1256: token.token.encode("utf-16-le")}, # SQL_COPT_SS_ACCESS_TOKEN
)
cursor = conn.cursor()
cursor.execute("SELECT COUNT(*) FROM conversations")
print(cursor.fetchone()[0])
-- Enable Query Store for performance tracking
ALTER DATABASE [appdb] SET QUERY_STORE = ON;
ALTER DATABASE [appdb] SET QUERY_STORE (
OPERATION_MODE = READ_WRITE,
DATA_FLUSH_INTERVAL_SECONDS = 900,
QUERY_CAPTURE_MODE = AUTO
);
-- Find top resource-consuming queries
SELECT TOP 10
qs.query_id,
qt.query_sql_text,
rs.avg_duration / 1000 AS avg_ms,
rs.count_executions,
rs.avg_cpu_time / 1000 AS avg_cpu_ms
FROM sys.query_store_runtime_stats rs
JOIN sys.query_store_plan qp ON rs.plan_id = qp.plan_id
JOIN sys.query_store_query qs ON qp.query_id = qs.query_id
JOIN sys.query_store_query_text qt ON qs.query_text_id = qt.query_text_id
ORDER BY rs.avg_duration DESC;
| Workload | SKU | Cost | Notes |
|---|---|---|---|
| Dev/test | GP_S_Gen5_1 (Serverless) | $$ | Auto-pause saves cost |
| Low-traffic prod | GP_S_Gen5_2 (Serverless) | $$ | Good for bursty AI workloads |
| Steady prod | GP_Gen5_2 (Provisioned) | $$$ | Predictable performance |
| High throughput | BC_Gen5_4 (Business Critical) | $$$$ | Local SSD, zone redundant |
| Issue | Cause | Fix |
|---|---|---|
| Slow query spikes | Missing indexes | Enable Query Store, apply index recommendations |
| Connection timeout | Serverless auto-paused | Set autoPauseDelay=-1 or increase min vCores |
| AAD auth fails | MI not added as SQL user | Run CREATE USER [mi-name] FROM EXTERNAL PROVIDER |
| Private endpoint DNS fails | Zone not linked to VNet | Link privatelink.database.windows.net to app VNet |
Source: frootai/frootai — distributed by TomeVault.