Коллеги, здравствуйте.
В ходе выполнения различного рода задач может пригодится скрипт, который выполнит поиск заданного идентификатора по всей базе данных (в колонке с определенным названием).
DECLARE @COLUMN_NAME NVarChar(100) = 'Id'
DECLARE @COLUMN_VALUE NVarChar(100) = '8F2E3098-932C-49A8-8D06-B40462DA98CD'
DECLARE @tableName VARCHAR(50)
DECLARE tablesCursor CURSOR LOCAL FORWARD_ONLY STATIC FOR
SELECT table_name = sysobjects.name
FROM sysobjects
JOIN syscolumns ON sysobjects.id = syscolumns.id
WHERE sysobjects.xtype='U'
AND syscolumns.name = @COLUMN_NAME
OPEN tablesCursor
FETCH NEXT FROM tablesCursor INTO @tableName
WHILE @@FETCH_STATUS = 0
BEGIN
EXEC ('DECLARE @recordCount INT;
DECLARE @quotesChar CHAR = char(39);
DECLARE @tabChar CHAR = char(9);
BEGIN TRY
SET @recordCount =
(SELECT COUNT(*)
FROM [' + @tableName + '] where ' + @COLUMN_NAME + ' = ''' + @COLUMN_VALUE + ''')
IF @recordCount > 0
BEGIN
PRINT ''''
PRINT ''-- ' + @tableName + ':''
PRINT '' SELECT * FROM ' + @tableName +
' WHERE ' + @COLUMN_NAME +
' = '' + @quotesChar + ''' + @COLUMN_VALUE + ''' + @quotesChar + ''''
PRINT '' -- Количество строк в запросе: '' + CAST(@recordCount as VARCHAR(5))
END
END TRY
BEGIN CATCH
END CATCH;
');
FETCH NEXT FROM tablesCursor INTO @tableName
END
CLOSE tablesCursor
DEALLOCATE tablesCursor
DECLARE @COLUMN_VALUE NVarChar(100) = '8F2E3098-932C-49A8-8D06-B40462DA98CD'
DECLARE @tableName VARCHAR(50)
DECLARE tablesCursor CURSOR LOCAL FORWARD_ONLY STATIC FOR
SELECT table_name = sysobjects.name
FROM sysobjects
JOIN syscolumns ON sysobjects.id = syscolumns.id
WHERE sysobjects.xtype='U'
AND syscolumns.name = @COLUMN_NAME
OPEN tablesCursor
FETCH NEXT FROM tablesCursor INTO @tableName
WHILE @@FETCH_STATUS = 0
BEGIN
EXEC ('DECLARE @recordCount INT;
DECLARE @quotesChar CHAR = char(39);
DECLARE @tabChar CHAR = char(9);
BEGIN TRY
SET @recordCount =
(SELECT COUNT(*)
FROM [' + @tableName + '] where ' + @COLUMN_NAME + ' = ''' + @COLUMN_VALUE + ''')
IF @recordCount > 0
BEGIN
PRINT ''''
PRINT ''-- ' + @tableName + ':''
PRINT '' SELECT * FROM ' + @tableName +
' WHERE ' + @COLUMN_NAME +
' = '' + @quotesChar + ''' + @COLUMN_VALUE + ''' + @quotesChar + ''''
PRINT '' -- Количество строк в запросе: '' + CAST(@recordCount as VARCHAR(5))
END
END TRY
BEGIN CATCH
END CATCH;
');
FETCH NEXT FROM tablesCursor INTO @tableName
END
CLOSE tablesCursor
DEALLOCATE tablesCursor
Показать все комментарии
Войдите или зарегистрируйтесь, что бы комментировать