Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Aplica-se a:SQL Server
Cria uma instância de um objeto OLE.
Transact-SQL convenções de sintaxe
Sintaxe
sp_OACreate { progid | clsid }
, objecttoken OUTPUT
[ , context ]
[ ; ]
Argumentos
Importante
Os argumentos para procedimentos armazenados estendidos devem ser inseridos na ordem específica, conforme descrito na seção de sintaxe. Se os parâmetros forem inseridos fora de ordem, ocorrerá uma mensagem de erro.
progid
O identificador programático (ProgID) do objeto OLE a ser criado. Esta cadeia de caracteres descreve a classe do objeto OLE e tem o formato: <OLEComponent>.<Object>.
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 suportar a 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 suporta IDispatch.
clsid
O identificador de classe (CLSID) do objeto OLE a ser criado. Esta cadeia de caracteres descreve a classe do objeto OLE e tem o formato: {<nnnnnnnn-nnnn-nnnn-nnnn-nnnnnnnnnnnn>}. O objeto OLE especificado deve ser válido e deve suportar a interface IDispatch.
Por exemplo, {00026BA1-0000-0000-C000-000000000046} é o CLSID do objeto SQL-DMO SQLServer.
SAÍDA OBJECTTOKEN
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 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 uma das seguintes opções:
-
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 para este procedimento armazenado são especificados por posição, não por nome.
Valores de 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 da Automação OLE. Para obter mais informações sobre como habilitar a automação OLE, consulte Ole Automation Procedures (opção de configuração do servidor).
O objeto OLE criado é destruído automaticamente no final do lote de instrução Transact-SQL.
Permissões
Requer associação ao sysadmin função de servidor fixa ou permissão de execução diretamente neste procedimento armazenado. A opção Ole Automation Procedures configuração do servidor deve ser habilitada para usar qualquer procedimento do sistema relacionado à automação OLE.
Exemplos
Um. Usar ProgID
O exemplo a seguir cria um objeto SQL-DMO SQLServer usando seu ProgID.
DECLARE @object AS INT;
DECLARE @hr AS INT;
DECLARE @src AS VARCHAR (255);
DECLARE @desc AS VARCHAR (255);
EXECUTE
@hr = sp_OACreate 'SQLDMO.SQLServer',
@object OUTPUT;
IF @hr <> 0
BEGIN
EXECUTE sp_OAGetErrorInfo
@object,
@src OUTPUT,
@desc OUTPUT;
RAISERROR ('Error Creating COM Component 0x%x, %s, %s', 16, 1, @hr, @src, @desc);
RETURN;
END
GO
B. Usar CLSID
O exemplo a seguir cria um objeto SQL-DMO SQLServer usando seu CLSID.
DECLARE @object AS INT;
DECLARE @hr AS INT;
DECLARE @src AS VARCHAR (255);
DECLARE @desc AS VARCHAR (255);
EXECUTE
@hr = sp_OACreate '{00026BA1-0000-0000-C000-000000000046}',
@object OUTPUT;
IF @hr <> 0
BEGIN
EXECUTE sp_OAGetErrorInfo
@object,
@src OUTPUT,
@desc OUTPUT;
RAISERROR ('Error Creating COM Component 0x%x, %s, %s', 16, 1, @hr, @src, @desc);
RETURN;
END
GO