Dla przypomnienia oryginalny list
--------------------------------------
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:

  1. <?php
  2.     $link = mssql_connect(&#092;"adres.ip.serwera.pl\", \"sa\", \"secret\");
  3.     mssql_select_db(&#092;"Northwind\", $link);
  4.     $SQL = &#092;"Select * from sysusers\";
  5.     $rs = mssql_query($SQL, $link);
  6. ( reszta nieistotna )
  7. ?>


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
oraz
Cytat
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


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