Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Olá
Estou com grande problema, tenho que inserir automaticamente no sql, dados que a opção propriedade da pasta de rede traz, como por exemplo o nome e tamanho.
Não faço ideia de como fazer.
Apenas nome e tamanho.
Lembrei da
EXEC master.dbo.xp_fixeddrives
Creio que você tera que usar xp_cmdhsell mesmo, pois as procs que eu me lembro somente retornam dados e não tamanho:
EXEC master.sys.xp_dirtree N'c:\Backup\', 1, 1
acho que não serve, pois Tenho algumas pastas com informações de backups de outros servidores , dentro do servidor sql.
Preciso saber o tamanho de cada pasta,
Por PowerShell é possível:
Estou testando algo aqui em um lab com SQL2008, mas não encontrei nada parecido.
Ja tentei o power shell, mas da a seguinte erro no segundo comando
Não é possivel localizar um paramento que coincida com o nome do parâmetro attributes.
O meu não gerou erro e executou.
Vou tentando outros modos
Estranho o meu dar essa msg .. vou continuar tentando.
Estou fazendo assim
Get-ChildItem c:\servidor-sql -Recurse -Attributes "!Directory" | %{$_.length},
Tem alguma outra alteração, sem ser a pasta?
Tente fazer pela primeira versão do post.
Acho que esta ultima, que foi revisada, deve ter tido alguma alteração para o SQL2012.
Lá vamos nós.
Estou montando via T-SQL:
exemplo:
declare @table table (dados varchar(max))insert into @table (dados)exec xp_cmdshell 'dir c:\lab\.' select * from @table where dados like '%file%'
No meu caso tenho este resultado:
10 File(s) 7.152.302 bytes
Agora estou convertendo este numero para mega.
Aparece esse erro
Get-ChildItem : Não é possível localizar um parâmetro que coincida com o nome de parâmetro 'Attributes'
Em linha:1 caractere:52
+ Get-ChildItem c:\servidor-sql -Recurse -Attributes <<<< "!Directory" | %{$Size+=$_.length}
+ CategoryInfo : InvalidArgument: (:) [Get-ChildItem], ParameterBindingException
+ FullyQualifiedErrorId : NamedParameterNotFound,Microsoft.PowerShell.Commands.GetChildItemCommand
>
Aparece esse erro
Get-ChildItem : Não é possível localizar um parâmetro que coincida com o nome de parâmetro 'Attributes'
Em linha:1 caractere:52
+ Get-ChildItem c:\servidor-sql -Recurse -Attributes <<<< "!Directory" | %{$Size+=$_.length}
+ CategoryInfo : InvalidArgument: ( :) [Get-ChildItem], ParameterBindingException
+ FullyQualifiedErrorId : NamedParameterNotFound,Microsoft.PowerShell.Commands.GetChildItemCommand
Não manjo muito de PowerShell, infelizmente.... quem eu conheço que manja fica on somente no facebook e não tenho acesso para atormenta-lo.
Bom, via t-sql, consegui chegar a isso:
declare @table table (dados varchar(max))insert into @table (dados)exec xp_cmdshell 'dir c:\lab\.' select * from @table where dados like '%file%' select substring(dados, (charindex('File(s)',dados)+7),99)from @table where dados like '%file%'
Resultado:
10 File(s) 7.152.302 bytes
7.152.302 bytes
Melhorando para pegar diretorios também:
declare @table table (dados varchar(max))declare @erro bigint insert into @table (dados)exec xp_cmdshell 'dir c:\arquivos\yamaha.ssh\.' select @erro = count(*)from @table where dados like '%file%' or dados like '%Dir(s)%' if @erro = 1beginselect 'Não existem arquivos no diretorio informado ou não possui acesso'end else select substring(dados, (charindex('File(s)',dados)+7),99)from @table where dados like '%file%' or dados like '%Dir(s)%'
Boa tarde,
Ajr, a quantidade de bytes que esta apresentando na pasta esta diferente do que o comando me traz.
Na pasta aparece
Tamanho
Tamanho em disco
Não esta batendo com nenhum dos dois.
Mas esta diferente muito muito ou sera que é questao de arredondamento de bytes para mega ou gb?
A qtde de arquivos bate ao menos?
Teve um que ficou tipo uns 100 bytes a mais
e outro que era por exemplo .. 223.540.842 ficou 4.265.563
Tem algumas stored procedure nao documentadas que podem lhe ajudar.
De bate-pronto lembro da xp_filexist
Voce precisa do tamanho da pasta em rede ou listar os arquivos que tem nela?
Att.