Ads

18 May 2020

SQL Server Agent Not Coming OnLine After Reboot

This issue occurred recently whenever the server was rebooted SQL Server Agent was not coming online. Noticed the below error message in event viewr.

"The SQL Server Agent service failed to start due to the following error:
The service did not respond to the start or control request in a timely fashion."

Resolution As follows:

https://support.microsoft.com/en-in/help/922918/a-service-does-not-start-and-events-7000-and-7011-are-logged-in-window

  1. Click Start, click Run, type regedit, and then click OK.
  2. Locate and then click the following registry subkey:
    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control
  3. In the right pane, locate the ServicesPipeTimeout entry.

    Note If the ServicesPipeTimeout entry does not exist, you must create it. To do this, follow these steps:
     
    1. On the Edit menu, point to New, and then click DWORD Value.
    2. Type ServicesPipeTimeout, and then press ENTER.
  4. Right-click ServicesPipeTimeout, and then click Modify.
  5. Click Decimal, type 60000, and then click OK.

    This value represents the time in milliseconds before a service times out.
  6. Restart the computer.

18 February 2020

Upgradation of SQL Server 2008r2 to 2014 Fails - Valid DSN, Valid Database compatibility level

The below error screen will appear during installation process, the fix is very simple step we need to configure the SSRS database, below screens are self explanatory.

ERROR SCREEN


Open SSRS Configuration Manager and  configure the report server database.

Once its configured we can see below screen.


Re-run the rules and it should go through.

17 February 2020

SQL Server 2014 SP3 Fails - User Data Directory in registry is not valid



Below is the error screen we receive when the SQL Server SP3 Fails, please follow below steps to resolve the issue.


Resolution:

Step1: Go to regedit

Step 2: Crawl to below location
HKLM\SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL12.MSSQLSERVER\MSSQLServer

Step3: If there is no DefaultDATA and DefaultLog entries, please add with the path of DATA and Log Files. If exists please verify the location details and correct it.

Step4: Restart the server.

Step5; RUn the setup again.






05 March 2019

General - GDR, SP, CU

What's the difference in a GDR, a Cumulative Update, CTP, RC, and a Service Pack?

CTP:
Microsoft changed the terminology for SQL Server pre-releases.
They are now referred to as CTPs (Community Technology Previews).

RC:
As the product enters it's final stages before release, the feature set is complete and the product is undergoing final testing, it's called an RC (Release Candidate).

GA:
After a product has undergone significant testing and it's determined that no more changes will be made to the product before release, it's sometimes said that the product has gone golden. It's also called a GA (General Availability) release.

RTM:
Once the bits been turned over to a company to mass produce the media (CDs, DVDs, etc), it's RTM'd (Released To Manufacturing).

GDR:
Over time, Hot Fixes are created by the dev team to address specific product issues affecting certain customers. Sometimes the issue is so wide spread, a GDR (General Distribution Release) is issued so that all customers will receive the updates.


CU:
CU (Cumulative Update) is created that contains all of the applicable hot fixes.

SP:
Once a large enough collection of changes have been gathered, an SP (Service Pack) will be issued.

Latest:

An Incremental Servicing Model is available from the SQL Server team to deliver hotfixes for reported problems:

https://support.microsoft.com/en-us/help/935897/an-incremental-servicing-model-is-available-from-the-sql-server-team-t

Going ahead we need to apply only CU to SQL Server to bring the system into servicing support cycle.

More On:  https://blogs.msdn.microsoft.com/sqlreleaseservices/announcing-the-modern-servicing-model-for-sql-server/

https://blogs.msdn.microsoft.com/sqlreleaseservices/announcing-updates-to-the-sql-server-incremental-servicing-model-ism/

01 March 2019

EXECUTE permission was denied on the object 'sp_enable_sql_debug'


The SQL code was failing for one DB User with DBO permissions on the databases it was accessing. 

Problem: There was one stored procedure under database DB1 at some point it used to call other stored procedures from DB2. This caused failure when tried to analyse the issue using DEBUG method.


SOLUTION: Its fixed for us by doing following changes at code and DB level.

Code Level:
11)      Impersonate method
·         With execute as [login]
·         Execute as login=[login name]

22)      Fully qualified database object names

Administration Side:
11)     Grant user granted public role on master to read objects.
22)      Granting View Server State at instance level.


26 October 2018

19 October 2018

Data and Log File Move to New Location (Move Script)

Below is the script we can use to move the data and log files for the databases except master.


DECLARE
    @counter    INT = 1,
    @max        INT = 0,
    @NEW_DATA_PATH VARCHAR(500)='E:\XXXX\Data',
    @NEW_LOG_PATH VARCHAR(500)='F:\XXXX\Log'
  
DECLARE @FILE_LIST TABLE (
    [ID]    int IDENTITY,
    [DBNAME] VARCHAR(100),
    [LNAME]   VARCHAR(100),
    [PNAME]   VARCHAR(500),
    [TYPE_DESC]  VARCHAR(50)
    )  
INSERT INTO @FILE_LIST
SELECT n.NAME,f.NAME,f.PHYSICAL_NAME,f.TYPE_DESC
FROM MASTER.SYS.MASTER_FILES f,MASTER.SYS.DATABASES n WHERE n.NAME not in('MASTER') 
and f.DATABASE_ID=n.DATABASE_ID

SELECT @max = COUNT([ID]) FROM @FILE_LIST

WHILE @counter <= @max
BEGIN

 DECLARE @FILE_TYPE VARCHAR(100),
         @DBNAME VARCHAR(100),
         @LOGICAL_NAME VARCHAR(100),
         @PHYSICAL_NAME VARCHAR(500) ;
          
 SELECT @FILE_TYPE=TYPE_DESC,@DBNAME=[DBNAME],@LOGICAL_NAME=[LNAME],
 @PHYSICAL_NAME=SUBSTRING([PNAME],LEN([PNAME])-CHARINDEX('\',REVERSE([PNAME]))+2,LEN([PNAME])-1) 
 FROM @FILE_LIST WHERE [ID] = @counter
    
    IF(@FILE_TYPE='ROWS')
    BEGIN
    --ALTER DATABASE database_name MODIFY FILE ( NAME = logical_name, FILENAME = 'new_path\os_file_name' );
        --PRINT @FILE_TYPE+','+@DBNAME+','+@LOGICAL_NAME+','+@PHYSICAL_NAME
        PRINT 'USE MASTER 
               GO 
               ALTER DATABASE '+@DBNAME+' MODIFY FILE ( NAME = '+@LOGICAL_NAME+', FILENAME = '''+@NEW_DATA_PATH+'\'+@PHYSICAL_NAME+''')
               GO'
  END
  ELSE
   PRINT 'USE MASTER 
          GO 
          ALTER DATABASE '+@DBNAME+' MODIFY FILE ( NAME = '+@LOGICAL_NAME+', FILENAME = '''+@NEW_LOG_PATH+'\'+@PHYSICAL_NAME+''')
          GO'
     SET @counter = @counter + 1
      
 END