【发布时间】:2020-12-24 02:32:38
【问题描述】:
我创建了一个 SQL Server 触发器,如下所示。
create trigger testtrigger on testdb
for insert
as
declare @sql varchar(8000)
SELECT @sql = 'bcp "select * from testdb" queryout c:/test.txt -c -t -T -S localhost'
exec xp_cmdshell @sql
go
但是当在testdb中插入一行时,创建了文本文件,但是没有内容。有人可以帮我解决这个问题吗?
【问题讨论】:
-
触发器应该非常小、快速和灵活 - 您应该绝对不从触发器调用外部服务,例如
bcp实用程序!您需要重新考虑您的设计 -
触发器还应该处理插入在一个语句中的多行(是的,可能,阅读 sql 语法)。
-
@TomTom 尽管存在其他问题,但此触发器确实支持多行插入。
-
那么您推荐的解决方案是什么,可以将每个插入的行导出到文本文件。
标签: sql-server tsql triggers