0

我面临一个有趣的问题,我什至不确定是否可能:

我需要在 SQL Server 2008 中创建一个存储过程,执行时执行以下操作:

  1. 执行批处理文件 - 位于 SQL Server 上(即 C:\Mybatchfile.bat) - 此批处理文件会将单个文本文件输出到 SQL Server 上的目录(即 C:\Output\BatchFileOutput1.txt)。

  2. 将文本文件的内容批量插入我的数据库中的表中。

  3. 从服务器中删除文本文件。

在我真正开始深入研究如何实现这一目标之前,这是否可能?

提前致谢

4

2 回答 2

2

您应该能够将所有这些放在一个过程中:

1)执行批处理文件使用:xp_cmdshell(Transact-SQL)。但是,许多人认为这是一种安全风险,并且可能无法在数据库中访问它。您可以使用CLR来执行批处理文件,这样会更安全。

2) 您可以使用bcp 实用程序将行复制到表中。

3)您将使用#1中的方法删除文件。从 xp_cmdshell 发出删除命令,这是一个安全风险。或者创建一个 CLR,在其中传入文件名以删除文件。我不允许传入路径,硬编码,所以只能删除“特殊”目录中的文件,而不是 C:\ 等。

于 2010-03-10T16:16:42.780 回答
0

或者,您可以在 SSIS 包中执行此操作,然后执行该包的工作,而不是在存储过程中执行。或者 proc 可能只有代码来执行 SSIS pacakge。

于 2010-03-10T18:43:36.483 回答