Max M

Max M specjalista, devim

Temat: Linkowanie do tabel MS SQL z innej domeny

Witam,
proszę o pomoc dot. tabel połączonych i ODBC. Mianowicie w domenie biurowej mam SQL Server (SRVSQL2005) z instancją (INSTANCJA1), a na niej baza (BAZA1). Z poziomu innej domeny (za firewalem) łączę się do tabel MS SQL za pomocą pliku *.dsn:

[ODBC]
DRIVER=SQL Server
SERVER=SRVSQL2005\INSTANCJA1
DATABASE=BAZA1
APP=Microsoft® Access
WSID=06STACJA1
UID=USER1
Pwd=PASSWORD1
Trusted_Connection=No

i podczas tworzenia tego połączenia ODBC wszytko gra, ale jednak po zamknięciu bazy MS Access i ponownym otwarciu tracę dostęp do tabel :( Co robić? Wymuszać jakimś kodem inicjację, chyba bez sensu, o co chodzi w tym problemie? Jak skonfigurować dsn, żeby grało? Pozdrawiam
Karol Kowalczyk

Karol Kowalczyk Programista, Marsh
Sp z o.o.

Temat: Linkowanie do tabel MS SQL z innej domeny

Co znaczy tracę połączenie? Że pojawia się okienko do logowania?
Max M

Max M specjalista, devim

Temat: Linkowanie do tabel MS SQL z innej domeny

Tak, pojawia się okno logowania -nie radzę sobie z tym, więc dodam więcej spostrzeżeń i proszę o pomoc:
1. Pojawia się komunikat "Connection failed...." SQLState 28000, SQLServerError 18452, Server dla usera nie może zrealizować Trusted connection....
2. Gdy dam ręcznie "OK", to pojawia się okienko logowania z opcją Trusted_Connection=TRUE, pomimo, że w pliku dsn miałem i ciągle mam Trusted_Connection=NO. Okno jest nieaktywne, gdy zmienię na "NO", to uaktywnia się okno z podaniem hasła -niestety użytkownik nie jest taki jak w pliku dsn, tylko bieżący zalogowany (inny, a niestety łączę się do MSSQL z różnych stacji i z poziomu różnych userów, jako ten JEDEN USER, który a uprawnienia d MSSQL...). Dopiero jak ręcznie zmienię usera i ręcznie wprowadzę hasło, to się otwiera. Dla mnie to wielki problem, bo uniemożliwia mi automatyczne działanie :(

Podsumowanie: wygląda na to, że po ponownym otwarciu MS Access zatraca informacje z pliku DSN o użytkowniku, haśle i rodzaju połączenia do MS SQL:
UID=USER1 ->daje bieżącego lokalnego, a nie tego w MS SQL
Pwd=PASSWORD1 -> prosi o hasło usera lokalnego, a nie tego z uprawnieniami w MS SQL
Trusted_Connection=No -> zmienia na TRUE

pamięta tylko nazwę serwera i bazy. Co może być tego powodem? b. Proszę o pomoc/naprowadzenie.
Karol Kowalczyk

Karol Kowalczyk Programista, Marsh
Sp z o.o.

Temat: Linkowanie do tabel MS SQL z innej domeny

Chyba miałem podobny problem 4 lata temu. Olałem pliki dsn. I zrobiłem to tak że przy każdym otwarciu pliku odpalałem skrypt odświerzający połączenia z tabelami lub querry.
W module mam coś takiego:

function odswierz(strConnect)
Dim tdf As TableDef
For Each tdf In CurrentDb.TableDefs
If tdf.Name Like "table1" Or tdf.Name Like "table2" Or .... _
Then
tdf.Connect = strConnect
tdf.RefreshLink
End If
Next
Set tdf = Nothing

end function


Przy czym strConnect to odpowiednio spreparowy string z tąd [link]https://www.connectionstrings.com/sql-server/[/link]

z dsn też może się da coś pokombinować ale nigdy nie chciało mi się drążyć tematu.Ten post został edytowany przez Autora dnia 14.07.14 o godzinie 18:31
Max M

Max M specjalista, devim

Temat: Linkowanie do tabel MS SQL z innej domeny

Dzięki! Szkoda, że tak to wygląda -w takim razie spróbuję to programowo załatwić, a przy okazji może jeszcze coś się okaże... :)
Max M

Max M specjalista, devim

Temat: Linkowanie do tabel MS SQL z innej domeny

A jak odświeżyć linkownie tabel do MS SQL Server przy pomocy ADO, bo akurat z ADO korzystam....Ten post został edytowany przez Autora dnia 28.05.15 o godzinie 20:53
Karol Kowalczyk

Karol Kowalczyk Programista, Marsh
Sp z o.o.

Temat: Linkowanie do tabel MS SQL z innej domeny

Nie rozumiem po co ale skoro chcesz się bawić to wujek google pokazął coś takiego:
[link]https://support.microsoft.com/en-us/kb/240222[/link]

Jak zrobisz to pochwal się rozwiązaniem tu bo może ktoś inny będzie miał problem.
Max M

Max M specjalista, devim

Temat: Linkowanie do tabel MS SQL z innej domeny

Dzięki wielkie, widzę, że AFO chyba bardziej skomplikowane.... :(
Po co? Otóż do zapytań SQL wykorzystuję ADO i w ten sposób mam już połączenia z przedmiotową bazą, więc pomyślałem, że skoro jest już "sprzęg" to przed zapytaniem robię refresh linków tabel połączonych...
Po co ? Czy mieszanie ADO i DAO ma tutaj rzeczywiście sens?
Max M

Max M specjalista, devim

Temat: Linkowanie do tabel MS SQL z innej domeny

Wracam do tematu, bo pracuję w Excelu 2010 i ciągle mam problemy linkowaniem do MS SQL leżących w innych domenach. Przy samym otw. A210 pomogło rozwiązanie Karola -odświeżanie linków w VBA. Ale jak to ugryźć w Excelu i w ADO gdy mam takie połączenia?
If conn Is Nothing Then Set conn = New ADODB.Connection
If r Is Nothing Then Set r = New ADODB.Recordset
With conn
.Provider = "Microsoft.Jet.OLEDB.4.0"
.ConnectionString = "data source=" & path01
.Open
Po prostu zapytania sql nie działają po połączyłem się do bazy z nieodświeżonymi linkami. Nie będę tłumaczył dlaczego tak robię (to b. skomplikowane, ale tak potrzeba uwierzcie). Nawet znalazłem coś (ADOX.Catalog), ale potrzebuje pomocy jak to dalej "ugryźć" w celu odświeżenia tabel po połączeniu ADODB?
Set kat = New ADOX.Catalog
Set kat.ActiveConnection = conn
Set tbl.ParentCatalog = kat
kat.Tables.Append tbl
kat.Tables.Refresh

Następna dyskusja:

Dynamiczne linkowanie Tabel...




Wyślij zaproszenie do