Мне нужно создать SQL-скрипт, чтобы определить, существует ли последовательность в базе данных SQL Server 2012. Я знаком с процессом определения, существует ли хранимая процедура, но не последовательность. Спасибо.Как определить, существует ли последовательность в SQL Server 2012?
ответ
Сценарий для определения того, является ли exquence exis ts в SQL Server 2012 очень похож на проверку хранимых процедур. Рассмотрим следующий код, который проверяет, если хранимая процедура существует:
SELECT *
FROM sys.objects
WHERE object_id = OBJECT_ID(N'[dbo].[SProc_Name]') AND type IN (N'P', N'PC')
Значения «P» и «PC» для типа указать тип sys.object является SQL хранимых процедур или собрание (CLR) хранимой процедуры. Для проверки последовательности, вам просто нужно изменить его на «SO», который указывает на то, что это последовательность объекта:
SELECT *
FROM sys.objects
WHERE object_id = OBJECT_ID(N'[dbo].[Sequence_Name]') AND type = 'SO'
Например, если вы хотите создать последовательность, если она не существует, то вы могли бы используйте следующий код:
IF NOT EXISTS(SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[Sequence_Name]') AND type = 'SO')
CREATE SEQUENCE [dbo].[Sequence_Name]
AS [bigint]
START WITH 1
INCREMENT BY 1
MINVALUE 1
MAXVALUE 9223372036854775807
CACHE 3
GO
Надеюсь, это поможет!
Проверив данные в sys.sequences таблицы:
select *
from sys.sequences
where object_id = object_id('schema_name.sequence_name')
на самом деле, что, если вы уверены, что нет ни одного объекта, кроме последовательности с именем равно 'schema_name.sequence_name'
, вы могли бы просто проверить object_id('schema_name.sequence_name') is not null
Попробуйте это. Это будет отображать все последовательности для данной базы данных.
SELECT
seq.name AS [Sequence Name],
seq.object_id AS [Object ID],
seq.create_date AS [Creation Date],
seq.modify_date AS [Last Modified Date],
SCHEMA_NAME(seq.schema_id) AS [Schema],
CAST(seq.precision AS int) AS [Numeric Precision],
CAST(seq.scale AS int) AS [Numeric Scale],
ISNULL(seq.start_value,N'''') AS [Start Value],
ISNULL(seq.increment,N'''') AS [Increment Value],
ISNULL(seq.minimum_value,N'''') AS [Min Value],
ISNULL(seq.maximum_value,N'''') AS [Max Value],
CAST(seq.is_cycling AS bit) AS [Is Cycle Enabled],
ISNULL(seq.cache_size,0) AS [Cache Size],
ISNULL(seq.current_value,N'''') AS [Current Value]
FROM sys.sequences AS seq
Это еще один ярлык версии Tim S:
IF OBJECT_ID('schema_name.sequence_name', 'SO') IS NOT NULL
BEGIN
DROP SEQUENCE schema_name.sequence_name
END
Я использую SQL Server 17.4 (Последняя версия MS SQL Sever) и этот код работает со мной. Этот код, например, создает последовательность, если она не существует.
IF NOT EXISTS
(
SELECT [name]
FROM sys.sequences
WHERE [name] = 'seq_businessTripRequest'
)
BEGIN
CREATE SEQUENCE [dbo].[seq_businessTripRequest]
AS [BIGINT]
START WITH 1
INCREMENT BY 1
MINVALUE-9223372036854775808
MAXVALUE 9223372036854775807
CACHE;
END;
- 1. SQL Server 2012 Последовательность объектов
- 2. Как определить, существует ли роль базы данных в SQL Server?
- 3. определить строку подключения SQL Server 2012
- 4. SQL Server: как определить, существует ли значение для строки
- 5. Последовательность на созданной таблицы в SQL Server 2012
- 6. SQL Server 2012 - синонимы
- 7. SQL Server 2012 Память
- 8. Как определить треугольник с помощью SqlGeometry в SQL Server 2012
- 9. Последовательность SQL Server
- 10. Подпроцессы SQL Server 2012
- 11. последовательность обновления в SQL Server
- 12. Установка SQL Server 2012
- 13. Как определить дату истечения срока действия SQL Server Enterprise 2012?
- 14. Можно ли как-то реплицировать из SQL Server 2012 Express на SQL Server 2012 Express?
- 15. SQL Server 2012 Trigger
- 16. SQL Server 2012 smo
- 17. SQL Server 2012 JOIN
- 18. Как проверить, существует ли ограничение SQL Server?
- 19. Поддерживает ли SQL Server 2012 аутентификацию Kerberos?
- 20. SQL Server 2012 Constraint
- 21. SQL Server 2012 Count
- 22. SQL Server 2012 slow
- 23. SQL Server 2012 - Hanging
- 24. SQL Server 2012 Trigger
- 25. Ошибка SQl Server 2012
- 26. Удаление SQL Server 2012
- 27. SQL Server 2012 Разбивка
- 28. SQL Server 2012 Pivot
- 29. SQL Server 2012 Query
- 30. SQL Server 2012 IsDate()
Это то, что мне нужно. Спасибо. –
Начиная с SQL Server 2005 предпочтительнее использовать ** более целенаправленные ** представления каталога, такие как 'sys.sequences', а не запрашивать« catch-all »' sys.objects' и запоминать необходимый тип 'type' для вашего объекта ... –
хороший пример .. Я узнал новую вещь в sql2012 –