Dostęp do danych bazy accesa (mdb) w 64-bitowym środowisku SQL Server 2008

July 27th, 2011

Potrzebowałem uzyskać dostęp do bazy danych accesa. Niestety okazało się, że Microsoft nie wydał 64 bitowej wersji sterownika “Microsoft.Jet.OLEDB.4.0″ i połączenie za pomocą OLEDB nie wchodzi w grę. Jednym z rozwiązań do importu danych było wykorzystanie Integration Services i wymuszenie użycia trybu 32 bitowego przy uruchamiania pakietu. Rozwiązanie to nie było do końca dobre, bo potrzebowałem dostępu do aktualnych danych. Znalazłem na to rozwiązanie.

1. Na serwerze z 64-bitowym SQL Serverem zainstalowałem 32-bitową wersję SQL Server Express.

2. Utworzyłem linked server pomiędzy bazą danych Accessa i SQL Server Expressem.

EXEC sp_addlinkedserver
@server = N'AccessDB',
@provider = N'Microsoft.Jet.OLEDB.4.0',
@srvproduct = N'OLE DB Provider for Jet',
@datasrc = N'C:\DB\accessdb.mdb'
GO

Wszystko o linked serverach można znaleźć w msdn Microsoftu.

3. Komunikacja pomiędzy 32 bitowym i 64 bitowym zapewniłem dzięki stworzeniu kolejnego linked servera.

EXEC sp_addlinkedserver @server=N'Express32', @srvproduct=N'', @provider=N'SQLNCLI', @datasrc= N'ServerName\SQLEXPRESS'; 

4. W expressie dla wygody stworzyłem widoki do interesujących mnie tabeli, m.in widok vTest. W 64bitowym SQL Server mogę już korzystać z danych z accessa!

SELECT * FROM Express32.Test.dbo.vTest

 

schemat poglądowy

 

Strasznie wolny WebDAV w Sharepoint 2010.

July 27th, 2011

Zastane środowisko:
Windows 7 SP1 x64
Sharepoint 2010 Foundation

Cel:
Przeniesienie wielu folderów z biblioteki do zdefiniowanego innego.

Próby rozwiązania:

1. Zamapowanie sharepointowej biblioteki, jako dysku sieciowego i wykonanie operacji wytnij, wklej.
Tutaj pojawił się problem, połączenie z zamapowanym dyskiem trwało tak długo, że zawieszało Eksploratora Windows.
Zmiana ustawień połączenia lokalnego w Internet Explorer okazała się być rozwiązaniem problemu z wolnym połączeniem.
Wystarczyło odhaczyć ustawienie automatycznego wykrywania ustawień sieci.

point 2010 WebDav wolne działanie

Grails i kerberos

July 25th, 2011

W poniższym artykule opiszę, jak w kilku krokach umożliwić aplikacji stworzonej przy pomocy grails 1.3.7 autoryzację z wykorzystaniem Kerberosa (W naszym przypadku Windows 2008 R2).

1. Instalujemy pluginy grails: spring-security-core oraz spring-security-kerberos

$grails install-plugin spring-security-core
$grails install-plugin spring-security-kerberos 

2. Dodajemy użytkownika w Active Directory, który posłuży nam do zarejestrowania SPN (Service Principal Name) naszej aplikacji

 Setspn -a http/<computername>.<domainname> <domain-user-account>

uwagi: <computername>.<domainname> musi się dokładnie tak samo nazywać, jak host, gdzie później będzie uruchomiona aplikacja.

 

3. Generujemy na serwerze domenowym plik keyTab.

ktpass /out kerberos.keytab /mapuser <domain-user-account>@<DOMAIN.HOST.FULL.NAME> /princ HTTP/<computername>.<domainname>@<DOMAIN.HOST.FULL.NAME> /pass * 

4. Wygenerowany plik umieszczamy w miejscu dostępnym dla naszej aplikacji.

5. Dodajmy wpisy do pliku konfiguracyjnego Config.groovy.

grails.plugins.springsecurity.kerberos.ticketValidator.servicePrincipal = 'HTTP/<computername>.<domainname>@<DOMAIN.HOST.FULL.NAME>'
grails.plugins.springsecurity.kerberos.ticketValidator.keyTabLocation = 'file:///home/grails/kerberos.keytab'

6. W przeglądarce konfigurujemy zaufaną witrynę (tutaj firefox 4) :


url: about:config

network.negotiate-auth.trusted-uris: <computername>.<domainname>

Kompilacja php 5.3.5 i Configure: error: DBA: Could not find necessary header file(s)

March 9th, 2011

Podczas kompilacji PHP 5.3.5 w środowisku x64 CentOS 5 pojawił się błąd z tytułu, na jednym z for sugerowano doinstalowanie gdbm-devel, ale to nie pomogło. Okazało się, iż brakującą paczką była: db4-devel.x86_64 .

Zmina typu kolumny na bazie SQL Server

February 4th, 2011

Mam kolumnę mnożnik o typie DECIMAL(5,4) w tabli Slowniki.RodzajUbezpieczenia, która okazuje się ma zły typ (ma zbyt mało miejsc po przecinku). Żeby zmienić typ kolumny wystarczy szybkie polecenie:

ALTER TABLE Slowniki.RodzajUbezpieczenia ALTER COLUMN mnoznik DECIMAL(6,5)

Problem z Akeeba Kickstart na home.pl

December 8th, 2010

Działać to ze sobą nie chce. Objawia się to tym, że po prostu nie widać pliku backupu (.jpa) – nie miałem czasu na to by szukać gdzie tkwi problem, gdyż miało to być szybkie przeniesienie strony na nowy hosting.

Jednak dzięki temu, że w Akeeba Kickstart jest możliwość ustawienia by plik rozpakował się na zdalny adres FTP, więc z sukcesem z tego skorzystałem. CMS Joomla działa w home.pl bez problemu.

Natomiast z samym komponentem AkeebaBackup nie zanotowałem żadnych problemów – poza tym, że po przeniesieniu wizardem trzeba odświeżyć ścieżki, ale to tylko formalność.

Dodawanie webpartów na strony formularzy DispForm, EditForm lub NewForm

September 6th, 2010

Aby włączyć możliwość dodawania elementów webpart na stronach formularzy DispForm.aspx, EditForm.aspx lub NewForm.aspx należy w adresie URL dodać kwerendę: &PageView=Shared&ToolPaneView=2

SPContext.Current.Web.CurrentUser.LoginName – problem ze zmianą loginu

August 12th, 2010

Po zmianie loginu wystąpił problem -  funkcja SPContext.Current.Web.CurrentUser.LoginName zwracała ciągle stary login. Próby aktualizacji danych z AD, restart IIS, nic z tych rzeczy nie pomogło.

Rozwiązanie:

# stsadm -o migrateuser -oldlogin  domena\starylogin -newlogin domena\nowylogin -ignoresidhistory

# iisreset

Działa!

PS.
Cały artykuł dotyczący migracji loginów tutaj.

Wyszukanie grup SharePoint dla użytkownika AD

May 12th, 2010

Jeśli tworzymy WebPart na naszą witrynę SharePoint i chcemy sprawdzić do jakich grup SharePoint należy zalogowany użytkownik to intuicyjnie szukamy tej informacji w cechach przypisanych do użytkownika a dokładnie:

SPUser uzytkownik.Groups

Jest to dobry tok myślenia tylko w przypadku, gdy użytkownicy przypisywani są do grupy SharePoint w postaci pojedynczych użytkowników Active Directory a nie Grup AD.

W tym drugim przypadku musimy użyć SPUserToken i SPGroup.ContainsCurrentUser.

Przykład:

SPSite site = new SPSite(“http://sharepoint:100/”);
SPWeb web = site.OpenWeb();

Label label = new Label();

this.Controls.Add(label);
SPUserToken userToken = site.UserToken;
using (SPSite contextSiteColl = new SPSite(“http://sharepoint:100/”, userToken))
{
using (SPWeb contextSite = contextSiteColl.OpenWeb())
{
label.Text += ” Site:” + contextSite.Name;
foreach (SPGroup grupa in contextSite.Groups)
{
if (grupa.ContainsCurrentUser)
{
label.Text += ” Należy do grupy:” + grupa.Name;
}
}

}
}

VSeWSS Service Error: No SharePoint Site exists at the specified URL.

May 12th, 2010

dodatkowo: VSeWSS Service Logging Error: Access to the path ‘Microsoft\VSeWSS 1.3′ is denied.

Przy zmianie środowiska dev na windows 2008 r2 z windows 2003, przy próbie publikacji webparta bezpośrednio z Visual Studio 2008 wyskoczył mi powyższy komunikat.

Dodam, że przy tworzeniu webparta z wizarda, wybrałem full trust (GAC deployment).  Żadne próby typu “Uruchom jako Administrator” nie zadziałały, fakt, że recznie przez gacutils mogłem dodawać, ale przy testowaniu nowego webparta jest to dosyć żmudne.

Sprawdziłem w IIS na jakim użytkowniku działa sobie pula aplikacji VseWss  (W menadżerze IIS -> Application pools).

Próbowałem dodać tego użytkownika do lokalnych administratorów, nie pomogło. Doczytałem chwilę poźniej, że musi on być dodany do grup: WSS_ADMIN_WPG, WSS_RESTRICTED_WPG.  Po dodaniu zadziałało!