是否可以在一个会话中使用T-SQL代码打开新会话,并在其他会话中运行代码?我还是MS SQL的新手,我正在寻找模拟正在运行的多个会话的方法,以便观察锁定和阻塞以及资源争用和CPU使用率等等。 与其手动完成所有操作,不如将其自动化并能够指定要打开多少其他会话以及在其中运行什么代码,将是一个很好的选择。
答案 0 :(得分:2)
我不知道如何直接在SSMS上执行此操作。也许在注册服务器上创建到同一实例的多个连接,然后运行该组。 但是,有一些第三方应用程序可以帮助您。这里有2个选项:
答案 1 :(得分:1)
可以通过菜单->查询-> SQL CMD模式打开一个临时的新会话,以启用SSMS中的SQL CMD模式:
:CONNECT (local)
SET NOCOUNT ON;
SELECT SERVERPROPERTY('ServerName') AS ServerName
,SERVERPROPERTY('ProductVersion') AS ProductVersion
,SERVERPROPERTY('ProductLevel') AS ProductLevel
,SERVERPROPERTY('Edition') AS Edition
,SERVERPROPERTY('EngineEdition') AS EngineEdition;
GO
:CONNECT SQLServer1
SET NOCOUNT ON;
SELECT SERVERPROPERTY('ServerName') AS ServerName
,SERVERPROPERTY('ProductVersion') AS ProductVersion
,SERVERPROPERTY('ProductLevel') AS ProductLevel
,SERVERPROPERTY('Edition') AS Edition
,SERVERPROPERTY('EngineEdition') AS EngineEdition
GO
通过这种方式,您可以切换上下文。但是,仍然没有办法使用T-SQL从同一源会话中启动几个并行的传出会话。您可以通过外部工具来完成
答案 2 :(得分:1)
我认为SSMS中没有本地方法可以做到这一点。您可以使用工作区或Redgate SQL Test(https://www.ssmsboost.com/)使用SSMS Boost(https://www.red-gate.com/products/sql-development/sql-test/index)来实现。可能还有其他工具,但是那是我以前使用过的两个工具。