2010-05-20 90 views
1

我有一個坐在客戶機上的文本文件,並希望將其移動到數據庫服務器(MS SQL 2008),但除了通過SQL Server客戶機之外,我沒有任何對服務器的訪問權限。我可以使用SQL客戶端連接將此文件傳輸到服務器嗎?通過SQL Server連接文件傳輸

回答

2

是的,你可以做到這一點,但不是通過標準的SQL。您將不得不編寫一個擴展存儲過程,這將允許您通過sql客戶端連接進行連接並訪問服務器文件系統。但是你必須解決很多用戶權限問題。

+0

是擴展存儲過程更好,然後使用Mathew建議的xp_cmdshell? – wasim 2010-05-20 04:05:49

+0

xp_cmdShell具有最多8000個字符的限制,同時您可以更好地控制擴展/ CLR過程 – WSK 2010-05-20 04:10:02

+0

謝謝Steve。它看起來很酷。我試試看看它是如何工作的 – wasim 2010-05-20 04:20:28

0

你想把它放在數據庫中,還是放在文件系統中?如果是前者,請考慮textvarchar(max)

如果是後者,根據需要使用SQL注入和xp_cmdshell。 :)其實,在這種情況下,你應該問管理員一個更合適的轉移機制。

+0

是xp_cmdshell寫的擴展存儲過程更好嗎? – wasim 2010-05-20 04:04:55

0

如果您想將文件保存到數據庫中,那麼這是不容易的。

如果要保存到文件系統中,請使用標記爲具有EXTERNAL_ACCESS的CLR存儲過程。您可以將BLOB參數傳遞給過程,然後該過程可以使用普通的FileStream操作將BLOB內容寫入磁盤。如果文件非常大,則需要特別注意防止內存膨脹。