Please start any new threads on our new
site at https://forums.sqlteam.com. We've got lots of great SQL Server
experts to answer whatever question you can come up with.
Author |
Topic |
newuser001
Starting Member
19 Posts |
Posted - 2009-05-11 : 17:47:28
|
1. Script login/role-user mappings to user.sql2. Script login/object mappings to objects.sql3. Script T-SQL create for DB to db_create.sqlI want to generate script for the above there steps, instead of right click All Task generate the scriptsI want command to generate scripts in a folder by running the jobSome thing like OSQL Command...Ex: osql -S TestServer -E -Q "exec master.dbo.sp_help_revlogin" -w 255 -o "C:\folder\TestServer_logins.sql"I can't see the sp_help_revlogin and sp_hexadecimal in all SQL2000 ServerI want to get the Login information for selected databasesHow about SQL Server 2005? The tables r different I cant find sysxlogins |
|
robvolk
Most Valuable Yak
15732 Posts |
|
newuser001
Starting Member
19 Posts |
Posted - 2009-05-11 : 18:19:02
|
Thanks a lot for information..i want to script out database users and permissions for individual objectsI want to Scripts the below steps through command or .... in a job that should be save in folder , i do these steps manually byRight Click on each database-> Generate Scripts -> and select required options to genetare these scripts.1. Script login/role-user mappings2. Script login/object mappings 3. Script T-SQL create for DBnow i want generate through a Job. and want to do this task for selected databases..Any Idea..?? |
 |
|
sodeep
Master Smack Fu Yak Hacker
7174 Posts |
Posted - 2009-05-11 : 22:14:26
|
See my script:http://www.sqlteam.com/forums/topic.asp?TOPIC_ID=111918 |
 |
|
chorleyt
Starting Member
1 Post |
Posted - 2009-07-10 : 12:42:55
|
quote: Originally posted by newuser001 1. Script login/role-user mappings to user.sql2. Script login/object mappings to objects.sql3. Script T-SQL create for DB to db_create.sqlI want to generate script for the above there steps, instead of right click All Task generate the scriptsI want command to generate scripts in a folder by running the jobSome thing like OSQL Command...Ex: osql -S TestServer -E -Q "exec master.dbo.sp_help_revlogin" -w 255 -o "C:\folder\TestServer_logins.sql"I can't see the sp_help_revlogin and sp_hexadecimal in all SQL2000 ServerI want to get the Login information for selected databasesHow about SQL Server 2005? The tables r different I cant find sysxlogins
Hello Allsp_help_revlogin is as fine as it goes; but a bit of extra tweaking of the script will also ensure you get the role memberships as well.Add the following variables before DECLARE @defaultdb: -DECLARE @role_bulkadmin varchar (1)DECLARE @role_dbcreator varchar (1)DECLARE @role_diskadmin varchar (1)DECLARE @role_processadmin varchar (1)DECLARE @role_securityadmin varchar (1)DECLARE @role_serveradmin varchar (1)DECLARE @role_setupadmin varchar (1)DECLARE @role_sysadmin varchar (1)Next alter the select statements in the DECLARE login_curs CURSORS: - SELECT p.sid, p.name, p.type, p.is_disabled, p.default_database_name, l.hasaccess, l.denylogin,l.bulkadmin,l.dbcreator,l.diskadmin,l.processadmin,l.securityadmin,l.serveradmin,l.setupadmin,l.sysadmin FROM sys.server_principals p LEFT JOIN sys.syslogins l ON ( l.name = p.name ) WHERE p.type IN ( 'S', 'G', 'U' ) AND p.name <> 'sa'ELSE DECLARE login_curs CURSOR FOR SELECT p.sid, p.name, p.type, p.is_disabled, p.default_database_name, l.hasaccess, l.denylogin,l.bulkadmin,l.dbcreator,l.diskadmin,l.processadmin,l.securityadmin,l.serveradmin,l.setupadmin,l.sysadmin FROM sys.server_principals p LEFT JOIN sys.syslogins l ON ( l.name = p.name ) WHERE p.type IN ( 'S', 'G', 'U' ) AND p.name = @login_nameNow alter the FETCH NEXT sections: -FETCH NEXT FROM login_curs INTO @SID_varbinary, @name, @type, @is_disabled, @defaultdb, @hasaccess, @denylogin,@role_bulkadmin,@role_dbcreator,@role_diskadmin,@role_processadmin,@role_securityadmin,@role_serveradmin,@role_setupadmin,@role_sysadminFinally find the PRINT @tmpstr line and then add the following after the "END" proceeding @tempstr: -If @role_bulkadmin = '1'BEGINSET @tmpstr = 'EXEC master..sp_addsrvrolemember @loginame = N''' + @name + ''' + , @rolename = N + '''' + bulkadmin + '''' 'ENDIF @role_dbcreator = '1'BEGINSET @tmpstr = 'EXEC master..sp_addsrvrolemember @loginame = N''' + @name + ''' + , @rolename = N + '''' + dbcreator + '''' 'ENDIF @role_diskadmin = '1'BEGINSET @tmpstr = 'EXEC master..sp_addsrvrolemember @loginame = N''' + @name + ''' + , @rolename = N + '''' + diskadmin + '''' 'ENDIF @role_processadmin = '1'BEGINSET @tmpstr = 'EXEC master..sp_addsrvrolemember @loginame = N''' + @name + ''' + , @rolename = N + '''' + processadmin + '''' 'ENDIF @role_securityadmin = '1'BEGINSET @tmpstr = 'EXEC master..sp_addsrvrolemember @loginame = N''' + @name + ''' + , @rolename = N + '''' + securityadmin + '''' 'ENDIF @role_serveradmin = '1'BEGINSET @tmpstr = 'EXEC master..sp_addsrvrolemember @loginame = N''' + @name + ''' + , @rolename = N + '''' + serveradmin + '''' 'ENDIF @role_setupadmin = '1'BEGINSET @tmpstr = 'EXEC master..sp_addsrvrolemember @loginame = N''' + @name + ''' + , @rolename = N + '''' + setupadmin + '''' 'ENDIF @role_sysadmin = '1'BEGINSET @tmpstr = 'EXEC master..sp_addsrvrolemember @loginame = N''' + @name + ''' + , @rolename = N + '''' + sysadmin + '''' 'ENDPRINT @tmpstrRegardsTony C |
 |
|
mhunady
Starting Member
1 Post |
Posted - 2011-01-14 : 04:19:25
|
Hi,there was some mistakes in previous script. here is full script for login (sql,NT) migration:USE [master]GO/****** Object: StoredProcedure [dbo].[sp_hexadecimal] Script Date: 01/14/2011 10:17:07 ******/SET ANSI_NULLS ONGOSET QUOTED_IDENTIFIER ONGOCREATE PROCEDURE [dbo].[sp_hexadecimal] @binvalue varbinary(256), @hexvalue varchar (514) OUTPUTASDECLARE @charvalue varchar (514)DECLARE @i intDECLARE @length intDECLARE @hexstring char(16)SELECT @charvalue = '0x'SELECT @i = 1SELECT @length = DATALENGTH (@binvalue)SELECT @hexstring = '0123456789ABCDEF'WHILE (@i <= @length)BEGIN DECLARE @tempint int DECLARE @firstint int DECLARE @secondint int SELECT @tempint = CONVERT(int, SUBSTRING(@binvalue,@i,1)) SELECT @firstint = FLOOR(@tempint/16) SELECT @secondint = @tempint - (@firstint*16) SELECT @charvalue = @charvalue + SUBSTRING(@hexstring, @firstint+1, 1) + SUBSTRING(@hexstring, @secondint+1, 1) SELECT @i = @i + 1ENDSELECT @hexvalue = @charvalueGOUSE [master]GO/****** Object: StoredProcedure [dbo].[sp_help_revlogin] Script Date: 01/14/2011 10:17:36 ******/SET ANSI_NULLS ONGOSET QUOTED_IDENTIFIER ONGOCREATE PROCEDURE [dbo].[sp_help_revlogin] @login_name sysname = NULL ASDECLARE @name sysnameDECLARE @type varchar (1)DECLARE @hasaccess intDECLARE @denylogin intDECLARE @is_disabled intDECLARE @PWD_varbinary varbinary (256)DECLARE @PWD_string varchar (514)DECLARE @SID_varbinary varbinary (85)DECLARE @SID_string varchar (514)DECLARE @tmpstr varchar (1024)DECLARE @is_policy_checked varchar (3)DECLARE @is_expiration_checked varchar (3)DECLARE @role_bulkadmin varchar (1)DECLARE @role_dbcreator varchar (1)DECLARE @role_diskadmin varchar (1)DECLARE @role_processadmin varchar (1)DECLARE @role_securityadmin varchar (1)DECLARE @role_serveradmin varchar (1)DECLARE @role_setupadmin varchar (1)DECLARE @role_sysadmin varchar (1)DECLARE @defaultdb sysname IF (@login_name IS NULL) DECLARE login_curs CURSOR FOR SELECT p.sid, p.name, p.type, p.is_disabled, p.default_database_name, l.hasaccess, l.denylogin, l.bulkadmin,l.dbcreator,l.diskadmin,l.processadmin,l.securityadmin,l.serveradmin,l.setupadmin,l.sysadmin FROM sys.server_principals p LEFT JOIN sys.syslogins l ON ( l.name = p.name ) WHERE p.type IN ( 'S', 'G', 'U' ) AND p.name <> 'sa'ELSE DECLARE login_curs CURSOR FOR SELECT p.sid, p.name, p.type, p.is_disabled, p.default_database_name, l.hasaccess, l.denylogin, l.bulkadmin,l.dbcreator,l.diskadmin,l.processadmin,l.securityadmin,l.serveradmin,l.setupadmin,l.sysadmin FROM sys.server_principals p LEFT JOIN sys.syslogins l ON ( l.name = p.name ) WHERE p.type IN ( 'S', 'G', 'U' ) AND p.name = @login_nameOPEN login_cursFETCH NEXT FROM login_curs INTO @SID_varbinary, @name, @type, @is_disabled, @defaultdb, @hasaccess, @denylogin,@role_bulkadmin,@role_dbcreator,@role_diskadmin,@role_processadmin,@role_securityadmin,@role_serveradmin,@role_setupadmin,@role_sysadminIF (@@fetch_status = -1)BEGIN PRINT 'No login(s) found.' CLOSE login_curs DEALLOCATE login_curs RETURN -1ENDSET @tmpstr = '/* sp_help_revlogin script 'PRINT @tmpstrSET @tmpstr = '** Generated ' + CONVERT (varchar, GETDATE()) + ' on ' + @@SERVERNAME + ' */'PRINT @tmpstrPRINT ''WHILE (@@fetch_status <> -1)BEGIN IF (@@fetch_status <> -2) BEGIN PRINT '' SET @tmpstr = '-- Login: ' + @name PRINT @tmpstr IF (@type IN ( 'G', 'U')) BEGIN -- NT authenticated account/group SET @tmpstr = 'CREATE LOGIN ' + QUOTENAME( @name ) + ' FROM WINDOWS WITH DEFAULT_DATABASE = [' + @defaultdb + ']' END ELSE BEGIN -- SQL Server authentication -- obtain password and sid SET @PWD_varbinary = CAST( LOGINPROPERTY( @name, 'PasswordHash' ) AS varbinary (256) ) EXEC sp_hexadecimal @PWD_varbinary, @PWD_string OUT EXEC sp_hexadecimal @SID_varbinary,@SID_string OUT -- obtain password policy state SELECT @is_policy_checked = CASE is_policy_checked WHEN 1 THEN 'ON' WHEN 0 THEN 'OFF' ELSE NULL END FROM sys.sql_logins WHERE name = @name SELECT @is_expiration_checked = CASE is_expiration_checked WHEN 1 THEN 'ON' WHEN 0 THEN 'OFF' ELSE NULL END FROM sys.sql_logins WHERE name = @name SET @tmpstr = 'CREATE LOGIN ' + QUOTENAME( @name ) + ' WITH PASSWORD = ' + @PWD_string + ' HASHED, SID = ' + @SID_string + ', DEFAULT_DATABASE = [' + @defaultdb + ']' IF ( @is_policy_checked IS NOT NULL ) BEGIN SET @tmpstr = @tmpstr + ', CHECK_POLICY = ' + @is_policy_checked END IF ( @is_expiration_checked IS NOT NULL ) BEGIN SET @tmpstr = @tmpstr + ', CHECK_EXPIRATION = ' + @is_expiration_checked END END IF (@denylogin = 1) BEGIN -- login is denied access SET @tmpstr = @tmpstr + '; DENY CONNECT SQL TO ' + QUOTENAME( @name ) END ELSE IF (@hasaccess = 0) BEGIN -- login exists but does not have access SET @tmpstr = @tmpstr + '; REVOKE CONNECT SQL TO ' + QUOTENAME( @name ) END IF (@is_disabled = 1) BEGIN -- login is disabled SET @tmpstr = @tmpstr + '; ALTER LOGIN ' + QUOTENAME( @name ) + ' DISABLE' END PRINT @tmpstr If @role_bulkadmin = '1' BEGIN SET @tmpstr = 'EXEC master..sp_addsrvrolemember @loginame = N''' + @name + ''' , @rolename = N''bulkadmin'' ' PRINT @tmpstr END IF @role_dbcreator = '1' BEGIN SET @tmpstr = 'EXEC master..sp_addsrvrolemember @loginame = N''' + @name + ''' , @rolename = N''dbcreator'' ' PRINT @tmpstr END IF @role_diskadmin = '1' BEGIN SET @tmpstr = 'EXEC master..sp_addsrvrolemember @loginame = N''' + @name + ''' , @rolename = N''diskadmin'' ' PRINT @tmpstr END IF @role_processadmin = '1' BEGIN SET @tmpstr = 'EXEC master..sp_addsrvrolemember @loginame = N''' + @name + ''' , @rolename = N''processadmin'' ' PRINT @tmpstr END IF @role_securityadmin = '1' BEGIN SET @tmpstr = 'EXEC master..sp_addsrvrolemember @loginame = N''' + @name + ''' , @rolename = N''securityadmin'' ' PRINT @tmpstr END IF @role_serveradmin = '1' BEGIN SET @tmpstr = 'EXEC master..sp_addsrvrolemember @loginame = N''' + @name + ''' , @rolename = N''serveradmin'' ' PRINT @tmpstr END IF @role_setupadmin = '1' BEGIN SET @tmpstr = 'EXEC master..sp_addsrvrolemember @loginame = N''' + @name + ''' , @rolename = N''setupadmin'' ' PRINT @tmpstr END IF @role_sysadmin = '1' BEGIN SET @tmpstr = 'EXEC master..sp_addsrvrolemember @loginame = N''' + @name + ''' , @rolename = N''sysadmin'' ' PRINT @tmpstr END END FETCH NEXT FROM login_curs INTO @SID_varbinary, @name, @type, @is_disabled, @defaultdb, @hasaccess, @denylogin,@role_bulkadmin,@role_dbcreator,@role_diskadmin,@role_processadmin,@role_securityadmin,@role_serveradmin,@role_setupadmin,@role_sysadminENDCLOSE login_cursDEALLOCATE login_cursRETURN 0GOmuhady |
 |
|
|
|
|
|
|