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 is RDBMS?

In our crucial programming world, RDBMS is stand for Relational Database Management Systems is based on the Relational Model that maintain data records and index in tables. Generally, the term "Relations" are maintained in RDMS.  In a relational database,store the data into collection of tables, which might be related by common fields (database table columns). RDBMS also provide relational operators to manipulate the data stored into the database tables. Most RDBMS use SQL as database query language. There are several objects are included in RDBMS like ,Indexes,Synonyms,Tables,Views Clusters,Constraints,Database links,Database triggers. Most popular RDBMS  are Oracle, MS-SqlServer, MySql,DB2. etc.

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...

Identify and Delete duplicate Records in SQL Server

      S cenario: I have accumulated data into SQL Server database from three different servers (oracle, O2 and oracle) for a financial reporting. After data accumulated , we found more duplicate rows; business requirement was to remove all duplicate rows because of final data will be import to another system. For this purpose, I want to write script to find out duplicate rows from my table. Finally, I want to delete only duplicate rows not original row. Original row means if i have total 2 rows those same or duplicate, so I want to delete only one row that is duplicate. Let’s go............................ Step 1: Create a student Table below Script: CREATE TABLE [Students] (     [ID] [int] NULL,     [Name] [varchar] ( 50 ) NULL,     [address] [varchar] ( 50 ) NULL,     [contact] [varchar] ( 50 ) NULL,     [email] [varchar] ( 50 ) NULL ...