WebPart – Viewer PDF

Galera, criei uma WebPart que renderiza um .pdf, vou disponibilizar a Solution.

Vocês posdem baixar e fazer bom uso, vou apenas explicar algumas coisas, na propriedade da WP voce pode definir o tamanho e largura da exibição e também definir a url do arquivo, ou simplesmente usar  QueryString.

Definindo url do arquivo:

notqs

Usando QueryString 

withqs

Simples assim, veja o resultado abaixo:

viewpdf

Segue o link para download da Solution (WSP):

GSD_Viewer

Caso alguém deseje o fonte, pode solicitar 🙂

project

Abraços, até o próximo.

Posted in PowerShell, SharePoint 2013 | Leave a comment

Adicionar, Instalar, Ativar, Desinstalar e Desativar uma Feature usando PowerShell – SharePoint 2013

Fala galera hoje vou divulgar alguns comandos bem uteis no que diz respeito a instalar e remover uma Solution -> WSP no SharePoint, visto que a Microsoft tem como objetivo descontinuar essa extensão no futuro, muita gente fala isso, eu acredito que não, mas concordo que as APPs são o futuro, na verdade já é uma realidade.

Usei como base o site da TechNet, uso bastante esses comandos alguns de tanto usar até já decorei, mas segue abaixo os mesmo para auxiliar vocês nas atividades diárias.

Adicionando

Add-SPSolution -LiteralPath c:\seuWSP.wsp

Instalando

Install-SPFeature -path "SuaFeature"  -CompatibilityLevel 15

Ativando

Enable-SPFeature -identity "SuaFeature" -URL http://seusite

Desabilitando

Disable-SPFeature -identity "SuaFeature" -URL http://seusite

Desinstalando

Uninstall-SPFeature -Identity "SuaFeature" -CompatibilityLevel 15

Isso ai galera espero ter ajudado, mas os créditos são todos do TechNet, abixo segue o link onde caso haja alguma duvida podem consultar os parâmetros e explicações caso possua.

créditos : PowerShell TechNet

Posted in PowerShell, SharePoint 2013 | Leave a comment

Configurando Search SharePoint 2013: Usando PowerShell

Como falei no post anterior que iria postar o meu script para configurar o Search do SharePoint, o script esta bem explicado da ua olhadinha, qualquer dúvida estou a disposição!

Abra o PowerShell ISE no seu servidor de aplicação, copie e cole os comando e tenta entender antes de rodar 🙂

Convém salientar se for rodar um servidor Stand-Alone, algumas coisas no script devem ser mudadas, não precisamos passar o servidor de Banco, etc…

Vamos la então segue o script:

Add-PsSnapin Microsoft.SharePoint.PowerShell -ErrorAction SilentlyContinue # Add-PsSnapin SharePoint 🙂

#Settings
$IndexLocation = "C:\Search_GSD" #Location must be empty, will be deleted during the process!
$SearchAppPoolName = "Search App Pool" # Criando Application Pool para esse serviço ou vc pode usar um existente.
$SearchAppPoolAccountName = "BlogGSD\GSD_Owner" #Usuário com privilegios pra rodar o serviço.
$SearchServiceName = "BlogGSD Search Service Application" # Nome do serviço.
$SearchServiceProxyName = "BlogGSD Search Service Application Proxy" # Nome do serviço proxy.

$DatabaseServer = "GSDBE01" #Servidor de Banco de Dados
$DatabaseName = "SharePoint_Search" #Banco de dados que será criado.

Write-Host -ForegroundColor Yellow "Verificando se o usuário Search Application Pool existe..."
$spAppPool = Get-SPServiceApplicationPool -Identity $SearchAppPoolName -ErrorAction SilentlyContinue

if (!$spAppPool)
{
 Write-Host -ForegroundColor Green "Criando novo Search Application Pool..."
 $spAppPool = New-SPServiceApplicationPool -Name $SearchAppPoolName -Account $SearchAppPoolAccountName -Verbose
}

Write-Host -ForegroundColor Yellow "Verificando se Search Service Application existe..."
$ServiceApplication = Get-SPEnterpriseSearchServiceApplication -Identity $SearchServiceName -ErrorAction SilentlyContinue
if (!$ServiceApplication)
{
 Write-Host -ForegroundColor Green "Criando Search Service Application..."
 $ServiceApplication = New-SPEnterpriseSearchServiceApplication -Name $SearchServiceName -ApplicationPool $spAppPool.Name -DatabaseServer $DatabaseServer -DatabaseName $DatabaseName
}

Write-Host -ForegroundColor Yellow "Verificando Search Service Application Proxy existe..."
$Proxy = Get-SPEnterpriseSearchServiceApplicationProxy -Identity $SearchServiceProxyName -ErrorAction SilentlyContinue
if (!$Proxy)
{
 Write-Host -ForegroundColor Green "Criando Search Service Application Proxy..."
 New-SPEnterpriseSearchServiceApplicationProxy -Name $SearchServiceProxyName -SearchApplication $SearchServiceName
}

$searchInstance = "GSDBE01" # Denifindo em que server irá rodar o Search Index Component
$InitialSearchTopology = $ServiceApplication | Get-SPEnterpriseSearchTopology -Active 
$SearchTopology = $ServiceApplication | New-SPEnterpriseSearchTopology

New-SPEnterpriseSearchAnalyticsProcessingComponent -SearchTopology $SearchTopology -SearchServiceInstance $searchInstance
New-SPEnterpriseSearchContentProcessingComponent -SearchTopology $SearchTopology -SearchServiceInstance $searchInstance
New-SPEnterpriseSearchQueryProcessingComponent -SearchTopology $SearchTopology -SearchServiceInstance $searchInstance
New-SPEnterpriseSearchCrawlComponent -SearchTopology $SearchTopology -SearchServiceInstance $searchInstance 
New-SPEnterpriseSearchAdminComponent -SearchTopology $SearchTopology -SearchServiceInstance $searchInstance

set-SPEnterpriseSearchAdministrationComponent -SearchApplication $ServiceApplication -SearchServiceInstance $searchInstance

Remove-Item -Recurse -Force -LiteralPath $IndexLocation -ErrorAction SilentlyContinue
mkdir -Path $IndexLocation -Force

New-SPEnterpriseSearchIndexComponent -SearchTopology $SearchTopology -SearchServiceInstance $searchInstance -RootDirectory $IndexLocation

Write-Host -ForegroundColor Green "Ativando a nova topologia..."
$SearchTopology.Activate()

Write-Host -ForegroundColor Yellow "Pode ignorar o erro a seguir :p !"
$InitialSearchTopology.Synchronize()

Write-Host -ForegroundColor Yellow "Deletando a topologia antiga..."
Remove-SPEnterpriseSearchTopology -Identity $InitialSearchTopology -Confirm:$false
Write-Host -ForegroundColor Green "Topologia velha deletada!"
Write-Host -ForegroundColor Green "Vamos rodar full crawl!!!!"

Tendo rodado o script, vamos ver o resultado, olhe as imagem seguintes para ver como ficou a configuração após a execução dos comandos.

fonte: https://social.technet.microsoft.com/wiki/contents/articles/32166.sharepoint-2013-configure-search-using-powershell-part-1-of-2.aspx
Posted in PowerShell, Search SharePoint 2013, SharePoint 2013 | 1 Comment

New-SPEnterpriseSearchServiceApplication : Value cannot be null. Parameter name: indexLocation

Tive esse problema quando estava configurando o Search em uma Farm, onde optei rodar o Search em outro servidor, e não no de aplicação principal .

Estava realizando essa configuração via PowerShell, no próximo post coloco o script que estou usando -> Configurando Search SharePoint 2013: Usando PowerShell

No primeiro momento optei por roda esse script no servidor onde ia rodar o Search, mas sempre dava o seguinte erro :  

New-SPEnterpriseSearchServiceApplication : Value cannot be null.

Parameter name: indexLocation

Realizei algumas pesquisa e o link abaixo me ajudou muito!
https://social.technet.microsoft.com/Forums/en-US/f6b338ea-92cc-424a-9547-eb651fbeaf2c/sharepoint-2013-rtm-powershell-newspenterprisesearchapplicationservice-error-about-nonexistent
A solução no meu caso foi fazer a configuração  da seguinte forma, fiz um desenho pra que fique bem claro como rodar o script e ter exito!

FullSizeRender.jpg

Qual foi o caminho rodei o scritp no servidor de aplicação e rodou sem erro, como disse acima no próximo post coloco o script, estou dando uma melhorada nele.[link lá em cima :)]

Não esqueçam de verificar se o serviço do Search esta ativo, caso não rodo esse script no servidor usando PowerShell:

Get-SPEnterpriseSearchServiceInstance -Local | Start-SPEnterpriseSearchServiceInstance
fonte: https://technet.microsoft.com/en-us/library/ff607852%28v=office.15%29.aspx?f=255&MSPPError=-2147217396

Abraços,

Espero ter ajudado.

Posted in SharePoint 2013 | Tagged , | Leave a comment

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.

 

 

Posted in SharePoint 2013 | Tagged , | 1 Comment

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!

Posted in SharePoint 2013 | Tagged , | Leave a comment

User Profile Service Starting – Sharepoint 2013

User Profile Service Starting – Sharepoint 2013

Problema

Ao criar o o serviço User Profile Synchronization, e dar o Start, ele não inicia fica no status “Starting”, como na figura baixo.

ups

E o serviço não sai desse status, ele não é provisionado e quando tento acessar o gerencimanto dele via Central Administration, da aquela mensagem clássica do SP 2013.

ups1

Solução

No meu caso realizei duas analises:

  1. Se o usuário responsável pelo serviço era ADM da Farm, no meu caso ele não era, ai adicionei o mesmo como ADM: Control Panel -> User Accounts -> User Accounts -> Manage User Accounts. Mesmo feito isso ainda o serviço continuou em Stating, ai executei a segunda solução e funcionou lindo. Siga abaixo.

  2. Execute os passo:

  • Executar Get-SPServiceInstance, mas lembre de elevar o privilegio do PowerShell. Procure o ID do serviço User Profile User Synchronization.

  • Executar Stop-SPServiceInstance -Identity .

PS C:\Windows\system32> Stop-SPServiceInstance 16c6af2f-6e3b-4352-a89e-9de9a756eede

TypeName Status Id 
-------- ------ -- 
User Profile Synchronization ... Unpro... 16c6af2f-6e3b-4352-a89e-9de9a756eede
  • Vá na Central Administration e veja se o serviço realmente esta parado no status Stop.

  • Em Serviços -> SharePoint Timer Service  e Restart.

  • Executar  Get-SPTimerJob | Where-Object {$_.Schedule -Like “*1 minute*”} | Sort-Object Name | Select-Object name, ID, Status. E procure o serviço criado Nome_Serviço_ProfileSynchronizationJob e anote o ID.

  • Executar Get-SPTimerJob -Identity | Disable-SPTimerJob

  • Agora de Start no serviço.

  • Show, funcionou.

Aside | Posted on by | Tagged | Leave a comment