0

我想编写一个在执行时提示输入的 sql 代理作业。在sql server中可以吗?该输入将用作 sql 代理脚本中的变量。

请帮我解决这个问题。

谢谢

尼特什·库马尔

4

2 回答 2

3

不,这在 SQL Server 中是不可能的。如果您想为作业提供一些手动输入,您可以在作业中创建一个步骤(第一步),该步骤从某些文件/数据库表等读取输入,然后第二步用户将第一步的输出作为输入。在作业开始执行之前,您必须创建替代方法来手动输入数据库表/文件。

但是有一个问题 - 作业应该按照某个时间表运行,您的工作不是按照某个时间表运行吗?

于 2012-11-12T07:42:39.517 回答
2

可以使用 xp_cmdshell 运行提示输入并将数据写回函数的 VB 脚本或 .bat 文件。

问题是 xp_cmdshell 通常出于安全原因被关闭,因为它允许 SQL 中的某人在托管服务器上执行程序。

这个例子使用了一个powerscript来获取一些数据,然后将数据写入一个表,但是这都是从xp_cmdshell执行的

声明@CertFilePath varchar(500) 声明@SQL varchar(1000) 设置@ScriptFilePath ='c:\myscripts\SomeScript.vbs'

CREATE TABLE #DataTable (line varchar(255))

插入 #DataTable EXEC xp_cmdshell @SQL

从 #DataTable 中选择 *

此代码启用 xp_CmdShell

EXEC sp_configure 'show advanced options', 1 GO -- 更新当前配置的高级选项值。RECONFIGURE GO——启用该功能。EXEC sp_configure 'xp_cmdshell', 1 GO -- 更新此功能的当前配置值。重新配置

此代码禁用 xp_cmdshell

-- 在这个 EXEC 结束时将 xp_cmdshell enabled=false /reset 设置为禁用 sp_configure 'show advanced options', 0 GO -- 更新高级选项的当前配置值。RECONFIGURE GO——启用该功能。EXEC sp_configure 'xp_cmdshell', 0 GO -- 更新此功能的当前配置值。重新配置

于 2012-11-12T14:58:11.380 回答