在没有值的 SQL Profiler 中插入 BULK

vel*_*ije 6 sql-server profiler

我启动了 SQL Profiler 来捕捉服务器上正在执行的操作,其中我发现了一行说明:

SQL BatchStarting: insert bulk table_name <column_list>
Run Code Online (Sandbox Code Playgroud)

但没有价值观?

如何查看应用程序接受的数据库?

Ben*_*udo 3

我不相信有 Profiler 跟踪事件可以显示此信息。

插入批量背景

在后台,客户端通过发送 TDS SQL 批处理消息来执行批量加载,该INSERT BULK消息包含指定目标表和列的语句以及客户端请求的任何批量加载选项(例如“保留 NULL”、“检查约束”或“火灾触发器”)。

但是,正如您所观察到的,该INSERT BULK语句不包含要插入的值。相反,这些信息是通过SQL Batch 消息后面的一个或多个 TDS Bulk Load BCP消息来传输的。第一个批量加载 BCP 消息以描述即将到来的数据集形状的元数据开始。此元数据之后是要插入的数据,以高效的二进制格式进行编码。(除了少数例外,所使用的格式与服务器用于将结果发送到客户端的二进制格式相同。)

遗憾的是,Profiler 不提供显示批量加载 BCP 消息的事件。:-(

参考

可能有用:一个SO答案,它提供了使用Profiler来了解批量插入所接触的内容的线索。(感谢@SqlWorldWide 在评论中提到这个答案。)