--------------------------------------
Witam serdecznie wszystkich czytających i nie marudząc o pogodzie przechodzę do tematu.
Mój zestaw jako serwer to Win2003SBS i SQL2000 (w komplecie z SBSem) oraz dodatkowo php 5.0.3
Problem polega na tym, że firma, która nam zainstalowała program sprzedażowo-fakturujący nazwała bazy w MSSQL w sposób następujący:
NAZWAPRODUCENTA_PRACA_NAZWANASZEJFIRMY_ULICA_MIASTO
oraz
NAZWAPRODUCENTA_DEMO_NAZWANASZEJFIRMY_ULICA_MIASTO
Dla nich to wygodne, bo zdalnie mogą administrować wieloma bazami i się w tym nie pogubią, ale dla mnie nazwa bazy, która ma 38 znaków to problem.
Mój skrypcik odpalany na XITAMI pod WinXP wygląda następująco:
<?php $link = mssql_connect(\"adres.ip.serwera.pl\", \"sa\", \"secret\"); mssql_select_db(\"Northwind\", $link); $SQL = \"Select * from sysusers\"; $rs = mssql_query($SQL, $link); ( reszta nieistotna ) ?>
i jak się łączę do standardowej bazy Northwind to działa, ale jak próbuję podać tą długą nazwę to wywala komunikat:
Cytat
Warning: mssql_select_db() [function.mssql-select-db]: message: Could not locate entry in sysdatabases for database 'PRODUCENT_MARKA_DEMO_FIRMA_ULI'. No entry found with that name. Make sure that the name is entered correctly. (severity 16) in c:\xitami\webpages\php2\sql2.php on line 3
orazCytat
Warning: mssql_select_db() [function.mssql-select-db]: Unable to select database:
'PRODUCENT_MARKA_DEMO_FIRMA_ULI' in c:\xitami\webpages\php2\sql2.php on line 3
'PRODUCENT_MARKA_DEMO_FIRMA_ULI' in c:\xitami\webpages\php2\sql2.php on line 3
czyli php przekazuje do funckji mssql_select tylko 30 początkowych znaków z nazwy bazy. Nie mieści mu się końcówka ulicy i miasto. W większości przypadków to wystarczy, ale u nas akurat nie.
Pytanie jest zatem następujące - czy zna ktoś z Was jaki sposób aby zrobić coś na zasadzie krótszego aliasu do bazy w MSSQLu? Niestety nie mogę zmienić oryginalnej nazwy na inną (umowy serwisowe i bezpłatne upgrade'y) ale też nie chcę się pozbawiać dostępu do tej bazy z poziomy php.
A może temat potraktować z drugiej strony - czy można jakoś inaczej potraktować tą bazę w php aby ją jednak otworzyć do dalszej "obróbki" ?
Dzięki za pomoc.
Mroziu
Rozwiązanie problemu
--------------------------------------
Ponieważ nie mogę odpowiedzieć na swój list, napiszę rozwiązanie tego problemu pod spodem. Być może ktoś spotka się z podobną sytuacją i nie będzie musiał wyważać otwartych drzwi.
W temacie długości nazwy poczyniłem dziś testy. Oto, do czego doszedłem.
(*) Zamiast na Xitami pod WinXP wykorzystałem fabrycznego IIS z Win2003SBS - nie pomogło
(*) założyłem "od zera" bazy o następujących nazwach:
BAZA_30_9012345678901234567890
BAZA_31_90123456789012345678901
BAZA_32_901234567890123456789012
i testowałem i niestety, tak jak się mogłem domyslać baza30 dała się otworzyć natomiast baza31 i baza32 już nie.
(*) Za namową kolegów potraktowałem bazę przez odbc, czyli:
1) w Źródłach danych założyłem "alias" do zbyt długiej nazwy. Odbc też ma ograniczenie nazwy do 32 znaków ale można zrobić krótką nazwę i wskazać bazę, którą ma obsłużyć. A nazwa tej bazy może być już dłuższa, niż 30 znaków.
2) zmodyfikowałem skrypt i zamiast funkcji mssql_* używam odbc_*
Tak więc mam dwa w jednym ale działa.
Pozdrawiam
Mroziu