Donc, j'utilise le code tsql pour parcourir un tas de servers, et regarder dans chaque database pour les users. Mon problème est que sur un server spécifique, il y a des bases de données auxquelles je n'ai pas access et que je n'ai pas besoin d'utiliser. Lorsque la requête s'exécute sur eux, elle s'arrête sur l'set du server et passe à la suivante. J'ai essayé de find un moyen d'exclure certaines bases de données de la search.
Ce que j'essaie de faire c'est
par exemple sur le server A a exclu ces bases de données B, C, D, et ainsi de suite. J'ai essayé où <> et! = Et ne fonctionne pas ou j'ai la mauvaise syntaxe
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
DECLARE db_cursor CURSOR FOR SELECT name FROM master.dbo.sysdatabases WHERE DBID>4 and name<> 'APSSWATCH'
Vous pouvez supprimer celui-ci:
where'+@dbname+'<>[APSSWATCH]'
Merci de m'avoir conduit dans la bonne direction si, instad de
name<>'APPSWATCH'
j'ai utilisé
name NOT IN 'APPSWATCH'
et il fonctionne