通过 SQL Server 连接传输文件
我在客户端计算机上有一个文本文件,想要将其移动到数据库服务器(MS SQL 2008),但除了通过 SQL Server 客户端之外,我无法访问该服务器。我可以使用 SQL 客户端连接将此文件传输到服务器吗?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
我在客户端计算机上有一个文本文件,想要将其移动到数据库服务器(MS SQL 2008),但除了通过 SQL Server 客户端之外,我无法访问该服务器。我可以使用 SQL 客户端连接将此文件传输到服务器吗?
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
接受
或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
发布评论
评论(3)
是的,您可以做到这一点,但不能通过标准 SQL。您必须编写一个扩展存储过程,该过程允许您通过 sql 客户端连接并访问服务器文件系统。但您必须解决许多用户权限问题。
Yes you can do it but not through standard SQL. You will have to write an extended stored procedure that will alow you to connect through sql client connection and to access server file system. But you will have to address a lot of user privileges issues.
您想将其放入数据库还是文件系统中?如果是前者,请考虑 文本 或 varchar(max)。
如果是后者,请使用 SQL 注入和 xp_cmdshell 根据需要。 :) 实际上,在这种情况下,您应该向管理员询问更合适的传输机制。
Do you want to put it in the database, or in the filesystem? If the former, consider a text or varchar(max).
If the latter, use SQL injection and xp_cmdshell as needed. :) Actually, in this case you should ask the admin for a more appropriate transfer mechanism.
如果您想将文件保存到数据库中,那么这是理所当然的。
如果要保存到文件系统中,请使用标记为具有 EXTERNAL_ACCESS 的 CLR 存储过程。您可以将 BLOB 参数传递给该过程,然后该过程可以使用普通的 FileStream 操作。如果文件非常大,则需要特别小心以防止内存膨胀。
If you want to save the file into the database then is a no brainer.
If you want to save into the file system the use a CLR stored procedure marked as having EXTERNAL_ACCESS. You can pass a BLOB parameter to the procedure and the procedure in turn can write the BLOB content to the disk, using ordinary FileStream operations. If the file is very large then special care needs to be taken to prevent memory bloat.