Перейти к содержимому

Как запустить задание (job) удаленна с другова сервере mssql или из другого задания (job).

Была задача запустить задание из другого задания которое находилось на другом сервере mssql

Создаём линковку (связанный сервер) и в свойствах включаем RPC :

Как запустить задание (job) удаленна с другова сервере mssql или из другого задания (job).

Так же надо убедится что у пользователя под кем создалась линкова есть права на базу msdb:

Как запустить задание (job) удаленна с другова сервере mssql или из другого задания (job).Как запустить задание (job) удаленна с другова сервере mssql или из другого задания (job).

exec linkserver.msdb.dbo.sp_start_job  @job_name = 'name job'

 

 

Как сформировать скрипт для реиндекса индексов mssql. Необходимо для каждого индекса с генерировать соответствующую ALTER INDEX команду

DECLARE @SQL NVARCHAR(MAX)

DECLARE cur CURSOR LOCAL READ_ONLY FORWARD_ONLY FOR
	SELECT '
	PRINT ''Перестройка  [' + i.name + N'] начато ''  + Cast(GETDATE() as varchar);
	
	ALTER INDEX [' + i.name + N'] ON [' + SCHEMA_NAME(o.[schema_id]) + '].[' + o.name + '] ' +
		CASE WHEN s.avg_fragmentation_in_percent > 30
			THEN 'REBUILD WITH (FILLFACTOR = 80, PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON, SORT_IN_TEMPDB = OFF, ONLINE = ON)
			
	PRINT ''Перестройка  [' + i.name + N'] завершено '' + Cast(GETDATE() as varchar) '
ELSE 'REORGANIZE'
		END + ';'
		
		


	FROM (
		SELECT 
			  s.[object_id]
			, s.index_id
			, avg_fragmentation_in_percent 
Читать далее

Как узнать фрагментацию индексов во всех таблицах в базе MSSQL

SELECT  IndStat.database_id,
                IndStat.object_id,
                QUOTENAME(s.name) + '.' + QUOTENAME(o.name) AS [object_name],
                IndStat.index_id,
                QUOTENAME(i.name) AS index_name,
                IndStat.avg_fragmentation_in_percent,
                IndStat.partition_number,
                (SELECT count (*) FROM sys.partitions p
                        WHERE p.object_id = IndStat.object_id AND p.index_id = IndStat.index_id) AS partition_count
FROM sys.dm_db_index_physical_stats
    (DB_ID('ax_molniya'), OBJECT_ID(NULL), NULL, NULL , 'LIMITED') AS IndStat
        INNER JOIN sys.objects AS o ON (IndStat.object_id = o.object_id)
        INNER JOIN sys.schemas AS s ON s.schema_id = o.schema_id
        INNER JOIN sys.indexes i ON (i.object_id = IndStat.object_id AND i.index_id = IndStat.index_id)
WHERE IndStat.avg_fragmentation_in_percent > 10 AND IndStat.index_id > 0

 

Как узнать в какие таблицы чаше всего пишутся и читаются данные в mssql и в кокой файловой группе они состоят. И сразу размер таблиц

Задача была узнать в какую файловую группу чаше всего происходит запись и чтение данных. Что бы можно было перенести файловые группы на разные хранилки с разными скоростями. И так же размер таблиц


/************************************************************
 *  * k.moskvichev ©
 * Time: 18.08.2016 13:19:03
 ************************************************************/

/************************************************************
 * Code formatted by SoftTree SQL Assistant © v7.4.435
 * Time: 18.08.2016 13:18:52
 ************************************************************/

SELECT 		
      @@ServerName                  AS ServerName
           ,DB_NAME()                     AS DBName
           ,OBJECT_NAME(ddius.object_id)  AS TableName
           ,SUM(ddius.user_seeks + ddius.user_scans + ddius.user_lookups) AS Reads
           ,SUM(ddius.user_updates)       AS Writes
           ,SUM(
                ddius.user_seeks + ddius.user_scans + ddius.user_lookups
                + ddius.user_updates
            )                             AS [Reads&Writes] /* ( SELECT    DATEDIFF(s, create_date, GETDATE()) / 86400.0
            FROM      master.sys.databases
            WHERE     name 
Читать далее

PRTG EGAIS JACARTA УТМ. Сенсор будет оповещать когда ключ JaCard выходит из строя

Возникла проблема что ключи на егаис умирают. Но перед этим они спамят в eventlog windows. Сделали сенсор в prtg WMI Event Log

PRTG EGAIS JACARTA УТМ. Сенсор будет оповещать когда ключ JaCard выходит из строя

PRTG EGAIS JACARTA УТМ. Сенсор будет оповещать когда ключ JaCard выходит из строя

Что бы сенсор краснел нужно в канале сделать настройки

PRTG EGAIS JACARTA УТМ. Сенсор будет оповещать когда ключ JaCard выходит из строя

PRTG EGAIS JACARTA УТМ. Сенсор будет оповещать когда ключ JaCard выходит из строя

ну и напоследок оповещение

PRTG EGAIS JACARTA УТМ. Сенсор будет оповещать когда ключ JaCard выходит из строя

PRTG EXECUTE HTTP ACTION TELEGRAMM

Первая часть  там рассказано как сделать бота и узнать id чата.

  1. Создаем оповещение EXECUTE HTTP ACTION

PRTG EXECUTE HTTP ACTION  TELEGRAMM

PRTG EXECUTE HTTP ACTION  TELEGRAMM

https://api.telegram.org/bot2******0:AAEz***************FoB5rvY/sendMessage?text=[%sitename] %device %name %status %down (%message)&chat_id=-17****47

 

PRTG TELEGRAM BOT ALERT

Создать скрипт который будет слать алерты в TELEGRAM.

  1.  Создаём бота https://tlgrm.ru/docs/bots/api
  2. создаем скрипт на powershel который будет слать сообщения от бота в групповой чат что бы все видели алерты
    #param ($text) - думал как перенапривть сюда значения с prtg
    
    $secPasswd=ConvertTo-SecureString "password" -AsPlainText -Force
    $myCreds=New-Object System.Management.Automation.PSCredential -ArgumentList "head_office\k.moskvichev"
    #$Site="http://www.computerperformance.co.uk"
    
    $botkey = "bot244166770:**********************FoB5rvY"
    $chat = "-172891647"
    $text = "любой текс"
    $sendText = "https://api.telegram.org/$botkey/sendMessage" 
    Invoke-WebRequest -Uri $sendText  -Proxy 'http://192.168.0.97:8080' -ProxyUseDefaultCredentials -Method Post  -ContentType "application/json;charset=utf-8" -Body (ConvertTo-Json -Compress -InputObject @{chat_id=$chat; text=$text})
  3. нужно узнать ид группы. Для этого создаем группу и пишем в нее. потом запускаем скрипт
    (Invoke-WebRequest -Uri 'https://api.telegram.org/Заменить на своё из первого пункта/getUpdates').Content
Читать далее

Шринк логов (сжать логи) у всех баз на сервере

Необходимо сжать логи у всех баз на сервере

declare @db nvarchar(10)
declare @sql nvarchar(256)
declare cursor_size_srv cursor for
SELECT  --@@SERVERNAME AS Server ,
        name AS DBName 
        --recovery_model_Desc AS RecoveryModel ,
        --Compatibility_level AS CompatiblityLevel ,
        --create_date ,
        --state_desc
FROM    sys.databases
where name not in ('master','msdb','model','tempdb') 
--and recovery_model_desc = 'full'
ORDER BY Name; 
 
OPEN cursor_size_srv
FETCH NEXT FROM cursor_size_srv INTO @db
WHILE (@@FETCH_STATUS=0)
BEGIN
set @sql = 'USE '+@db+'
GO
DBCC SHRINKFILE (N'''+@db+'_log'' , 0, TRUNCATEONLY)
GO'
print (@sql);
FETCH NEXT FROM cursor_size_srv INTO @db
END
CLOSE cursor_size_srv
DEALLOCATE cursor_size_srv

Результат скопировать и выполнить в новом запросе

USE rss1
GO
DBCC SHRINKFILE 
Читать далее

Резервное копирование PRTG. Копирование PRTG Configuration.dat

Бэкап конфигурации PRTG. Файл с настройками PRTG лежит C:\ProgramData\Paessler\PRTG Network Monitor\PRTG Configuration.dat

Bat файл для копирование конфигурации

net stop "PRTGProbeService"
ping -n 20 127.0.0.1 > nul
net stop "PRTGCoreService"
ping -n 20 127.0.0.1 > nul
mkdir \\192.168.0.38\Backup\s0082\Configuration.%date:~0,2%.%date:~3,2%.%date:~6,4%
xcopy "C:\ProgramData\Paessler\PRTG Network Monitor\PRTG Configuration.dat" \\192.168.0.38\Backup\s0082\Configuration.%date:~0,2%.%date:~3,2%.%date:~6,4%\ /R /K /Y
ping -n 20 127.0.0.1 > nul
net start "PRTGCoreService"
ping -n 20 127.0.0.1 > nul
net start "PRTGProbeService"
pause

Архивация и копирования конфигурации

net stop "PRTGProbeService"
ping -n 20 127.0.0.1 > nul
net stop "PRTGCoreService"
ping -n 20 127.0.0.1 > nul
set now=%TIME:~0,-3%
set now=%now::=.%
set now=%now: =0%
set now=%DATE:~-4%.%DATE:~3,2%.%DATE:~0,2%_%now% 
"C:\Program Files\7-Zip\7z.exe" a "\\192.168.0.38\Backup\s0082\config%now%.zip" 
Читать далее