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

Mssql

Все по MSsql

Как проверить какие трассировки выполняются на sql. Как остановить трассировку

Проверить трассировки

SELECT * FROM   sys.traces;

14-04-2015 10-41-43[7]

Остановить трассировку

DECLARE @TraceID INT ;

 SET @TraceID = 2 ; -- specify value from sp_trace_create

 EXEC sp_trace_setstatus

    @traceid = @TraceID

    ,@STATUS = 0 ;-- stop trace

 -- delete the trace

 EXEC sp_trace_setstatus

    @traceid = @TraceID

  ,@STATUS = 2 ;-- delete trace

14-04-2015 10-44-27[7]

Как сделать трассировку на стороне MS Sql сервера

Проверить какие трассировки у нас запушены на ms sql.

SELECT * FROM   sys.traces;

Остановить запушенную трассировку.

10-04-2015 10-05-39[3]

DECLARE @TraceID INT ;

 SET @TraceID = 5 ; – взять ид из таблички проверки запушенных трассировок 

 EXEC sp_trace_setstatus

    @traceid = @TraceID

    ,@STATUS = 0 ;-- stop trace

 -- delete the trace

 EXEC sp_trace_setstatus

    @traceid = @TraceID

  ,@STATUS = 2 ;-- delete trace

Выбор в profile шаблон TSQL_Duration набор трассировки и фильтр по времени выполнения запросов.

Перенос базы tempdb на другой диск

Запускаем sql при сбои:

NET START MSSQLSERVER /f /T3608

 

Проверяем где находится база tempdb

SELECT name, physical_name AS CurrentLocation

FROM sys.master_files

WHERE database_id = DB_ID(N'tempdb');

GO

Меняем путь

use master

alter database tempdb

modify file(

name = tempdev,

filename = N'C:\Новое_место\tempdb.mdf')

go

 

alter database tempdb

modify file(

name = templog,

filename = N'C:\Новое_место\templog.ldf')

go

Перенос множества файлов tempdb на другие диски(на разные)

use master

alter database tempdb

modify file(

name = tempdev,

filename = N'E:\TEMPDB\tempdb.mdf')

go
alter database tempdb

modify file(

name = tempdev1,

filename = N'E:\TEMPDB\tempdb1.mdf')

GO

alter database tempdb

modify file(

name = tempdev2,

filename = N'E:\TEMPDB\tempdb2.mdf')


Читать далее

Полное восстановление базы, переключение базы в однопользовательский режим потом в многопользовательский

USE [master]

GO

ALTER DATABASE [Имя базы] SET SINGLE_USER 

with rollback immediate;

GO

ALTER DATABASE [Имя базы]

SET READ_ONLY;

GO

RESTORE DATABASE [Имя базы] FROM  DISK = N'Путь до полного бекапа 'WITH FILE = 2 ,  STANDBY = N'Куда будет сохранятся незафиксированые транзакции' NOUNLOAD,  REPLACE,  STATS = 10

GO

ALTER DATABASE [Имя базы] SET MULTI_USER;

GO

 

Исследуем базы данных с помощью T-SQL

Базовая информация

Во-первых, несколько простых @@Функций, которые предоставят нам базовую информацию.

-- Имена сервера и экземпляра <br />Select @@SERVERNAME as [Server\Instance];
-- версия SQL Server Select @@VERSION as SQLServerVersion;
-- экземпляр SQL Server <br />Select @@ServiceName AS ServiceInstance;
- Текущая БД (БД, в контексте которой выполняется запрос)Select DB_NAME() AS CurrentDB_Name;<span id="mce_marker" data-mce-type="bookmark">​</span>

Как долго ваш SQL Server работает после последнего перезапуска? Помните, что системная база данных tempdb пересоздаётся при каждом перезапуске SQL Server. Вот один из методов определения времени последнего перезапуска сервера.

SELECT @@Servername AS ServerName ,
create_date AS ServerStarted ,
DATEDIFF(s, create_date, GETDATE()) / 86400.0 AS DaysRunning ,
DATEDIFF(s, 
Читать далее

Показывает все задания в mssql с датой выполнения и вывести список заданий (fob) в sql

/************************************************************
 *  * k.moskvichev ©
 * Time: 10.12.2015 14:07:36
 ************************************************************/

USE msdb

SELECT 		
			DISTINCT
			TOP 100
			--a.job_id  AS Id
           a.name    AS NAME_job
           ,MAX(b.run_date),
            max(b.run_time)
            --  b.step_id,
            --,b.run_status
            
            --SELECT *
FROM   
			dbo.sysjobs a
FULL OUTER JOIN 
	   		dbo.sysjobhistory b
            ON  a.job_id = b.job_id
AND         
			a.[enabled] = '1'
			--WHERE
GROUP BY
       		--b.run_date, 
       		a.job_id
           ,a.name --a.job_id,a.name,b.step_id,b.run_status
ORDER BY
       		a.name       DESC
       		--  b.run_time  DESC
select * FROM [msdb].[dbo].[sysjobs]

 

Вывести список баз в sql и как узнать когда был последний бекап + где лежит физически сама база

 

 Список баз

select * from [master].[sys].[databases]
sp_helpdb

Бэкап

 

/************************************************************
 * k.moskvichev © 
 * Time: 20.07.2015 10:53:59
 ************************************************************/

--DROP TABLE #temp
SELECT 
            @@Servername                AS ServerName
      ,d.Name                     AS DBName
      ,MAX(b.Backup_finish_date)  AS databecap
       -- ,bmf.Physical_Device_name   AS gdebackup
      ,m.physical_name            AS FILENAME
      ,d.recovery_model_desc      AS modelBuckap
       ,m.size           AS DMSize  
       --INTO #temp
FROM   
       sys.databases d
       LEFT OUTER JOIN msdb..backupset b
            ON  b.database_name = d.name
                AND b.[type] = 'D'
                AND b.server_name = @@servername
                    -- FULL OUTER JOIN msdb.dbo.backupmediafamily bmf
                    --   ON  bmf.media_set_id = b.media_set_id
                    --AND bmf.[device_type] = '7'
                    
       FULL OUTER JOIN sys.master_files m
            ON  d.database_id = m.database_id
                AND m.[data_space_id] = '1'
      
WHERE  
       /*datepart(YEAR,Backup_finish_date) BETWEEN 2015 AND 
Читать далее

Время работы sql сервера

DECLARE @Days  int

DECLARE @Hours int

DECLARE @Mins  int

DECLARE @Secs  int

DECLARE @getdate datetime

DECLARE @getdateunix int

 

set @getdate = getdate()

set @getdateunix = DATEDIFF(s, '1970-01-01 00:00:00', GETUTCDATE())

 

SET @Secs = (

 

        SELECT datediff(ss, login_time, getdate())

 

        FROM master..sysprocesses 

 

        WHERE spid = 1

 

    )

 

 

SET @Days  = ((@Secs/60)/60)/24

SET @Hours = ((@Secs/60)/60)%24

SET @Mins  = (@Secs/60)%60

SET @Secs  = @Secs%60

 

 

select @@servername as servername,@getdate as createdate,@getdateunix as createdate_unix ,@Days as days,@Hours as hours,@Mins as mins ,@Secs as secs

 

Переименовать sql сервер

sp_dropserver 'старое имя сервера', 'droplogins' ;

GO

sp_addserver 'новое имя сервера', local;

GO

 

Узнать имя сервера select @@servername
net stop mssqlserver && net start mssqlserver

После переименования сервера не обходимо перезапустить службу MSSQLSERVER.

Перезапуск служб через командную строку

 

если были репликации

 

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