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

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

DECLARE @a NVARCHAR(255)
SET @a = 'SSAS_LSBackup_ax_molniya' --для проверки можно заменить на S0030-ax_molniya-1 (оно всегда запущенно, это задание репликации)
WHILE @a = 'SSAS_LSBackup_ax_molniya' --для проверки можно заменить на S0030-ax_molniya-1 (оно всегда запущенно, это задание репликации)
BEGIN
WAITFOR DELAY '00:00:01.000' --ждем в цикле. В рабочем коде выставить нужное время
set nocount on
IF (not object_id('tempdb..#z') is null) -- проверка наличия темповой таблицы
	drop table #z -- сброс темповой таблицы

--- выборка работающих заданий на 0030
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 #z FROM s0030.msdb.dbo.sysjobactivity ja left join s0030.msdb.dbo.sysjobhistory jh on ja.job_history_id = jh.instance_id inner 
Читать далее

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

Задача мониторить задания когда оно работает на другом сервере. Когда оно отработает запускать следующий шаг. Мониторим мы бэкап лог шипинга (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 
Читать далее

Как мониторить цепочку lsn лог шипинга ( log shipping ) на разрыв.

Задача мониторить цепочку lsn при работе лог шипинга. Скрипт смотрит в папку куда бэкапятся trn  берет из них данные и сравнивает их. если есть разрыв оповещает пользователей

DECLARE @path NVARCHAR(255)
DECLARE @temp NVARCHAR(255)
DECLARE @trn NVARCHAR(MAX)
SET @path = N'\\ho_report\h$\trn бэкап\' -- сетевой путь папки с трнками
IF OBJECT_ID('tempdb..#x') IS NOT NULL
    DROP TABLE #x;
CREATE TABLE 	
				#x
(
				NAME        NVARCHAR(255) NOT NULL
                ,depth      INT NOT NULL
                ,IsFile     BIT NULL
) 
IF OBJECT_ID('tempdb..#y') IS NOT NULL
    DROP TABLE #y;
----Создаем временную таблицу для команды RESTORE HEADERONLY в курсоре. Внимание!!!! только для sql 2005, в 2012 добавленно еще одно поле и 
Читать далее

Как перенести задания с 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 = 
Читать далее

Как удалить репликации у базы 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