Вы можете пройти экспресс-аудит SQL Serverна всех серверах вашей компании. Скрипт будет полезен для автоматического исправления несовместимых конфигураций.
Создайте три таблицы:
Мы собираемся создать 3 таблицы. В первой таблице мы будем сохранять SQL Server Имя конфигурации и его рекомендуемое значение. Эта таблица будет выступать в качестве исходной таблицы для сравнения. Если вы используете SQL 2014, не забудьте позаботиться об элементе конфигурации, а именно о «резервной копии контрольной суммы по умолчанию». По умолчанию значение установлено равным нулю, но рекомендуемое значение равно 1, и вы можете легко установить его с помощью команды EXEC sp_configure. Если установлено значение 1, всякий раз, когда SQL Server читает страницы для резервного копирования, он также проверит любые существующие контрольные суммы страниц.
Во второй таблице мы будем сохранять имена серверов из нашей среды SQL. Последняя таблица будет использоваться в качестве таблицы журнала, и в ней будут храниться данные конфигурации с удаленных серверов и сравниваться с нашей исходной таблицей, т. е. с первой таблицей.
Автоисправление
Через курсор скрипт прочитает имя каждого сервера из второй таблицы и создаст Linked server для каждого сервера. С помощью связанного сервера данные конфигурации считываются с каждого сервера и загружаются в таблицу журнала, т. е. в третью таблицу. Конфигурация и ее значение из каждой строки таблицы журнала сравниваются с исходной таблицей. Если значение не соответствует, конфигурация автоматически фиксируется рекомендуемым значением с помощью sqlcmd. В этом сценарии автоисправление установлено только для максимальной памяти сервера. Это же правило можно применить и для других конфигураций.
Однако в случае поврежден SQL Server db вы не сможете автоматически проводить аудит SQL Server конфигурации. В таком случае вы можете использовать SQL server средства восстановления, такие как Datanumen SQL recovery инструмент.
CREATE TABLE TBL0 (cname VARCHAR(200), cvalue BIGINT) INSERT INTO TBL0 SELECT NAME, cast(value AS BIGINT) FROM sys.configurations CREATE TABLE TBL1 (cservername VARCHAR(200)) -- Вставить в значения TBL1 ('SRVR1') CREATE TABLE TBL2 ( csvrname VARCHAR(200) ,cname VARCHAR(200) ,cvalue BIGINT ,cminvalue BIGINT ,cmaxvalue BIGINT ,cvalinuse BIGINT ,cstatus VARCHAR(200)) DECLARE @cmd NVARCHAR(2000) DECLARE @vsvrname VARCHAR(200) ЗАЯВИТЬ @ vuser VARCHAR(100) DECLARE @vpwd VARCHAR(100) SET @vsvrname = 'SRVR1' SET @vuser = 'linkedserveruser' SET @vpwd = 'linkedserveruserpassword' SET @cmd = 'EXEC sp_addlinkedserver @server=''' + @vsvrname + '''' PRINT @cmd EXEC (@cmd) SET @cmd = 'EXEC sp_addlinkedsrvlogin ''' + @vsvrname + ''', ''false'', NULL, ''' + @vuser + ''', ' '' + @vpwd + '''' PRINT @cmd EXEC (@cmd) ВСТАВИТЬ В TBL2 (csvrname, cname, cvalue, cminvalue, cmaxvalue, cvalinuse) SELECT @@servername AS 'Servername', NAME, cast (value AS BIGINT ) ,cast(минимум AS BIGINT) ,cast(максимум AS BIGINT) ,cast(value_in_use AS BIGINT) FROM [CPH-MSSQL07-T].master.sys.configurations SELECT * FROM TBL2 DECLARE @cur1svrname VARCHAR(200) DECLARE @cur1name VARCHAR(500) DECLARE @cur1value BIGINT DECLARE CUR1 CURSOR FOR SELECT csvrname ,cname ,cvalue FROM TBL2 OPEN CUR1 FETCH NEXT FROM CUR1 INTO @cur1svrname ,@cur1name ,@cur1value WHILE @@FETCH_STATUS = 0 BEGIN DECLARE @sname VARCHAR(500 ) ЗАЯВИТЬ @svalue BIGINT SET @svalue = ( SELECT cvalue FROM TBL0 WHERE cname = @cur1name ) IF @cur1value <> @svalue BEGIN DECLARE @cmd2 VARCHAR(1000) SET @cmd2 = 'SQLCMD -S ' + @cur1svrname + ' -E - Q "EXEC sp_configure ''максимальная память сервера (МБ)'',' + cast(@svalue AS VARCHAR(100)) + '"' -- Print @cmd2 EXEC xp_cmdshell @cmd2 UPDATE TBL2 SET cstatus = 'НЕ СООТВЕТСТВУЕТ. ТЕПЕРЬ ИСПРАВЛЕНО', ГДЕ csvrname = @cur1svrname AND cname = @cur1name END FETCH NEXT FROM CUR1 INTO @cur1svrname ,@cur1name ,@cur1value END CLOSE CUR1 DEALLOCATE CUR1
Об авторе:
Нил Варли — эксперт по восстановлению данных в DataNumen, Inc., которая является мировым лидером в области технологий восстановления данных, включая исправить повреждение электронной почты Outlook pst и программные продукты для восстановления Excel. Для получения дополнительной информации посетите www.datanumen.com
Привет всем, я впервые посещаю этот сайт, и этот абзац действительно полезен для меня, продолжайте в том же духе.ostиспользование этих типов контента.