Есть ли способ найти неиспользуемые базы данных SQL Server 2005?Поиск неиспользуемых баз данных SQL Server
Я в процессе обновления и миграции моего сервера в SQL Server 2008 x64 в новом экземпляре сервера из 32-го 32-го сервера.
Спасибо.
Есть ли способ найти неиспользуемые базы данных SQL Server 2005?Поиск неиспользуемых баз данных SQL Server
Я в процессе обновления и миграции моего сервера в SQL Server 2008 x64 в новом экземпляре сервера из 32-го 32-го сервера.
Спасибо.
Не дурачок доказательства. Несколько вещей, которые приходят на ум.
См каких базы данные имеют несколько страниц в буферном пуле
select db.name, COUNT(*) As page_count
from sys.databases db LEFT JOIN sys.dm_os_buffer_descriptors bd ON db.database_id = bd.database_id
group by db.database_id, db.name
order by page_count
Или посмотреть на статистике использования индекса для каждой базы данных
SELECT db.name,
(SELECT MAX(T) AS last_access FROM (SELECT MAX(last_user_lookup) AS T UNION ALL SELECT MAX(last_user_seek) UNION ALL SELECT MAX(last_user_scan) UNION ALL SELECT MAX(last_user_update)) d) last_access
FROM sys.databases db
LEFT JOIN sys.dm_db_index_usage_stats iu ON db.database_id = iu.database_id
GROUP BY db.database_id, db.name
ORDER BY last_access
Вы можете также использовать вход триггера для регистрации доступа продолжающегося для определенный период, чтобы быть уверенным, что ничто не похоже на доступ к «мертвым» базам данных, прежде чем переключать их в автономном режиме.
Комбинат любой из этих методов, чтобы выяснить, какие базы данных еще в использовании
списка соединений
select * from sys.dm_exec_connections
листинг активные процессы
select * from sys.sysprocesses
перечисляя исполнение улица atistics
select DB_NAME(database_id),
max(isnull(isnull(last_user_scan, last_user_update),
isnull(last_user_seek, last_system_scan)))
from sys.dm_db_index_usage_stats
group by DB_NAME(database_id)
хранящей LOGON временные метки
создать LOGON TRIGGER и вставьте EVENTDATA содержимое в таблицу для последующего выполнения запросов, примеры here, here
С SQL Server 2005, вы можете использовать динамический вид управления sys.dm_db_index_usage_stats. Название говорит «index», но это немного вводит в заблуждение - каждая таблица имеет запись здесь, даже если у нее нет индексов. Вот полезный запрос от SQL Magazine:
SELECT
t.name AS 'Table',
SUM(i.user_seeks + i.user_scans + i.user_lookups)
AS 'Total accesses',
SUM(i.user_seeks) AS 'Seeks',
SUM(i.user_scans) AS 'Scans',
SUM(i.user_lookups) AS 'Lookups'
FROM
sys.dm_db_index_usage_stats i RIGHT OUTER JOIN
sys.tables t ON (t.object_id = i.object_id)
GROUP BY
i.object_id,
t.name ORDER BY [Total accesses] DESC
Вот оригинал статьи:
http://www.sqlmag.com/Article/ArticleID/53878/sql_server_53878.html
Имейте в виду, что эти статистические данные об использовании сброса, когда SQL Server перезагружается.
Не следует ли вам присоединяться к sys.databases вместо таблиц? То есть ВЫБОР t.name AS 'Таблицы', SUM (i.user_seeks + i.user_scans + i.user_lookups) А.С. 'Общего доступа', SUM (i.user_seeks), как 'Seeks', SUM (i.user_scans) AS 'Scans', SUM (т.е.user_lookups) КАК '' Lookups ИЗ sys.dm_db_index_usage_stats я правое внешнее соединение sys.databases Т на (t.database_id = i.database_id) GROUP BY i.database_id, t.name ORDER BY [Всего] получает доступ к DESC – GaussZ
Возьмите их в автономном режиме - посмотрите, кто жалуется? В зависимости от того, что этот сервер, это может быть действительным подходом (т. Е. Возможно для серверов разработки, не столь реалистичным для жизни). –
Но для живых серверов вы получаете более быструю обратную связь :) – Arvo