@@ -20,35 +20,38 @@ SET LANGUAGE us_english;
2020
2121DECLARE @dbname VARCHAR (50 );
2222DECLARE @COLLECTION_USER VARCHAR (256 );
23+ DECLARE @COLLECTION_PASS VARCHAR (256 );
2324DECLARE @PRODUCT_VERSION AS INTEGER
2425
25- SELECT @PRODUCT_VERSION = CONVERT (INTEGER , PARSENAME (CONVERT (nvarchar , SERVERPROPERTY (' productversion' )), 4 ));
2626DECLARE db_cursor CURSOR FOR
2727SELECT name
2828FROM MASTER .sys .databases
2929WHERE name NOT IN (' model' ,' msdb' ,' distribution' ,' reportserver' , ' reportservertempdb' ,' resource' ,' rdsadmin' )
3030AND state = 0 ;
3131
32- USE [master]
32+ SELECT @PRODUCT_VERSION = CONVERT (INTEGER , PARSENAME (CONVERT (nvarchar , SERVERPROPERTY (' productversion' )), 4 ));
33+ SELECT @COLLECTION_USER = N ' $(collectionUser)'
34+ SELECT @COLLECTION_PASS = N ' $(collectionPass)'
35+
3336IF NOT EXISTS
3437 (SELECT name
3538 FROM master .sys .server_principals
36- WHERE name = N ' $(collectionUser)' )
39+ WHERE name = @COLLECTION_USER )
3740 BEGIN
38- CREATE LOGIN [$(collectionUser) ] WITH PASSWORD = N ' $(collectionPass)' , DEFAULT_DATABASE = [master], CHECK_EXPIRATION = OFF , CHECK_POLICY = OFF
41+ exec ( ' CREATE LOGIN [' + @COLLECTION_USER + ' ] WITH PASSWORD=N'' ' + @COLLECTION_PASS + ' ' ' , DEFAULT_DATABASE=[master], CHECK_EXPIRATION=OFF, CHECK_POLICY=OFF' );
3942 END
4043BEGIN
41- GRANT VIEW SERVER STATE TO [$(collectionUser)]
42- GRANT SELECT ALL USER SECURABLES TO [$(collectionUser)]
43- GRANT VIEW ANY DATABASE TO [$(collectionUser)]
44- GRANT VIEW ANY DEFINITION TO [$(collectionUser)]
45- GRANT VIEW SERVER STATE TO [$(collectionUser)]
44+ exec ( ' GRANT VIEW SERVER STATE TO [' + @COLLECTION_USER + ' ]' );
45+ exec ( ' GRANT SELECT ALL USER SECURABLES TO [' + @COLLECTION_USER + ' ]' );
46+ exec ( ' GRANT VIEW ANY DATABASE TO [' + @COLLECTION_USER + ' ]' );
47+ exec ( ' GRANT VIEW ANY DEFINITION TO [' + @COLLECTION_USER + ' ]' );
48+ exec ( ' GRANT VIEW SERVER STATE TO [' + @COLLECTION_USER + ' ]' );
4649 IF @PRODUCT_VERSION > 15
4750 BEGIN
48- GRANT VIEW SERVER PERFORMANCE STATE TO [$(collectionUser)]
49- GRANT VIEW SERVER SECURITY STATE TO [$(collectionUser)]
50- GRANT VIEW ANY PERFORMANCE DEFINITION TO [$(collectionUser)]
51- GRANT VIEW ANY SECURITY DEFINITION TO [$(collectionUser)]
51+ exec ( ' GRANT VIEW SERVER PERFORMANCE STATE TO [' + @COLLECTION_USER + ' ]' );
52+ exec ( ' GRANT VIEW SERVER SECURITY STATE TO [' + @COLLECTION_USER + ' ]' );
53+ exec ( ' GRANT VIEW ANY PERFORMANCE DEFINITION TO [' + @COLLECTION_USER + ' ]' );
54+ exec ( ' GRANT VIEW ANY SECURITY DEFINITION TO [' + @COLLECTION_USER + ' ]' );
5255 END ;
5356END ;
5457
6063 BEGIN
6164 exec ('
6265 use [' + @dbname + ' ];
63- CREATE USER [$(collectionUser)] FOR LOGIN [$(collectionUser)];
64- GRANT VIEW DATABASE STATE TO [$(collectionUser)]' );
66+ IF NOT EXISTS (SELECT [name]
67+ FROM [sys].[database_principals]
68+ WHERE [type] = N'' S'' AND [name] = N'' ' + @COLLECTION_USER + ' '' )
69+ BEGIN
70+ CREATE USER [' + @COLLECTION_USER + ' ] FOR LOGIN [' + @COLLECTION_USER + ' ];
71+ END;
72+ GRANT VIEW DATABASE STATE TO [' + @COLLECTION_USER + ' ]' );
6573 END ;
6674
6775 FETCH NEXT FROM db_cursor INTO @dbname;
0 commit comments