Ru-Board.club
← Вернуться в раздел «Прикладное программирование»

» Microsoft SQL Server

Автор: volser
Дата сообщения: 11.12.2013 10:06
vikkiv
Так работать не будет.

Нужно написать функцию которая на вход принимает строку айдишников, а на выходе возвращает таблицу. Дальше выборку джойним с этой функцией.
Автор: Alexzzy
Дата сообщения: 12.12.2013 11:16
vikkiv
Динамический execute или распарсить строку и запихнуть значения во временную таблицу...
Автор: A_V
Дата сообщения: 12.12.2013 12:51
vikkiv
с 2008-го, кажется, появились table-value параметры -- http://technet.microsoft.com/en-us/library/bb510489.aspx
с 2005-го, можно как xml передавать и нормально обрабатывать селектом -- https://www.simple-talk.com/blogs/2012/01/05/using-xml-to-pass-lists-as-parameters-in-sql-server/
Автор: vikkiv
Дата сообщения: 12.12.2013 22:26
A_V
Alexzzy
volser
Всем спасибо, помню что там были тэги какие-то, без спец-функций, доп. таблиц/колонн, продцедур и exec, короткой строкой, причём параметр писался просто через Set @param="val1, val2, val3" а вставлялся с дополнением каких-то тэгов/символов типа хml, может встроенной функцией, тоже где-то нагуглил, логу три дня уже, наверное и не откопаю в миллионах записей.. а так да, пока пo длинному пути иду. Ну да ладно, если так всё замороченно - пускай пока многострочное решение стоит, просто думал чисто у меня мысли от перегрузки заклинило..
Автор: vikkiv
Дата сообщения: 16.12.2013 03:14
Помогите пожалуйста составить оптимальный запрос типа over .. Partition (хотя другая модель тоже подойдёт) или что там недорогое по нагрузке на сервер будет в реальном времени.

> Необходимо для каждого студента найти общую продолжительность занятий начиная (т.е. после) каждого из 3-х последних экзаменов.

Насколько я понимаю это через ..RowNumber() over (Partition by StudentID Order By Date Desc) as rw .. Where rw=.. и потом Join-ы .. ну или что-то в этом роде.

Исходная таблица (StudentID,Type,Date,Duration) в самом низу

>Например на выходе нужно увидеть такое:
---------
StudentID__DateEx1___Lessons1__DateEx2__Lessons2__DateEx3___Lessons3
1284______4/2/2013____12_____1/22/2013___12____11/16/2012_____17
3079______2/15/2013___4______10/26/2012___8_______Null________Null
5045______2/18/2013__13______1/15/2013___17____12/09/2012_____17
---------

Выделить даты последних 3х экзаменов один за одним могу через RowNumber() over (partition.. , a вот как это в едином запросе соединить без временных таблиц и пользовательских функций, да с суммами за период - ну ни как не срастается

Заранее спасибо.
P.S. Система: SQLServer 2012

[more=скрипт создания исходной таблицы:]CREATE TABLE [dbo].[Book2](
    [StudentID] [int] NOT NULL,
    [Type] [varchar](8) NOT NULL,
    [Date] [date] NOT NULL,
    [Duration] [smallint] NOT NULL
) ON [PRIMARY]
GO
INSERT [dbo].[Book2] ([StudentID], [Type], [Date], [Duration]) VALUES (1284, N'Lesson', CAST(0x40360B00 AS Date), 4)
INSERT [dbo].[Book2] ([StudentID], [Type], [Date], [Duration]) VALUES (5045, N'Exam', CAST(0x7D360B00 AS Date), 1)
INSERT [dbo].[Book2] ([StudentID], [Type], [Date], [Duration]) VALUES (1284, N'Exam', CAST(0x2B360B00 AS Date), 2)
INSERT [dbo].[Book2] ([StudentID], [Type], [Date], [Duration]) VALUES (3079, N'Lesson', CAST(0x31360B00 AS Date), 2)
INSERT [dbo].[Book2] ([StudentID], [Type], [Date], [Duration]) VALUES (5045, N'Lesson', CAST(0x35360B00 AS Date), 3)
INSERT [dbo].[Book2] ([StudentID], [Type], [Date], [Duration]) VALUES (3079, N'Lesson', CAST(0x6B350B00 AS Date), 2)
INSERT [dbo].[Book2] ([StudentID], [Type], [Date], [Duration]) VALUES (5045, N'Lesson', CAST(0x45360B00 AS Date), 5)
INSERT [dbo].[Book2] ([StudentID], [Type], [Date], [Duration]) VALUES (1284, N'Lesson', CAST(0x47360B00 AS Date), 2)
INSERT [dbo].[Book2] ([StudentID], [Type], [Date], [Duration]) VALUES (3079, N'Lesson', CAST(0x4A360B00 AS Date), 2)
INSERT [dbo].[Book2] ([StudentID], [Type], [Date], [Duration]) VALUES (1284, N'Lesson', CAST(0x4D360B00 AS Date), 4)
INSERT [dbo].[Book2] ([StudentID], [Type], [Date], [Duration]) VALUES (3079, N'Exam', CAST(0x51360B00 AS Date), 1)
INSERT [dbo].[Book2] ([StudentID], [Type], [Date], [Duration]) VALUES (3079, N'Lesson', CAST(0x6C350B00 AS Date), 3)
INSERT [dbo].[Book2] ([StudentID], [Type], [Date], [Duration]) VALUES (1284, N'Lesson', CAST(0xE6350B00 AS Date), 5)
INSERT [dbo].[Book2] ([StudentID], [Type], [Date], [Duration]) VALUES (5045, N'Exam', CAST(0x42360B00 AS Date), 1)
INSERT [dbo].[Book2] ([StudentID], [Type], [Date], [Duration]) VALUES (1284, N'Exam', CAST(0x66360B00 AS Date), 2)
INSERT [dbo].[Book2] ([StudentID], [Type], [Date], [Duration]) VALUES (5045, N'Lesson', CAST(0x6A360B00 AS Date), 3)
INSERT [dbo].[Book2] ([StudentID], [Type], [Date], [Duration]) VALUES (1284, N'Lesson', CAST(0x43360B00 AS Date), 2)
INSERT [dbo].[Book2] ([StudentID], [Type], [Date], [Duration]) VALUES (1284, N'Lesson', CAST(0x84360B00 AS Date), 5)
INSERT [dbo].[Book2] ([StudentID], [Type], [Date], [Duration]) VALUES (5045, N'Exam', CAST(0xA2360B00 AS Date), 1)
INSERT [dbo].[Book2] ([StudentID], [Type], [Date], [Duration]) VALUES (5045, N'Lesson', CAST(0xA7360B00 AS Date), 4)
INSERT [dbo].[Book2] ([StudentID], [Type], [Date], [Duration]) VALUES (1284, N'Exam', CAST(0xA9360B00 AS Date), 1)
INSERT [dbo].[Book2] ([StudentID], [Type], [Date], [Duration]) VALUES (3079, N'Lesson', CAST(0xB0360B00 AS Date), 4)
INSERT [dbo].[Book2] ([StudentID], [Type], [Date], [Duration]) VALUES (1284, N'Lesson', CAST(0xD0360B00 AS Date), 2)
INSERT [dbo].[Book2] ([StudentID], [Type], [Date], [Duration]) VALUES (5045, N'Lesson', CAST(0x0D370B00 AS Date), 3)
INSERT [dbo].[Book2] ([StudentID], [Type], [Date], [Duration]) VALUES (3079, N'Exam', CAST(0xC1360B00 AS Date), 2)
INSERT [dbo].[Book2] ([StudentID], [Type], [Date], [Duration]) VALUES (1284, N'Lesson', CAST(0xC3360B00 AS Date), 1)
INSERT [dbo].[Book2] ([StudentID], [Type], [Date], [Duration]) VALUES (5045, N'Exam', CAST(0xC4360B00 AS Date), 1)
INSERT [dbo].[Book2] ([StudentID], [Type], [Date], [Duration]) VALUES (5045, N'Lesson', CAST(0xCA360B00 AS Date), 2)
INSERT [dbo].[Book2] ([StudentID], [Type], [Date], [Duration]) VALUES (3079, N'Lesson', CAST(0x4B370B00 AS Date), 4)
INSERT [dbo].[Book2] ([StudentID], [Type], [Date], [Duration]) VALUES (1284, N'Lesson', CAST(0x89370B00 AS Date), 3)
INSERT [dbo].[Book2] ([StudentID], [Type], [Date], [Duration]) VALUES (1284, N'Lesson', CAST(0xE8360B00 AS Date), 2)
INSERT [dbo].[Book2] ([StudentID], [Type], [Date], [Duration]) VALUES (5045, N'Lesson', CAST(0xEA360B00 AS Date), 3)
INSERT [dbo].[Book2] ([StudentID], [Type], [Date], [Duration]) VALUES (1284, N'Exam', CAST(0xB6360B00 AS Date), 1)
INSERT [dbo].[Book2] ([StudentID], [Type], [Date], [Duration]) VALUES (1284, N'Lesson', CAST(0x0F370B00 AS Date), 4)
INSERT [dbo].[Book2] ([StudentID], [Type], [Date], [Duration]) VALUES (5045, N'Lesson', CAST(0x6B370B00 AS Date), 5)[/more]
Автор: A_V
Дата сообщения: 17.12.2013 21:12
vikkiv
deleted

на скль.ру вариант по-лучше получился =)
Автор: Futurism
Дата сообщения: 26.12.2013 16:56
а можно ли где-нить почерпнуть как архивировать и восстанавливать бд ms sql 2000
Автор: delover
Дата сообщения: 26.12.2013 17:01
Futurism
Из практики - лучше установить какой нибудь ms sql подревнее, там help файлы более эффективные. Хелпы можно забрать а сервак удалить вместе с виртуалкой.
Автор: Futurism
Дата сообщения: 26.12.2013 18:07
имеете ввиду на виртуалку его поставить, а оттуда хелпы забрать?
А какой из вашей практики порекомендуете древний?
Автор: Alexzzy
Дата сообщения: 26.12.2013 21:48
Futurism
У ms sql 2000 хороший хелп. Устанавливается отдельно.
http://www.microsoft.com/en-us/download/details.aspx?id=18819
Автор: Infra3600
Дата сообщения: 15.01.2014 11:46
Дано:
1. Сервер СУБД, SQL Server 2008 R2 в количестве 3 шт: S01, S01, S03.
2. На них есть некая БД DB01.
3. Настроена репликация этой БД вот так: S01->S02 и S01->S03.
4. Репликация иногда слетает.
5. Дополнительно есть:
5.1. Мониторилка на основе Nagios, которая просто смотрит, запущен ли SQL Server, т.е. открыт ли на сервере соответствующий порт TCP
5.2. Доступ к Монитору репликации, через SQL Management Studio, чтобы вызывать его вручную и смотреть, всё ли реплицируется.
5.3. Также есть некие веб-сервера на основе IIS под Windows и Apache под GNU/Linux: на IIS крутится прикладная часть под PHP, на Apache крутится Nagios.
Найти:
Способ автоматической проверки репликации. В идеале должен быть самописный плагин к Nagios, если такой уже имеется. Но в общем-то сойдёт SQL-запрос к какой-нибудь системной хранимой процедуре, проверяющей статус репликации и дающей, в зависимости от состояния репликации, некий код и/или слова об этом состоянии. Если будет такой запрос, то наверно обвяжу его сам в PHP, чтобы выполнялся и вываливал этот статус.
Автор: naPmu3aH
Дата сообщения: 15.01.2014 12:16
Infra3600
Посмотрите здесь

Добавлено:
Хотя для разных видов репликации будут разные способы...
Автор: Infra3600
Дата сообщения: 15.01.2014 13:04
naPmu3aH

Спасибо за скорый ответ!

Сначала думал по поводу процедуры sp_replcounters, которую увидел вот тут. Т.е. при превышении некоторого критического значения счётчика чтобы реагировать. Но видимо, это просто количество в очереди, которое меняется, и ничего не покажет.
И можно ли просто выполнить, т.е. что эта процедура сделает с базой, тоже не вполне ясно, не скажется ли это на репликации других БД на том же самом сервере.
Автор: Big17
Дата сообщения: 19.01.2014 23:25

Цитата:
С производственой необходимостью, необходимо сделать адаптацию программы под MsSql. Насколько сложно будет адаптировать запросы из базы mySql в MsSql

Не сложно, синтаксис сиквела шире чем, MySQL...
Кидайте примеры - переведем.
Автор: qwertEHOK
Дата сообщения: 24.01.2014 12:14
не подскажите - есть ли в природе какая нибудь маленькая бэкапилка баз mssql
у нас 4 сервера, около 30 баз разного размера и расположения

я, конечно, основные скрипты руками понаписал, но хотелось бы ускорить путем быстрого GUI ))
Автор: Big17
Дата сообщения: 24.01.2014 22:45
qwertEHOK
Так ведь сама SQL Server Management Studio чудесно все делает, без скриптов - все визуально.

Добавлено:
qwertEHOK
Сторонних утилит тоже целая куча... даже Genie Backup Manager умеет сиквел бэкапить
Автор: Futurism
Дата сообщения: 29.01.2014 16:45
скажите пожалуйста, вот у меня есть колонка как мне значение 2 изменить на значение 1

Добавлено:
и вопрос в догонку как как подключит к серверу компонент data engine
Автор: BlackVetal
Дата сообщения: 30.01.2014 05:05
Futurism
открыть таблицу в менеджере на редактирование и изменить значение )))
а вообще есть скрипт (его кстати можно создать автоматом из контекстного меню таблицы)

Код:
UPDATE [Схема].[Таблица]
SET Поле = Значение1
WHERE Поле = Значение2
Автор: Futurism
Дата сообщения: 30.01.2014 11:58
BlackVetal
респект , а что насчет как подключит к серверу компонент data engine

Добавлено:
я импортировал свою базу в аксесс в sql server native client 11.0
но не вижу её в списке баз

где стрелка это чужая БД
Автор: BlackVetal
Дата сообщения: 31.01.2014 08:46
Futurism
Чесно сказать никогда не подключал ... но вроде есть импорт данных - вот тут вроде описано как http://technet.microsoft.com/ru-ru/library/ms140052.aspx
Автор: Big17
Дата сообщения: 02.02.2014 12:54
Futurism
Так ведь data engine - это и есть сервер... А к нему уже подключаемся или SQL Server Management Studio или каким-нить сторонним клиентом...
Автор: BlackVetal
Дата сообщения: 03.02.2014 04:16
Big17
Вы путаете с "database engine", а человек спрашивает о подключении к другим БД.
Автор: Big17
Дата сообщения: 03.02.2014 22:41
Futurism
Уточняй проблему, а то мы тут запутались, что нужно )
Автор: RaDeGen
Дата сообщения: 27.02.2014 12:58
Добрый день. Заранее извиняюсь за офтоп. но не подскажите где есть темка по Compas SQL (Компас SQL) Нужно с одного ноута перенести базу на другой ноут, а я в базах "не очень"
Автор: Big17
Дата сообщения: 06.03.2014 16:47
RaDeGen
Точно не здесь.
Автор: TAT664
Дата сообщения: 26.06.2014 11:07
При запуске в Microsoft SQL Server Management Studio Монитора активности ошибка:
Не удается найти идентификатор процесса SQL Server 2616 на сервере ISPROSRV (Microsoft.SqlServer.Management.ResourceMonitoring)
Расположение программы:
в Microsoft.SqlServer.Management.ResourceMonitoring.SqlPerfmonProcessReader.GetSqlProcessCpuUtilization()
в Microsoft.SqlServer.Management.ResourceMonitoring.BackgroundSqlCpuTask.Execute()
в Microsoft.SqlServer.Management.ResourceMonitoring.BackgroundWorkRequest.Execute()
в Microsoft.SqlServer.Management.ResourceMonitoring.BackgroundWorkRequestQueue.BackgroundWorker_DoWork(Object sender, DoWorkEventArgs e)
в System.ComponentModel.BackgroundWorker.OnDoWork(DoWorkEventArgs e)
в System.ComponentModel.BackgroundWorker.WorkerThreadStart(Object argument)

Подскажите пожалуйста, что надо доустановить, чтобы работало?

Автор: BlackVetal
Дата сообщения: 27.06.2014 13:25
TAT664
попробуй посмотреть тут - вроде похожая ситуация ...
http://social.technet.microsoft.com/Forums/ru-RU/8e6ff9fa-ef88-4cc7-84a1-f1dc1f874231/-sql-express-2012?forum=sqlru
Автор: bsd9
Дата сообщения: 06.10.2014 09:33
У меня такой вопрос. Я захотел сделать тестовый сервер приложения в виртуальной среде (Vbox). Так как дистрибутива сервера приложения у меня не было, я завиртуалил свой боевой сервер, подцепил там дубликат базы MS SQL. Обнаружил, что большинство действий в приложении не выполняются, или обрывается по таймауту, или висит с надписями "Загрузка данных".

С этим можно что-то поделать ? Или моя затея глупая ?
Автор: bsd9
Дата сообщения: 06.11.2014 10:34
У меня есть база данных 450 гигабайт, приходиться выполнить REPAIR_ALLOW_DATA_LOSS. Я осознаю, что это самый последний шаг, но у меня нет другого выхода. Как можно оценить время, сколько она будет выполняться ? У меня она "покрутилась" 8,5 часов, после чего я должен был вынужден отменить. Можно ли где-то посмотреть сколько процентов выполнено ? Спасибо.
Автор: mastervigo
Дата сообщения: 06.11.2014 14:32
bsd9

Цитата:
С этим можно что-то поделать ? Или моя затея глупая ?


Тестируй на НОРМАЛЬНОМ компе. У виртуалок все равно есть свои ограничения.

Страницы: 1234567891011121314151617181920212223242526272829

Предыдущая тема: Генератор 10-ти разрядных ключей


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.