2012-10-19 78 views
2

因此,我使用tsql代碼來運行一堆服務器,並在每個數據庫中查找用戶。我的問題是,在特定的服務器上,有一些我無權訪問且無需使用的數據庫。當查詢在它們上運行時,它會在整個服務器上停止並移動到下一個。我一直在試圖找到一種方法來排除搜索中的某些數據庫。針對服務器組的SQl服務器查詢

我所試圖做的是

例如在服務器A上排除這些databses 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 '''[email protected]+''' DataBaseName,[user_name] UserName FROM '[email protected]+'.[dbo].[USERS] where'[email protected]+'<>[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 

回答

0

謝謝你帶領我進入右方向雖然,的

name<>'APPSWATCH' 

instad我用

name NOT IN 'APPSWATCH' 

它工作

1
DECLARE db_cursor CURSOR FOR 
SELECT name 
FROM master.dbo.sysdatabases WHERE DBID>4 and name<> 'APSSWATCH' 

您可以刪除這一個!

where'[email protected]+'<>[APSSWATCH]' 
+0

仍然有同樣的錯誤。它仍然在閱讀數據庫 –