Биты и байты.

Биты и байты.

понедельник, 17 марта 2014 г.

Расширь возможности своего SQL сервера через OLE !

Что делать когда возможностей  и функционала SQL сервера не хватает ?
Представим что нужно получить размер свободного пространства на всех дисках.
Тогда на помощь придет OLE автоматизация, которая является одной из самых полезных возможностей SQL сервера, доступная еще с 2005 версии.

Как же эти воспользоваться, для начала нужно включить  эту опцию на SQL сервере

--включить интеграцию с OLE
sp_configure 'show advanced options', 1;
GO
RECONFIGURE;
GO
sp_configure 'Ole Automation Procedures', 1;
GO
RECONFIGURE;
GO

Затем воспользоваться следующими процедурами:


При обращении к объекту OLE-автоматизации из Transact-SQL сперва необходимо вызвать системную хранимую процедуру sp_OACreate,
которая создает экземпляр объекта в адресном пространстве экземпляра компонента Компонент Database Engine.

После создания экземпляра объекта можно вызывать следующие хранимые процедуры для работы со свойствами,
методами и получением сведений об ошибках, связанных с созданным объектом.
sp_OAGetProperty  - возвращает значение свойства, sp_OAGetProperty - устанавливает значение свойства, sp_OAMethod  - вызывает метод,
sp_OAGetErrorInfo  - возвращает сведения о последней возникшей ошибке


Когда объект больше не нужен, вызов хранимой процедуры sp_OADestroy позволяет освободить память, удалив объект, созданный хранимой процедурой sp_OACreate.

Создаем процедуру, в которой подсчитаем размер свободного пространства на диске

Запускаем нашу процедуру  и   видим что все работает

declare @TotalSpace float
  , @FreeSpace float
  , @Dif float
  , @DrivePath varchar(1000)

SET @DrivePath = 'C:'

exec dbo.DriveSpace
@DrivePath
,
@TotalSpace = @TotalSpace out
,@FreeSpace = @FreeSpace out

select  @DrivePath  Drivepath ,@FreeSpace/@TotalSpace*100 PCT_free, @FreeSpace  FreeSpace, @TotalSpace TotalSpace


Поскольку синтаксис SP_OACREATE нельзя признать самым удобным для написания сложных конструкций и их отладки,
то рекомендуется вначале проверять работоспособность программных объектов, доступность их свойств и методов при помощи более специализированных средств например power shell.

About