Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Лабораторные работы №1-2

.docx
Скачиваний:
2
Добавлен:
18.11.2022
Размер:
490.62 Кб
Скачать

Оглавление

Лабораторная работа №1 1

Упражнение 1 1

Упражнение 2 3

Архитектурная модель решения задачи 3

Лабораторная работа №2 4

Упражнение 1 4

Упражнение 2 6

Архитектурная модель решения задачи 9

Лабораторная работа №1

Упражнение 1

Руководство железнодорожной станции в одном из городов ведёт отчётность пассажирам, которые прибыли на станцию. Однако в результате несчастного случая, данные были удалены. Так как отчётный период подходит к концу, данные нужны срочно. Информация о пассажирах хранится в центральном офисе в другом городе. В силу срочности необходимо использовать нерегламентированный запрос.

По умолчанию нерегламентированные запросы запрещены. Для того чтобы их использовать необходимо включить их в разделе Аспекты:

Код запроса:

SELECT a.*

FROM OPENROWSET('SQLNCLI', 'Server=LAPTOP-NN3TIUA3;Trusted_Connection=yes;',

'SELECT b.[Регистрационный номер],[ФИО пассажира] FROM [Железнодорожная касса].dbo.Пассажир b

inner join [Железнодорожная касса].dbo.Билет on b.[Регистрационный номер]=Билет.[Регистрационный номер] where [Номер поезда]=126') AS a;

Результат:

После выполнения запроса для соблюдения норм безопасности возможность использования нерегламентированных запросов следует отключить:

Упражнение 2

Руководство железнодорожной станции в одном из городов ведёт отчётность по пассажирам, которые прибыли на станцию. Однако в результате несчастного случая, данные были удалены. Так как отчётный период подходит к концу, данные нужны срочно. Информация о пассажирах хранится в центральном офисе в другом городе. В силу срочности необходимо использовать нерегламентированный запрос.

Код запроса:

SELECT b.[Регистрационный номер],[ФИО пассажира],Класс

FROM OPENDATASOURCE('MSOLEDBSQL', 'Data Source=LAPTOP-NN3TIUA3;Integrated Security=SSPI')

.[Железнодорожная касса].dbo.Пассажир b

inner join OPENDATASOURCE('MSOLEDBSQL', 'Data Source=LAPTOP-NN3TIUA3;Integrated Security=SSPI').[Железнодорожная касса].dbo.Билет с on b.[Регистрационный номер]=с.[Регистрационный номер] where [Номер поезда]=228

Результат:

Архитектурная модель решения задачи

Лабораторная работа №2

Упражнение 1

Руководство железнодорожной станции ведёт отчётность о прибыльности продаж билетов в их направлении. Данные о продажах хранятся на сервере в центральном офисе в другом городе. Так как отчёты необходимо составлять каждый месяц, необходим связанный сервер.

Чтобы установить связь с сервером центрального офиса необходимо создать связанный сервер, для этого нужно совершить правый щелчок мыши по «Объекты сервера», в появившемся меню выбрать «Создать» и затем «Связанный сервер…».

В диалоговом окне «Создание связанного сервера» необходимо ввести имя создаваемого связанного сервера, и в списке переключателей «Тип сервера» выбрать положение «Сервер SQL Server».

Далее на вкладке «Безопасность» в списке переключателей «Соединения для имен, отсутствующих в списке выше» необходимо выбрать положение «Устанавливать с использованием текущего контекста безопасности имени входа».

После этого нажимаем кнопку «ОК».

Код запроса:

select [Название поезда] as Направление,sum([Цена билета]) as Прибыль

from [LAPTOP-NN3TIUA3].[Железнодорожная касса].dbo.Поезд p

inner join [LAPTOP-NN3TIUA3].[Железнодорожная касса].dbo.Билет b on

b.[Номер поезда]=p.[Номер поезда]

where b.[Номер поезда]=126 and Datepart(Month,b.[Дата отправления])=03

group by [Название поезда]

Результат:

Упражнение 2

Руководство железнодорожной станции ведёт отчётность о прибыльности продаж билетов в их направлении от каждого пассажира. Данные о продажах хранятся на сервере в центральном офисе в другом городе. Так как отчёты необходимо составлять каждый месяц, необходим связанный сервер с использованием вызовов удалённых процедур (RPC).

По умолчанию использование RPC отключено, эту функцию можно включить 2 способами:

1. Необходимо подключится к серверу клиента и выполнить следующий код Transact-SQL:

Exec master.dbo.sp_serveroption @server=N'LAPTOP-NN3TIUA3',@optname=N'rpc',

@optvalue=N'true'

go

Exec master.dbo.sp_serveroption @server=N'LAPTOP-NN3TIUA3',@optname=N'rpc out',

@optvalue=N'true'

Go

2. В разделе «Аспекты» связанного сервера необходимо изменить значение полей «Rpc» и «RpcOut» с false на true:

Код хранимой процедуры:

create procedure Pass_prib

@c smallint

as

select [ФИО Пассажира],[Название поезда] as Направление,sum([Цена билета]) as Прибыль

from Поезд

inner join Билет on

Билет.[Номер поезда]=Поезд.[Номер поезда]

inner join Пассажир on

Билет.[Регистрационный номер]=Пассажир.[Регистрационный номер]

where Билет.[Номер поезда]=126 and Datepart(Month,[Дата отправления])=@c

group by [Название поезда],[ФИО пассажира]

go

Код запроса:

exec [LAPTOP-NN3TIUA3].[Железнодорожная касса].dbo.Pass_prib 03

Результат:

После выполнения запроса для соблюдения норм безопасности возможность использования RPC следует отключить, это также можно выполнить 2 способами:

1. Необходимо подключится к серверу клиента и выполнить следующий код Transact-SQL:

Exec master.dbo.sp_serveroption @server=N'LAPTOP-NN3TIUA3',@optname=N'rpc',

@optvalue=N'false'

go

Exec master.dbo.sp_serveroption @server=N'LAPTOP-NN3TIUA3',@optname=N'rpc out',

@optvalue=N'false'

Go

2. В разделе «Аспекты» связанного сервера необходимо изменить значение полей «Rpc» и «RpcOut» с true на false:

Архитектурная модель решения задачи