Считать хранимые процедуры в базе данных?

Вам также нужно использовать datetimeoffset для предложения where.

Сначала создайте и заполните образец таблицы ( Пожалуйста, сохраните нам этот шаг в ваших будущих вопросах):

DECLARE @T AS TABLE
(
    DTO_Created DateTimeOffset
)

INSERT INTO @T(DTO_Created) VALUES
('2017-04-28 03:16:56.942 -05:00'),
('2017-05-01 00:20:54.925 -05:00'),
('2017-05-01 12:17:52.752 -05:00'),
('2017-05-01 23:21:00.198 -05:00'),
('2017-05-02 01:19:23.254 -05:00')

Запрос:

SELECT *
FROM @T 
WHERE DTO_Created >= '2017-05-01 00:00:00.000 -05:00'
AND DTO_Created < '2017-05-02 00:00:00.000 -05:00'

Результаты :

DTO_Created
2017-05-01 00:20:54.925 -05:00
2017-05-01 12:17:52.752 -05:00
2017-05-01 23:21:00.198 -05:00

Другой вариант для версии 2016 или выше - использовать AT TIME ZONE , но вам нужно будет добавить разницу в часах к значению поиска и остерегаться перехода на летнее время. время:

SELECT *
FROM @T 
WHERE DTO_Created >= CAST('2017-05-01 05:00:00' AS DateTime2) AT TIME ZONE 'Easter Island Standard Time' -- -05:00
AND  DTO_Created < CAST('2017-05-02 05:00:00' AS DateTime2) AT TIME ZONE 'Easter Island Standard Time' 

Если вы хотите игнорировать местное время и рассматривать UTC-часть DateTimeOffset, как если бы это было DateTime, вы можете просто привести DateTimeOffset к Date, хотя это будет предикатом без sargable :

SELECT *
FROM @T
WHERE CAST(DTO_Created As Date) = '2017-05-01'

5
задан Belial09 5 March 2013 в 15:03
поделиться

7 ответов

Select count(*) from sysobjects where xtype = 'P'
12
ответ дан 18 December 2019 в 06:52
поделиться

Это исключит тех, которые иногда создаются при использовании инструмента схематического изображения (они запустят с dt _),

SELECT * FROM information_schema.routines
WHERE OBJECTPROPERTY(OBJECT_ID(SPECIFIC_NAME),'IsMSShipped') =1
AND  routine_type = 'PROCEDURE'
1
ответ дан 18 December 2019 в 06:52
поделиться

можно хотеть исключить системные хранимые процедуры из количества

Один путь состоял бы в том, чтобы звонить:

select count(*) from sysobjects 
    where xtype = 'P'
    and category = 0
    and left(name,2) <> 'sp'

Это предполагает, что Вы не снабжаете префиксом свои процедуры SP

2
ответ дан 18 December 2019 в 06:52
поделиться

Вам нужно столько, сколько Ваше приложение требует. Хранение процедур, маленьких и простых, является хорошей вещью.

Если Вы используете sql 2005, визуальный способ видеть, что Ваше количество proc состоит в том, чтобы перейти в SSMS к Вашему узлу хранимой процедуры под программируемостью. Нажмите View-Object Details, и количество объектов будет отображено справа.

1
ответ дан 18 December 2019 в 06:52
поделиться

Если Вы используете их, то действительно нет такой вещи как "слишком многие".

У меня был разработчик, заинтересованный его сохраненный procs, использовали слишком много пространства в базе данных, таким образом, я должен был на самом деле вычислить, общий РАЗМЕР всех сохранил procs. Хороший ответ для этого здесь. Результат был то, что размер сохраненного procs вместе был ответственен за, возможно.001% общего размера базы данных.

0
ответ дан 18 December 2019 в 06:52
поделиться

Ниже запрос, который можно использовать:

 select count(*) from sysobjects where xtype='P'

Если весь Ваш доступ дб получает мандат быть через SP, то небо является пределом.

1
ответ дан 18 December 2019 в 06:52
поделиться
Select count(1) from information_schema.routines
where routine_type = 'PROCEDURE'
6
ответ дан 18 December 2019 в 06:52
поделиться
Другие вопросы по тегам:

Похожие вопросы: