sp_OACreate (Transact-SQL)
S’applique à : SQL Server
Crée une instance d'un objet OLE.
Conventions de la syntaxe Transact-SQL
Syntaxe
sp_OACreate { progid | clsid } , objecttoken OUTPUT [ , context ]
Arguments
progid
Identificateur de programme (ProgID) de l'objet OLE à créer. Cette chaîne de caractères décrit la classe de l’objet OLE et a la forme : « OLEComponent.Object'
OLEComponent est le nom du composant du serveur OLE Automation, et Object est le nom de l’objet OLE. L’objet OLE spécifié doit être valide et doit prendre en charge l’interface IDispatch .
Par exemple, SQLDMO. SQLServer est le ProgID de l’objet SQL-DMO SQLServer . SQL-DMO a un nom de composant SQLDMO, l’objet SQLServer est valide et (comme tous les objets SQL-DMO) l’objet SQLServer prend en charge IDispatch.
clsid
Identificateur de classe (CLSID) de l'objet OLE à créer. Cette chaîne de caractères décrit la classe de l’objet OLE et a la forme : « {nnnnnn-nnnn-nnnn-nnnn-nnnn-nnnnnnnn} ». L’objet OLE spécifié doit être valide et doit prendre en charge l’interface IDispatch .
Par exemple, {00026BA1-0000-0000-C000-000000000046} est le CLSID de l’objet SQL-DMO SQLServer .
objecttoken OUTPUT
Jeton d’objet retourné et doit être une variable locale de type de données int. Ce jeton d’objet identifie l’objet OLE créé et est utilisé dans les appels aux autres procédures stockées OLE Automation.
contexte
Spécifie le contexte d'exécution dans lequel l'objet OLE nouvellement créé s'exécute. Si cet argument est spécifié, il doit avoir une des valeurs suivantes :
1 = Serveur OLE in-process (.dll) uniquement.
4 = Serveur OLE local (.exe) uniquement.
5 = Le serveur OLE local et in-process autorisé
Si elle n’est pas spécifiée, la valeur par défaut est 5. Cette valeur est passée en tant que paramètre dwClsContext de l’appel à CoCreateInstance.
Si un serveur OLE in-process est autorisé (en utilisant une valeur de contexte de 1 ou 5 ou en ne spécifiant pas de valeur de contexte), il a accès à la mémoire et à d’autres ressources détenues par SQL Server. Un serveur OLE in-process peut endommager la mémoire ou les ressources SQL Server et provoquer des résultats imprévisibles, tels qu’une violation d’accès SQL Server.
Lorsque vous spécifiez une valeur de contexte de 4, un serveur OLE local n’a pas accès à des ressources SQL Server et ne peut pas endommager la mémoire ou les ressources SQL Server.
Remarque
Les paramètres de cette procédure stockée sont spécifiés par position, et non pas par nom.
Codet de retour
0 (succès) ou un nombre différent de zéro (échec), qui représente la valeur entière de HRESULT renvoyée par l'objet OLE Automation.
Pour plus d’informations sur les codes de retour HRESULT, consultez OLE Automation Return Codes and Error Information.
Notes
Si des procédures OLE Automation sont activées, un appel à sp_OACreate démarre l’environnement d’exécution partagée OLE Automation. Pour plus d’informations sur l’activation d’OLE Automation, consultez Ole Automation Procedures Server Configuration Option.
L’objet OLE créé est automatiquement détruit à la fin du lot d’instructions Transact-SQL.
autorisations
Nécessite l’appartenance au rôle serveur fixe sysadmin ou l’autorisation d’exécution directement sur cette procédure stockée. Ole Automation Procedures
la configuration doit être activée pour utiliser n’importe quelle procédure système liée à OLE Automation.
Exemples
R. Utilisation de ProgID
L’exemple suivant crée un objet SQL-DMO SQLServer à l’aide de son 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. Utilisation de CLSID
L’exemple suivant crée un objet SQL-DMO SQLServer à l’aide de son 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
Voir aussi
Procédures stockées OLE Automation (Transact-SQL)
Procédures OLE Automation (option de configuration de serveur)
Exemple de script OLE Automation