针对服务器组的SQl Server查询

针对服务器组的SQl Server查询,sql,sql-server,tsql,Sql,Sql Server,Tsql,因此,我使用tsql代码运行一组服务器,并在每个数据库中查找用户。我的问题是,在特定服务器上,有些数据库我无权访问,也不需要使用。当查询在它们上运行时,它会在整个服务器上停止并移动到下一个服务器。我一直在试图找到一种方法,从搜索中排除某些数据库 我想做的是 例如,在服务器A上排除了这些数据库B、C、D等等。我在哪里和哪里试过!=不起作用,或者我的语法错误 USE MASTER If OBJECT_ID('#TDB', 'U') > 0 Drop Table #TDB DECLARE @

因此,我使用tsql代码运行一组服务器,并在每个数据库中查找用户。我的问题是,在特定服务器上,有些数据库我无权访问,也不需要使用。当查询在它们上运行时,它会在整个服务器上停止并移动到下一个服务器。我一直在试图找到一种方法,从搜索中排除某些数据库

我想做的是

例如,在服务器A上排除了这些数据库B、C、D等等。我在哪里和哪里试过!=不起作用,或者我的语法错误

USE MASTER

If OBJECT_ID('#TDB', 'U') > 0
Drop Table #TDB

DECLARE @dbname varchar(200),
        @sql varchar(max)

CREATE TABLE #TDB (
DataBaseName nvarchar(200), 
UserName nvarchar(200)
)

DECLARE db_cursor CURSOR FOR
SELECT name
FROM master.dbo.sysdatabases WHERE DBID>4
OPEN db_cursor
FETCH NEXT FROM db_cursor INTO @dbname
WHILE @@FETCH_STATUS = 0

BEGIN

SET @sql='insert into #TDb(DataBaseName,UserName)
select '''+@dbname+''' DataBaseName,[user_name] UserName FROM '+@dbname+'.[dbo].[USERS] where'+@dbname+'<>[APSSWATCH]' 

EXEC(@sql)

FETCH NEXT FROM db_cursor INTO @dbname

END

CLOSE db_cursor
DEALLOCATE db_cursor

SELECT * FROM #TDB ORDER BY DataBaseName,UserName
DROP TABLE #TDB
您可以删除此项:

where'+@dbname+'<>[APSSWATCH]'

不过,谢谢你把我引向正确的方向

name<>'APPSWATCH'
它是有效的

name<>'APPSWATCH'
name NOT IN 'APPSWATCH'