Quantcast
Channel: SQL.ru: Microsoft SQL Server
Viewing all 7251 articles
Browse latest View live

Не загружается .csv-файл, чем это вызвано? - Visual Studio

$
0
0
есть 2 ssis пакета. Один сделан в visual studio2008, другой в 2015(преобразование первого). Пакеты Идентичны! Загружаю 2008пакетом все загружает, тот же файл 2015 пакетом, выдает ошибку.
Исходный файл CSV [51]] Ошибка: Ошибка при обработке строки 248227188195721216 в файле "D:\myFile-1(21_11_2016).csv".
[Исходный файл CSV [51]] Ошибка: Не обнаружен разделитель столбцов для столбца "Столбец1.

Смотрели разными редакторами эту строку - все нормально. Пропускали ее грузит 3014 строк и та же ошибка, пропускали и эти 3014 строку - та же ошибка. так через каждые 3014 строки ошибка, пока не дойдёшь до конца файла. Причем мои пакетом 2015 грузит 273 000 строк, а если если просто мастером экспорта/импорта ms sql server грузит 293000 и выдает ошибку.
Файл размером где-то 2,3 Гб.
Формат c разделителями.
Ограничитель текста "
Разделитель строки {LF}
ColumnDelimiter Запятая,
У каждого столбца DataType строка в Юникоде DT_WST
Когда убираешь Ограничитель текста ", то все без ошибок загружается, но коряво.

Подскажите в чем причина такого странного поведения и как это исправить?
Может дело в памяти? С транзакциями?()есть ошибки в такого рода в другом ssis пакете, тоже после того как в 2015 сделали). Может что-то доустановить надо к visual studio???
Заранее спасибо за ответ!

Разрыв в датах

$
0
0
Доброго дня.

Доступ в "систему" предоставляется на определенный период с d_start по d_finish.
Как найти 1) дату и 2) последнюю дату, когда клиент возобновил пользование нашими услугами после разрыва.
Примечание: не считать разрыв период менее 30 дней (включительно).

Спасибо.

Пример:
declare @t table(d_start datetime, d_finish datetime, product nvarchar(100))

insert @t
select '01.01.2010', '31.12.2010', 'товар №1'
union all
select '01.06.2010', '30.06.2011', 'товар №2'
union all
select '20.07.2011', '31.12.2011', 'товар №3' -- разрыв в 20 дней, но это не считаем разрывом, т.к. это меньше 30 дней.
union all
select '15.02.2012', '28.02.2014', 'товар №4' -- разрыв №1, 15.02.2012 -дата, когда клиент возобновил пользование нашими услугами после разрыва.
union all
select '01.01.2014', '31.12.2014', 'товар №5'
union all
select '01.01.2016', '31.12.2016', 'товар №6' -- разрыв №2, 01.01.2016 -дата, когда клиент возобновил пользование нашими услугами после разрыва.

SELECT @variable FROM <many rows>

$
0
0
Всегда думал, что такие запросы выбросят исключение.
Ан нет.
DECLARE @ObjectId int;
SELECT @ObjectId = object_id FROM sys.objects ORDER BY object_id
SELECT @ObjectId
SELECT @ObjectId = object_id FROM sys.objects ORDER BY object_id DESC
SELECT @ObjectId

Секционированные таблицы vs представления

$
0
0
Здравствуйте!

У меня некоторый возврат к теме секционирование предыдущая проблема была описана тут которая так ничем и незавершилась потому что приоритет у задачи так и не повысился.
Сейчас мне нужно сделать подборку чем секционирование таблиц лучше секционированных представлений (partitioned views)

Вот у меня получилась такая таблица во вложении, может быть кто-нибудь дополнит что-то из своего опыта.

Источники:
1 https://technet.microsoft.com/en-us/library/cc966424.aspx
2 https://technet.microsoft.com/en-us/library/dd578580(v=sql.100).aspx

Таблица полностью из документа (1) кроме версий.
Если кто-то использует секционированные представления, поделитесь почему не переходите на секционированные таблицы.

Насколько я понимаю ключевое различие, что с представлением нужно очень много делать вручную и это ключевой минус.

конвертировать строки в столбцы внутри одной таблицы

$
0
0
всем привет!

есть таблица:

поле1 поле2
[ \aaaa] 12
[ aaaa] 13
[ \asad] 33
[ asad] 31
[ \ss] 123
[ ss] 157

можно ли сделать селект, который сделает джоин таблицы в себя же, и в ON прописать соответсвие значение числового поля 1 и поля 1 после символа "\". в поле 1 также стоит рандомное количество пробелов перед числами, символы "[","]" в поле1 привел для наглядности

в итоге должно получиться:

поле1 поле2 поле22
[ aaaa] 13 12
[ asad] 31 33
[ ss] 157 123

Округление до заданного кратного

$
0
0
Не могу решить задачу округления до заданного кратного числа на T-SQL

Имеется таблица с кратностью потребления материала.
В ней указывается до какого кратного в большую сторону округлять потребление.
К примеру кратность может быть как 0.0001 так и 1.000,3.000 и т.д.
Для примера расчёта спирта =) получается потребление в 0,0005 литров а кратность для спирта стоит в 0,001 л. На выходе нужно получить 0,001.
Или к примеру то что расходуется в штуках, при расчёте получается дробное(тех отход применили к спецификации), его нужно округлить до целого в большую сторону, так как кратность стоит 1.00.

В итоге нужна функция в которую скармливается число и кратное до которого нужно округлить.
MROUNDUP(5.1323,1.000)=>6.000
MROUNDUP(0.0023,0.001)=>0.003
и т.д.

P.S. Есть плохие мысли написать внешнюю функцию clr. Думаю можно обойтись без этого.
MS SQL Server 2005

Кросс динамические запросы

$
0
0
Добрый день. sql server 2014, запрос формируется в самой программе на ходу в зависимости от выбранных фильтров. Суть запроса в том что нужно вывести уникальные строки из таблицы прайс листа keaz_products и только соответствующие выбранным характеристикам из другой таблицы keaz_products_spec_values, по выбранной категории продукции product_category_id, таблицы values и прайс связаны по коду продукции product_id, проверяем х-ки по значениям [keaz_products_spec_values].[spec_id] (х-ка) и ее значение [keaz_products_spec_values].[value]. Нужно проверять сразу по выбранным х-кам многочисленно. То есть чтобы было выбрано отсеивание по току и еще там типу расцепителя, сначало выбрать по одной характеристике записи, а затем по другим выбранным характеристикам отсеить из 1 набора данных записи по 2 фильтру. Теперь вопрос как по 1 набору сразу в одном запросе проверить из другой таблицы для этих данных есть записи соответствующие 2 фильтру или нет и вывести их в набор?

select distinct([keaz_products].[product_id]),[keaz_products].[title],[keaz_products].[price_with_vat] 
from [keaz_products],[keaz_products_spec_values] 
where [keaz_products].[product_category_id]='219172' and CAST([keaz_products_spec_values].[product_id] as int)=[keaz_products].[product_id]
 and (([keaz_products_spec_values].[spec_id]='35' and [keaz_products_spec_values].[value]='2000'
 or [keaz_products_spec_values].[value]='1600')
 or ([keaz_products_spec_values].[spec_id]='41' and [keaz_products_spec_values].[value]='электронный'
 or [keaz_products_spec_values].[value]='без расцепителей'))

Процедура на сравнение 2х дат в таблицах и вывод

$
0
0
Есть две таблицы: в первой таблице "Соискатель" есть поле "ДатаОбращения", а во второй таблице "Вакансии1" - поле "Испытательный срок". Нужно написать процедуру: Если Соискатель.ДатаОбращения >= Вакансии1.[Испытательный срок], то в поле Соискатель.Статус пишем "Нетрудоустроен" иначе "Трудоустроен"

Специфический вывод из 2-ух таблиц

$
0
0
Есть 2 таблицы:

STORE
(
ID
NAME
)

и

PRODUCTS
(
ID
NAME
STORE_ID
)

Как объединить их так, чтобы можно было сначала вывести первую запись из таблицы STORE, а потом все относящиеся продукты к этой записи, потом 2 запись из STORE и так далее.

Спасибо заранее.

Нужна помощь

$
0
0
Здравствуйте, мне нужен скрипт который бы вычислял минимальную разницу в днях между поставками товара. Пример таблицы:
Id | Даты поставок
245 | 12.05.2015
245 | 19.06.2015
245 | 02.07.2015
245 | 15.07.2015
и т.д.
Разница нужна в днях. Вывод ID товара и разница. Пытался играться сам, но ничего не выходит. Прочтения кучи страниц форумов никчему не привели. С sql познакомился недавно, своих знаний не хватает.

Соединение текстового поля и цифрового

$
0
0
inner join Points p on p.ID = c.Point
у меня поле c.Point варчар, а поле p.ID интежер, но мне нужно соединять из c.Point только с теми кто числовые

Сравнить строку с частью другой строки

$
0
0
Здравствуйте, подскажите имеется некоторое количество строк содержащих имя и отчество (в одном поле) в одной таблице и некоторое количество строк содержащих только имя в другой, как организовать выборку по условию, что имена в обоих таблицах совпадают?

Восстановление базы из одного файла mdf

$
0
0
Как восстановить базу, если имеется только один файл mdf?

Накопительный итог по иерархии

$
0
0
Есть ParentChild - иерархия которая представляет собой распределение товаров по разным областям/городам.
При этом показатель count_tovar может быть указан и для не листового элемента иерархии

DECLARE @T TABLE (id int, parentid int, name varchar(100), isleaf bit, count_tovar numeric(10,5))
INSERT INTO @T
SELECT 1,NULL,'Россия',0,10 UNION ALL
SELECT 2,1,'Московская область',0,0 UNION ALL
SELECT 3,1,'Читинская область',0,5 UNION ALL
SELECT 4,2,'Москва',0,100 UNION ALL
SELECT 5,2,'Химки',1,50 UNION ALL
SELECT 6,3,'Чита',1,20 UNION ALL
SELECT 9,1,'Приморский край',1,1 UNION ALL
SELECT 10,4, 'СЗАО',1,0 UNION ALL
SELECT 11,4, 'ЦАО',1,0


Цель - получить список всех листовых элементов иерархии с показателем X который получается как распределение показателя count_tovar по дочерним элементам.

Пример:
У России указано три области - значит показатель count_tovar на уровне России мы делим на 3, получаем около 3.3 на каждую область. Далее этот получившийся показатель 3.3 мы складываем с count_tovar для каждой области. Например для Читинской области этот показатель будет равен 3.3 + 5 = 8.3. У Читинской области один город, значит для города Читы итог будет равен 8.3 / 1 + показатель count_tovar для Читы в итоге = 8.3 + 20.
Надеюсь понятно обьяснил...

Я так понял что нужно делать накопительный итог по иерархии только вместо SUM использовать AVG, но пока пытаюсь сделать через CTE и ничего не получается...
Пишу так, но суммы явно не те...

	WITH Counts AS
	(
		SELECT ParentId, COUNT(*) as CNT
		FROM @T
		WHERE id <> @ParentID
		GROUP BY ParentId
	),
	Sums AS
	(

		SELECT * FROM
		(
		SELECT t.id,t.parentid, t.name, CAST(count_tovar / ISNULL(r.CNT,1) AS numeric(10,5)) as X
		FROM @T t 
		INNER JOIN
		Counts r ON t.id = r.ParentId
		) a

		UNION ALL
		SELECT t.id,t.name,t.isleaf, sums.X FROM @T AS t JOIN Sums ON t.parentid = Sums.id
	)
	
	select * from Sums

последние узлы в дереве

$
0
0
Здравствуйте. Скажите как вывести все листья на каждом зависимом уровне?

Например, ID, ParentID,Weight

1,0,2
2,1,3
3,1,4
4,2,2
5,3,3

Нужно, чтобы на 1 - были 4,5
На 2 - 4, 5
На 3 - 0
На 4 - 4
На 5 - 5

Спасибо.

xp_cmdshell станет ли deprecated?

Как удалить 100 таблиц из базы?

$
0
0
Есть таблицы в одной базе с определенным префиксом.

Как все эти таблицы удалить одним действием?

Таблиц более 150.

Помогите разобраться. DatePart(DW, @Date) может иметь разные значения на разных СУБД

$
0
0
Добрый день.

DatePart(DW, @Date) на разных субд (я бы сказал на разных серверах) показывает разные значения. Понимаю, что например в США воскресенье будет иметь значение 1 а в России 7. Но как добиться, чтоб этот параметр был одинаков, при выполнении запроса на разных серверах?

использую для определения дня недели:
         CASE
            WHEN DatePart(DW, @Date) = 1 THEN 'пн.'
            WHEN DatePart(DW, @Date) = 2 THEN 'вт.'
            WHEN DatePart(DW, @Date) = 3 THEN 'ср.'
            WHEN DatePart(DW, @Date) = 4 THEN 'чт.'
            WHEN DatePart(DW, @Date) = 5 THEN 'пт.'
            WHEN DatePart(DW, @Date) = 6 THEN 'сб.'
            WHEN DatePart(DW, @Date) = 7 THEN 'вс.'
          END

Как настроить правильно транзакции. ssis

$
0
0
Журнал быстро заполняется. не могу даже 1 файл ssis-пакетом залить

"Журнал транзакций для базы данных "My" переполнен. Причина: "ACTIVE_TRANSACTION".". Возможные причины сбоя: проблемы с этим запросом, свойство "ResultSet" установлено неправильно, параметры установлены неправильно или соединение было установлено неправильно.

readonly-пользователь +хранимые процедуры

$
0
0
Всем привет, есть MSSQL 2014 Express. Хочу создать пользователя, которому недоступно ничего, кроме выполнения тех хранимых процедур, которые я укажу вручную.
Для этого создаю роль базы данных с владельцем dbo, со схемами db_deny_datareader и db_deny_datawriter. Создаю пользователя с данной ролью - у него все объекты закрыты, однако системные хранимые процедуры (sys.sp_addarticle и куча других) открыты и доступны для изменения. Вопрос- от него скрыть эти процедуры или в крайнем случае запретить изменение ? Спасибо
Viewing all 7251 articles
Browse latest View live