Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Вытащить Владелец файла через sp_OAGetProperty.  [new]
Мордор Держимордов
Member

Откуда:
Сообщений: 953
В результате тыкания написал процедуру которая вытаскивает по имени файла его параметры Дату создания, Дату модификации и размер.


SET QUOTED_IDENTIFIER ON 
GO
SET ANSI_NULLS ON 
GO

ALTER    procedure    FILE_properties
@filename [nvarchar] (2000)
, @Datecreated [datetime]  output
, @DateLastModified [datetime]  output
, @size [int] output
as
 
 DECLARE @i int
exec master..xp_fileexist @filename,@i output
if @i = 0
 BEGIN
  set @Datecreated = NULL
  set @DateLastModified = NULL
  set @size = NULL
 END
else
 begin
  DECLARE @hr int
  DECLARE @fso int
  declare @result varchar (255)
  DECLARE @owner int
  EXEC @hr = sp_OACreate 'Scripting.FileSystemObject', @fso OUT
  DECLARE @file int
  set @Datecreated = NULL
  set @DateLastModified = NULL
  set @size = NULL

  EXEC @hr = sp_OAMethod @fso, 'GetFile', @file OUT, @filename
  EXEC @hr = sp_OAGetProperty @file, 'Datecreated', @result OUT
  set @Datecreated = convert(datetime,left(@result,10),104) 
  + convert(datetime,right(@result,8),114)
  EXEC @hr = sp_OAGetProperty @file, 'DateLastmodified', @result OUT
  set @DateLastModified = convert(datetime,left(@result,10),104) 
  + convert(datetime,right(@result,8),114)
  EXEC @hr = sp_OAGetProperty @file, 'size', @size OUT
  EXEC @hr = sp_OADestroy @file
  EXEC @hr = sp_OADestroy @fso
 END




GO
SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS ON 
GO


Мне ещё нужен Владелец файла. Помогите, как называется это свойство?
31 авг 11, 01:44    [11203912]     Ответить | Цитировать Сообщить модератору
 Re: Вытащить Владелец файла через sp_OAGetProperty.  [new]
kDnZP
Member [заблокирован]

Откуда: ★[msg=16399436]★[msg=20850760]
Сообщений: 11289
Мордор Держимордов, через FSO хз, честно говоря. А вот через WMI без проблем. Почитайте тут: Owner of file.
31 авг 11, 02:08    [11203926]     Ответить | Цитировать Сообщить модератору
 Re: Вытащить Владелец файла через sp_OAGetProperty.  [new]
kDnZP
Member [заблокирован]

Откуда: ★[msg=16399436]★[msg=20850760]
Сообщений: 11289
Вот тут еще один вариант через Shell.Application, остальное найдете самостоятельно))).
31 авг 11, 02:16    [11203929]     Ответить | Цитировать Сообщить модератору
 Re: Вытащить Владелец файла через sp_OAGetProperty.  [new]
'\;lkjhgf
Guest
Powershell
PS C:\> Get-Acl C:\temp\Document1.txt | SELECT Owner
31 авг 11, 14:13    [11206070]     Ответить | Цитировать Сообщить модератору
 Re: Вытащить Владелец файла через sp_OAGetProperty.  [new]
Мордор Держимордов
Member

Откуда:
Сообщений: 953
А добавить это в мою процедуру как?
Заранее благодарствую всем ответившим!
13 сен 11, 09:00    [11267069]     Ответить | Цитировать Сообщить модератору
 Re: Вытащить Владелец файла через sp_OAGetProperty.  [new]
Мордор Держимордов
Member

Откуда:
Сообщений: 953
Ещё раз - спасибо большое всем!
15 сен 11, 06:17    [11278686]     Ответить | Цитировать Сообщить модератору
 Re: Вытащить Владелец файла через sp_OAGetProperty.  [new]
Мордор Держимордов
Member

Откуда:
Сообщений: 953
Блин, люди. Ну помогите попрошайке! :)
15 сен 11, 06:27    [11278687]     Ответить | Цитировать Сообщить модератору
 Re: Вытащить Владелец файла через sp_OAGetProperty.  [new]
zorrocool
Member

Откуда:
Сообщений: 10
Мордор Держимордов,

можно использовать такой код:
exec master.dbo.xp_cmdshell 'dir "C:\Users\V\1.txt" /Q'
Результат можно положить во временную таблицу и распарсить. Если не хочется парсить, то воспользуйтесь поиском по
sp_OACreate 'Shell.Application'

Также можно найти API-фунции, с помощью которых можно получить требуемый результат, сделать на их основе dll и использовать ее через sp_OACreate. Либо написать clr-сборку.
15 сен 11, 12:05    [11280260]     Ответить | Цитировать Сообщить модератору
 Re: Вытащить Владелец файла через sp_OAGetProperty.  [new]
Mnior
Member

Откуда: Кишинёв
Сообщений: 6724
Боже, что я делаю.
+
DECLARE	 @hr		int
	,@sa		int
	,@folder	int
	,@file		int
	,@result	varchar (255)
EXEC @hr = sp_OACreate		  'Shell.Application'		, @sa		OUT				
EXEC @hr = sp_OAMethod @sa	, 'NameSpace("C:\Load\")'	, @folder	OUT				
EXEC @hr = sp_OAMethod @folder	, 'ParseName'			, @file		OUT , 'Contact.xml'		
EXEC @hr = sp_OAMethod @folder	, 'GetDetailsOf'		, @result	OUT , @file, 10			PRINT @result
EXEC @hr = sp_OADestroy @file	
EXEC @hr = sp_OADestroy @folder	
EXEC @hr = sp_OADestroy @sa	


Другое интересует, как использовать PowerShell в TSQL. Например получить таблицу (к примеру через OpenRowSet-ом или OpenQuery или системную табличную функцию), а если объект то все его свойства.
15 сен 11, 12:50    [11280612]     Ответить | Цитировать Сообщить модератору
 Re: Вытащить Владелец файла через sp_OAGetProperty.  [new]
SamMan
Member

Откуда: Moscow
Сообщений: 759
Еще вариант - вы в курсе на на SQL Server с некоторых пор можно запустить любую программу на C#? А для последнего узнать владельца файла - это даже не вопрос.
15 сен 11, 12:50    [11280614]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить