OBJECT_ID объекта в другой базе данных - как найти базу данных ID или назвать/полностью определить имя объекта?

При реальной необходимости в параллелизме в Ruby для Производственной системы уровня (где Вы не можете использовать бету), процессы являются, вероятно, лучшей альтернативой.
, Но, совершенно определенно стоит попробовать потоки под JRuby сначала.

Также, если Вы интересуетесь будущим поточной обработки под Ruby, Вы могли бы найти этот статья полезный.

14
задан Cade Roux 3 December 2009 в 22:16
поделиться

3 ответа

Правильно ли я понимаю, что вам нужен идентификатор базы данных для AnotherDB?

SELECT *
FROM    master..sysdatabases
WHERE   name = 'AnotherDB'

В противном случае вы можете ИСПОЛЬЗОВАТЬ другие базы данных в динамическом SQL, если это помогает:

DECLARE @SQL    NVARCHAR(MAX)
,   @objId  INT

SET @SQL = N'
    USE AnotherDB

    SELECT  @id = OBJECT_ID(''customer'')
'

EXEC SP_EXECUTESQL @SQL
    ,   N'@id INT OUTPUT'
    ,   @id = @objId OUTPUT

SELECT  @objId

ИЛИ Выполнить SP в других базах данных с:

EXEC AnotherDB.dbo.ProcedureName 
      @paramX = ...
,     @paramY = ...
10
ответ дан 1 December 2019 в 07:12
поделиться

У вас должно получиться следующее:

SELECT
   name
FROM
    AnotherDB.sys.objects   --changes context
WHERE
    object_id = OBJECT_ID('AnotherDB.ASchema.ATable')

Это то, что вы фактически делаете с OBJECT_ID ('AnotherDB.ASchema.ATable')

Это означает, что вы можете положиться на на dbname.sys.objects и избегайте путаницы с функциями метаданных.

Примечание: новые представления каталога предназначены для использования и не меняются от версии к версии, согласно ссылке. Раньше использование системных таблиц считалось плохой практикой, но клеймо все еще остается. Таким образом, вы можете спокойно полагаться на sys.objects, а не на функции метаданных.

21
ответ дан 1 December 2019 в 07:12
поделиться

Взгляните на функцию PARSENAME в TSQL - она ​​позволит вам извлечь любую из четырех частей полностью (или неполного) квалифицированного имени. . Для базы данных в вашем примере:

select parsename('AnotherDB.ASchema.ATable',3)

возвращает:

AnotherDB

select parsename('AnotherDB.ASchema.ATable',2)

возвращает:

ASchema

Если не полностью определено, вы получите нулевые результаты, если запросите часть имени, которая не входит в строку:

select parsename('ASchema.ATable',3)

возвращает:

NULL

5
ответ дан 1 December 2019 в 07:12
поделиться
Другие вопросы по тегам:

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