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

Database View

View is a database object also called a logical table. it has no psychical existence. It is not like a simple table, but is a virtual or logical table which contains columns and data from different tables (may be one or more tables). A View does not contain any data, it is a set of queries that are applied to one or more tables that is stored within the database as an object. After creating a view from some table(s), it used as a reference of those tables and when executed, it shows only those data which are already mentioned in the query during the creation of the View. Creating view Syntax: ------------------------------------------------- CREATE VIEW [View_Name] AS [ SELECT Statement] ------------------------------------ ------------- CREATE VIEW SampleView As SELECT EmpID, EmpName FROM EmpInfo -------------------------------------------------- Data retrieve from view: SELECT * FROM SampleView WHERE EmpID ='FN0009C1'     View does not modif

Efficiently Paging Through Large Amounts of Data (PageIndex, Page Size) -SQL Server

In this article you learn how to fetch data according PageIndex and PageSize. In web application, it is much more important to increase webform performance, loadbalance. In my development experience, some of table hold large amount of records (more than 2GB) and user need to shows records in GridView. But problem is when we select all records and loads in webforms, webform has crashed. In that case, I will simply solved with Table Variable and using Grid Page Number and Page Size. 1. Create Procedure CREATE PROCEDURE Load_Data_WithPaging @PageIndex AS INT , /*Selected Row Index of selected grid*/ @PageSize AS INT , /*Total page size of selected grid*/ @TotalRecords AS INT OUT /*used for display virtual page no*/ AS BEGIN SET NOCOUNT ON ; DECLARE @FromIndex AS INT = 0 , @ToIndex AS INT = 0 ; SET @FromIndex = (@PageIndex * @PageSize) + 1 ; /*First row no selection*/ SET @ToIndex = ((@PageIndex

What is an Index? Explain Custered Index and Non-Clustered Index

Index Index is a database object, which can be created on one or more columns (16 Max column combination). When creating the index will read the column(s) and forms a relevant data structure to minimize the number of data comparisons. The index will improve the performance of data retrieval and adds some overhead on data modification such as create, delete and modify. So it depends on how much data retrieval can be performed on table versus how much of DML ( Insert , Delete and Update ) operations. clustered index A clustered index is something that reorganizes the way records in the table are physically stored. Therefore a table can have only one clustered index. The leaf nodes of a clustered index contain the data pages, by which I mean the key-value pair in the clustered index has the index key and the actual data value. Also remember, a clustered index will be created on a table by default the moment a primary key is created on the table. A clustered index is so