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

Mssql

Все по MSsql

Делаем резервную копию базы данных sql\express

Настраиваем задание по бэкапу на сервере

1. Создаем файл mirror-tts-backup.sql

BACKUP DATABASE [TTS] TO  DISK = N'\\ho_report\d$\mssql\backup_tts\tts.bak' WITH NOFORMAT, INIT,  NAME = N'TTS', SKIP, NOREWIND, NOUNLOAD,  STATS = 10
GO

2. Создаем bat файл mirror-tts-backup.bat

sqlcmd -S s0035\sqlexpress -U sa -P p@$$w0rd -i mirror-tts-backup.sql

3. Создаем задание в планировщике

tttsbx5w4sg1v0swrepmpw1zkw

Настраиваем задание по разворачиванию бэкапа на сервер

Разрываем все имеющиеся соединения с бд

USE [master]
GO
ALTER DATABASE [tts] SET  SINGLE_USER WITH ROLLBACK IMMEDIATE
GO

Разворачиваем бд из бэкапа

RESTORE DATABASE [tts] FROM  DISK = N'D:\mssql\backup_tts\tts.bak' WITH  FILE = 1,  MOVE N'TTS' TO N'D:\mssql\tts.mdf',  MOVE N'TTS_log' TO N'D:\mssql\tts_1.ldf',  STANDBY = N'D:\mssql\backup_tts\undobak.bak',  
Читать далее

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

declare @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
 
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 @tran_log_space_usage
where database_name = DB_NAME() 
)
 
if (@log_space_used > @danger_value)
begin
EXEC msdb.dbo.sp_start_job @job_start_name;
end

 

Хранимая процедура. BackupBD

Создать процедуру

USE [master]
GO
/****** Объект:  StoredProcedure [dbo].[BackupCopyDB]    Дата сценария: 09/12/2012 17:39:20 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
 
CREATE PROCEDURE [dbo].[BackupCopyDB] 
	-- Add the parameters for the stored procedure here
	@db nvarchar(50)
AS
BEGIN
	-- SET NOCOUNT ON added to prevent extra result sets from
	-- interfering with SELECT statements.
	SET NOCOUNT ON;
	-----------------------------------------------------
	-- путь до бэкапа
	DECLARE @storegeplace varchar(260)
	-- перемення для команды cmd
	declare @var varchar(260)
	-- гарантия почти уникальности имени файла
	declare @seckey nvarchar(12)
	-- текущая дата формата ггггммдд
	declare @a nvarchar(8) 
	-- текущее время чч:мм
	declare @b nvarchar(5)
	-- два правых 
Читать далее

Хранимая процедура для автоматизации создания архивной копии базы данных MS SQL Server и копирования ее в заранее указанное место

 [stextbox id=”info”]Хранимая процедура для автоматизации создания архивной копии базы данных MS SQL Server и копирования ее в заранее указанное место. После выполнения хранимки отправляется уведомление на email.[/stextbox]

Пример с указанием всех параметров

USE master
GO
EXEC dbo.BackupCopyDB
@db = '1citil'
,@b_path = 'c:\test\'
,@c_path = '\\rx6600\d$\test2\'
,@email = '123@mail'
,@alert = 1

Как сделать только бэкап

USE master
GO
EXEC dbo.BackupCopyDB
@db = '1citil'
,@b_path = 'c:\folder\'
,@email = 'mail@mail.ru'

Как сделать бэкап и скопировать его на другой сервер

USE master
GO
EXEC dbo.BackupCopyDB
@db = '1citil'
,@b_path = 'c:\folder\'
,@c_path = '\\ho-1c-app-2\d$\folder\'
,@email = 'mail@mail.ru'

Описание параметров хранимой процедуры

Читать далее

xml в текст

SELECT [dd hh:mm:ss.mss]
      ,[session_id]
      --,sql_text
      ,CAST(sql_text AS nvarchar(max))
      ,[login_name]
      ,[wait_info]
      ,[CPU]
      ,[tempdb_allocations]
      ,[tempdb_current]
      ,[blocking_session_id]
      ,[blocked_session_count]
      ,[reads]
      ,[writes]
      ,[physical_reads]
      ,[used_memory]
      ,[status]
      ,[open_tran_count]
      ,[percent_complete]
      ,[host_name]
      ,[database_name]
      ,[program_name]
      ,[start_time]
      ,[login_time]
      ,[request_id]
      ,[collection_time]
  FROM [dbo].[www_AxaptaInfoBoardWhoIsActive]
  
WHERE
CAST([sql_text] AS nvarchar(max)) LIKE ('%UPDATE %') and
          CAST([sql_text] AS nvarchar(max)) LIKE ('%InventTable%') AND
--sql_text  LIKE ('%InventTable%') AND
 datepart(YEAR,start_time) BETWEEN 2015 AND 2015 and
                    datepart(month,start_time) BETWEEN 11 AND 11 and
                    datepart(day,start_time) BETWEEN 17 AND 18  AND
          --DATEPART(hour,start_time) BETWEEN 13 AND 23 AND
          database_name IN ('ax_molniya') 
ORDER BY start_time

 

prtg sms. Алерт от prtg на телефон через usb modem.

На сервере  настроена программа для оповещения через смс. Смс отправляются через модем zte mf180.
Идея была взята из статьи  prtg http://www.paessler.com/blog/2012/02/16/prtg-9/sending-out-prtg-sms-gsm-modem-mwconn
Программа для отправки смс используется http://nhutils.ru/blog/nhsms/download/

Настройка nhsms

вычисляем какой процесс вызывает блокировку

-- вычисляем какой процесс вызывает блокировку
sp_whoisactive
@find_block_leaders = 1,
@output_column_list = '[dd%][session_id][sql_text][login_name][wait_info][cpu%][temp%][block%][reads%][writes%][context%][physical%][used_memory][status][open_tran_count][percent%][host_name][database_name][program_name][start_time][login_time][request_id][collection_time]', 
@destination_table = 'tsd1.dbo.[www_AxaptaInfoBoardWhoIsActive]'
-- конец

Задание запускать раз в минуту

SELECT *
  FROM [tsd1].[dbo].[www_AxaptaInfoBoardWhoIsActive]
  
  WHERE CONVERT(CHAR(8),COLLECTION_time,8) BETWEEN '07:00:00' AND '18:00:00' AND
       datepart(YEAR,start_time) BETWEEN 2015 AND 2015 and
       datepart(month,start_time) BETWEEN 08 AND 08 and
       datepart(day,start_time) BETWEEN 20 AND 21
ORDER BY start_time

 

Сбор информации о базах данных на сервере

USE [master]
GO

/****** Object:  StoredProcedure [dbo].[rkur_gooddba_whd]    Script Date: 08/18/2015 10:13:03 ******/
SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO

 
-- =============================================
-- Author:                    Ruslan Kurianov
-- Create date: 2015-05-29
-- Description:          Сбор информации о базах данных на сервере
-- Version:                    0.1
-- =============================================
CREATE PROCEDURE [dbo].[rkur_gooddba_whd] 
          -- Add the parameters for the stored procedure here
          @sn nvarchar(32)= 'xxx', 
          @dbn nvarchar(32)='rkur_dbastat',
          @schn nvarchar(32)='dbo',
          @tbn nvarchar(64)='gooddba_whd'
AS
BEGIN
          -- SET NOCOUNT ON added to prevent extra result sets from
          -- interfering with SELECT statements.
          SET NOCOUNT ON;
          if @sn <> 'xxx'
          BEGIN
          declare @whd nvarchar(128)
          set @whd='['+@sn+'].['+@dbn+'].['+@schn+'].['+@tbn+']'
 
          IF OBJECT_ID('tempdb..#tmpGood_DBA_project') IS NOT 
Читать далее

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

USE [master]
GO

/****** Object:  StoredProcedure [dbo].[rkur_sendsms_job_status]    Script Date: 08/18/2015 10:10:59 ******/
SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO

-- =============================================
-- Author:                    Ruslan Kurianov
-- Create date: 2014-12-19
-- Description:          agent mssql job emiltosms
-- version: 0.1
-- =============================================
CREATE PROCEDURE [dbo].[rkur_sendsms_job_status]
          -- Add the parameters for the stored procedure here
@text nvarchar(70)
AS
BEGIN
          -- SET NOCOUNT ON added to prevent extra result sets from
          -- interfering with SELECT statements.
          SET NOCOUNT ON;
          if len(@text)<=0
                              begin
                                        print 'не указан текст сообщения'
                                        print ' '
                              end
                              ELSE
                              BEGIN
                                        -- списки рассылки
                                        declare @all nvarchar(128)
                                        declare @dba nvarchar(128)
                                        -- 
Читать далее