Sql server 从经典ASP连接时SQL Server中的应用程序名称

Sql server 从经典ASP连接时SQL Server中的应用程序名称,sql-server,asp-classic,connection-string,Sql Server,Asp Classic,Connection String,在我的连接字符串中,我添加了Application Name=XX,这样我就可以从SQL server中识别进程的来源(sp_who2-ProgramName列)。这在从.NET连接时非常有效。当我使用Server.CreateObject(“ADODB.Connection”)通过经典ASP进行连接时,SQL Server会将我的程序名标识为“Internet信息服务” 有人知道如何配置某些东西(连接字符串?IIS?sql?)以便sql Server看到我的应用程序名吗?只需添加以下参数: A

在我的连接字符串中,我添加了Application Name=XX,这样我就可以从SQL server中识别进程的来源(sp_who2-ProgramName列)。这在从.NET连接时非常有效。当我使用Server.CreateObject(“ADODB.Connection”)通过经典ASP进行连接时,SQL Server会将我的程序名标识为“Internet信息服务”

有人知道如何配置某些东西(连接字符串?IIS?sql?)以便sql Server看到我的应用程序名吗?

只需添加以下参数:

Application Name=My app name;
这里有一个例子。我不建议使用DSN或老式的{SQLServer}驱动程序,除非您真正使用的是SQL2000或更早版本

conn_string = "Provider=SQLNCLI10;Data Source=x.x.x.x;Initial Catalog=dbname;" & _
              "User ID=xxx;Password=xxx;Application Name=my funky chicken;"
您可能没有SQL本机客户端的最新版本,因此可能需要使用与版本无关的提供程序名称:

conn_string = "Provider=SQLNCLI;Data Source=x.x.x.x;Initial Catalog=dbname;" & _
              "User ID=xxx;Password=xxx;Application Name=my funky chicken;"
如果未安装SQL本机客户端,则可以从此处(|)安装,或返回OLEDB:

conn_string = "Provider=SQLOLEDB.1;Data Source=x.x.x.x;Initial Catalog=dbname;" & _
              "User ID=xxx;Password=xxx;Application Name=my funky chicken;"

我测试了上面所有三个连接字符串,并验证了Profiler(ApplicationName)、sp_who2(ProgramName)和sys.dm_exec_会话(program_name)显示的是“我的胆小鬼”。

在ASP经典参数名称中应该是“APP”。 例如:

DRIVER={SQL Server};SERVER=0.0.0.0\instancename;UID=xxx;PWD=xxx;DATABASE=xxx;App=xxx;
请参阅SQL Server本机客户端团队开发人员提供的详细信息:


+1以下是相关链接:这在.NET中有效,但在SQL Server的什么版本中不适用于Server.CreateObject(“ADODB.Connection”)?您使用的是什么提供商?您能显示您的实际连接字符串吗?如果您使用的是DSN,请停止使用。@Aaron Bertand-我们使用的是2008R2。下面是字符串驱动程序={SQLServer};服务器=0.0.0.0\instancename;UID=xxx;PWD=xxx;数据库=xxx;申请名称=xxx;快速更新-ODBC连接不会传递应用程序名称,但ADO连接会传递。但是,当从ASP调用具有多个语句且没有“SETNOCOUNT ON”的存储过程时,通过ADO返回记录集会出现问题。为了使用ADO连接字符串以便将应用程序名称添加到数据库中,我们需要更新所有sp以包括SET NOCOUNT ON。(我知道——无论如何这是一个最佳实践。)也适用于PHP+ODBC