Category: SQL Server 2008 R2

  • How to fix Orphan User in absense of login

    Error
    Msg 15291, Level 16, State 1, Procedure sp_change_users_login, Line 131
    Terminating this procedure. The Login name ‘DJ’ is absent or invalid

    What is Orphaned User?
    An Orphaned User in SQL Server is a database user for which a valid SQL Server Login is not available or it is wrongly defined with the different SID in the SQL Server instance, thereby not allowing the user to get connect to the database to perform activities.

    Below scenarios are mostly responsible for Orphan Users
    1. A SQL Server Login was accidentally dropped
    2. A database is restored with a copy of database from another SQL Server Instance
    3. SID of the login is different in sys.server_principals and sys.sysusers

    Steps to re-produce issue
    Step 1: Creating database SQLDBPool

    USE [master]
    GO

    CREATE DATABASE [sqldbpool] ON PRIMARY
    ( NAME = N’sqldbpool’, FILENAME = N’C:\sqldbpool.mdf’ , SIZE = 2048KB , MAXSIZE = UNLIMITED, FILEGROWTH = 1024KB )
    LOG ON
    ( NAME = N’sqldbpool_log’, FILENAME = N’C:\sqldbpool_log.ldf’ , SIZE = 1024KB , MAXSIZE = 2048GB , FILEGROWTH = 10%)
    COLLATE SQL_Latin1_General_CP1_CI_AS
    GO

    Step 2:
    In this example I am creating user DJ using below script. You can also create user from GUI as well
    Using GUI

    Right Click On Security Node and Select New Login
    Right Click On Security Node and Select New Login

    Using Script

    USE [master]
    GO
    CREATE LOGIN [DJ] WITH PASSWORD=N'pune@123',
    DEFAULT_DATABASE=[master],
    CHECK_EXPIRATION=OFF,
    CHECK_POLICY=OFF
    GO

    Step 3: I am assigning Data Reader and writer permission to Login DJ to database SQLDBPool

    USE [sqldbpool]
    GO
    CREATE USER [DJ] FOR LOGIN [DJ]
    GO
    USE [sqldbpool]
    GO
    EXEC sp_addrolemember N'db_datawriter', N'DJ'
    GO
    USE [sqldbpool]
    GO
    EXEC sp_addrolemember N'db_denydatareader', N'DJ'
    GO

    Step 4: Dropping the login DJ and it will make the user DJ as orphan in SQLDBPool database

    USE [master]
    GO
    DROP LOGIN [DJ]
    GO

    Steps to fix the issue
    Step 1: You can use SP_CHANGE_USERS_LOGIN stored procedure to fix the Orphan user issue, for that you need the Database Owner permission on that database.

    Syntax
    sp_change_users_login [ @Action= ] 'action'
    [ , [ @UserNamePattern= ] 'user' ]
    [ , [ @LoginName= ] 'login' ]
    [ , [ @Password= ] 'password' ]
    [;]

    Examples

    EXEC sp_change_users_login 'Report' --Reports orphaned user
    EXEC sp_change_users_login 'Auto_Fix', 'user' -- auto fix when SID mis-match issue
    EXEC sp_change_users_login 'Auto_Fix', 'user', 'login', 'password'

    The stored procedure SP_CHANGE_USERS_LOGIN accepts arguments AUTO_FIX, REPORT or UPDATE_ONE as @Action parameter.

    AUTO_FIX: If this value is used for @Action parameter, it will create a SQL Server Login if it was not present earlier and will synchronize the SQL Server Login with that of the Database User.We have to also provide the password here.

    REPORT: It will display the list of all the Orphaned Users along with the SID (Security Identifiers) value within the current database which are not linked to a SQL Server Login.

    UPDATE_ONE:will synchronize the specified database user with an existing SQL Server Login.

    Step 2: As first step I am checking orphan user using Report parameter, it will show me the SID and orphan user name.

    List of Orphaned User

    Step 3: In this scenario we have dropped the SQL Login so it is required to create the login. We can create the login using below query specifying password and mapped it to orphan user

    EXEC sp_change_users_login 'Auto_Fix', 'DJ', NULL, 'pune@123'

    Step 4: Executing again the report query to list out orphan users.
    EXEC sp_change_users_login 'Report'

    Use below link to list out and fix the Orphan User issue for all the databases.

    http://sqldbpool.com/2010/03/27/script-to-fix-and-list-out-orphan-users-on-all-the-databases-on-server/

     

  • Activity Monitor

    In SQL Server 2008, Activity Monitor has below five sections namely Overview, Processes, Resource Waits, Data File I/O and Recent Expensive Queries.

    Overview Section
    This shows the graphical display of Processor Time (%), Number of Waiting Tasks, Database I/O (MB/Sec) and the Number of Batch Requests/second.

    Processes: – section will show you the list of all the active users which are connected to SQL Server Database Engine. You can even KILL the sessions from here.

    Resource Waits – Shows wait state information. It will help DBAs to identify potential bottlenecks with respect to Memory, CPU, Network I/O, Cache etc

    Data File I/O – Shows I/O information for database data and log files. You can troubleshoot DISK IO related issues from here.

    Recent Expensive Queries – Shows information about the most expensive queries. You can check the execution plan as well by just doing right click.

  • How to Open Activity Monitor from SSMS tool?

    To start Activity Monitor in SQL Server 2008 SSMS, right-click on the SQL Server name you want to monitor.

    From  SQL Server 2008 Management Studio’s toolbar, click Activity Monitor as shown in the snippet below.

  • How to check SQL Server Version Or Build No?

    Option 1
    EXEC master..sp_MSgetversion
    Output
    Character_Value
    ——————– ———– ———–
    10.0.2789.0 1 3

    Option 2
    select @@version
    Output
    Microsoft SQL Server 2008 (SP1) – 10.0.2789.0 (X64)
    Jul 12 2010 19:21:29
    Copyright (c) 1988-2008 Microsoft Corporation
    Enterprise Edition (64-bit) on Windows NT 5.2 (Build 3790: Service Pack 2)

    Option 3
    SELECT SERVERPROPERTY('productversion')
    Output Build Version
    10.0.2789.0

    Option 5
    SELECT SERVERPROPERTY ('productlevel')
    Output-Service Pack
    SP1

    Option 6
    SELECT SERVERPROPERTY ('edition')
    Output-Edition
    Enterprise Edition (64-bit)

  • Operating System Error 112

    Operating system error 112 describes the insufficient disk space on drive.

    OS Error 112 occured while Backup
    1. Delete the old backuo files on drive if not required
    2. Archieve the old files to tape
    3. Compress the old backup files to create space
    4. Take the backup on other drive

    OS Error 112 occured while Restore
    1. Shrink the data and log file using DBCC ShrinkFile to reclaim space
    2. Move un-necessary files to other drives (.Bakup or etc)