繁体   English   中英

检查与SQL Server 2000/2005的连接详细信息

[英]Check connection details to SQL Server 2000/2005

我想将SQL 2000/2005上托管的一些数据库迁移到SQL 2014,我没有直接访问数据库的权限,我想知道所有与其连接的应用程序和连接详细信息。 有什么最好的方法来获取此信息? 我尝试使用数据库性能分析,但由于它占用了托管数据库服务器上的大量空间而导致中断,因此不允许这样做。

任何更好的方法(例如SQL语句或远程连接监视)都将有所帮助。

预先感谢您的所有帮助。

要查找2000/2005中连接到DB服务器的进程的名称,您将需要运行作业,大概每30秒或更频繁地运行一次。 该工作将必须将结果存储到临时表中,然后添加新的进程名称和数据库,甚至登录。 这是一个开始:

创建一个表以累积信息:

create table DBUsage_accumulate (
    [id] int identity(1,1) NOT NULL,
    [LoginName] SYSNAME NOT NULL,
    HostName SYSNAME NOT NULL,
    DBName SYSNAME NOT NULL,
    CONSTRAINT PK_DBUSAGE_ACCUMULATE PRIMARY KEY CLUSTERED (id asc));

然后,您需要对此表具有唯一约束,使用索引:

CREATE UNIQUE NONCLUSTERED INDEX 
    IX_ACCUMULATE_LOGIN_DB_HOST
on DBUsage_Accumulate
(
    LoginName asc
    ,HostName asc
    ,DBName asc
);

现在您需要定期对sp_who2进行检查:

CREATE TABLE #temp_sp_who2
    (
      SPID INT,
      Status VARCHAR(1000) NULL,
      [LoginName] SYSNAME NULL,
      HostName SYSNAME NULL,
      BlkBy SYSNAME NULL,
      DBName SYSNAME NULL,
      Command VARCHAR(1000) NULL,
      CPUTime INT NULL,
      DiskIO INT NULL,
      LastBatch VARCHAR(1000) NULL,
      ProgramName VARCHAR(1000) NULL,
      SPID2 INT
      --,RequestID INT NULL --comment out for SQL 2000 databases
    )

INSERT  INTO #temp_sp_who2
EXEC sp_who2;

CREATE TABLE #temp_sp_who2
    (
      SPID INT,
      Status VARCHAR(1000) NULL,
      [LoginName] SYSNAME NULL,
      HostName SYSNAME NULL,
      BlkBy SYSNAME NULL,
      DBName SYSNAME NULL,
      Command VARCHAR(1000) NULL,
      CPUTime INT NULL,
      DiskIO INT NULL,
      LastBatch VARCHAR(1000) NULL,
      ProgramName VARCHAR(1000) NULL,
      SPID2 INT
      --,RequestID INT NULL --comment out for SQL 2000 databases
    )

INSERT  INTO #temp_sp_who2
EXEC sp_who2;

delete from #temp_sp_who2
where exists (
    select 1 from DBUsage_accumulate A
    where A.LoginName = #temp_sp_who2.Loginname
    and A.HostName = #temp_sp_who2.hostName
    and A.DBName = #temp_sp_who2.dbname);

insert into DBUsage_accumulate(LoginName,HostName,DBName)
select 
distinct 
    LoginName
    ,HostName
    ,dbname
from #temp_sp_who2
where [DBName] is not null
and [HostName] != '  .';

将最后的SQL块放入每5-30秒运行一次的作业中,将累积所有主机名,数据库名和登录名的列表。 您可以使用它来迁移正确的数据库和登录名,以及修改客户端计算机中的连接字符串。

2000年测试。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM