如何从存储过程中获取数据库服务器的名称?

时间:2010-01-11 22:01:40

标签: sql-server stored-procedures

我正在我的程序中创建完整的连接字符串,并希望在其中注入数据库服务器的名称。有什么方法我可以从里面检测到这个名字,或者我注定要传递它?

2 个答案:

答案 0 :(得分:4)

使用SERVERPROPERTY

  • SERVERPROPERTY('MachineName'):SQL Server主机名的名称,支持群集
  • SERVERPROPERTY('ComputerNamePhysicalNetBIOS'):物理机器名称的名称。在群集中,是当前活动节点的名称。在独立安装上,与MachineName
  • 相同
  • SERVERPROPERTY('InstanceName'):当前SQL Server实例的名称。默认为NULL。

我建议反对的一件事是可怕的@@ SERVERNAME。此属性因机器重命名后与现实不同步而臭名昭着。我已经看到太多的应用程序烧毁这个问题,以对它施加任何信任。正确的重命名程序在BOL中,但很少使用它:How to: Rename a Computer that Hosts a Stand-Alone Instance of SQL Server

答案 1 :(得分:2)

因此,对于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