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

Mssql

Все по MSsql

Поиск по базе данных 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 = 
Читать далее

Как удалить репликации у базы MSSQL.

 

exec sp_removedbreplication 'ax_molniya'
go
exec sp_dboption 'ax_molniya','published',false
go
exec sp_dboption 'ax_molniya','merge publish',false
go

если есть репликации но базу уже удалил.

EXEC master.dbo.sp_serveroption @server=N'XXXX', @optname=N'dist', @optvalue=N'true'
GO

EXEC sp_dropdistributor @no_checks = 1, @ignore_distributor = 1
GO

 

Как создать хранимую процедуру для мониторинга заданий (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
            
Читать далее

Как узнать кому отправлялись письма из mssql

msdb.dbo.sysmail_allitems - просмотр всех сообщений;
msdb.dbo.sysmail_sentitems – просмотр только отправленных сообщений;
msdb.dbo.sysmail_unsentitems - просмотр неотправленных сообщений;
msdb.dbo.sysmail_faileditems – просмотр сообщений с ошибками;
msdb.dbo.sysmail_event_log – журнал работы компонента Database Mail.
Например, для просмотра всех отправленных сообщений можно использовать следующий запрос:
SELECT sent_date AS [Дата отправки письма], 
	   send_request_user AS [Кем отправлено письмо],
	   recipients AS [Кому отправлено письмо], 
	   subject AS [Тема письма], 
	   body AS [Текст письма], 
	   file_attachments AS [Отправленные файлы], 
	   query AS [SQL запрос]
 FROM msdb.dbo.sysmail_sentitems

 

Хранимая процедура для архивирования журнала при достижении @danger_value.

Архивирования журнала при достижении @danger_value. Идея в том что лог будет усекаться при достижении 7 гб. Это сделано так как настроен лог шипинг.

eclare @tran_log_space_usage table( 
        database_name sysname
,       log_size_mb float
,       log_space_used float
,       status int
); 
declare @log_space_used float	-- Доля (в процентах) файла журнала, в настоящее время заполненная
declare @danger_value int		-- Значение в Мб, при достижение которого архивируется журнал
declare @job_start_name sysname -- Название задания в Агенте MSSQL 

set @danger_value = 7000
set @job_start_name = N'SSAS_LSBackup_ax_molniya'

insert into @tran_log_space_usage 
exec('DBCC SQLPERF ( LOGSPACE )') ; 

set @log_space_used = (
select (log_space_used * log_size_mb / 100)  from 
Читать далее

Отправить СМС из MSSQL

Есть настроенная программа для отправки смс через usb modem, Программа для отправки смс используется http://nhutils.ru/blog/nhsms/download/
https://www.adminbd.ru/prtg-sms-%d0%b0%d0%bb%d0%b5%d1%80%d1%82-%d0%be%d1%82-prtg-%d0%bd%d0%b0-%d1%82%d0%b5%d0%bb%d0%b5%d1%84%d0%be%d0%bd-%d1%87%d0%b5%d1%80%d0%b5%d0%b7-usb-modem/

Хранимая процедура для отправки:

USE [ax_molniya]
GO

/****** Object:  StoredProcedure [dbo].[SendSMS]    Script Date: 01/11/2017 10:33:15 ******/
SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO


CREATE procedure [dbo].[SendSMS] (@smsText varchar(8000), @phoneNumber varchar(50))
as

declare @buildStr varchar(8000), 
		@fileName varchar(255), 
		@folderName varchar(255), 
		@query varchar(8000)


set @query = 'select ''[1]'' union all select ''Phone=' 
			+ @phoneNumber + ''' union all select ''Alert=0'' union all select ''' 
			+ 'Text = ' + replace(replace(@smsText, char(13), ' '), char(10), ' ') 
			+ ''' union all select ''ValidityPeriod=1d'''
print @query

set @fileName 
Читать далее

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

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

Есть база весит 1.5 тб. В ней файловые группы:

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

База TempDb у нас находится на ssd в зеркале.Размер диска 370 гб. TempDb разбит на файлы по рекомендации майкрософт

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

Сначала был выполнен скрипт накопление статистики ожидания из статьи https://habrahabr.ru/post/216309/

WITH [Waits] AS
    (SELECT
        [wait_type],
        [wait_time_ms] / 1000.0 AS [WaitS],
        ([wait_time_ms] - [signal_wait_time_ms]) / 1000.0 AS [ResourceS],
        [signal_wait_time_ms] / 1000.0 AS [SignalS],
        [waiting_tasks_count] AS [WaitCount],
        100.0 * [wait_time_ms] / SUM ([wait_time_ms]) OVER() AS [Percentage],
        
Читать далее

Как сделать бэкап множества баз mssql на сетевое хранилище с созданием папок под бэкап. И после удалить эти базы.

Задача сделать бэкапы баз на 50 серверах в одно файловой хранилище в разные папки

DECLARE @name NVARCHAR(500)
DECLARE @cmd NVARCHAR(500)
DECLARE @Cursor CURSOR   
DECLARE @nameser NVARCHAR(500)
SET @nameser = @@SERVERNAME
SET @Cursor =    CURSOR FOR
SELECT NAME
FROM   [master].[sys].[databases]
WHERE  NOT NAME IN ('master'
                   ,'tempdb'
                   ,'model'
                   ,'msdb'
                   ,'SES'
                   ,'SES_ARCHIVE'
                   ,'SES_SERVICE')
       AND NAME LIKE '%2013%'
       OR NAME LIKE '%2014%'
       OR NAME LIKE '%2015%'
OPEN @Cursor
FETCH NEXT FROM @Cursor INTO @name
WHILE (@@FETCH_STATUS=0)
BEGIN
    --print @nameser
    SET @cmd = '
EXEC xp_cmdshell ''MD \\192.168.0.38\Backup\cristal_arhiv\'+@nameser+'\''
BACKUP DATABASE ['+@name+'] TO  DISK = N''\\192.168.0.38\Backup\cristal_arhiv\'+@nameser+'\'+@nameser+'_'+
        @name+'.BAK'' WITH NOFORMAT, NOINIT,  NAME = N'''+@name+
        '-Полная База данных 
Читать далее