Erstellen einer Sitecollection mit PowerShell

Nachfolgend wird die Erstellung einer Sitecollection mit Powershell Schritt für Schritt beschrieben.

Vorrausetzungen:

  • Installierter und Konfigurierter SharePoint Server
  • mindestens eine erstellte Webanwendung
  • Zugriff auf den SharePoint via Powershell auf den SharePoint

 

Vorgehensweise:

Im ersten Schritt öffnen man die Powershell als Administrator. Dies geschieht mittels recht klick mit der Maus auf das Powershell Symbol und anschließendem Klick auf als Administrator ausführen. Danach läd man das SharePoint SnapIn mit

Add-PSSnapin Microsoft.SharePoint.PowerShell

Zu besseren Übersicht sollte nun eine separate Contentdatenbank für die zu erstellende Sitecollection angelegt werden. Das kann mit dem Befehl

New-SPContentDatabase „Datenbankname“ -DatabaseServer „SQL-Server-Instanz“ -WebApplication http(s)://webapplication

erfolgen.

Als nächstes lässt man sich die Namen der installierten Site Templates ausgeben. Das geschieht mit nachfolgendem Befehl

Get-SPWebTemplate | Sort-Object “Name”

Daraus kann man nun das benötigte Template z.B. Teamsite „STS#0“ herauslesen. Das wird zu Erstellen der Sitecollection später benötigt.

Im letzten Schritt erstellt man nun die Sitecolletion.

New-SPSite http(s)://Sitecollectionname -OwnerAlias „Domain\erster Sitecollectionadmin“ -Template „Templatename aus vorherigem Schritt“ -ContentDatabase „Datenbankname

Abschließend ist noch zu Erwähnen, dass die Erstellung mittels Powershell einen großen Vorteil bietet. Man kann genau angeben in welche Datenbank diese Sitecollection geht. Das ist theoretisch auch mit der Zentraladministration möglich, klappt aber nicht immer. Quota der Datenbanken spielen dabei eine Rolle.

 

 

Automatisierung von SQL Scripten

In manchen Fällen ist es wichtig SQL Scripte automatisch auszuführen. Das kann ganz einfach mittels einer kleinen Batch Datei und der Windows Aufgabenplanung erfolgen. Hierzu sind folgen Schritte notwendig:

Schritt 1:

Man legt unter einem frei wählbaren Pfad zwei Ordner an „scripts“ und „logs“. Außerdem erstellt man eine Batch Datei. (Bild)

Exploreransicht

Exploreransicht der Batchdateien

Schritt 2:

Im Ordner „scripts“ legt man nun die entsprechenden SQL Script Dateien ab. (Bild)

Exploereransicht der Script Dateien

Exploereransicht der Script Dateien

Schritt 3:

Als nächstes ändert man die Batch Datei und fügt nachfolgende Befehle ein.

@echo off
setlocal ENABLEDELAYEDEXPANSION
sqlcmd -i scripts\Datei1.sql -o logs\Datei1.log
sqlcmd -i scripts\Datei2.sql -o logs\Datei2.log
endlocal
 

Schritt 4:

Als Abschluss nimmt man die Batch Datei in die Windows Aufgabenplanung. Hierbei ist zu beachten, dass ein Nutzer gewählt wird, welcher zum Ausführen der Scripte berechtigt ist.

Verkleinern von mehreren Log-Dateien im SharePoint

Das Verkleinern der Log-Dateien der einzelnen SharePoint-Content Datenbanken kann mittels dieses kleinen SQL-Scripts erfolgen

Exec sp_msforeachdb ‚
BEGIN
declare @LogFile nvarchar(2000)
USE [?]
Select @LogFile=Name From sys.database_files
where sys.database_files.type = 1 and sys.database_files.name LIKE “WSS_%“
if @LogFile IS NOT NULL
Begin
PRINT @LogFile
EXEC(“ALTER DATABASE [?] SET RECOVERY SIMPLE“)
DBCC SHRINKFILE (@LogFile, 1)
EXEC(“ALTER DATABASE [?] SET RECOVERY FULL“)
END
END‘
GO
 

Hierbei ist zu beachten, dass sys.database_files.name LIKE “WSS_%“ nur die Log-Dateien von Content-Datenbanken selektiert, welche mit „WSS_“ beginnen.

Sollen auch Log-Dateien anderer Datenbanken beachtet werden, muss diese Anweisung entsprechend angepasst werden.

 

[Update]

der Fehler:

Ein Sortierungskonflikt zwischen ‚Latin1_General_CI_AS_KS_WS‘ und ‚Latin1_General_CI_AS‘ im is not-Vorgang kann nicht aufgelöst werden.

kann mit einer Collate Anweisung behoben werden.

Farm-Backup mit PowerShell

Voraussetzung für ein Farm-Backup:

  • Administrativer Zugriff am SharePoint
  • UNC Freigabe zur Sicherung der Daten
  • optional Zugriff auf die Aufgabenplanung am Server zur Automatisierung

Durchführung:

Als erstes muss der SharePoint Service Account und SQL Service Account auf der UNC Freigabe berechtigt werden.
Anschließend führt man die PowerShell auf einem SharePoint Server der Farm als Administrator aus und führt man das PowerShell SnapIn für SharePoint mit nachfolgendem Befehl.

add-pssnapin microsoft.sharepoint.powershell

Danach kann das Backup durchgeführt werden.

backup-spfarm -Directory UNC-Freigabe -BackupMethod Full

Abschließend sollte die Logfile auf der UNC Freigabe geprüft werden.

 

Installation Remote Blob Storage im SharePoint 2013 und MS SQL Server 2012

Werkzeuge:

  • SQL Management Studio
  • SQL Server Konfigurations Manager
  • PowerShell inkl. SharePoint SnapIn (als Administrator ausgeführt)

Berechtigungen:

  • Installation-Account –> Farmadministrator / lokaler Administrator
  • IIS Identität der Webanwendung db_owner der entsprechenden Datenbank

Hinweis:

Datenbank = Datenbank auf dem der Remote Blob Storage aktiviert werden soll.

Vorgehensweise:

Schritt 1:

Bevor man anfängt den Remote Blob Storage (rbs) zu installieren muss auf dem SQL Server einmalig der FILESTREAM aktiviert werden. Dies erfolgt mittels des SQL Server Konfigurations Manager. Dort muss auf der jeweiligen SQL Server Instanz im Dialogfeld Eigenschaften auf der Registerkarte FILESTREAM die Haken gesetzt werden(s.h. Bild)

FileStream Registrierkarte im SQL Konfigurations Manager mit alle gesetzten Haken

Ansicht FileStream Registrierkarte im SQL Konfigurations Manager

Anschließend setzt man das filestream_access_level auf zwei. Dies erfolgt im SQL Management Studio über eine neue Abfrage.

EXEC sp_configure filestream_access_level, 2
RECONFIGURE
 

Danach muss der SQL Server Dienst neu gestartet werden.

Schritt 2:

Zur Aktivierung des Remote Blob Storage auf einer bestimmten Datenbank führt man nachfolgende drei Skripte im SQL Management Studio aus.

Skript 1:

use Datenbank
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′
go

 Skript 2:

use Datenbank
if not exists (select groupname from sysfilegroups where groupname=N’RBSFilestreamProvider‘)
alter database Datenbank add filegroup RBSFilestreamProvider contains filestream
go

Skript 3: 

use Datenbank
alter database Datenbank  add file (name = RBSFilestreamFile, filename = ‚physikalischer Pfad‚) to filegroup RBSFilestreamProvider
go
 

Achtung der physikalische Pfad wird automatisch angelegt!

 Schritt 3:

Lade die Datei RBS.msi aus dem SQL Server Feature Pack SP1 herunter.

Diese muss auf allen SharePoint Servern in der Farm installiert werden. Die Installation erfolgt mittels PowerShell (als Administrator) Befehl. Dabei unterscheidet sich der Befehl auf dem ersten Webserver von allen anderen Server grundlegend.

1. erster Web-Frontend Server:

msiexec /qn /lvx* rbs_install_log.txt /i RBS.msi 
TRUSTSERVERCERTIFICATE=true FILEGROUP=PRIMARY 
DBNAME=“Datenbank“ DBINSTANCE=“SQLInstanz“ 
FILESTREAMFILEGROUP=RBSFilestreamProvider 
FILESTREAMSTORENAME=FilestreamProvider_1

2. andere SharePoint Server in der Farm:

msiexec /qn /lvx* rbs_install_log.txt /i RBS.msi 
DBNAME=“Datenbank“ DBINSTANCE=“SQLInstanz“ 
ADDLOCAL=“Client,Docs,Maintainer,ServerScript
,FilestreamClient,FilestreamServer“
 

Wichtig dabei ist, das mann den Befehl unter dem Pfad ausführt wo die RBS.msi abgelegt ist. Unter diesem wird auch die jeweilige Log-Datei abgelegt. In dieser sollte die Meldung

„Produkt: Microsoft SQL Server 2012 Remote BLOB Store  — Die Installation wurde erfolgreich abgeschlossen.“

fast am Ende stehen. Außerdem sollten nun im SQL Management Studio folgende Tabellen zusätzlich in der Datenbank angelegt sein (s.h. Bild).

Remote Blob Storage SharePoint 2013 Tabellen im SQL Server Management Studio

Übersicht aller RBS Tabellen im SQL Server Management Studio

Schritt 4:

Abschließend muss nur noch der Remote Blob Storage im SharePoint aktiviert werden. Dazu führt man die PowerShell als Administrator aus und lad anschließend das SharePoint SnapIn mit nachfolgendem Befehl.

add-pssnapin microsoft.sharepoint.Powershell

Zur Aktivierung führt man dann noch folgende Befehle zeilenweise aus.

$myDB = Get-SPContentDatabase Datenbank
$myRBS = $myDB.RemoteBlobStorageSettings
$myRBS.Installed()
 

Dies sollte TRUE zurückgeben!!!

 
 
$myRBS.Enable()
$myRBS.SetActiveProviderName($myRBS.GetProviderNames()[0])
$myRBS
 

Damit ist der Remote Blob Storage installiert und für die Datenbank aktiviert.

Verkleinerung einer Datenbanklogdateien

In manchen Fällen ist es notwendig die Datenbanklogdateien einer Datenbank im SharePoint zu verkleinern.

Dies kann mittels eines kleinen Scriptes erfolgen, welches im Microsoft SQL Server Management Studio ausgeführt wird.

Als erstes wählt man die entsprechende Datenbank aus.

use Datenbankname
go

Anschließend sollte das Recovery-Modell dieser Datenbank auf simple gesetzt werden.

ALTER DATABASE Datenbankname
SET RECOVERY SIMPLE
go

Nun kann die Log-Datei verkleinert werden

 DBCC SHRINKFILE( Datenbankname_logGröße)
go

Abschließend sollte man das Recovery-Modell wieder auf  Full setzen.

ALTER DATABASE Datenbankname
SET RECOVERY FULL
go