Мы собираемся списать экземпляр SQL Server, на котором еще есть несколько баз данных.
Как я могу определить, используются ли они пользователями или веб-приложением?
Я нашел ветку форума с запросом T-SQL, который вы можете запустить, чтобы получить дату последнего запроса. Кажется, это работает, но я хочу знать, достаточно ли эта информация для удаления баз данных. Это?
Если у вас есть альтернативные методы, это также поможет.
sql-server
t-sql
jsauni
источник
источник
Ответы:
Вы должны быть обеспокоены элементами, которые были удалены из кэша и которые вы пропустили, или базами данных, которые используются редко.
Вместо того, чтобы удалять базы данных из-под контроля, поместите их в положение OFFLINE, чтобы запретить доступ без их удаления, или в режиме RESTRICTED_USER, чтобы ограничить доступ. Делая это, вы можете оставить их в этом состоянии на месяц или два, чтобы проверить и посмотреть, есть ли случайное использование.
Вы также можете использовать фильтрацию трассировки профилировщика на стороне сервера в этой базе данных.
источник
Вот методы, которые я использовал в прошлом:
Проблема в следующем: как долго вы ждете, чтобы убедиться, что никто не собирается получить доступ к данным? Для финансовых данных у вас есть некоторые элементы, выполняемые ежедневно, еженедельно, ежемесячно, ежеквартально, полугодово и ежегодно. Но достаточно ли одного года? Я также видел запросы на то, чтобы данные оставались доступными не менее 7 лет, и в одном случае мне сказали, что данные в одной системе должны быть там всегда, даже если никто не использовал их.
Лучший совет заключается в следующем: что бы вы ни делали, чтобы отключить доступ, убедитесь, что вы можете включить его немедленно. Я обнаружил, что для этого лучше всего работал детатч. Я просто написал бы сценарий присоединения и дал указание моей команде «если кто-нибудь спросит, где он, запустите этот сценарий». Это дало нам лучший шанс вернуть вещи как можно быстрее.
источник
Я согласен с Ником с его советом. Если вам нужно быть уверенным, то вам придется использовать Profiler (трассировка на стороне службы), потому что некоторые запросы SQL не будут кэшироваться или по какой-либо причине очистить кэш процедур.
Я бы обычно проверял информацию о статистике виртуальных файлов, чтобы узнать, происходит ли чтение или запись на уровне файла ОС. Даже если база данных НЕ активна, вы все равно увидите небольшие операции чтения / записи, если вы делаете резервные копии журналов, полные резервные копии и т. Д. ... но это также даст вам представление об активности чтения / записи в этой базе данных.
Прежде чем удалять любую базу данных, я должен убедиться, что у вас есть как минимум 2 или 3 читаемых резервных копии (проверьте их) в разных местах. Вы никогда не знаете, когда они вам нужны.
источник
Следующий запрос показывает базы данных, которые не использовались с момента последнего перезапуска, не полагаясь на планы запросов, хранящиеся в кэше, так как он показывает ввод-вывод пользователя по индексам (и кучам). Это своего рода использование статистики виртуальных файлов, но используемый здесь DMV исключает активность ввода-вывода из резервных копий. Нет необходимости поддерживать трассировку профилировщика, не требуются триггеры или аудит. Конечно, если вы часто перезагружаете свой SQL-сервер (или вы часто подключаете / выключаете базы данных), это может быть не лучшим решением :-)
Сказав это, все же согласитесь, что даже если этот запрос подтверждает, что БД может быть отброшена, определенно сделайте ОТКЛЮЧИТЬ / отсоединить или отказать пользователю в доступе на некоторое время, плюс любую должную осмотрительность расспросить, прежде чем фактически отбросить!
источник
Я работал в месте, где было большое количество осиротевших и полусиротных баз данных. Трудно было сказать, действительно ли они были осиротевшими, так как многие задачи были сезонными или ежегодными - так что веб-сайт работает только 3-4 месяца в год (например, формы W2 должны быть поданы в электронном виде 1/31, поэтому обработка веб-сайта они проходили только с середины января до конца апреля).
Было сделано следующее:
* спросите каждого разработчика, используют ли они какую-либо базу данных или другую (эти электронные письма будут выходить ежемесячно или всякий раз, когда резервное копирование занимает слишком много времени).
* отключить базу данных и посмотреть, кто жалуется.
* Переименуйте сервер, чтобы увидеть, кто жалуется.
Поскольку заостренный босс был готов разрешить «полную и полную» документацию, вики была категорически запрещена, а сокращение персонала привело к резкому сокращению документации, соответствующей стандарту.
Если бы это зависело от меня, на каждом сервере была бы вики-страница с именами контактов для каждой базы данных (и, возможно, краткое описание того, для чего эта база данных). Любая база данных, недокументированная в вики, будет честной игрой для удаления.
У нас был один крупный финансовый клиент, который все еще использовал SQL Server 2000 еще в 2009 году, поэтому нам нужно было поддерживать один экземпляр SQL Server 2000 до тех пор, пока этот клиент окончательно не перешел на SQL Server 2005.
источник
Еще две альтернативы:
Включить аудит на БД.
источник
Следующее решение показывает временные итоговые, чистые и грязные страницы в МБ для определенных баз данных под вашим экземпляром (найден в Интернете и немного изменен):
или
или
источник