sql-server - EXEC master..xp_cmdshell可以用在一组数据上吗?

标签 sql-server sql-server-2005 tsql exec

我有一个 Windows shell 命令,我想为表中的每一行运行一次(通过 EXEC master..xp_cmdshell)。我正在使用来自各个领域的信息来构建命令输出。

相对于编写 T-SQL 程序(而不是单独的查询),我是相对的新手,无法完全理解它的语法,或者它是否可能/推荐。

我尝试创建一个列表变量,然后用我要运行的命令填充每一行。我对如何迭代这个表变量并实际运行命令感到窒息。谷歌搜索已证明无济于事。

在此先感谢您的帮助!

最佳答案

你总是可以使用游标:

USE Northwind

DECLARE @name VARCHAR(32)
DECLARE @command VARCHAR(100)

DECLARE shell_cursor CURSOR FOR 
SELECT LastName FROM Employees

OPEN shell_cursor

FETCH NEXT FROM shell_cursor INTO @name

WHILE @@FETCH_STATUS = 0
BEGIN
    SET @command = 'echo ' + @name
    EXEC master.dbo.xp_cmdshell @command
    FETCH NEXT FROM shell_cursor INTO @name
END

CLOSE shell_cursor
DEALLOCATE shell_cursor

GO

关于sql-server - EXEC master..xp_cmdshell可以用在一组数据上吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/390448/

相关文章:

sql - 从一个表中选择列,按另一表中的列排序

sql-server - ALTER DATABASE 失败,因为无法在数据库 '<db_name>' 上放置锁。稍后再试

sql - SQL Server 中的 Over 子句

SQL Server 兼容性产生问题

sql - 仅当 SQL Server 中存在外键约束时,如何删除它?

mysql - 通过 Microsoft SQL Server 的 ODBC 在 MySQL 中选择 * 的问题

SQL Server 将整数转换为二进制字符串

sql - 计算某个时间间隔内的每小时平均值

sql-server-2005 - SQL 数据类型中的冒号?

sql-server - ANSI 相关设置的推荐配置是什么?