我可以判断 SSMS 与其他地方的查询何时为 运行 吗?

Can I tell when a query is running in SSMS vs elsewhere?

是否有任何类型的环境变量(或其他变量)可以告诉我脚本是否在 SSMS 中 运行?例如,在我在 SSMS 中查询的顶部,我有这个:

declare @StartDate datetime, @EndDate datetime, @ThisYear datetime, @IncludeZeroBalance int;
set @StartDate = '20080101';
set @EndDate = '20170201';
set @ThisYear = year(GetDate());
set @IncludeZeroBalance = 0;

我希望能够将其保留在查询中,但 "wrap" 它带有某些内容,因此在 SSMS 中它只是 seen/run。某种编译指示,例如 #IF SSMS 或类似的。

我认为没有这样的事情(搜索已证明无果)但我希望有人知道做那种事情的技巧...

您可以使用 APP_NAME() 函数获取调用应用程序在其 connectionstring 中指定的应用程序的名称。示例:

declare @MyAppname nvarchar(50);
select @MyAppname = app_name();
if (@MyAppname = 'Microsoft SQL Server Management Studio - Query')
    begin
        print 'Do SSMS stuff here'
    end
    else
    begin
        print 'Do non-SSMS stuff here'
    end;