WILDERNIX
Яндекс.Метрика
 | Список статей | Сертификаты | Резюме(CV) | Правила | Вход |

 
Категории:
Ubuntu (9)
CISCO (10)
FreeBSD (7)
SQUID (1)
Windows Server (8)
PHP (3)
1C (8)
MS SQL (7)
MySQL (7)
Yii Framework (3)
Java (1)
Network (1)
PowerShell (7)
Git (1)
Python (1)

 
Микроблоги:
ОАЭ - Дубай
Фото зарисовки

 
Друзья:
arturka.com
aleksandor.ru
burunduch.ru
rapball.ru
pbshar.ru


Flag Counter

      GitHub profile


Выясняем чем занимается процесс на SQL сервере (MS SQL)
Порой очень полезно знать что выполняет тот или иной процесс на SQL серверe, писал для себя, делюсь...

USE msdb;

DECLARE
@icmdbuffer VARCHAR(200), -- переменная для хранения команды, которая выполняется процессом
@ispid BIGINT,
@icmdhandle varbinary(64),
@isession_id BIGINT;

-- удаляю временные таблицы, созданные предыдущим запуском
DROP TABLE #tbl_tmp_processinfo;
DROP TABLE #tbl_tmp_processbuffer;
DROP TABLE #tbl_tmp_process_and_text

CREATE TABLE #tbl_tmp_process_and_text (session_id BIGINT, sqltext NVARCHAR(4000));

--CREATE TABLE #tbl_tmp_processbuffer(tmp_cmdbuffer VARCHAR(200), tmp_spid BIGINT);

-- начитываю временную таблицу, для последующего join
SELECT spid,loginame,program_name,status,cmd,cpu,hostprocess
INTO #tbl_tmp_processinfo
FROM msdb.sys.sysprocesses ORDER BY cpu DESC

SELECT session_id,sql_handle
INTO #tbl_tmp_processbuffer
FROM msdb.sys.dm_exec_requests
WHERE sql_handle IS NOT NULL

--- начитываю временную таблицу SPID и выполняемую им команду

DECLARE tmp_process_table_cur CURSOR FOR
SELECT sql_handle,session_id FROM #tbl_tmp_processbuffer
OPEN tmp_process_table_cur
WHILE (1=1) --бесконечный цикл
BEGIN
-- пытаемся сделать очередную операцию
FETCH NEXT FROM tmp_process_table_cur INTO @icmdhandle, @isession_id

IF @@FETCH_STATUS <> 0 BREAK -- если данные закончились выходим из цикла

-- выполняем операцию с текущими данными (сохраняем)
INSERT INTO #tbl_tmp_process_and_text
SELECT @isession_id AS session_id, text FROM msdb.sys.dm_exec_sql_text(@icmdhandle)

END
---
-- закрываем курсор и освобождаем память
CLOSE tmp_process_table_cur
DEALLOCATE tmp_process_table_cur


-- тестовая выборка

SELECT * FROM #tbl_tmp_processinfo p
JOIN #tbl_tmp_process_and_text h
ON h.session_id=p.spid
Подробнее   
Дата публикации: 08-04-2016   

Как узнать версию SQL сервера (MS SQL)
1.Подключиться к SQL серверу через Management Studio и
в окне Object Explorer посмотреть на заголовок
подключенного сервера, но информация там будет не полная.

2.Более полную информацию можно посмотреть выполнив команду select @@version

2.Если нет возможности подключиться к SQL серверу, заходим в
C:\Program Files\Microsoft SQL Server\ [ИМЯ НАШЕГО ИНСТЕНСА] \MSSQL\Log

открываем файл ERRORLOG и в первых строках будет содержаться необходимая
информация.
Подробнее   
Дата публикации: 17-11-2015   

MSSQL 'PRIMARY' filegroup is full (MS SQL)
MSSQL 'PRIMARY' filegroup is full

Столкнулись с ошибкой? )

Кратко, несколько основных причин:

1.Не достаточно места на диске.
2.включено ли автоприращивание?
3.тип файловой системы.
4.Редакция сервера.
Подробнее   
Дата публикации: 08-10-2015   

Как удалить дубликаты в таблице (MS SQL)
Есть таблица NAMES

TABLE names (ID INT PRIMARY KEY, name NVARCHAR(100))

Из таблицы требуется удалить дублирующиеся имена.
Ниже один из способов решить задачу.

CREATE TABLE #GET_DISTINCT_DATA (name NVARCHAR(100))
INSERT INTO #GET_DISTINCT_DATA SELECT DISTINCT name FROM names;
TRUNCATE TABLE names;
INSERT INTO names SELECT name FROM #GET_DISTINCT_DATA;
Подробнее   
Дата публикации: 24-03-2015   

Как изменить формат даты (MS SQL)
Это выражение вернет дату в формате dd/mm/yyyy (формат 103, подробнее можно посмотреть на technet.microsoft.com)

CONVERT(VARCHAR,WH_Inc_Hist_table.IncommingDate,103) AS IncommingDate

Ниже пример процедуры, в которой это используется:

CREATE PROCEDURE [dbo].[p_MaterialsWareHouseIncommingHistory_Select]
(
@pr_StartDate DATE = NULL,
@pr_EndDate DATE = NULL
)
AS
BEGIN

IF @pr_StartDate IS NULL BEGIN SET @pr_StartDate = '1900-01-01'; END
IF @pr_EndDate IS NULL BEGIN SET @pr_EndDate = '3000-01-01'; END

SELECT WH_Inc_Hist_table.ID,
CONVERT(VARCHAR,WH_Inc_Hist_table.IncommingDate,103) AS IncommingDate ,
MatRef_tabale.MaterialReferenceName,
WH_Inc_Hist_table.MaterialSaldo,
WH_Inc_Hist_table.Price,
WH_Inc_Hist_table.CalculatedSumm,
WH_Inc_Hist_table.InvoiceNumber,
MatType_table.MaterialType,
WH_Inc_Hist_table.Description

FROM ITMaterialsWareHouseIncommingHistory WH_Inc_Hist_table
INNER JOIN ITMaterialsReference MatRef_tabale ON WH_Inc_Hist_table.MaterialID = MatRef_tabale.ID
INNER JOIN ITMaterialsType MatType_table ON WH_Inc_Hist_table.MaterialType = MatType_table.ID

WHERE IncommingDate
BETWEEN @pr_StartDate AND @pr_EndDate

ORDER BY IncommingDate;
END
Подробнее   
Дата публикации: 21-03-2015   

T-SQL зачем нужен FOREIGN KEY (MS SQL)
Как это работает и зачем нужен FOREIGN KEY

Допустим у вас есть таблица "А"

В Таблицу "А" Вы добавляете данные, которые ссылаются на таблицу "B" (скажем через INNER JOIN)

Ситуация:

Вы удалили запись из таблицы "B", на удаленную запись была активная ссылка из таблицы "А".
В этом случае SELECT из таблицы "А" с джоином работать не будет.

Для того что бы MSSQL не позволил удалить данные из таблицы "B" если есть
активная ссылка на данные в таблице, следует использовать FOREIGN KEY.

Фактически это как справочная ссылка из таблицы "А" на PRIMARY KEY
таблицы "B", а по сути один из механизмов для поддержания данных в целостном виде.

пример добавления FOREIGN KEY

ALTER TABLE Таблица А WITH CHECK
ADD FOREIGN KEY (столбец таблицы А) REFERENCES Таблица B (столбец таблицы B)
Подробнее   
Дата публикации: 16-02-2015   

Процедура для выполнения резервной копии базы данных (MS SQL)
Пример процедуры для выполнения резервной копии базы данных в MSSQL

CREATE PROCEDURE [dbo].[p_MakeBackup]
AS
BEGIN

SET NOCOUNT ON;

DECLARE @BackUpDate VARCHAR(20);
DECLARE @BackUpPath VARCHAR(100);

SET @BackUpDate = SYSDATETIME();

-- Приводим в порядок дату и время, убираем/заменяем не нужные символы
SET @BackUpDate = REPLACE(@BackUpDate , ' ', '_');
SET @BackUpDate = REPLACE(@BackUpDate , '.', '');
SET @BackUpDate = REPLACE(@BackUpDate , ':', '-');

SET @BackUpPath = 'C:\backup\ MyDB _'+@BackUpDate+'.bak';

-- делаем резервную копию
BACKUP DATABASE [MyDB]
TO DISK = @BackUpPath
WITH INIT , NOUNLOAD , NAME = N'MyDB', NOSKIP , STATS = 10, NOFORMAT

END
Подробнее   
Дата публикации: 14-02-2015   

Страницы: