Публикация

Поиск идентификатора в базе данных

Коллеги, здравствуйте.

В ходе выполнения различного рода задач может пригодится скрипт, который выполнит поиск заданного идентификатора по всей базе данных (в колонке с определенным названием).

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

Нравится

Поделиться

0 комментариев
Показать все комментарии