我正在使用DataGrip的将CSV导入数据库选项,如下所示:
https://www.jetbrains.com/datagrip/features/importexport.html
但是我想了解DataGrip正在针对我的数据库运行哪些查询。我正在使用MS SQL SERVER 2012。
通过单击DDL PREVIEW选项卡,我可以看到以下代码段:
CREATE TABLE VESSEL_POSITIONS.dbo.[SOFS_T-AIS]
(
imo INT,
MESSAGE_SOURCE TEXT,
MSG_SRC_COUNT INT
)
但是我想了解实际插入是如何完成的。
这似乎太神奇了,我想学习更多。
答案 0 :(得分:2)
您需要使用Extended Events会话或使用Profiler捕获执行的语句。推荐的方法是使用扩展事件。您需要创建一个会话,并指定您感兴趣的事件以及将捕获的数据存储在何处。在SSMS中,打开查询窗口并运行以下查询:
CREATE EVENT SESSION [Capture_Datagrip_Queries]
ON SERVER
ADD EVENT sqlserver.sql_statement_completed(
ACTION
(
sqlserver.sql_text
)
WHERE
(
database_id = 9
)
)
ADD TARGET package0.event_file
(
SET filename = 'D:\XE\Datagrip.xel',
max_file_size = 5,
max_rollover_files = 1
)
放置查询将在其中运行的数据库的database_id(在我的示例中为9)。您可以通过执行此查询select db_id(N'MyDatabaseName')
来获取它。通过仅捕获相关信息,这将减少开销,但是where部分是可选的。另外请记住,该文件将在运行SQL Server的计算机上创建。不要从本地计算机添加路径。另外,您可以根据需要添加其他要捕获的信息。
创建此会话后,可以使用以下查询启动/停止它:
ALTER EVENT SESSION [Capture_Datagrip_Queries] ON SERVER STATE = START
ALTER EVENT SESSION [Capture_Datagrip_Queries] ON SERVER STATE = STOP
或者在SSMS中使用对象资源管理器中的Management \ Extended Events \ Sessions
节点。不要让会话运行超过所需的时间。
您可以在SSMS中查看结果-会话下有一个package0.event_file
节点。双击以查看收集的数据。
答案 1 :(得分:2)