https://documentation.red-gate.com/soc7/troubleshooting/object-changed-by-unknown
https://documentation.red-gate.com/soc7/configuring/log-changes-to-shared-databases
Step 1: Creating the change log database
You can use this SQL script template to create a dedicated change log database named ChangeLog
. You can modify the script as needed.
USE master EXECUTE ('CREATE DATABASE ChangeLog') ALTER DATABASE ChangeLog SET ANSI_NULL_DEFAULT OFF ALTER DATABASE ChangeLog SET ANSI_NULLS OFF ALTER DATABASE ChangeLog SET ANSI_PADDING OFF ALTER DATABASE ChangeLog SET ANSI_WARNINGS OFF ALTER DATABASE ChangeLog SET ARITHABORT OFF ALTER DATABASE ChangeLog SET AUTO_CLOSE OFF ALTER DATABASE ChangeLog SET AUTO_CREATE_STATISTICS ON ALTER DATABASE ChangeLog SET AUTO_SHRINK OFF ALTER DATABASE ChangeLog SET AUTO_UPDATE_STATISTICS ON ALTER DATABASE ChangeLog SET READ_WRITE ALTER DATABASE ChangeLog SET RECOVERY SIMPLE ALTER DATABASE ChangeLog SET MULTI_USER ALTER DATABASE ChangeLog SET PAGE_VERIFY CHECKSUM ALTER DATABASE ChangeLog SET DB_CHAINING ON EXECUTE ('USE ChangeLog IF NOT EXISTS (SELECT * FROM sys.sysusers WHERE name=''guest'') EXECUTE sp_grantdbaccess guest')
Step 2: Editing the config file
After the change log database is created, you need to edit a local config file so SQL Source Control can access it.
- Make sure SQL Server Management Studio is closed.
-
Go to the SQL Source Control config files folder: %localappdata%Red GateSQL Source Control 7
Open RedGate_SQLSourceControl_Engine_EngineOptions.xml in a text editor. -
Below the
EngineOptions version
line, add:- <TraceCacheDatabase>ChangeLog</TraceCacheDatabase>
The file is case sensitive. Don't change the capitalization of the text.
Ignoring any comments (indicated with
<!->
), the final file should look like this::ExampleToggle source code
The example above doesn't include any extra lines you may have included for other options.
- Save and close the file.
SQL Source Control will now use the change log database to log changes made to all linked databases.
<EngineOptions version="3" type="EngineOptions" > <TraceCacheDatabase>ChangeLog</TraceCacheDatabase> </EngineOptions>
SELECT DB_NAME(DatabaseID) AS DatabaseName, UserName, * FROM dbo.RG_AllObjects_v4 WHERE UserName IS NOT NULL AND DB_NAME(DatabaseID) LIKE '%UK%' ORDER BY EntryDateTime DESC;