Обновленный ответ
Вот сценарий, который я нашел в http://weblogs.sqlteam.com/peterl/archive/2008/07/16/How-to-get-IP-address.aspx с некоторыми изменениями, которые лучше соответствуют вашим потребностям:
DECLARE @TargetIpAddress varchar(15);
SET @TargetIpAddress = '127.0.0.1'; --<== The IP address of the server you want.
DECLARE @Interfaces TABLE
(
RowID int IDENTITY(0, 1)
,Interface char(38)
,IP varchar(15)
);
INSERT @Interfaces ( Interface )
EXEC master..xp_regenumkeys N'HKEY_LOCAL_MACHINE',
N'System\CurrentControlSet\Services\TcpIP\Parameters\Interfaces';
DECLARE @RowID int
,@IP varchar(15)
,@Key nvarchar(200);
SELECT @RowID = MAX(RowID)
FROM @Interfaces;
WHILE @RowID >= 0
BEGIN
SELECT @Key = N'System\CurrentControlSet\Services\TcpIP\Parameters\Interfaces\' + Interface
FROM @Interfaces
WHERE RowID = @RowID;
EXEC master..xp_regread N'HKEY_LOCAL_MACHINE', @Key, N'DhcpIPAddress', @IP OUTPUT;
IF @IP <> '0.0.0.0'
UPDATE @Interfaces
SET IP = @IP
WHERE RowID = @RowID;
SET @RowID = @RowID - 1;
END;
IF NOT EXISTS (SELECT IP FROM @Interfaces WHERE IP = @TargetIpAddress)
BEGIN
DECLARE @ErrorMessage varchar(2000);
SET @ErrorMessage = 'This is not the correct server. This server does not have an IP address of %s.';
SET @TargetIpAddress = ISNULL(@TargetIpAddress, 'NULL');
RAISERROR(@ErrorMessage, 16, 1, @TargetIpAddress);
END
-- The rest of the script...
Оригинальный ответ
Похоже, что с использованием имени Server \ Instance вместо IP-адреса будет легче работать и будет меньше шансов сломаться, если серверу (-ам) будут назначены другие IP-адреса позднее.
-- You can get the instance name like this:
SELECT @@SERVERNAME +'\'+ @@SERVICENAME AS 'Instance';
-- Although, you might prefer this instead:
SELECT CAST(SERVERPROPERTY('MachineName') AS nvarchar(128))
+COALESCE('\'+CAST(SERVERPROPERTY('InstanceName') AS nvarchar(128)), '');
-- NetBIOS name of the local computer on which the instance of SQL Server
-- is currently running.
-- If the instance of SQL Server is in a failover cluster and you want to obtain
-- the name of the failover clustered instance, use the MachineName property.
SELECT SERVERPROPERTY('ComputerNamePhysicalNetBIOS');
Подробную информацию о функции СЕРВЕРСВОЙСТВА можно найти на странице MSDN: SERVERPROPERTY (Transact-SQL) < / а>. Хотя эта функция не предоставляет никакого способа получить IP-адрес сервера / экземпляра - нет встроенной функции, предоставляющей эту информацию.
person
Alexander
schedule
04.11.2012
ipconfig
в наиболее популярном ответе. Но если вы напишете ответ со ссылкой на stackoverflow.com/a/9622810/1346705, я проголосую за него. Во всяком случае, это был скорее побочный вопрос. Я собираюсь обновить вопрос. - person pepr   schedule 05.11.2012