有区别吗?我追随服务器的名称,即使它正在实例上运行。
答案 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更可靠。