Tuesday, 10 April 2012

Useful tips

1. How to load all the assemblies?

var loadedAssemblies = AppDomain.CurrentDomain.GetAssemblies();

2. Combine absolute & relative paths

var relativePath = "..\\bling.txt";
var baseDirectory = "C:\\blah\\";
var absolutePath = Path.GetFullPath(baseDirectory + relativePath);

3. Get x86 Program folder

    static string ProgramFilesx86()
    {
       if( 8 == IntPtr.Size
       || (!String.IsNullOrEmpty(Environment.GetEnvironmentVariable( 
                "PROCESSOR_ARCHITEW6432"))))
       {
            return Environment.GetEnvironmentVariable("ProgramFiles(x86)");
       }

        return Environment.GetEnvironmentVariable("ProgramFiles");
    }

4. Delete a windows server

   sc delete [servicename]

5. Sometimes Server.Databases[name].Drop() will fail with 'Currently in use' error 
   or FailedOperationException. These scenarios we have to 'Server.KillDatabase()).

6. Script to create User with server admin role

 USE [master];
 GO
 CREATE LOGIN SimpleUser
    WITH PASSWORD    = N'SimpleUser',
    CHECK_POLICY     = OFF,
    CHECK_EXPIRATION = OFF;
 GO
 EXEC sp_addsrvrolemember
    @loginame = N'SimpleUser',
    @rolename = N'sysadmin';

7. Sn -T [assembly] to get PublicKeyToken.

8. Remove database(s) based on name

DECLARE @Temp TABLE (Id INT IDENTITY(1, 1), name nvarchar(max));
DECLARE @RowCounter INT;
DECLARE @i INT;

INSERT INTO @Temp select name from sys.databases where name like N'GS_81%'

SELECT @RowCounter = MAX(Id) FROM @Temp

SET @i = 1

DECLARE @DBDeleteByName NVARCHAR(max);

WHILE @i <= @RowCounter
BEGIN
    SELECT @DBDeleteByName = 'DROP DATABASE [' + name + ']'  FROM @Temp WHERE Id = @i

    EXEC sp_executesql @DBDeleteByName;

    SET @i = @i + 1;
END