Skip to main content

SQL Server blocked access to procedure ‘sys.sp_OACreate’ of component ‘Ole Automation Procedures’

I am working on banking project. For migration purpose, I will call web service in store procedure and based on this response I will process another task.

Create a Procedure named WebserviceCall


CREATE procedure WebserviceCall
@UsrID as varchar(50)
,@Password AS Varchar(50)
,@AccountNo AS Varchar(50)
AS 
BEGIN

DECLARE @obj INT
DECLARE @ValorDeRegreso INT
DECLARE @sUrl VARCHAR(200)
DECLARE @response VARCHAR(8000)='Failed'
DECLARE @hr INT
DECLARE @src VARCHAR(255)
DECLARE @desc VARCHAR(255)
 BEGIN TRY  
  SET @sUrl ='http://x.x.x.x/mtcwebservicetest/Service.asmx/GetSession?UserID='+@UsrID+'&Password='+@Password+'';  

  EXEC sp_OACreate 'MSXML2.ServerXMLHttp',@obj out
  EXEC sp_OAMethod @obj,'open',NULL,'GET',@sUrl,false
  EXEC sp_OAMethod @obj,'send'
  --EXEC sp_OAGetProperty @obj,'responseText',@response out
  Exec sp_OAMethod @obj, 'responseText', @response OUTPUT   

  --select @XmlResponse = CAST(@ResponseText as xml)  
  SELECT @response [response],@sUrl,@obj

  EXEC sp_OADestroy @obj
  
 END TRY


BEGIN CATCH
  --ROLLBACK TRANSACTION @TranName
  DECLARE @ErrorMessage AS VARCHAR(250)
  SELECT @ErrorMessage = ERROR_MESSAGE();  
  RAISERROR(@ErrorMessage,1,1);
END CATCH  
END


When I execute this procedure in SQL Server 2008 r2 I got below error:

SQL Server blocked access to procedure ‘sys.sp_OACreate’ of component ‘Ole Automation Procedures’ because this component is turned off as part of the security configuration for this server. A system administrator can enable the use of ‘Ole Automation Procedures’ by using sp_configure. For more information about enabling ‘Ole Automation Procedures’, see “Surface Area Configuration” in SQL Server Books Online. [SQLSTATE 42000] (Error 15281). The step failed.

This error informed us; “Ole Automation Procedures” are disabled/ turned off in current SQL Server. Default “Ole Automation Procedures” are disabled in sql server and value is 0. When Enable “OLE Automation Procedures”, value will be 1.

Use Ole Automation Procedures option to specify whether OLE Automation objects can be instantiated within Transact-SQL batches. This option can also be configured using the Policy-Based Management or the sp_configure stored procedure. 

For this purpose we have DBA permission to execute below statements.

sp_configure 'show advanced options', 1 
GO 
RECONFIGURE; 
GO 
sp_configure 'Ole Automation Procedures', 1 
GO 
RECONFIGURE; 
GO 
sp_configure 'show advanced options', 1 
GO 
RECONFIGURE;

Below is the screen shot.


SP Configure
Execute procedure again.

Comments

Popular posts from this blog

What are the difference between DDL, DML , DCL and TCL commands?

Database Command Types DDL Data Definition Language  (DDL) statements are used to define the database structure or schema.  -           CREATE - to create objects in the database -           ALTER - alters the structure of the database -           DROP - delete objects from the database -           TRUNCATE - remove all records from a table, including all spaces allocated for the records are removed -           COMMENT - add comments to the data dictionary -           RENAME - rename an object DML Data Manipulation Language  (DML) statements are used for managing data in database. DML commands are not auto-committed. It means changes made by DML command are not permanent to d...

Display Image Immediately from fileUpload Control

Client Side Programming is more efficient for user to very first interection Like Jquery . Now i provide some jquery script to display Image from FileUpload Control directly.. For this purpose we use reference . <script src="../../../JS/JQueryAutocomplete/jquery-1.7.2.js" type="text/javascript"></script>. You just download from jquery.com. Now code below... <script language="javascript" type="text/javascript"> /* Write FileUpload Change event .. */ $('#FileUpload1').bind('change', function() {                                 displayImage(this);                    }); //-------------------------// function displayImage(input)             {        ...

DBCC command to RESEED Table Identity Value – Reset Table Identity

Generally,  we are using identity column into table where identity value incrementally inserted.  DBCC command RESEED is used to reseed (reset) column identity. For example, your table has 20 rows that means last identity value is 20. if you want to reseed identity value will be 30, you can run following TSQL. DBCC  CHECKIDENT  ( yourtable ,  reseed ,  29 ); i f You reseed identity value which is below in current table, it will violate   the uniqueness constraint as soon as the values start to duplicate and will generate error. If you delete last row in current table and insert new row into current table, your new inserted identity value will be last (deleted identity value + incremental value). For example, you delete last three rows where Identity value is 20 - 22 ,so if you now insert new row,  identity value will be 23. That means seed value keep into transaction log.