SQL Server Databases and GitHub Administration
VIDEO TRANSCRIPT | Recorded: 2025-12-18 | Verify against current system state
Abstract¶
This session covers two major topics: SQL Server database architecture and GitHub organization administration. Jeff explains the database landscape including Aptify, AMPDB, CraftCMS MySQL, and Salesforce databases, the historical view abstraction layer for legacy applications, backup/recovery procedures across Aptify Cloud and Azure, and DBAmp license renewal requirements. The GitHub section covers organization structure, team-based permissions, Copilot licensing, vendor access patterns, branch protection, secrets management, and Dependabot security alerts.
Key Procedures¶
SQL Server & Databases¶
- Database locations: Aptify Cloud (production) and Azure (Bestline servers with "AZ" prefix)
- Primary databases: Aptify (AMS backend), AMPDB (legacy apps), Salesforce (DBAmp cache), CraftCMS MySQL (Cloudways)
- Aptify database access: Read-only recommended; updates should go through Aptify API/framework
- Exception process: Document exceptions and submit to Aptify Cloud Help Desk for large direct SQL changes
- VPN required for all database connections; can hop through web server if direct SQL connection fails
- SA credentials in 1Password; most developers use Active Directory authentication
- Aptify Cloud backups: Managed as part of hosting; IT Support receives daily success/failure email - check weekly
- Database restore for QA refresh: Contact Aptify Cloud Support; verify licenses and smart client after restore
- Aptify Cloud support hours: 8-5 Eastern; after-hours response may be slower for complex issues
- Azure/Bestline backups: Veeam backup includes both server and SQL database; stored in 3 locations (Azure, blob, off-site)
- DBAmp license renewal: ANNUAL - new license number provided via email; must apply before old license expires or sync fails
- DBAmp restart: Use desktop configuration app → Stop → Restart after license update
- Log table purge: SQL job maintains log tables with varying retention (2 weeks to 3 months depending on table)
- View abstraction: Legacy tables renamed to
__legacy, views created with original names pointing to Aptify - vw_PersonsWithBestAddress: Useful but slow - best for small result sets, not entire database queries
GitHub Administration¶
- Login: IT Support account from 1Password for organizational admin access
- Switch to organization: After login, click to switch from personal account to "AMPIT" organization
- Archived repositories: Only visible when logged in as IT Support
- Seats: 9 of 10 used; includes full members and outside collaborators
- Team-based permissions: Create teams (e.g., "Salesforce Auditors" = read-only, "Developers" = full access)
- Vendor access pattern: Create team named "[Vendor] Developers", add members, grant repo access to team
- GitHub pricing: \(4/seat/month base; Copilot additional ~\)20/seat/month (3 users currently)
- Review usage: Remove users not logging in to GitHub
- Branch protection: Consider for critical repos (account, conference reg, Salesforce metadata) - require PR for main branch
- Two-factor requirement: Not enabled yet - enabling will remove users without 2FA configured
- GitHub Secrets: Organization level for Mighty Citizen Buddy sync and Bitbucket; repository level secrets exist but harder to audit
- Personal Access Tokens: Settings → Developer Settings → Fine-grained or Classic tokens
- Dependabot alerts: Consider enabling only for critical repos (account, conference reg) to avoid alert flood
- Nightly sync: GitHub Actions pull from Bitbucket (I2C) and Buddy (MightyCitizen) repositories
Notable Statements¶
- 0:03:36 "Aptify has set it up so they really strongly recommend developers only have read-only access to the Aptify database."
- 0:08:23 "View persons with best address is very often used... it's solid, but it has really slow performance."
- 0:16:13 "Most of the time when you do this restore, I think y'all would agree, there's always problems afterwards."
- 0:27:02 "DBAmp will give you a new license number, like a completely new license number... you have to apply the new license before the old license expires."
- 0:31:48 "Without Aptify support, it's our responsibility to have database backups... index maintenance, statistics updates, integrity monitoring, performance tuning, security patching."
- 0:39:23 "What we did was we changed some of these tables to views. We renamed the original table to underscore underscore legacy."
- 0:46:15 "Those views... some of them are fairly complex and should never be changed. They are what they are at this point."
- 0:51:36 "It's much easier to put people in teams and then revoke access based on the team."
- 1:04:03 "You got to get me out of these repositories come January 1."
Systems & Configurations¶
Systems Mentioned¶
- SQL Server 2019 (Aptify Cloud and Azure)
- Aptify (AMS - desktop and web client)
- AMPDB (legacy database)
- Salesforce (DBAmp cached data)
- CraftCMS MySQL (Cloudways)
- DBAmp/CData (Salesforce-SQL integration)
- GitHub (version control, organization)
- Azure (Bestline servers)
- Veeam (backup solution)
- 1Password (credentials)
- Entity Framework, NHibernate, Dapper (ORMs)
Specific Configurations¶
| Item | Value/Setting | Timestamp | Notes |
|---|---|---|---|
| SQL Server version | 2019 | 0:00:45 | Current production version |
| DBAmp linked server | SFStage | 0:02:23 | Connects to Salesforce staging |
| Log purge retention | 2 weeks - 3 months | 0:26:28 | Varies by table |
| Aptify Cloud support | 8-5 Eastern | 0:16:57 | After-hours slower for complex issues |
| GitHub seats | 9 of 10 | 0:50:05 | One failed invitation (Romit) |
| GitHub base cost | $4/seat/month | 0:53:40 | Base tier |
| Copilot users | 3 | 0:53:40 | Additional cost per user |
| Active repositories | 154 | 0:51:23 | Non-archived |
Credentials/Access Mentioned¶
- SA credentials in 1Password for SQL Server
- Active Directory authentication for most developer access
- IT Support GitHub account for organizational admin
- DBAmp license numbers provided annually via email
- Personal Access Tokens for API/MCP connections
- GitHub Secrets for Buddy and Bitbucket sync credentials
Errors & Troubleshooting¶
- Issue: DBAmp sync stops working
- Cause: Annual license expired; shows as "trial license" in error
- Resolution: Apply new license number from email in DBAmp desktop config app; restart service
-
Timestamp: 0:27:02
-
Issue: Cannot connect directly to Aptify SQL Server
- Cause: VPN or network issue
- Resolution: Connect to Aptify Cloud web server first, then RDP from there to SQL Server
-
Timestamp: 0:12:09
-
Issue: QA database restore causes downstream issues
- Cause: Restore doesn't automatically reconnect databases, restore licenses
- Resolution: After restore, verify: database connections, smart client works, licenses restored
-
Timestamp: 0:16:13
-
Issue: vw_PersonsWithBestAddress query is slow
- Cause: Complex view not optimized for full table scans
- Resolution: Use for small, filtered result sets only; avoid selecting all US persons
-
Timestamp: 0:08:23
-
Issue: Losing Aptify process flows after migration to Azure
- Cause: Aptify async processor, scheduled tasks, process flows won't run without Aptify
- Resolution: Business logic that ran on save in Aptify must be handled differently in Salesforce
- Timestamp: 0:30:52
Transcript Gaps & Quality Notes¶
- Recording is from a live Teams meeting with Matt Mackowski and Keith Milleson asking questions
- Two major topics (SQL/GitHub) covered in one session - comprehensive but dense
- Historical context provided for AMPDB → Aptify migration and view abstraction pattern
- AMP Core concept discussed as future architecture direction
- Recommendation: Consider fractional DBA service post-Aptify Cloud
- SQL Server maintenance solution (Ola Hallengren) referenced for self-managed scenarios
- Action item mentioned: Remove Jeff Sikes from GitHub repositories by January 1
- Presenter: Jeff Sikes
- Duration: ~68 minutes
- Audio quality: Good