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

mssql

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

SELECT 		
			DB_NAME(a.database_id)          AS [Database Name]
			,i.physical_name
			,CAST((i.size * 8 /1024/1024 ) AS NUMERIC(10) ) AS DMSize        
           --,a.FILE_ID
           ,i.name
           ,a.io_stall_read_ms
           ,a.num_of_reads
           ,CAST(a.io_stall_read_ms / (1.0 + a.num_of_reads) AS NUMERIC(10 ,1)) AS [avg_read_stall_ms]
           ,a.io_stall_write_ms
           ,a.num_of_writes
           ,CAST(
                a.io_stall_write_ms / (1.0 + a.num_of_writes) AS NUMERIC(10 ,1)
            )                             AS [a.avg_write_stall_ms]
           ,a.io_stall_read_ms + a.io_stall_write_ms AS [io_stalls]
           ,a.num_of_reads + a.num_of_writes  AS [total_io]
           ,CAST(
                (a.io_stall_read_ms + a.io_stall_write_ms) / (1.0 + a.num_of_reads + a.num_of_writes) AS NUMERIC(10 ,1)
            )                             AS [avg_io_stall_ms]
FROM   
			
		
			sys.dm_io_virtual_file_stats(NULL ,NULL)a
			INNER JOIN 
	  --	SELECT * FROM	
	   	sys.master_files i
            ON  a.file_id = i.file_id 
            AND            a.database_id = i.database_id
WHERE i.database_id in  ('7')
			
ORDER BY
       		avg_io_stall_ms                  DESC;

 

Как я делал тесты для переезда на ссд. В какой рэйд (raid) собрать в 10 или 50.

Использовал программы для тестов:

1) HD Tune

2) CrystalDiskMark6

3) diskspd

Все тесты картинки будут в гугл документ

https://docs.google.com/document/d/1gTWVuW0DLIE5bJwsoCyZR_WjMxYg6jznYyLterFt6nk/edit?usp=sharing

Вывод сделали что самое оптимальное это raid 5 по производительности и что теряется меньше полезной емкости.

ссд будут на msa 2040. сравнивали с eva 4400

 

Как сделать проверку выполнения задания. Мониторит запущено ли задание или нет на удаленном сервере.

Задача мониторить задания когда оно работает на другом сервере. Когда оно отработает запускать следующий шаг. Мониторим мы бэкап лог шипинга (Log shipping backup).

как выглядит задание (job):

Как сделать проверку выполнения задания. Мониторит запущено ли задание или нет на удаленном сервере.

первый шаг запускается задание на удаленном севере. второй шаг и третий в цикле проверяет его после этого стартует следующие шаги.

WAITFOR DELAY '00:05:00.000'
set nocount on

if (not object_id('tempdb..#running_jobs') is null)
	drop table #running_jobs

select
    ja.job_id,
    j.name as job_name,
    ja.start_execution_date,      
    isNull(last_executed_step_id,0) + 1 as current_executed_step_id,
    js.step_name
  
INTO #running_jobs
from s0030.msdb.dbo.sysjobactivity ja 
	left join s0030.msdb.dbo.sysjobhistory jh on ja.job_history_id = jh.instance_id
	inner join s0030.msdb.dbo.sysjobs j on ja.job_id = j.job_id
	inner join s0030.msdb.dbo.sysjobsteps js on ja.job_id 
Читать далее

Как перенести задания с mssql 2005 на mssql 2008

 

Ни Когда так не делайте

 

На целевом сервере в хранимой процедуре SP_ADD_JOB изменить в команде INSERT…VALUE (@owner_sid на   ****0x01)- владелец всех заданий будет SA

На целевом сервере в хранимой процедуре SP_ADD_SERVER закоментировать часть кода отвечающую за проверку сервера (—- Check that this job has not already been targeted at this server–)

После этого можно выделить все задания нажать создание сценария для заданий

Как перенести задания с mssql 2005 на mssql 2008

Этот скрипт запустить на сервере куда переносим задания

Как оптимизировать SQL Server при работе с курсорами

DECLARE cursor_name CURSOR
[ LOCAL | GLOBAL ]
[ FORWARD_ONLY | SCROLL ]
[ STATIC | KEYSET | DYNAMIC | FAST_FORWARD ]
[ READ_ONLY | SCROLL_LOCKS | OPTIMISTIC ]
[ TYPE_WARNING ]
FOR select_statement
[ FOR UPDATE [ OF column_name [ ,...n ] ] ] [;]
[ FOR UPDATE [ OF column_name [ ,…n ] ] ] [;]

Остановлюсь на первых трех строчках ключевых параметров.
LOCAL или GLOBAL:    если хотим, чтобы курсор был доступен другим процедурам, функциям, пакетам в рамках нашей сессии, то GLOBAL – в этом случае за удалением курсора следим сами (команда DEALLOCATE). Во всех остальных случаях (т.е. … Читать далее

Поиск по базе данных Backup Exec

Нужно вывести название заданий и какие сервера в этих заданиях используются

SELECT 
	j.[JobName]
		,'s0042' servername
	,'BE2010R3' softname
	,d.devicename	
	,bse.[DeviceSelectionName]+'>>>'+bse.[PathName] +'>>>'+ bse.[FileName] 'что бэкапим'
	,bji.[EncryptionOptions] 'шифрование'
      ,bse.[Network]
	,s.scriptname -- набор резервного копирования
	--,j.[LastChangeDate] -- 
	--,bji.targetid	
	--,j.[JobID]
	--,j.[BEJobID]
 --     ,j.[GDMID]
 --     ,j.[TaskDefinitionID]
 --     ,j.[JobDefinitionID]
 --     ,j.[ScheduleID]
 --     ,j.[ScriptID]
 --     ,j.[TaskTypeID]      
 --     ,j.[UserName]
 --     ,j.[MachineID]
 --     ,j.[JobRetryCount]
 --     ,j.[CurrentStatus]
 --     ,j.[SubStatus]
 --     ,j.[NewJob]
 --     ,j.[OriginalDueDate]
 --     ,j.[NextDueDate]
 --     ,j.[LastNewJob]
 --     ,j.[LastOriginalDueDate]
 --     ,j.[LastNextDueDate]
 --     ,j.[JobRunFlags]
 --     ,j.[LinkedJobID]
 --     ,j.[JobFamilyID]
 --     ,j.[HistoryID]
 --     ,j.[ActiveDeviceID]
 --     ,j.[DjmType]
 --     ,j.[ExecutionID]      
 --     ,j.[CPSStatus]
 --     ,j.[CPSJobID]
 --     ,j.[CPSIncrementalNextDueDate]
 --     ,j.[TimeStamp]
 --     ,j.[jKey]
  FROM [BEDB].[dbo].[Jobs] j
  join [BEDB].[dbo].[Scripts] s 
Читать далее

Поиск по всем таблицам в базе MSSQL

set nocount on
declare @name varchar(128), @substr nvarchar(4000), @column varchar(128)
set @substr = '%-549139392%' --фрагмент строки, который будем искать

create table #rslt 
(table_name varchar(128), field_name varchar(128), value ntext)

declare s cursor for select table_name as table_name from information_schema.tables where table_type = 'BASE TABLE' order by table_name
open s
fetch next from s into @name
while @@fetch_status = 0
begin
 declare c cursor for 
	select quotename(column_name) as column_name from information_schema.columns 
	  where data_type in ('text', 'ntext', 'varchar', 'char', 'nvarchar', 'char', 'sysname') and table_name  = @name
 set @name = quotename(@name)
 open c
 fetch next from c into @column
 while @@fetch_status = 0
 begin
   
Читать далее

Как восстановить полный (full) и разностный (diff) бэкап базы MSSQL

RESTORE DATABASE [ax_molniya] FROM  DISK = N'\\192.168.0.38\Backup\AXAPTA\ax_molniya_backup_201705291300.bak' WITH  FILE = 1,  MOVE N'FG_PRIMARY' TO N'e:\ax_molniya.mdf',  MOVE N'FG_CUSTTRANSACTION' TO N'e:\ax_molniya_1.ndf',  MOVE N'FG_INVENTCLOSING' TO N'e:\ax_molniya_2.ndf',  MOVE N'FG_INVENTREMAINS' TO N'e:\ax_molniya_3.ndf',  MOVE N'FG_INVENTTRANSACTION' TO N'e:\ax_molniya_4.ndf',  MOVE N'FG_VENDTRANSACTION' TO N'e:\ax_molniya_5.ndf',  MOVE N'FG_INDEXES' TO N'e:\ax_molniya_6.ndf',  MOVE N'ax_molniya_Log' TO N'e:\ax_molniya_7.LDF',  NORECOVERY,  NOUNLOAD,  STATS = 10
GO


RESTORE DATABASE ax_molniya
 FROM  DISK = '\\192.168.0.38\Backup\AXAPTA\ax_molniya_backup_201706041500.bak'
 WITH  FILE = 4,  MOVE N'FG_PRIMARY' TO N'e:\ax_molniya.mdf',  MOVE N'FG_CUSTTRANSACTION' TO N'e:\ax_molniya_1.ndf',  MOVE N'FG_INVENTCLOSING' TO N'e:\ax_molniya_2.ndf',  MOVE N'FG_INVENTREMAINS' TO N'e:\ax_molniya_3.ndf',  MOVE N'FG_INVENTTRANSACTION' TO N'e:\ax_molniya_4.ndf',  MOVE N'FG_VENDTRANSACTION' TO N'e:\ax_molniya_5.ndf',  MOVE N'FG_INDEXES' TO N'e:\ax_molniya_6.ndf',  MOVE N'ax_molniya_Log' TO N'e:\ax_molniya_7.LDF',STANDBY = N'C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Backup\ROLLBACK_UNDO_ax_molniyar.BAK',  NOUNLOAD,  STATS = 
Читать далее

Как создать хранимую процедуру для мониторинга заданий (job) в MSSQL. Хранимая процедура для PRTG

Была задача создать хранимую процедуру что бы мониторить разные задания(джобы, job) в MSSQL. Это доробатаная процедура посравнению с Сенсор для prtg. Сенсор для задания sql

USE [msdb]
GO

/****** Object:  StoredProcedure [dbo].[alertjob]    Script Date: 05/24/2017 10:24:34 ******/
SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[alertjob]
@name VARCHAR(max)
AS
BEGIN
SELECT TOP 100
	    
	    b.[message], b.run_date,  b.run_time

into #t	        
--SELECT *
FROM   
 dbo.sysjobs a
       FULL OUTER JOIN dbo.sysjobhistory b
            ON  a.job_id = b.job_id
                AND a.[enabled] = '1'
WHERE
--CONVERT(VARCHAR(20),b.run_date,5)  = (select CONVERT (date, SYSDATETIME())) and
a.name IN ('LSRestore_s0085_ZUP_MOLL') and
run_date=(SELECT MAX(run_date) FROM dbo.sysjobs a

       FULL OUTER JOIN dbo.sysjobhistory b
            
Читать далее