19:50:03 От Otus Онлайн : Добрый вечер 19:55:13 От Otus Онлайн : скоро начнем 20:00:20 От Смирнов Алексей : времени не хватает) 20:00:21 От Kirill Amurskiy : 8 20:00:26 От Kirill Amurskiy : времени - да 20:00:31 От Kirill Amurskiy : ну это обсуждали уже 20:00:39 От Kirill Amurskiy : на самостоятельную работу надо больше 20:00:53 От Kirill Amurskiy : *больше времени) 20:01:02 От Смирнов Алексей : интересно 20:01:24 От Kirill Amurskiy : задачи хорошие 20:01:56 От Kirill Amurskiy : единственное, мне бы наверное после каждого урока хотелось хотя бы 15 минуть общения с преподавателем голосом 20:02:10 От Kirill Amurskiy : *после выполнения LP 20:02:14 От Kirill Amurskiy : *ДЗ 20:03:05 От Otus Онлайн кому Kirill Amurskiy и все члены группы : https://ru.wikipedia.org/wiki/Хранимая_процедура 20:03:53 От Смирнов Алексей : я с планшета, поэтому 4 20:03:55 От SergeyProkopchuk : 4 20:03:56 От Kirill Amurskiy : 4 20:04:01 От prib : 4 20:04:08 От Kirill Amurskiy : лучше вникать в то, что преподаватель говорит и объясняет 20:04:10 От Джони кому Ведущие вебинара и участники : 4 20:04:52 От Kirill Amurskiy : по идее должна работать как прекомпилированный запрос 20:04:53 От prib : она кэшируется 20:05:20 От Kirill Amurskiy : т.е. можно считать, что по производительности отличий нет 20:06:18 От Kirill Amurskiy : зависит от процедуры) 20:06:36 От Kirill Amurskiy : но можно в процедуру спрятать 10 запросов, тогда разумеется будет в 10 раз меньше трафиик 20:07:13 От Kirill Amurskiy : а в чем отличие от скорости работы? 20:08:20 От Kirill Amurskiy : а когда план вычисляется? 20:08:26 От Kirill Amurskiy : (будем обсуждать сегодня?) 20:08:54 От prib : по-моему, нет разницы каким клиентом вызвать 20:09:22 От Kirill Amurskiy : у меня, например, нет четкого понимания, когда план обновляется для запроса и для процедуры 20:09:52 От Kirill Amurskiy : от кода клиентского приложения не зависит 20:11:08 От Kirill Amurskiy : 100? 20:11:16 От Kirill Amurskiy : как у рекурскии 20:11:29 От Алексей Демиденко : 10 20:11:36 От Otus Онлайн кому Kirill Amurskiy и все члены группы : 32 20:12:17 От Kirill Amurskiy : ну более безопасны, чем просто запросы 20:12:28 От prib : иньекции невозможны 20:12:28 От Джони кому Ведущие вебинара и участники : безопасны 20:15:22 От Kirill Amurskiy : скрывает от клиента структуру БД 20:15:33 От Kirill Amurskiy : т.о. делает его независимым от структуры 20:15:48 От Kirill Amurskiy : наверное нет) 20:16:01 От Kirill Amurskiy : ну как то бессмыслено по ощуещениям 20:21:57 От Otus Онлайн кому Kirill Amurskiy и все члены группы : CLR 20:24:29 От Otus Онлайн кому Kirill Amurskiy и все члены группы : CREATE PROCEDURE #uspMyTempProcedure AS BEGIN print 'This is a temporary procedure' END select * from tempdb..sysobjects where id = OBJECT_ID(N'tempdb..#myProc', 'P') 20:24:47 От Otus Онлайн кому Kirill Amurskiy и все члены группы : sp_ 20:26:43 От Kirill Amurskiy : вопрос не по теме, зачем писать GO? 20:27:02 От Kirill Amurskiy : у меня оно просто не работает в студии 20:27:15 От Kirill Amurskiy : ну это с предыдущих занятий 20:27:16 От Kirill Amurskiy : да 20:28:07 От Otus Онлайн кому Kirill Amurskiy и все члены группы : vagrant 20:28:31 От Джони кому Ведущие вебинара и участники : вы опять пишет не в общий чат 20:28:46 От Алексей Демиденко : а я один в чате вижу только сообщения от участников? 20:28:50 От Otus Онлайн кому Ведущие вебинара и участники : а сейчас? 20:29:06 От Смирнов Алексей : - 20:29:07 От SergeyProkopchuk : - 20:29:08 От prib : - 20:29:09 От Алексей Демиденко : - 20:29:18 От Otus Онлайн : поменя на ведущим вебинара 20:29:23 От Алексей Демиденко : + 20:29:23 От SergeyProkopchuk : + 20:29:24 От prib : + 20:29:25 От Сергей : + 20:29:25 От Kirill Amurskiy : + 20:29:27 От Джони : да 20:29:34 От Джони : нет 20:29:35 От Алексей Демиденко : ни одного с кодом не было 20:29:36 От Смирнов Алексей : - 20:29:37 От prib : нет 20:30:02 От Otus Онлайн : CREATE PROCEDURE #uspMyTempProcedure AS BEGIN print 'This is a temporary procedure' END select * from tempdb..sysobjects where id = OBJECT_ID(N'tempdb..#myProc', 'P') 20:30:08 От Алексей Демиденко : + 20:30:10 От Джони : + 20:30:10 От Смирнов Алексей : да 20:30:12 От prib : = 20:30:15 От prib : + 20:30:17 От Сергей : + 20:33:17 От Джони : а пример? 20:34:09 От Otus Онлайн : “=” и “<>” 20:34:27 От Джони : ну ок 20:36:13 От Otus Онлайн : SET ANSI_NULLS ON 20:38:15 От prib : нет необходимсоти 20:38:21 От Kirill Amurskiy : а не будет приложенного документа со всеми исходниками с занятия? 20:38:27 От SergeyProkopchuk : 32 20:38:37 От Otus Онлайн : SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO -- ============================================= -- Author: Ржевский Михаил -- Create date: 28/03/2019 -- Description: Моя первая процедура -- ============================================= CREATE PROCEDURE Application_People -- Add the parameters for the stored procedure here @FullName nvarchar(50), @SearchName nvarchar(50) AS BEGIN -- SET NOCOUNT ON added to prevent extra result sets from -- interfering with SELECT statements. SET NOCOUNT ON; -- Insert statements for procedure here SELECT FullName, SearchName FROM Application.People WHERE FullName = @FullName AND SearchName = @SearchName AND IsEmployee =1; END GO 20:38:40 От Kirill Amurskiy : на других занятиях такое делают, очень удобно 20:39:00 От Kirill Amurskiy : + 20:40:27 От Kirill Amurskiy : экранировать что значит? (часто значит что-то разное) 20:41:11 От Otus Онлайн : USE WideWorldImporters; GO CREATE PROCEDURE Application_People @FullName nvarchar(50), @SearchName nvarchar(50) AS SET NOCOUNT ON; SELECT FullName, SearchName FROM Application.People WHERE FullName = @FullName AND SearchName = @SearchName AND IsEmployee =1; GO 20:41:43 От Otus Онлайн : -- EXECUTE 20:46:01 От Otus Онлайн : ---- 20:46:03 От Otus Онлайн : IF OBJECT_ID ( 'Purchasing.uspVendorAllInfo', 'P' ) IS NOT NULL DROP PROCEDURE Purchasing.uspVendorAllInfo; GO CREATE PROCEDURE Purchasing.uspVendorAllInfo WITH EXECUTE AS CALLER AS SET NOCOUNT ON; SELECT s.SupplierName AS Vendor, si.StockItemName AS 'Product name' FROM Purchasing.PurchaseOrderLines o --purchare line INNER JOIN Warehouse.StockItems si --item ON si.StockItemID = o.StockItemID INNER JOIN Purchasing.Suppliers s --supplier ON s.SupplierID = si.SupplierID ORDER BY s.SupplierName ASC; GO 20:46:09 От Kirill Amurskiy : а как оно с правами справляется? 20:46:46 От Kirill Amurskiy : т.е. у моей учетки должен быть доступ к процедуре, я ее вызываю, а она выполняется от учетки к которой у меня доступа нет? 20:48:26 От Kirill Amurskiy : нет) 20:48:33 От Kirill Amurskiy : не очень понятно когда это надо, пример 20:50:03 От Kirill Amurskiy : наверное 20:50:13 От Kirill Amurskiy : ну если это типичный сценарий использования, то да 20:50:18 От Kirill Amurskiy : из жизни, что называется 20:50:27 От Kirill Amurskiy : какую проблему эта инструкция решает 20:50:47 От Kirill Amurskiy : а как? 20:50:53 От Kirill Amurskiy : у меня же прав не хватает 20:52:17 От prib : еще можно закрыть юзеру права на таблички, а на исполнение определнных процедур дать 20:52:43 От prib : и в процедуре нужно будет execute as 20:53:36 От Kirill Amurskiy : - 20:53:37 От Kirill Amurskiy : )) 20:53:45 От Kirill Amurskiy : можно звук? 20:57:48 От prib : я так понимаю, создает процедуру админ от своего имени, и дает права на исполнение этой процедуры на исполнение юзеру, ограниченному в правах 21:00:29 От Алексей Демиденко : ну изначально было непонимание, потому что изначально я тоже подумал, что можно в любую базу зайти и вызывать ХП называясь админом 21:00:53 От Алексей Демиденко : ну теперь понятно) 21:01:42 От Алексей Демиденко : ну больше применимо чтобы всем роли не давать, а накинуть одну и к ней доступ давать 21:01:43 От Алексей Демиденко : по идее 21:03:16 От Алексей Демиденко : фантомный пользователь) 21:06:36 От Otus Онлайн : SELECT name AS procedure_name ,SCHEMA_NAME(schema_id) AS schema_name ,type_desc ,create_date ,modify_date FROM sys.procedures; 21:06:56 От Otus Онлайн : --- DROP PROCEDURE ; GO 21:10:23 От Kirill Amurskiy : они как по таймеру работают? 21:12:01 От Otus Онлайн : -- sp_procoption 21:13:12 От Otus Онлайн : -- USE AdventureWorks2012; GO EXEC sp_procoption @ProcName = '' , @OptionName = ] 'startup' , @OptionValue = 'on'; 21:13:30 От Otus Онлайн : -- 21:13:31 От Otus Онлайн : USE AdventureWorks2012; GO EXEC sp_procoption @ProcName = '' , @OptionValue = 'off'; 21:13:55 От Otus Онлайн : OUTPUT 21:14:16 От Otus Онлайн : ---