通过SQL Server连接文件传输

问题描述:

我有一个坐在客户机上的文本文件,并希望将其移动到数据库服务器(MS SQL 2008),但除了通过SQL Server客户机之外,我没有任何对服务器的访问权限。我可以使用SQL客户端连接将此文件传输到服务器吗?通过SQL Server连接文件传输

是的,你可以做到这一点,但不是通过标准的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

你想把它放在数据库中,还是放在文件系统中?如果是前者,请考虑textvarchar(max)

如果是后者,根据需要使用SQL注入和xp_cmdshell。 :)其实,在这种情况下,你应该问管理员一个更合适的转移机制。

+0

是xp_cmdshell写的扩展存储过程更好吗? – wasim 2010-05-20 04:04:55

如果您想将文件保存到数据库中,那么这是不容易的。

如果要保存到文件系统中,请使用标记为具有EXTERNAL_ACCESS的CLR存储过程。您可以将BLOB参数传递给过程,然后该过程可以使用普通的FileStream操作将BLOB内容写入磁盘。如果文件非常大,则需要特别注意防止内存膨胀。