Как я могу получить имя сервера базы данных из хранимой процедуры? - PullRequest
0 голосов
/ 12 января 2010

Я делаю полные строки подключения внутри моей процедуры и хотел бы ввести в них имя сервера базы данных. Есть ли способ, которым я могу обнаружить имя изнутри или я обречен на его передачу?

Ответы [ 2 ]

4 голосов
/ 12 января 2010

Использование SERVERPROPERTY :

  • SERVERPROPERTY('MachineName'): имя хоста SQL Server, с учетом кластера
  • SERVERPROPERTY('ComputerNamePhysicalNetBIOS'): имя физического компьютера. В кластере - это имя текущего активного узла. На автономной установке идентично MachineName
  • SERVERPROPERTY('InstanceName'): имя текущего экземпляра SQL Server. NULL по умолчанию.

Одна вещь, которую я бы рекомендовал против , - это страшная @@ SERVERNAME. Это свойство печально известно тем, что оно перестало синхронизироваться с реальностью после переименования машины. Я видел слишком много приложений, сожженных этой проблемой, чтобы доверять ей. Правильная процедура переименования в BOL, но немногие используют ее правильно: Как: переименовать компьютер, на котором установлен автономный экземпляр SQL Server .

2 голосов
/ 12 января 2010

Итак, для MS SQL Server вы можете:

SELECT @@SERVERNAME

Для MySQL это

SELECT variable_value as servername
FROM information_schema.global_variables
WHERE variable_name = 'hostname';

Для Oracle это:

SELECT global_name FROM global_name
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...