【发布时间】:2019-03-16 10:53:09
【问题描述】:
我在 sql server 中有一个表,其中包含域中的计算机列表。它有一个名为FQDN 的列,其中包含计算机的名称。我为 IP 添加了一列nvarchar(稍后我将对其进行格式化)。我想知道是否可以创建一个函数来根据名称列中的名称从 dns 中获取它们,而不是手动填充 ip。例如,在 powershell 中,如果我输入 [System.Net.Dns]::GetHostAddresses("yourhosthere").ipaddresstostring 并将其存储在一个变量中,我就会得到我想要的。我无法将上述 powershell 嵌入到 sql server 中的函数中,然后遍历 name 列以更新 ip 列。我当然尝试了EXEC xp_cmdshell 和powerhell.exe,但无济于事。
【问题讨论】:
-
这可能是应该在客户端或ETL工具上完成的。您输入的不是 Powershell,而是 .NET 调用。您可以通过 SQLCLR 使用同一行。解析未知地址可能需要长达 15 秒,这就是为什么最好在客户端上运行此类代码
-
我可以使用这个 exec master..xp_cmdshell 'nslookup servername'。它工作正常,但我不知道如何从中提取 ip。我不能使用 connectionproperty 函数,因为它不是活动连接,它只是表中的一个字符串
-
您需要将这些IP信息存储到什么目的?这似乎是你完成后很容易过时的那种东西。
-
我同意这些 ip 可以更改(尽管它们是固定的 dns 记录)直接的答案是“管理”发送了库存表的列名列表:)
-
您必须从 SQL Server 端执行,还是可以执行客户端脚本(类似于 Powershell)?
标签: sql .net sql-server powershell tsql