'*****************************************************
'		Script Written by Larry Heintz
'		Dec 2007 www.windowsadminscripts.com
' This script should be used after restoring a sql server
' and all its dbases. The script will enumerate all dbases
' and the users associated with the dbase and it will fix
' the orphaned users that normal happens after a dbase
' is restored in SQL 2000.
'
' usage cscript sqlusers.vbs *will use local pc for server
' or
' usage cscript sqlusers.vbs /computer:[sql server name]
'*****************************************************
Dim args,strDBServerName
Set args = Wscript.Arguments.Named

if args.Item("computer") <> "" then
	strDBServerName = args.Item("computer")
else
	strDBServerName = getComputer()
end if

Call getDbases (strDBServerName)

Sub getDbases (sqlserver)
Dim objSQLServer,colDatabases,objDatabase
Set objSQLServer = CreateObject("SQLDMO.SQLServer")
	objSQLServer.LoginSecure = True
	objSQLServer.Connect sqlserver
Set colDatabases = objSQLServer.Databases

For Each objDatabase In colDatabases
	wscript.echo "DBName: " & objDatabase.name
	users sqlserver,objDatabase.Name
Next

Set colDatabases = nothing
Set objSQLServer = nothing
End Sub

Sub users (sqlserver,dbname)
Dim objSQLServer,objDB,colUsers,objUser
Set objSQLServer = CreateObject("SQLDMO.SQLServer")
	objSQLServer.LoginSecure = True
	objSQLServer.Connect sqlserver
Set objDB = objSQLServer.Databases(dbname)
Set colUsers = objDB.Users

For Each objUser In colUsers
	'Uncomment below line to see dbase name, dbase user and dbase login username
	'wscript.echo "DBName: " & dbname & ","User: " & objUser.Name & ","Login: " & objUser.Login
	wscript.echo "EXEC sp_change_users_login 'Auto_Fix', '" & objUser.Name & "'"
Next
wscript.echo "--------------------------------------"

Set colUsers = nothing
Set objDB = nothing
Set objSQLServer = nothing
End Sub

Function getComputer()
	Dim objNet
	Set objNet = WScript.CreateObject("WScript.Network") 
	getComputer = objNet.ComputerName 
	Set objNet = Nothing 
End Function
