Ниже приводится скрипт проверки всех баз данных сервера, скрипт не привязан к именам баз данных, что хорошо его можно скопировать на несколько серверов:
Показаны сообщения с ярлыком T-SQL. Показать все сообщения
Показаны сообщения с ярлыком T-SQL. Показать все сообщения
пятница, 25 января 2013 г.
понедельник, 29 октября 2012 г.
Запрос к AD из MS SQL Server
Чтобы получить в MS SQL Server данные из Active Directory (AD) необходимо:
1) Создать связанный сервер (Linked Server)
2) Отправить запрос в AD
1) Создать связанный сервер (Linked Server)
2) Отправить запрос в AD
пятница, 26 октября 2012 г.
Фрагментация всех индексов таблиц базы данных
Ниже представлен скрипт, показывающий фрагментация всех индексов всех таблиц базы даннных MS SQL Server:
среда, 27 июня 2012 г.
Размер всех баз данных MS SQL сервера
Использование sp_spaceused на экземпляре MS SQL Server-е, когда на сервере находится довольно много баз данных не очень удобно, и получается не информативно, да и иногда хочется получить результат одной строкой, чтобы, например, результат записать в таблицу.
вторник, 27 марта 2012 г.
Оператор DML MERGE в MS SQL SERVER 2008
На днях все таки применил оператор DML MERGE, довольно сложный для первоначального понимания, но удобен и есть свои преимущества, если его освоить.
Данный оператор был введен в MS SQL с версии 2008 в дополнение к сущеcтвующим инструкциям DML. Вкратце, его назначение - это применение нескольких инструкций на основание нескольких операторов сравнения, более подробно в первоисточнике -http://msdn.microsoft.com/ru-ru/library/bb510625.aspx
Попробую его описать на моем примере, т.к довольно трудно его понять сразу:
merge dbo.INCAS_GRAF as t
using (select a.recid,a.ID,t.graf
from dbo.temp_graf t inner join ATM a on t.idterminal=a.ID
) as s
on (t.ParentLink_RecID=s.recid)
when matched
then update set t.Graf=s.graf,t.LastModDateTime=getdate(),t.LastModBy='admin'
when not matched by target
then insert (RecId,LastModDateTime,LastModBy,CreatedDateTime,CreatedBy,ParentLink_RecID,GRAF)
values(NEWID(),GETDATE(),'admin',Getdate(),'admin',s.recid,s.graf);
что он делает по шагам:
1) merge dbo.INCAS_GRAF as t -устанавливает, с какой таблицой будут действия(update, insert, delete), в BOL описана как таблица TARGET, т.е цель
2) (select a.recid,a.ID,t.graf
from dbo.temp_graf t inner join ATM a on t.idterminal=a.ID
) - устанавливает 2-ю таблицу - SOURCE
3) (t.ParentLink_RecID=s.recid) - устанавливает связь двух таблиц
4)when matched -описание действий при совадение строк, в моем случае это UPDATE
5)when not matched by target -описание действий со строками которых нет в TARGET, но есть в SOURCE, точнее в том случае если есть строки, которых нет в TARGET. В моем примере, это вставка новых строк в таблицу TARGET.
Вот и все, при выполнения данного запроса, если проанализировать план его выполнения, то он будет намного приятным, если мы бы выполняли данные операции отдельно, что довольно хорошо отразится на операциях с I\O.
Еще полезное, возможность применения аргумента OUTPUT, что позволяет нам получить все данные, которые были изменены\вставлены.
Enjoy it!
Подписаться на:
Сообщения
(
Atom
)