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

sql

Как исправить ошибку The target principal name is incorrect. Cannot generate SSPI context.

Ошибка

TITLE: Connect to Server
——————————

Cannot connect to DB01.

——————————
ADDITIONAL INFORMATION:

The target principal name is incorrect. Cannot generate SSPI context. (Microsoft SQL Server, Error: 0)

For help, click: http://go.microsoft.com/fwlink?ProdName=Microsoft%20SQL%20Server&EvtSrc=MSSQLServer&EvtID=0&LinkId=20476

——————————
BUTTONS:

OK
——————————

Исправляется с помощью  https://www.microsoft.com/en-us/download/details.aspx?id=39046

KerberosX64MSI (2)

Запускаем “C:\Program Files\Microsoft\Kerberos Configuration Manager for SQL Server\KerberosConfigMgr.exe”

Как исправить ошибку The target principal name is incorrect. Cannot generate SSPI context.

Как исправить ошибку The target principal name is incorrect. Cannot generate SSPI context.

Как найти в таблице sp_whoisactive по времени выполнения запроса.

SELECT [dd hh:mm:ss.mss]
,[start_time]
 ,[collection_time]
      ,[session_id]
      ,[sql_text]
      ,[sql_command]
      ,[login_name]
      ,[wait_info]
      ,[tran_log_writes]
      ,[CPU]
      ,[tempdb_allocations]
      ,[tempdb_current]
      ,[blocking_session_id]
      ,[reads]
      ,[writes]
      ,[physical_reads]
      ,[query_plan]
      ,[used_memory]
      ,[status]
      ,[tran_start_time]
      ,[open_tran_count]
      ,[percent_complete]
      ,[host_name]
      ,[database_name]
      ,[program_name]
      
      ,[login_time]
      ,[request_id]
      ,[collection_time]
  FROM [DBAtools].[dbo].[WhoIsActive]
  WHERE 
 CONVERT(CHAR(8),COLLECTION_time,8) BETWEEN '00:00:00' AND '23:00:00' AND
       datepart(YEAR,start_time) BETWEEN 2020 AND 2020 and
       datepart(month,start_time) BETWEEN 04 AND 04 and
       datepart(day,start_time) BETWEEN 22 AND 23
     and  [dd hh:mm:ss.mss]  > '00 01:00:00.0000'

 

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

SELECT 		
			DB_NAME(a.database_id)          AS [Database Name]
			,i.physical_name
			,CAST((i.size * 8 /1024/1024 ) AS NUMERIC(10) ) AS DMSize        
           --,a.FILE_ID
           ,i.name
           ,a.io_stall_read_ms
           ,a.num_of_reads
           ,CAST(a.io_stall_read_ms / (1.0 + a.num_of_reads) AS NUMERIC(10 ,1)) AS [avg_read_stall_ms]
           ,a.io_stall_write_ms
           ,a.num_of_writes
           ,CAST(
                a.io_stall_write_ms / (1.0 + a.num_of_writes) AS NUMERIC(10 ,1)
            )                             AS [a.avg_write_stall_ms]
           ,a.io_stall_read_ms + a.io_stall_write_ms AS [io_stalls]
           ,a.num_of_reads + a.num_of_writes  AS [total_io]
           ,CAST(
                (a.io_stall_read_ms + a.io_stall_write_ms) / (1.0 + a.num_of_reads + a.num_of_writes) AS NUMERIC(10 ,1)
            )                             AS [avg_io_stall_ms]
FROM   
			
		
			sys.dm_io_virtual_file_stats(NULL ,NULL)a
			INNER JOIN 
	  --	SELECT * FROM	
	   	sys.master_files i
            ON  a.file_id = i.file_id 
            AND            a.database_id = i.database_id
WHERE i.database_id in  ('7')
			
ORDER BY
       		avg_io_stall_ms                  DESC;

 

Как я делал тесты для переезда на ссд. В какой рэйд (raid) собрать в 10 или 50.

Использовал программы для тестов:

1) HD Tune

2) CrystalDiskMark6

3) diskspd

Все тесты картинки будут в гугл документ

https://docs.google.com/document/d/1gTWVuW0DLIE5bJwsoCyZR_WjMxYg6jznYyLterFt6nk/edit?usp=sharing

Вывод сделали что самое оптимальное это raid 5 по производительности и что теряется меньше полезной емкости.

ссд будут на msa 2040. сравнивали с eva 4400

 

Как оптимизировать 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 
Читать далее

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

 

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

Задача распределить файловые группы на разные диски. Чем больше операций чтения и записи в файловой группе тем быстрее будут выделены диски и 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+
        '-Полная База данных 
Читать далее