如果我在Ado.Net中連接的Sql Server在本地機器上而不是在遠程機器上,是否有任何方法可以告訴我,使用C#?如何檢查連接的SQL Server是否在本地計算機上?
我想知道我是否有權訪問SQL Server存儲的文件系統,例如它是備份文件。如果我讓SQL Server創建一個備份文件,那我可以確定是否能夠以編程方式刪除備份文件。我已經閱讀了關於xp_cmdshell等等,但我相信最好避免它們。
如果我在Ado.Net中連接的Sql Server在本地機器上而不是在遠程機器上,是否有任何方法可以告訴我,使用C#?如何檢查連接的SQL Server是否在本地計算機上?
我想知道我是否有權訪問SQL Server存儲的文件系統,例如它是備份文件。如果我讓SQL Server創建一個備份文件,那我可以確定是否能夠以編程方式刪除備份文件。我已經閱讀了關於xp_cmdshell等等,但我相信最好避免它們。
使用SERVERPROPERTY('MachineName')
:在其上 服務器實例運行
Windows計算機名。
對於羣集實例,在Microsoft羣集服務, 返回虛擬 服務器的名稱的虛擬服務器 上運行的SQL Server實例 。
你不應該使用HOST_NAME()
因爲返回工作站的名字,換句話說,客戶端的名稱,並且是總是會出現,你本地連接。
我刪除了我的答案,因爲它是錯誤的,我不希望其他開發人員來這裏並錯誤地選擇不正確的東西。我之前測試過的時候,我看起來不夠堅硬。 Remus的答案是正確的。如果可能的話,塞繆爾,你應該把這個標記爲官方的答案。 – 2010-08-10 16:00:29
只要檢查System.IO.File.Exists是否爲True。即使文件在網絡上,用戶也可能有權限(或被授予權限)。
物理機或虛擬機? 檢查將在SQL服務器上執行還是從C#代碼執行? – 2010-08-10 11:50:28
似乎想要做一件奇怪的事情,我真的不明白你爲什麼會在意。你能解釋一下你試圖達到的目標嗎,也許他們是一個更好的方法。 – 2010-08-10 11:52:30