SERVERPROPERTY('MACHINENAME')和HOS​​T_NAME()之间的区别是什么?

时间:2011-09-06 23:49:33

标签: sql sql-server sql-server-2005

有区别吗?我追随服务器的名称,即使它正在实例上运行。

2 个答案:

答案 0 :(得分:6)

HOST_NAME()是客户端的名称。因此,如果从工作站上的SSMS检索值,它将是工作站的名称,而如果从服务器上的SSMS运行命令,则它将是服务器的名称。

此外,如果服务器是群集的,您是否需要虚拟SQL Server名称或当前活动节点的物理名称?如果你想要后者:

SELECT SERVERPROPERTY('ComputerNamePhysicalNetBIOS');

答案 1 :(得分:3)

计算机是SQL,但在此处更深入:http://msdn.microsoft.com/en-us/library/ms174396.aspx,主机名在此处:http://msdn.microsoft.com/en-us/library/ms178598.aspx

区别在于: HOST:

Important

The client application provides the workstation name and can provide inaccurate data. Do not rely upon HOST_NAME as a security feature.

Examples

--------------------------------------------------------------------------------

The following example creates a table that uses HOST_NAME() in a DEFAULT definition to record the workstation name of computers that insert rows into a table recording orders.

Copy


CREATE TABLE Orders
   (OrderID     int        PRIMARY KEY,
    CustomerID  nchar(5)   REFERENCES Customers(CustomerID),
    Workstation nchar(30)  NOT NULL DEFAULT HOST_NAME(),
    OrderDate   datetime   NOT NULL,
    ShipDate    datetime   NULL,
    ShipperID   int        NULL REFERENCES Shippers(ShipperID));
GO

机:

复制

SELECT
SERVERPROPERTY('ProductVersion') AS ProductVersion,
SERVERPROPERTY('ProductLevel') AS ProductLevel,
SERVERPROPERTY('Edition') AS Edition,
SERVERPROPERTY('EngineEdition') AS EngineEdition;
GO

正如您所看到的,为此使用serverprop.machine更可靠。

相关问题