2013-07-10 44 views
0

我正在使用SQL Server 2008 R2。SERVERPROPERTY('SERVERNAME')v/s'localhost'

我已經創建了一個SQL作業,它從數據庫表中提取數據並將其寫入輸出文件,即CSV在特定位置。

對此,我使用的是bcpxp_cmdshell

bcp我需要傳遞服務器名稱。高興我這是使用'localhost'作爲服務器名稱,但通過在另一臺PC上運行此我已經知道'localhost'登錄無法正常工作,以便輸出文件不會生成。

我搜索了一下,得到了另一個命令,返回服務器名稱和服務器實例。即SERVERPROPERTY('ServerName')

現在我對使用它感到困惑。它與我的本地PC和另一臺PC運行正常,但我的問題是 - 如果我將它放在任何其他服務器或PC上,它總是安全無誤地運行?哪一個是可取的?

+0

顯示您正在使用的命令 – JotaBe

+0

@JotaBe這沒有任何意義,命令工作正常。問題在於我的本地PC上的服務器名稱,因爲我無法使用名稱「localhost」登錄到SQL Server。如果我使用服務器名稱和實例名稱,那麼每件事情都可以正常工作。和SERVERPROPERTY('ServerName')給我一樣的。我想知道的是,在我部署它的每個環境中,它是否可以正常工作? OR SERVERPROPERTY('ServerName')也會給出一些錯誤,例如「localhost」給我一些情況?哪一個是可取的? – Dev

+0

這不是一個有意義的問題。我無法弄清楚你是如何運行BCP的,工作在哪裏,你如何從其他PC上調用它......我想其他人都知道它,所以期待沒有幫助。 – JotaBe

回答

0

我認爲你對「LocalHost」這個詞感到困惑。這只是一個別名(又名回送),指向發起連接的機器。例如,如果我的機器被命名爲MYMACHINE,並且我正在其上運行默認實例,則可以通過指定LocalHost或MYMACHINE連接到數據庫,並且我將連接到該數據庫。如果其他人試圖從機器YOURMACHINE連接,他們將只能連接到我的數據庫,如果他們指定MYMACHINE。如果他們進入LOCALHOST,它會嘗試連接到YOURMACHINE,因爲這是連接起源的地方。

現在回到您的問題,是的,從SERVERPROPERTY('ServerName')獲取servername值是安全的,因爲它會始終報告服務器的正確和當前網絡名稱。 @@ SERVERNAME並不是這種情況,所以您應該避免出於您的目的。

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

@@服務名(備註一節的最後一段是很重要的):http://msdn.microsoft.com/en-us/library/ms187944.aspx

附:我很抱歉沒有對這個問題添加評論,但是我的聲譽目前還不夠高。

相關問題