Problemas com a proc_ListUrls

Olá galera,

Perdi uma semana de trabalho em virtude desta Procedure, vou fazer uma breve descrição do meu cenário.

  1. Tenho em torno de 1,5 Milhões de arquivos e junto seus metadados.
  2. Estou salvando esse arquivos em RBS e não em banco.
  3. Estou criando subpastas  para inserção de cada documento de acordo com seu metadado.

O meu case foi que quanto mais informações eu inseria na base de dados mais a performance do Console caia, depois de muitas analises, como citei no começo em torno de uma semana, analisando SQL e Código, percebi que essa Procedure proc_ListUrls estava demorando um tempo muito elevado para executar, então juntamento com meu  Visual Studio comecei a realizar o debug.

Ao executar o trecho de código abaixo:

  1. DocLib = web.Lists[“lista”];
  2. SPFolder SubFolder = DocLib.RootFolder.SubFolders[subPasta];

O atributo marcado em vermelho faz com que a execute a proc_ListUrls e isso realizada uma query sem where, ou seja, eu já tinha mais de 800k de itens cadastrados, em toda iteração que o meu Console vazia retornava os 800k itens. Isto gasta muito processador e memória.

Minha alternativa foi usar o trecho abaixo:

  1. SPFolder subFolder = srcFolders.Add(nomePasta);

Consegue criar uma nova subpasta e dar o get no SPFolder sem  usar DocLib.RootFolder.SubFolders   que é muito caro e esta onerando meu servidor de banco e App.

Espero que esse meu case possa ter ajudado quem vem passando pelo mesmo problema.

Isso ai amigos.

Até a próxima.

 

 

Configurando RBS em uma Farm SharePoint 2013

Fala galera,

Hoje farei o passo a passo  para quem precisa configurar RBS em uma Farm  sem dar nenhum um erro.

Vamos começar!

Primeiramente você vai preparar o SQL para que ele use a função FILESTREAM.

  1. Entre no seu servidor de banco de dados e abra o SQL Server Configuration Manager.
  2. Selecione SQL Services e clica no botão direito em cima da instancia  SQL Server e vá em propriedades.
  3. Na janela de propriedades vá na aba FILESTREAM e selecione todos check boxes.filestreamblog
  4. Clique em apply e Ok.
  5. Feche o  SQL Server Configuration Manager.

Show agora o FILESTREAM  esta disponível na instancia do SQL.

Agora vamos abrir o SQL Management Studio e logar na instancia onde esteja seu content do SharePoint.

  1. Clique com direito em cima do content da sua aplicação e em segui New Query.
  2. Copie e cole a seguinte query:
    EXEC sp_configure filestream_access_level, 2 RECONFIGURE
  3. Feito.

Provisionar o BLOB Store.

Eu usei a mesma janela que abri na ação acima

use WSS_Content_GSD_Blog if not exists (select * from sys.symmetric_keys where name = N'##MS_DatabaseMasterKey##')create master key encryption by password = N'Admin Key Password !2#4'
use WSS_Content_GSD_Blog if not exists (select groupname from sysfilegroups where groupname=N'RBSFilestreamProvider')alter database WSS_Content_GSD_Blog add filegroup RBSFilestreamProvider contains filestream
use WSS_Content_GSD_Blog alter database WSS_Content_GSD_Blog add file (name = RBSFilestreamFile, filename = 'C:\GSD_Blog') to filegroup RBSFilestreamProvider
  • Abra o diretório que definiu na sua query e veja se o diretório foi criado.

Instalando o RBS Provider

  1. Para começar vamos fazer download do RBS, clique no link a seguir RBS.msi .
  2. Execute o cmd como Administrador, essa ação você deve realizar em todos servidores da Farm.
  3. No Servidor de Aplicação copie e cole no CDM o comando a seguir:
    msiexec /qn /lvx* rbs_install_GSD_log.txt /i RBS.msi TRUSTSERVERCERTIFICATE=true FILEGROUP=PRIMARY DBNAME="WSS_Content_GSD_Blog" DBINSTANCE="MSSQLSERVER" FILESTREAMFILEGROUP=RBSFilestreamProvider FILESTREAMSTORENAME=FilestreamProvider_1
  4. Vamos instalar o RBS agora nos Front End o comando é um pouco diferente mas o processo é o mesmo.
    msiexec /qn /lvx* rbs_install_GSD_log.txt /i RBS.msi FILEGROUP=PRIMARY DBNAME="WSS_Content_GSD_Blog" DBINSTANCE="MSSQLSERVER" ADDLOCAL="EnableRBS,FilestreamRunScript"
  5. Você pode acompanhar se a instalação ocorreu perfeitamente olhando o log que é gerado.

Para finalizar.

Habiltar o RBS (Remote BLOB Storage) no Content Database

  1. Abra o SharePoint 2013 Management Shell como Administrador e execute o comando a seguir:
    $cdb = Get-SPContentDatabase –WebApplication http://wvgsd:2030 $rbss = $cdb.RemoteBlobStorageSettings $rbss.Installed() $rbss.Enable() $rbss.SetActiveProviderName($rbss.GetProviderNames()[0]) $rbss

O resultado deve ser o seguinte:

result

RBS configurado e funcionando!!!!

Caso o Enable retorne false revise todos os passos.

Boa sorte!