Montago, SQL, . , , :)
USE DatabaseName
GO
DECLARE @sqlDrop VARCHAR(1000)
SET @sqlDrop = 'IF EXISTS (SELECT * FROM #table# WHERE object_id = OBJECT_ID(''#name#'')) DROP #what# #name#'
DECLARE @sqlCommand VARCHAR(1000)
DECLARE @id INT
SET @id = 0
DECLARE @name SYSNAME
DECLARE @prev INT
WHILE 1 = 1
BEGIN
SET @prev = @id
SELECT TOP 1
@id = object_id,
@name = name
FROM sys.tables
WHERE object_id > @id
ORDER BY object_id
IF @id = @prev
BREAK
SET @sqlCommand = @sqlDrop
SET @sqlCommand = REPLACE(@sqlCommand, '#table#', 'sys.tables')
SET @sqlCommand = REPLACE(@sqlCommand, '#name#', @name + '_tracking')
SET @sqlCommand = REPLACE(@sqlCommand, '#what#', 'TABLE')
EXEC (@sqlCommand)
SET @sqlCommand = @sqlDrop
SET @sqlCommand = REPLACE(@sqlCommand, '#table#', 'sys.triggers')
SET @sqlCommand = REPLACE(@sqlCommand, '#name#', @name + '_delete_trigger')
SET @sqlCommand = REPLACE(@sqlCommand, '#what#', 'TRIGGER')
EXEC (@sqlCommand)
SET @sqlCommand = REPLACE(@sqlCommand, '_delete_trigger', '_insert_trigger')
EXEC (@sqlCommand)
SET @sqlCommand = REPLACE(@sqlCommand, '_insert_trigger', '_update_trigger')
EXEC (@sqlCommand)
SET @sqlCommand = @sqlDrop
SET @sqlCommand = REPLACE(@sqlCommand, '#table#', 'sys.procedures')
SET @sqlCommand = REPLACE(@sqlCommand, '#name#', @name + '_delete')
SET @sqlCommand = REPLACE(@sqlCommand, '#what#', 'PROCEDURE')
EXEC (@sqlCommand)
SET @sqlCommand = REPLACE(@sqlCommand, '_delete', '_deletemetadata')
EXEC (@sqlCommand)
SET @sqlCommand = REPLACE(@sqlCommand, '_deletemetadata', '_insert')
EXEC (@sqlCommand)
SET @sqlCommand = REPLACE(@sqlCommand, '_insert', '_insertmetadata')
EXEC (@sqlCommand)
SET @sqlCommand = REPLACE(@sqlCommand, '_insertmetadata', '_selectchanges')
EXEC (@sqlCommand)
SET @sqlCommand = REPLACE(@sqlCommand, '_selectchanges', '_selectrow')
EXEC (@sqlCommand)
SET @sqlCommand = REPLACE(@sqlCommand, '_selectrow', '_update')
EXEC (@sqlCommand)
SET @sqlCommand = REPLACE(@sqlCommand, '_update', '_updatemetadata')
EXEC (@sqlCommand)
SET @sqlCommand = REPLACE(@sqlCommand, '_updatemetadata', '_bulkdelete')
EXEC (@sqlCommand)
SET @sqlCommand = REPLACE(@sqlCommand, '_bulkdelete', '_bulkinsert')
EXEC (@sqlCommand)
SET @sqlCommand = REPLACE(@sqlCommand, '_bulkinsert', '_bulkupdate')
EXEC (@sqlCommand)
END
SET @sqlCommand = @sqlDrop
SET @sqlCommand = REPLACE(@sqlCommand, '#table#', 'sys.tables')
SET @sqlCommand = REPLACE(@sqlCommand, '#name#', 'schema_info')
SET @sqlCommand = REPLACE(@sqlCommand, '#what#', 'TABLE')
EXEC (@sqlCommand)
SET @sqlCommand = REPLACE(@sqlCommand, 'schema_info', 'scope_config')
EXEC (@sqlCommand)
SET @sqlCommand = REPLACE(@sqlCommand, 'scope_config', 'scope_info')
EXEC (@sqlCommand)
This, as you can see, goes through all the tables and tries to find traces of synchronization. You just need to change the database name (first line). Also, if you want to be more secure with what you delete, use this code to search for tables:
SELECT TOP 1
@id = object_id,
@name = REPLACE(name, '_tracking', '')
FROM sys.tables
WHERE object_id > @id
AND name LIKE '%_tracking'
ORDER BY object_id
This will only look for tables that are actually synchronized.