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

Как исправить ошибку The OLE DB provider “SQLNCLI” for linked server “s0069” reported a change in schema version between compile time (“185675752805467”) and run time (“185684342736281”) for table

Как исправить ошибку

The OLE DB provider "SQLNCLI" for linked server "s0069" reported a change in schema version between compile time ("185675752805467") and run time ("185684342736281") for table

возникает при не правильном кеш плане у вьюхи. делаем команду

EXECUTE sp_refreshview N'имя вьюхи'

 

Как установить Windows Server 2012 R2 на лезвие HP ProLiant

Если VMWare ESXi ставится на лезвие без проблем, то для установки Windows Server 2012 R2 прямо на железо нужно в БИОСе обязательно включить активность, иначе программа установки Windows Server 2012 R2 сообщит о невозможности использования дисков (из подключенного хранилища): «Установка Windows на данный диск невозможна. Возможно, оборудование данного компьютера не поддерживает загрузку с данного диска. Убедитесь, что контроллер данного диска включен в меню BIOS компьютера.»

Как установить Windows Server 2012 R2 на лезвие HP ProLiant BL460c Gen8-01

Как установить Windows Server 2012 R2 на лезвие HP ProLiant BL460c Gen8-01

Перезагружаем лезвие, и когда появится приглашение нажать Ctrl+Q, нажимаем эти клавиши. Попадаем в настройки QLogic Fast!UTIL.

Как установить Windows Server 2012 R2 на лезвие HP ProLiant BL460c Gen8-02

Как установить Windows Server 2012 R2 на

Читать далее

Как сделать хранимую процедуру для мониторинга заданий в MSSQL через prtg.

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

USE [msdb]
GO

/****** Object:  StoredProcedure [dbo].[alertjob_test]    Script Date: 04/25/2018 08:59:24 ******/
SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[alertjob_test]
zakupki NVARCHAR(max)
AS
BEGIN
set nocount ON
DECLARE @job_id VARCHAR(50)
SET @job_id = (SELECT job_id FROM msdb.dbo.sysjobs WHERE [name] = zakupki)
IF (not object_id('tempdb..#x') is null) drop table #x 
SELECT  TOP 2 s.instance_id INTO #x FROM msdb.dbo.sysjobhistory s WHERE s.job_id = @job_id AND s.step_name LIKE '(Job outcome)'  ORDER BY s.instance_id DESC
IF EXISTS (SELECT * FROM msdb.dbo.sysjobs WHERE [name] = zakupki)
BEGIN
	IF (not object_id('tempdb..#z') is null) drop table #z 
	SELECT ja.job_id, j.name as job_name, 
Читать далее

Как узнать какие запросы грузят диск

SELECT

SUM(qs.total_physical_reads) as physical_reads,

SUM(qs.total_logical_reads) as logical_reads

into T1 FROM (

select top 100000 * from

sys.dm_exec_query_stats qs

where qs.last_execution_time > (CURRENT_TIMESTAMP - '01:00:00.000')

order by qs.total_physical_reads desc

) as qs;

select top 100

(qs.total_physical_reads) as physical_reads,

(qs.total_logical_reads) as logical_reads,

qp.query_plan,

st.text,

dtb.name,

qs.*,

st.dbid

INTO T2

FROM

sys.dm_exec_query_stats qs

CROSS APPLY sys.dm_exec_query_plan(qs.plan_handle) qp

CROSS APPLY sys.dm_exec_sql_text(qs.sql_handle) st

left outer join sys.databases as dtb on st.dbid = dtb.database_id

where qs.last_execution_time > (CURRENT_TIMESTAMP - '01:00:00.000')

order by qs.total_physical_reads desc;

select

(T2.physical_reads*100/T1.physical_reads) as percent_physical_reads,

(T2.logical_reads*100/T1.logical_reads) as percent_logical_reads,

T2.*

from

T2 as T2

INNER JOIN T1 as T1

ON 1=1

order by T2.total_physical_reads 
Читать далее

Как отправлять оповещения в telegram из mssql

Задача отправлять оповещение из mssql в телеграмм для быстрого реагирования.

https://www.rootusers.com/install-powershell-5-windows-server-2008-r2/

Решил сделать  через powershell. но так как windows 2008 то версия powershell 2.0. Установил 5 версию powersheell. Так как из-за старой версии слались вопросы в телеграмм когда по русски писал.

Скрипт который будет на диске С хранится tel.ps1

param(
[string]$chat_id = $(Throw "'-chat_id' argument is mandatory"),
[string]$text = $(Throw "'-text' argument is mandatory"),
[switch]$markdown,
[switch]$nopreview
)
$token = "Ваш токен"
if($nopreview) { $preview_mode = "True" }
if($markdown) { $markdown_mode = "Markdown" } else {$markdown_mode = ""}

$payload = @{
    "chat_id" = $chat_id;
    "text" = $text
    "parse_mode" = $markdown_mode;
    "disable_web_page_preview" 
Читать далее

Как узнать какие запросы грузят CPU процессор.

Нагрузка на CPU по базам:

WITH DB_CPU_Stats
AS
(SELECT DatabaseID, DB_Name(DatabaseID) AS [DatabaseName], SUM(total_worker_time) AS [CPU_Time_Ms]
FROM sys.dm_exec_query_stats AS qs
CROSS APPLY (SELECT CONVERT(int, value) AS [DatabaseID]
             FROM sys.dm_exec_plan_attributes(qs.plan_handle)
             WHERE attribute = N'dbid') AS F_DB
GROUP BY DatabaseID)
SELECT ROW_NUMBER() OVER(ORDER BY [CPU_Time_Ms] DESC) AS [row_num],
      DatabaseName, [CPU_Time_Ms],
      CAST([CPU_Time_Ms] * 1.0 / SUM([CPU_Time_Ms]) OVER() * 100.0 AS DECIMAL(5, 2)) AS [CPUPercent]
FROM DB_CPU_Stats
WHERE DatabaseID > 4 -- system databases
AND DatabaseID <> 32767 -- ResourceDB
ORDER BY row_num OPTION (RECOMPILE);

Наибольшая нагрузка на CPU

ELECT TOP 10 
[Average CPU used] = total_worker_time / qs.execution_count
,[Total CPU used] = total_worker_time
Читать далее

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

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

 

как делать бэкап баз mssql в расшаренную папку но под другим пользователем и паролем.

С начало включаем

Для этого выполняем команду:

EXEC sp_configure 'show advanced options', 1
GO

И переконфигурируем SQL Server командой

RECONFIGURE
GO

Затем включаем возможность использования процедцры xp_cmdshell командой:

EXEC sp_configure 'xp_cmdshell', 1
GO

И опять переконфигурируем SQL Server:

RECONFIGURE
GO

После этого задание сделал в плане. до бэкапа

EXEC xp_cmdshell 'net use x: \\192.168.1.226\backup /USER:имя пользователя пароль'

после бэкапа

EXEC xp_cmdshell 'net use x: /delete'