Информация

Последние записи

Теги


Блоги


Записи из всех блогов с тегом: t-sql


Генерация выражения SELECT - загружаем в базу MS SQL Server данные из внешних источников

Задача:
Допустим, у Вас есть таблица MS Excel (MS Access, или другой источник данных) и Вам нужно перенести ее в базу данных SQL Server.

Какие существуют традиционные способы выполнения этой задачи:
1. Воспользоваться функцией OPENROWSET.
2. Сформировать ручками запрос SELECT прямо в Excel.
3. Master Data Import / DTS/ SSIS

Безусловно все эти способы занимают много времени. В случае с OPENROWSET не всегда на сервере установлен нужный провайдер.

Существует способ выполнить эту задачу за пару кликов мышкой...

читать дальше...
автор: SQL Refactor Studio Team добавлено: 13 фев 15 просмотры: 1621, комментарии: 0



Смотрим текущую активность SQL Server

Периодически публикую запрос, который сам использую для мониторинга того, что происходит на SQL Server.
Сегодня - очередное обновление.
читать дальше...
автор: DeColo®es добавлено: 07 окт 14 просмотры: 4008, комментарии: 2





Подход доктора Хауса в тестировании оптимизации SQL-запросов (серия 3)

Запись моего выступления на SQA #14 в Львове. Еду на SQA #15 в Москву с продолжением. Жду всех, кому это будет интересно.

Смотреть тут ...
автор: Sergey Mikhalev добавлено: 28 фев 14 просмотры: 1685, комментарии: 0



Подсветка выделенного слова в редакторе запросов

Доброго времени суток!

По просьбам пользователей нашего SQL Refactor Studio мы добавили в него одну полезную особенность - подсветку выделенного слова в редакторе запросов.
читать дальше...
автор: SQL Refactor Studio Team добавлено: 31 янв 14 просмотры: 1273, комментарии: 1



Накатывание нескольких резервных копий Transaction Log подряд

Недавно в MS SQL 2012 необходимо было восстановить базу на определенный момент времени. В базе настроен Log Shipping на очень удаленный сервер, поэтому файлов .trn после последнего дифференциального бэкапа оказалось дох..., вообщем много. В связи с этим написал небольшой скрипт, который сортирует .trn файлы по дате и накатывает их подряд, так же указывается каким файлом начинать восстановление, а каким заканчивать.

читать дальше...
автор: Andraptor добавлено: 19 окт 13 просмотры: 856, комментарии: 0



Создание Snapshot базы данных

Когда-то уже выкладывал на форуме. Но пусть все будет в одном месте, к тому же немного подправил.
--создается SNAPSHOT для указанной базы данных в формате: ИмяБазыДанных+_SS+ГодМесяцДень+ЧасМинута
--файлы SNAPSHOT создаются в тех же местах, что и исходные файлы, если явно не указан другой путь
USE DB1

DECLARE @FilePath VARCHAR(2000) = ''
	,@SnapDBName VARCHAR(200) = db_name() + '_SS' + convert(VARCHAR(10), getdate(), 112) + '_' + right('0' + Datename(hh, getdate()), 2) + right('0' + Datename(mi, getdate()), 2)
	,@result VARCHAR(max) = ''

IF db_id(@SnapDBName) IS NULL
BEGIN
	SET @result = 'CREATE DATABASE [' + @SnapDBName + '] ON 
'

	--SET @FilePath = 'E:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\DATA\'
	IF @FilePath = ''
		SELECT @Result += ' ( NAME = ' + NAME + ', FILENAME = ''' + reverse(substring(reverse(physical_name), charindex('\', reverse(physical_name)), len(reverse(physical_name)))) + reverse(substring(reverse(physical_name), charindex('.', reverse(physical_name)) + 1, charindex('\', reverse(physical_name)) - charindex('.', reverse(physical_name)) - 1)) + '_SS' + convert(VARCHAR(10), getdate(), 112) + '_' + right('0' + Datename(hh, getdate()), 2) + right('0' + Datename(mi, getdate()), 2) + '.ss''),
'
		FROM sys.master_files
		WHERE database_id = db_id()
			AND [type] = 0
	ELSE
		SELECT @Result += ' ( NAME = ' + NAME + ', FILENAME = ''' + @FilePath + reverse(substring(reverse(physical_name), charindex('.', reverse(physical_name)) + 1, charindex('\', reverse(physical_name)) - charindex('.', reverse(physical_name)) - 1)) + '_SS' + convert(VARCHAR(10), getdate(), 112) + '_' + right('0' + Datename(hh, getdate()), 2) + right('0' + Datename(mi, getdate()), 2) + '.ss''),
'
		FROM sys.master_files
		WHERE database_id = db_id()
			AND [type] = 0

	SET @Result = stuff(@Result, len(@Result) - 2, 1, '') --обрезаем последнюю запятую
	SET @Result += 'AS SNAPSHOT OF ' + quotename(db_name())

	--PRINT (@result)
	EXEC (@result)
END
автор: Andraptor добавлено: 19 окт 13 просмотры: 1003, комментарии: 1





Подход доктора Хауса к оптимизации SQL-запросов (серия 1)

Как же долго я не писал в свой блог, но вот появился хороший повод возобновить эту традицию. Появились записи с моей встречи в CodeFreeze.

Смотреть
автор: Sergey Mikhalev добавлено: 24 сен 13 просмотры: 2786, комментарии: 0



Вычисление перцентиля на T-SQL

Блог: Cruel SQL
Абсолютно неоригинальная задача, но для тех, кто ищет готовое решение, а не советы/ссылки - примерно так:

create type dbo.FloatArray as table (Val float not null);
go
create function dbo.GetPercentil(@Percent tinyint, @Values dbo.FloatArray readonly) 
returns float
as begin
	return (select	avg(p.Val)
	from	(
				select	mr.Val 
					,	IsPercentilVal = cast(case when mr.RowNum between mr.PercentRow and mr.PercentRow + 1 then 1 else 0 end as bit)
				from	(
							select	r.Val 
								,	r.RowNum 
								,	PercentRow	= cast((count(*) over()) * @Percent / 100.0 as float)
							from	(
										select	v.Val 
											,	RowNum = row_number() over (order by v.Val)
										from	@Values as v
									) as r
						) as mr
			) as p
	where	p.IsPercentilVal = 1);
end;
автор: Алексей Дружинин добавлено: 30 мар 13 просмотры: 1218, комментарии: 0


предыдущие записи