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

sql

Проверка доступности линкованных серверов

 

DECLARE @Cursor CURSOR
DECLARE @ServerName NVARCHAR(128)
DECLARE @ServerID INT
DECLARE @SQL VARCHAR(MAX)
 
--Create temp table to store results
IF object_id(N'tempdb..##LinkedServers') IS NOT NULL
	DROP TABLE ##LinkedServers
 
CREATE TABLE ##LinkedServers
	(
	[LinkedServerID] INT IDENTITY(1,1) NOT NULL,
	[Name] SYSNAME NULL,
	[ProvName] NVARCHAR(128) NULL,
	[Product] NVARCHAR(128) NULL,
	[DataSource] NVARCHAR(4000) NULL,
	[ProvString] NVARCHAR(4000) NULL,
	[Location] NVARCHAR(4000) NULL,
	[Cat] SYSNAME NULL
	)
 
--Get list of linked servers from system proc
INSERT INTO ##LinkedServers
EXEC [sys].sp_linkedservers
 
--Add tested field to result set
ALTER TABLE ##LinkedServers ADD [TestSuccess] BIT
 
--Cursor over list of linked servers testing each
SET @Cursor = CURSOR FOR
						SELECT
							[LinkedServerID],
							[Name]
						FROM
							
Читать далее

Триггер для sql 2005

Создаем таблицу под лог

USE [master]
GO
/****** Объект:  Table [dbo].[DDLTriggerAlterLogin]    Дата сценария: 02/25/2013 15:22:00 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[DDLTriggerAlterLogin](
	[EventType] [nvarchar](100) NULL,
	[ObjectName] [nvarchar](2000) NULL,
	[ObjectType] [nvarchar](2000) NULL,
	[LoginName] [nvarchar](max) NULL,
	[LoginType] [nvarchar](max) NULL,
	[SPID] [nvarchar](max) NULL,
	[PostTime] [datetime] NULL,
	[host] [nvarchar](128) NULL
) ON [PRIMARY]

Создаём триггер для ALTERDATABASE

/****** Object:  DdlTrigger [DDLTriggerAlterDatabase]    Script Date: 03/28/2016 10:59:50 ******/
SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO


-- =============================================

-- 1) исключение срабатываний для служебной учетной записи head_offive\mssqlserver, log shipping

-- =============================================
CREATE TRIGGER [DDLTriggerAlterDatabase] ON ALL SERVER AFTER ALTER_DATABASE AS

DECLARE 
Читать далее

Делаем резервную копию базы данных 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