在我的连接字符串中,我添加应用程序名称=XX,这样我就可以从SQL服务器中识别进程来自何处(sp_who2 - ProgramName列)。这在从。net连接时非常有效。当我使用Server. createobject("ADODB.Connection")通过经典ASP连接时,我的ProgramName被SQL Server识别为"Internet信息服务"。
有没有人知道一种方法来配置的东西(连接字符串?IIS吗?sql?)所以sql Server看到我的应用程序名称?
添加如下参数:
Application Name=My app name;
下面是一个例子。我不建议使用DSN或老式的{SQL Server}驱动程序,除非你真的使用SQL 2000或更早的版本。
conn_string = "Provider=SQLNCLI10;Data Source=x.x.x.x;Initial Catalog=dbname;" & _
"User ID=xxx;Password=xxx;Application Name=my funky chicken;"
您可能没有最新版本的SQL Native Client,因此您可能需要退回到与版本无关的提供程序名称:
conn_string = "Provider=SQLNCLI;Data Source=x.x.x.x;Initial Catalog=dbname;" & _
"User ID=xxx;Password=xxx;Application Name=my funky chicken;"
如果你没有安装SQL Native Client,你可以从这里安装(x86 | x64),或者回到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_sessions (program_name)显示"my funky chicken"。
在ASP Classic中参数名称应为"APP"。例如:
DRIVER={SQL Server};SERVER=0.0.0.0instancename;UID=xxx;PWD=xxx;DATABASE=xxx;App=xxx;
查看SQL Server Native Client团队开发人员的详细信息:
http://blogs.msdn.com/b/sqlnativeclient/archive/2009/05/07/sql-server-native-client-connection-strings-and-ole-db.aspx