是否可以在一个会话中打开T-SQL代码打开新会话并在其他会话中运行代码?我仍然是MS SQL的菜鸟,我正在寻找模拟多个会话运行的方法,以便观察锁定和阻塞以及资源争用和CPU使用情况等等。不是手动完成所有操作,而是自动化它并且能够指定要打开的其他会话数以及在其中运行的代码。
我不知道如何直接在SSMS上这样做。也许在已注册的服务器上创建与同一实例的多个连接,然后运行该组。但是,有几个第三方应用程序可以帮助您。这里有2个选项:
可以通过菜单 - >查询 - > 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从同一源会话启动少量并行传出会话。您可以通过外部工具完成
我认为在SSMS中没有本地方法可以做到这一点。您可以使用SSMS Boost(https://www.ssmsboost.com/)使用工作空间或Redgate SQL Test(https://www.red-gate.com/products/sql-development/sql-test/index)来完成此操作。可能还有其他工具,但这些是我之前使用过的两种工具。