Manage Cloud Database Access
Corecms
Why direct database access matters
Section titled “Why direct database access matters”Sometimes you need to look beyond your application code. Debugging a content issue, analyzing performance, or migrating data all require direct access to the database. Optimizely Cloud provides secure access to your environment databases through standard SQL Server tooling.
Find your connection details
Section titled “Find your connection details”- Log into the Optimizely Cloud management portal
- Select your project
- Navigate to Databases (or Settings > Database Access)
- Select the environment (Integration, Preproduction, or Production)
- Copy the connection details:
- Server hostname
- Database name
- Username
- Password (click to reveal or generate a new one)
Connect with SQL Server Management Studio
Section titled “Connect with SQL Server Management Studio”- Open SQL Server Management Studio (SSMS)
- In the Connect dialog:
- Server name: Paste the hostname from the portal
- Authentication: SQL Server Authentication
- Login: Paste the username
- Password: Paste the password
- Click Options > Connection Properties
- Set Encrypt connection to
Yes - Click Connect
Connect with Azure Data Studio
Section titled “Connect with Azure Data Studio”- Open Azure Data Studio
- Click New Connection
- Fill in:
- Server: Hostname from portal
- Authentication type: SQL Login
- User name: From portal
- Password: From portal
- Database: Your database name
- Click Connect
Common database operations
Section titled “Common database operations”Query content data
Section titled “Query content data”The CMS stores content in the tblContent, tblContentProperty, and tblContentLanguage tables. For read-only queries against content:
SELECT c.pkID, c.Name, cl.URLSegmentFROM tblContent cJOIN tblContentLanguage cl ON c.pkID = cl.fkContentIDWHERE cl.LanguageBranch = 'en'ORDER BY c.pkID DESC;Check scheduled jobs
Section titled “Check scheduled jobs”View scheduled job status and history:
SELECT Name, IsRunning, LastExec, NextExecFROM tblScheduledItemORDER BY NextExec;Database size
Section titled “Database size”Monitor your database size to stay within your subscription limits:
SELECT DB_NAME() AS DatabaseName, SUM(size * 8 / 1024) AS SizeMBFROM sys.database_files;Refresh lower environments from Production
Section titled “Refresh lower environments from Production”To copy production content to Integration or Preproduction for realistic testing:
- In the management portal, navigate to Databases
- Select the target environment (Integration or Preproduction)
- Click Refresh from Production (or Import Database)
- Confirm the operation — this overwrites the target database
- Wait for the import to complete (this can take several minutes depending on database size)
After refreshing:
- Update any environment-specific data (test API keys, webhook URLs)
- Clear caches in the refreshed environment
- Notify your team that the environment data has been reset
Backup and restore
Section titled “Backup and restore”Automated backups
Section titled “Automated backups”Production databases are backed up automatically:
- Full backup — Weekly
- Differential backup — Daily
- Transaction log — Every 5-10 minutes
- Retention — 35 days of point-in-time restore
Request a restore
Section titled “Request a restore”If you need to restore to a specific point in time:
- Contact Optimizely support with your project ID and the desired restore time
- Support can restore to a new database or replace the existing one
- Restores for Integration and Preproduction can be self-service through the portal
Security best practices
Section titled “Security best practices”- Never share database credentials in chat, email, or code repositories
- Regenerate passwords periodically through the management portal
- Use read-only queries whenever possible in production
- Avoid DDL changes (CREATE, ALTER, DROP) directly in the database — use code-first migrations instead
- Limit production access to senior team members with operational need