1
156
这里的代码将为您提供IP地址; 这将适用于对SQL2008和更新版本的远程客户端请求。 如果您允许共享内存连接,那么在服务器本身上运行上面的命令
“client\u net\u address”是发出请求的计算机的地址,而“local\u net\u address”则是SQL server(因此在共享内存连接上为空),如果某人由于某种原因无法使用服务器的NetBios名称或FQDN,则您将为其提供地址。 this answer . 在生产SQL Server上启用shell输出是一个非常糟糕的主意。 |
2
35
您可以通过以下方式获取[hostname]\[instancename]:
要在使用hostname\instance name格式时仅获取主机名,请执行以下操作:
或者,正如@GilM所指出的:
您可以使用以下命令获取实际IP地址:
|
3
21
服务器可能有多个它正在侦听的IP地址。如果您的连接已被授予“查看服务器状态服务器”权限,则可以运行此查询以获取已连接到SQL SERVER的地址:
此解决方案不需要您通过xp\u cmdshell向外发布到操作系统,这是一种应该在生产服务器上禁用(或至少严格保护)的技术。它可能要求您将视图服务器状态授予相应的登录名,但这比运行xp\u cmdshell的安全风险要小得多。
|
4
11
大多数通过t-sql获取IP地址的解决方案分为以下两个阵营:
我不喜欢选项1。启用xp\u cmdshell有安全缺陷,而且需要进行大量解析。那太麻烦了。选项2非常优雅。而且它是一个纯t-sql解决方案,我几乎总是更喜欢它。下面是选项2的两个示例查询:
不过,有时上述两种查询都不起作用。如果通过共享内存连接(在SQL主机上登录并运行SSMS),查询#1将返回NULL。如果没有使用非共享内存协议的连接,查询#2可能不返回任何内容。当连接到新安装的SQL实例时,可能会出现这种情况。解决方案是什么?通过TCP/IP强制连接。为此,请在SSMS中创建一个新连接,并在服务器名称中使用“tcp:”前缀。然后重新运行任一查询,您将获得IP地址。
|
5
8
在房间里 @@SERVERNAME 变量;
|
6
8
--试试这个剧本,它适合我的需要。重新格式化以阅读它。
|
7
7
您可以使用命令行查询并在mssql中执行:
|
8
4
|
9
2
不使用\InstanceName获取计算机名的更简单方法是:
|
10
1
|
11
0
可以使用host\u name()函数
|
12
0
请使用此查询:
|
Community wiki · SQL语法新手 1 年前 |
KateMak · 是否将多行中的多列与唯一id组合? 1 年前 |
Karuna · SQL中列内的筛选器[重复] 1 年前 |
Irvan Affandy · 为另一个选择选择声明的键 1 年前 |
Community wiki · 这个MySQL语句出了什么问题? 1 年前 |
Community wiki · 优化从同一表中提取的多列的查询 1 年前 |