SharePoint Arşiv

Hata: Database is up to date but some sites are not completely upgraded

SharePoint’in eski bir sürümünden yeni bir sürüme yükselttiğiniz uygulamalarda bazen ön yüzde herhangi bir hata ile karşılaşmasanızda Central Administration üzerinde yer alan “Database Upgrade Status” sayfasına gittiğinizde yükseltme yaptığınız uygulamanın veritabanı için “Database is up to date but some sites are not completely upgraded” hatasını gözlemliyor olabilirsiniz. Bu hata aslında upgrade işleminin tam da istediğimiz gibi gitmediği, birşeylerin eksik olduğu anlamını taşır ve müdehale gerektirir.

Bu statüde bir veritabanınız var ise aşağıdaki PowerShell komutu ile öncelikle yükseltmesi başarıyla sağlanamamış veritabanınızın sistemdeki ID’sini öğrenmeniz gerekir.

Ardından aşağıdaki komut ile bu veritabanı için yükseltme işlemini zorlayabilirsiniz.

Bu komut esnasında hata alıyorsanız hata mesajının sizi yönlendirdiği upgrade log dosyasını incelemenizi öneririm. Zira artık hata ilk upgrade sırasında yaşanan anlık bir hatadan ziyade yükseltmeyi engelleyen bir durumunuzun olduğu anlamına geliyor. Buradaki hata olasılıkları çok çeşitli olabilir, log dosyasını iyi okumak lazım. Mesela basit bir hata olarak upgrade ettiğiniz site koleksiyonunda açık olması beklenen bir feature kapalı olabilir. Bu durumda öncelikle bu sorunu gidermeli ve ardından yukarıdaki komutları çalıştırmalısınız.

Yukarıdaki senaryoyu uyguladınız ancak yine de sayfayı kontrol ettiğinizde hata mesajını görmeye devam ediyorsunuz. Bunun nedeni sayfanın güncellenmesi için SharePoint Configuration Wizard‘ı çalıştırmanız gerekliliği. Configuration Wizard başarıyla çalıştıktan sonra artık olması gerektiği gibi “No action required” mesajını görebilirsiniz.

Yeni Web Uygulaması Yaratırken Sayfa Görüntülenemiyor Hatası

Herhangi bir sorunu bulunmayan bir farmda bazen yeni bir web uygulaması taratırken “Page cannot be displayed” hatası alabilirsiniz. Bu hatanın ardından yapacağınız kontrolde web uygulaması için gerekli veritabanının yaratıldığı ancak IIS web applicationın sadece lokal sunucuda yaratılıp farmdaki diğer sunucularda yaratılmadığını gözlemlersiniz. Ve hatta lokal sunucuda da IIS altındaki dizinin içeriği muhtemelen boş olacaktır.

Söz konusu web uygulaması için yeni bir site koleksiyonu yaratmak istediğinizde ise hata mesajı ile karşılaşacaksınız.

Bu hatanın yüksek olasılıklı sebebi Central Administration web uygulaması için application pool shut down timeoutunun yeterli gelmemesidir. Varsayılan olarak bu süre 90 saniye ve yeterli gelmemesi durumunda işlem yarıda kesilerek amaçladığınız sonuca ulaşmanızı engelliyor. Sorunu aşmak için aşağıdaki adımları yerine getirebilirsiniz;

  • IIS üzerinde Central Administration application pool’unu bulun.
  • Sağ tıklayarak “Advanced Settings” bölümünü açın.
  • “Process Model” sekmesindeki shut down limiti 90 saniye yerine 200 veya 250 saniye olarak değiştirin.
  • IISRESET komutunu çalıştırın.
  • Yeniden web uygulaması yaratmayı deneyin.

 

PowerShell Yardımıyla Dosya İndirmek

PowerShell yardımıyla yapamayacağımız işlem yok gibi, mâlum içeriğinde doğrudan kod yazabiliyoruz. Bu noktada işe yarar bir scripti daha paylaşmak istiyorum. Bunu dilerseniz bir fonksiyon haline getirebilir, belli aralıklar ile çalışacak şekilde zamanlayabilir ve sürekli hale getirebilirsiniz.

 

Provider type not defined

SharePoint 2013 ortamında daha sık olmak üzere SharePoint 2016 ortamlarında da karşımıza çıkan bir hata ve çözümünden bahsetmek istiyorum. Normal şekilde çalışan bir SharePoint farmınızda bazen sadece tek bir uygulamayı (veya bazen birden fazla uygulamayı) etkiler şekilde aşağıdaki gibi bir hata mesajı ile karşılaşabilirsiniz.


SPSecurityContext: Get trust client failed with exception: System.IO.FileLoadException: Could not load file or assembly ‘Microsoft.IdentityModel.Extensions, Version=2.0.0.0, Culture=neutral, PublicKeyToken=69c3241e6f0468ca’ or one of its dependencies. Provider type not defined. (Exception from HRESULT: 0x80090017)  File name: ‘Microsoft.IdentityModel.Extensions, Version=2.0.0.0, Culture=neutral, PublicKeyToken=69c3241e6f0468ca’ —> System.Runtime.InteropServices.COMException (0x80090017): Provider type not defined. (Exception from HRESULT: 0x80090017)  at Microsoft.SharePoint.SPSecurityContext.GetTrustChannel()  at Microsoft.SharePoint.SPSecurityContext.SecurityTokenForContext(Uri context, Boolean bearerToken, SecurityToken onBehalfOf, SecurityToken actAs, SecurityToken delegateTo, SPRequestSecurityTokenProperties properties)

An exception occurred when trying to establish endpoint for context: Could not load file or assembly ‘Microsoft.IdentityModel.Extensions, Version=2.0.0.0, Culture=neutral, PublicKeyToken=69c3241e6f0468ca’ or one of its dependencies. Provider type not defined. (Exception from HRESULT: 0x80090017).


Hatanın temel nedeni uygulamanın application pool’u için kullandığınız hesabın “Impersonate a client after authentication” hakkını kaybetmiş olmasını söyleyebiliriz. Bu nedenle de çözümü bu hakkı yeniden vermek olacak. İşlemi gerçekleştirmek için aşağıdaki adımları takip edebilirsiniz.

  • Start > Administrative tools > Local Security Policy > Local Policies > User Right Assignments > Impersonate a client after authentication adresine gidin.
  • Application pool hesabını buraya ekleyin.
  • Sunucuyu yeniden başlatın.

Sorununuz çözülmüş olacaktır. Durumu anlık olarak kurtarmak için bir trick ise bu işlemi daha sonra yapmak üzere geçici olarak sunucuda iisreset komutunu çalıştırmış olmanız da uygulamanın yeniden çalışır hale gelmesini sağlayacaktır.

SharePoint 2013, .Net Framework 4.6

SharePoint 2013’ün güncel Windows Server sürümleri üzerinde (üzerinde .Net Framework 4.6 yüklü olarak bulunan veya manuel olarak yüklenmiş olan) kurulumu esnasında hemen hemen hepimizin yaşadığı, çözümü basit bir problem için kendi kişisel siteme de not bırakmak istedim 🙂

SharePoint kurulumu öncesinde mâlum, öncelikle prerequisite installer uygulamasını çalıştırarak ortamın kurulum için gerekli ön işletim sistemi bileşenlerini konfigüre etmesini ve gerekli olan eklentileri sunucuya indirerek kurmasını sağlıyoruz. Prerequisite installer’ın hiç problemsiz tamamlanmasından sonra bile .Net Framework 4.6’nın yüklü bulunduğu sistemlerde SharePoint 2016 için elinizde bulunan kurulum dosyalarını çalıştırdığınızda hata almanız mümkün. Alacağınız hata mesajı aşağıdaki gibi, bu ürünün .Net Framework 4.5 gerektirdiğini belirtiyor olacak. Halbuki, eğer dikkat ettiyseniz zaten prerequisite installer’ın ilk görevlerinden biri .Net Framework 4.5’i yüklemek ve sorunsuz tamamlanmıştı!

 

 

Bu durumun sorun olmaktan çıkması amacıyla Microsoft 1 yıl kadar önce bir KB makalesi paylaşmıştı zaten. https://support.microsoft.com/en-us/help/3087184/sharepoint-2013-or-project-server-2013-setup-error-if-the–net-framewo adresinden ulaşabilirsiniz bu makaleye.

Özetle yapılması gereken;

  • Eğer SharePoint kurulumunu iso gibi paketlenmiş bir yapıdan gerçekleştiriyorsanız öncelikle dosya içeriğini ayrı bir klasöre açın.
  • SharePoint Server için bu adresten srvsetup.dll’i indirin. Makalede SharePoint Foundation ve Project Server için olan versiyonları da var.
  • Zip içerisinden srvsetup.dll’i çıkartın ve SharePoint setup klasörünüz içerisindeki “updates” klasörü içerisine kopyalayın.
  • Şimdi kurulum exe’sini yeniden çalıştırabilirsiniz.

 

Arama Hizmeti Veritabanı İsmi Değiştirmek

SharePoint 2016 arama hizmetini Central Administration web arayüzünü kullanarak oluşturmaya çalışmak sanırım en basit yöntem ancak SharePoint Central Administration her servis uygulamasını yaratmak için farklı form arayüzleri sunuyor bizlere. Bir kısmında veritabanı ismini değiştirebilir servis seviyesinde detaylı konfigürasyonlar yapabiliyorken bir kısmında bunların bir bölümüne izin vermiyor. Arama hizmeti de bunlardan bir tanesi. Eğer Central Administration arayüzünü kullanarak arama hizmetini yapılandırırsanız SharePoint aşağıdaki dört veritabanını ismini size sormaksızın yaratacaktır.

Admin Database:
<Servis Uygulaması Adı>
Analytics Database:
<Servis Uygulaması Adı>_AnalyticsReportingDB
Crawl Database
<Servis Uygulaması Adı>_CrawlDB
Links Database:
<Servis Uygulaması Adı>_LinksDB

Halbuki bir çoğumuz özellikle paylaşımlı veritabanı sunucusu kullandığımız veya sadece benim gibi takıntılı olduğundan bu bölümde veritabanı isimlendirmelerinde bir kuralın takip edilmesini isteyecektir. Hele ki Central Administration aracılığı ile yaratıyorsanız bu isimlerin sonuna bir de GUID şeklinde uzantı gelecektir ki kabul edilemez 🙂

Bu durumu aşmak için aslında bir bölümünü benim de daha önce paylaştığım PowerShell scriptleri var. Bu sayede Search Service Application’ın en detay konfigürasyonlarına kadar script içerisinden müdehale edebiliyorsunuz. Bazen bunlarda her ortamda çalışma garantisi vermiyor tabi.

Bugün öğrendiğim bir yöntemi paylaşmak isterim. Adım adım uyguladığınızda hedefimize ulaşmamızı sağlayan bir yöntem.

SharePoint Migration Tool from Microsoft

Aslında bir miktar zaman geçti aracın duyurulmasının üzerinden ancak ben bu konuda yazmaya ancak vakit bulabiliyorum. Geçtiğimiz aylarda Microsoft tarafından oldukça işimize yarayabilecek bir araç duyuruldu. Öncelikle aracın indirme bağlantısını paylaşayım : http://aka.ms/spmt

Aracı indirdikten sonra yapılması gereken oldukça basit, “install” butonuna tıklamak ve yüklenmesini beklemek. Araç bir clickonce application olarak yükleniyor ve sonraki açılışlarında güncellemeleri kendisi kontrol ediyor. Yeni çıkan bir araç olduğundan bu aralar bir miktar güncelleme gelecektir diye düşünüyorum düzeltmeler anlamında. Açılışta sizi basitçe akışı görüntüleyen bir ekran karşılıyor ve sihirbazı başlatıyorsunuz.

 

 

2010-to-2013-to-2016 SharePoint Migration

Uzun zamandır biliyoruz ki SharePoint ürününde en fazla bir üst versiyona içerik veritabanı yükseltme yöntemiyle yükseltme çalışması gerçekleştirebiliyoruz. Yani SharePoint 2010’dan SharePoint 2016’ya doğrudan yükseltme işlemini yapmak istiyorsak içerik veritabanı yükseltme yöntemini dolaylı yoldan kullanabiliyoruz. Bunun için önce 2010’daki içerik veritabanınızı SharePoint 2013’e, ardından da SharePoint 2013’e yükselttiğiniz veritabanını 2016’ya yükselterek işlemi sağlayabilirsiniz. Burada doğrudan yükseltmenin sağlanabilmesi için ise pek çok ücretli ürün bulunuyor. (ShareGate, Metalogix, vb)

Bu yazıda temel almak istediğim şey yükseltmenin nasıl yapılacağı değil. Bazen yükseltme yaptığınızı varsaydığınızda bile ilerleyen dönemde yarım kalmış operasyonlar sebebiyle sorun yaşayabiliyorsunuz. Örnek bir senaryo üzerinde çalışalım;

Senaryo: SharePoint 2010 olan uygulamamızı içerik veritabanı yükseltme yöntemini kullanarak SharePoint 2013’e yükselttik. Aradan birkaç yıl geçti ve şimdi de SharePoint 2016’ya yükseltme yapmayı deniyoruz.

Bu senaryo için karşılaşabileceğiniz bir senaryo olarak Mount-SPContentDatabase komutu sonrası aşağıdaki hata mesajını görüyor olabilirsiniz.

Tüm Çözüm Dosyalarının Kaydedilmesi

Sıklıkla ihtiyacımız olan başlıklardan biri olduğundan her ne kadar pek çok ortamda bu konuda örnekler mevcut olsa da kişisel arşiv anlamında ben de kullandığım scripti paylaşmak isterim. SharePoint farmınızda yüklü olan tüm çözüm dosyalarınızı tek seferde export etmek ve bir klasöre almak isteyebilirsiniz. Bunun için örnek senaryo canlı ortamdan test ortamına uygulama eşitlemesi yapmak istediğiniz zamanlar gösterilebilir. Mevcut canlı ortam uygulamasını test ortamına dilediğiniz yöntem ile taşıdıktan sonra güncel çözüm dosyalarınızı da export edip test farmınıza deploy etmeniz gerekebilir. Örnek scripti aşağıda bulabilirsiniz;

 

Microsoft Flow – Hatırlatma Uygulaması

Microsoft Flow ile ilgili daha önceki kısa yazılarımda Flow’un ne olduğundan, şablon kullanarak nasıl akış geliştirebileceğimizden ve boş bir akış ile farklı türdeki eylemleri nasıl kullanabileceğimizden bahsetmeye çalışmıştım. Şimdi bir gerçek hayat uygulaması hazırlamaya çalışalım istiyorum.

Pek çok müşterimizde SharePoint üzerinde tuttukları dokümanlar veya liste öğeleri üzerinden hatırlatma uygulaması ihtiyacı oluyor. Örneğin bir kütüphanede sözleşmelerinizi tutuyorsunuz. Meta veri olarak sözleşmenin başlangıç tarihi ve bitiş tarihi elinizde veri olarak var. Bu durumda bir sözleşme hatırlatma uygulaması çok işe yarardı sanırım. Örneğin sözleşmenin bitmesine 30 gün kala yenileme çalışmalarını yapabilmeniz için size e-posta gelseydi. Veya çalışanlarınıza ait özel sağlık sigortalarını bir listede tutuyorsanız ve her özel sağlık sigortasının yenileme tarihi farklıysa günlük kontrolleri sizin yerinize bir sürecin yapması ve ilgili kişilere yenileme çalışması için hatırlatma bilgisi verseydi eminim işiniz bir hayli kolaylaşırdı. Bu konudaki senaryo örneklerini artırmak mümkün. Bu nedenle burada örneklemeye çalışacağım senaryo şu şekilde olacak.

“Sigortalar isimli bir listemiz var. İçeriğinde personelin adı, sigortanın türü ve sigortanın yenileme tarihi bilgisini tutuyoruz. İlgili poliçenin yenilenmesine 7 gün kala bir hatırlatma e-postası almak istiyoruz.”

Söz konusu örnek için SharePoint listemiz aşağıdaki görünümde olacak.