sp_OACreate (Transact-SQL)
Aplica-se a:SQL Server
Cria uma instância de um objeto OLE.
Convenções de sintaxe de Transact-SQL
Sintaxe
sp_OACreate { progid | clsid } , objecttoken OUTPUT [ , context ]
Argumentos
progid
É o identificador programático (ProgID) do objeto OLE a ser criado. Essa cadeia de caracteres descreve a classe do objeto OLE e tem o formato: 'OLEComponent.Objeto'
OLEComponent é o nome do componente do servidor de automação OLE e Object é o nome do objeto OLE. O objeto OLE especificado deve ser válido e deve oferecer suporte à interface IDispatch .
Por exemplo, SQLDMO. SQLServer é o ProgID do objeto SQL-DMO SQLServer . SQL-DMO tem um nome de componente SQLDMO, o objeto SQLServer é válido e (como todos os objetos SQL-DMO) o objeto SQLServer oferece suporte a IDispatch.
clsid
É o CLSID (identificador de classe) do objeto OLE a ser criado. Essa cadeia de caracteres descreve a classe do objeto OLE e tem a forma: '{nnnnnnnn-nnnn-nnnn-nnnn-nnnn}'. O objeto OLE especificado deve ser válido e deve oferecer suporte à interface IDispatch .
Por exemplo, {00026BA1-0000-0000-C000-0000000000046} é o CLSID do objeto SQL-DMO SQLServer .
objecttokenSAÍDA
É o token de objeto retornado e deve ser uma variável local do tipo de dados int. Esse token de objeto identifica o objeto OLE criado e é usado em chamadas para os outros procedimentos armazenados de automação OLE.
contexto
Especifica o contexto de execução no qual o objeto OLE recém-criado é executado. Se especificado, esse valor deve ser um dos seguintes:
1 = Somente servidor OLE em processo (.dll).
4 = Somente servidor OLE local (.exe).
5 = Servidor OLE local e em processo permitido
Se não for especificado, o valor padrão será 5. Esse valor é passado como o parâmetro dwClsContext da chamada para CoCreateInstance.
Se um servidor OLE em processo for permitido (usando um valor de contexto de 1 ou 5 ou não especificando um valor de contexto), ele terá acesso à memória e a outros recursos de propriedade do SQL Server. Um servidor OLE em processo pode danificar a memória ou os recursos do SQL Server e causar resultados imprevisíveis, como uma violação de acesso do SQL Server.
Quando você especifica um valor de contexto de 4, um servidor OLE local não tem acesso a nenhum recurso do SQL Server e não pode danificar a memória ou os recursos do SQL Server.
Observação
Os parâmetros deste procedimento armazenado são especificados por posição, e não por nome.
Valores do código de retorno
0 (êxito) ou um número diferente de zero (falha) que é o valor inteiro do HRESULT retornado pelo objeto de Automação OLE.
Para obter mais informações sobre códigos de retorno HRESULT, consulte Códigos de retorno de automação OLE e informações de erro.
Comentários
Se os procedimentos de automação OLE estiverem habilitados, uma chamada para sp_OACreate iniciará o ambiente de execução compartilhada de automação OLE. Para obter mais informações sobre como habilitar a automação OLE, consulte Opção de configuração do servidor de procedimentos de automação Ole.
O objeto OLE criado é destruído automaticamente no final do lote de instrução Transact-SQL.
Permissões
Requer associação à função de servidor fixa sysadmin ou permissão de execução diretamente neste Procedimento Armazenado. Ole Automation Procedures
a configuração deve estar habilitada para usar qualquer procedimento do sistema relacionado à automação OLE.
Exemplos
R. Usando ProgID
O exemplo a seguir cria um objeto SQL-DMO SQLServer usando seu ProgID.
DECLARE @object int;
DECLARE @hr int;
DECLARE @src varchar(255), @desc varchar(255);
EXEC @hr = sp_OACreate 'SQLDMO.SQLServer', @object OUT;
IF @hr <> 0
BEGIN
EXEC sp_OAGetErrorInfo @object, @src OUT, @desc OUT
raiserror('Error Creating COM Component 0x%x, %s, %s',16,1, @hr, @src, @desc)
RETURN
END;
GO
B. Usando CLSID
O exemplo a seguir cria um objeto SQL-DMO SQLServer usando seu CLSID.
DECLARE @object int;
DECLARE @hr int;
DECLARE @src varchar(255), @desc varchar(255);
EXEC @hr = sp_OACreate '{00026BA1-0000-0000-C000-000000000046}',
@object OUT;
IF @hr <> 0
BEGIN
EXEC sp_OAGetErrorInfo @object, @src OUT, @desc OUT
raiserror('Error Creating COM Component 0x%x, %s, %s',16,1, @hr, @src, @desc)
RETURN
END;
GO
Confira também
Procedimentos armazenados de automação OLE (Transact-SQL)
Opção de configuração de servidor Ole Automation Procedures
Script de exemplo de automação
Comentários
https://aka.ms/ContentUserFeedback.
Em breve: Ao longo de 2024, eliminaremos os problemas do GitHub como o mecanismo de comentários para conteúdo e o substituiremos por um novo sistema de comentários. Para obter mais informações, consulteEnviar e exibir comentários de