0

我正在使用 SQL Server 2008 R2。

我创建了一个 SQL 作业,它从数据库表中获取数据并将其写入输出文件,即特定位置的 CSV。

为此,我正在使用bcpand xp_cmdshell

bcp我需要传递服务器名称。到目前为止,我一直使用'localhost'它作为服务器名称,但是通过在另一台 PC 上运行它,我知道'localhost'登录在它上面不起作用,因此没有生成输出文件。

我搜索了一下,得到了另一个返回服务器名称和服务器实例的命令。IESERVERPROPERTY('ServerName')

现在我对使用它感到困惑。它在我的本地 PC 和另一台 PC 上运行正常,但我的问题是 - 如果我将它放在任何其他服务器或 PC 上,它是否总是安全运行而没有任何错误?建议使用哪一种?

4

1 回答 1

0

我认为您对“LocalHost”一词感到困惑。这只是一个别名(又名环回),它指向发起连接的机器。

例如,如果我的机器名为 MYMACHINE 并且我在其上运行默认实例,我可以通过指定 LocalHost 或 MYMACHINE 连接到数据库,然后我会连接。如果其他人试图从机器 YOURMACHINE 连接,他们将只能在指定 MYMACHINE 的情况下连接到我的数据库。如果他们输入 LOCALHOST,它将尝试连接到 YOURMACHINE,因为这是连接的来源。

现在回到您的问题,是的,从 SERVERPROPERTY('ServerName') 获取 servername 值是安全的,因为它将始终报告服务器的正确和当前网络名称。@@SERVERNAME 不是这种情况,因此出于您的目的,您应该回避它。

本地主机:https ://en.wikipedia.org/wiki/Localhost

@@ServiceName(备注部分的最后一段很重要):http: //msdn.microsoft.com/en-us/library/ms187944.aspx

PS我很抱歉没有对这个问题添加评论,但我的声誉目前还不够高,无法这样做。

于 2013-07-10T21:37:02.147 回答