ďťż
 
VFP - MSSQL 2005 ďťż
 
VFP - MSSQL 2005
Zobacz wiadomości
 
Cytat
A gdyby tak się wedrzeć na umysłów górę, / Gdyby stanąć na ludzkich myśli piramidzie, / I przebić czołem przesądów chmurę, / I być najwyższą myślą wcieloną. . . Juliusz Słowacki, Kordian
Indeks BCB i MySQL subiekt gt fototapeta
 
  Witamy

VFP - MSSQL 2005



Zbigniew Grzelczak - 01-02-2007 00:07
VFP - MSSQL 2005
 
1. Czy w MSSQL jest instrukcja odpowiadająca Lock() w VFP ?
2. Czy dobierając się do baz MSSQL przez ODBC, można korzystać z trybu
transakcji jawnych (explicit) w MSSQL?

Pozdrawiam





Marcin A. Guzowski - 02-02-2007 00:09

  Zbigniew Grzelczak napisał(a):
> 1. Czy w MSSQL jest instrukcja odpowiadająca Lock() w VFP ?

Akurat nie używałem Visual FoxPro (jeśli o to chodzi), więc trudno mi
powiedzieć. Jak napiszesz, co chcesz osiągnąć, to wtedy się wypowiem o
możliwościach.

> 2. Czy dobierając się do baz MSSQL przez ODBC, można korzystać z trybu
> transakcji jawnych (explicit) w MSSQL?

Oczywiście można. Każdy dobry ODBCowski provider powinien to zapewniać.

--
Pozdrawiam,
Marcin Guzowski
http://guzowski.info




Zbigniew Grzelczak - 03-02-2007 00:02

  Chciałbym zablokować ostatni rekord tabeli, aby nikt w międzyczasie nie
zmienił jego zawartości. Odczytać z niego dane. Zrobić kilka innych
czynności i odblokować rekord.
Będę wdzięczny za wskazówki.
Pozdrawiam

Użytkownik "Marcin A. Guzowski" <tu_wstaw_moje_imie@guzowski.info> napisał w
wiadomości news:ept6l9$c0$1@atlantis.news.tpi.pl...
> Zbigniew Grzelczak napisał(a):
>> 1. Czy w MSSQL jest instrukcja odpowiadająca Lock() w VFP ?
>
> Akurat nie używałem Visual FoxPro (jeśli o to chodzi), więc trudno mi
> powiedzieć. Jak napiszesz, co chcesz osiągnąć, to wtedy się wypowiem o
> możliwościach.
>
>> 2. Czy dobierając się do baz MSSQL przez ODBC, można korzystać z trybu
>> transakcji jawnych (explicit) w MSSQL?
>
> Oczywiście można. Każdy dobry ODBCowski provider powinien to zapewniać.
>
>
> --
> Pozdrawiam,
> Marcin Guzowski
> http://guzowski.info




Marcin A. Guzowski - 03-02-2007 00:02

  Zbigniew Grzelczak napisał(a):
> Chciałbym zablokować ostatni rekord tabeli, aby nikt w międzyczasie nie
> zmienił jego zawartości. Odczytać z niego dane. Zrobić kilka innych
> czynności i odblokować rekord.
> Będę wdzięczny za wskazówki.

W SQL Server 2005 nie ma specjalnych komend wyznaczających co ma być
blokowane. Blokowanie to efekt wtórny związany z transakcjami lub/i
hintami dot. blokowania (locking hints) w zapytaniach.

Z tego co widzę Ty oczekujesz blokowania na poziomie rekordu połączoną
z pewnością operacji UPDATE. Jest to przewidziane w MSSQLu 2005.
Generalnie jak robisz odczyt z tabeli, zakładany jest shared lock (S).
Pozwala on na równoległy odczyt i modyfikację danych. Jeżeli w
transakcyjnym zapytaniu SELECT dasz hinta UPDLOCK - wtedy odczyt
będzie możliwy, ale sinik nie dopuści do modyfikacji odczytanych
rekordów innemu procesowi niż ten, który założył UPDLOCK i wciąż
trzyma transakcję. Domyślną ziarnistością blokady jest w tym przypadku
poziom wiersza.

Więc tak:

CREATE TABLE lock_test (a int)
GO
INSERT INTO lock_test(a) VALUES(1)
INSERT INTO lock_test(a) VALUES(2)
GO

Połączenie 1:
BEGIN TRAN
SELECT * FROM lock_test WITH (UPDLOCK) WHERE a = 1
-- i tu jesteśmy w transakcji na odczycie

Połączenie 2:
SELECT * FROM lock_test
-- pójdzie

UPDATE lock_test SET a = 5 WHERE a = 1
-- nie pójdzie bo jest blokada

Jedna uwaga: teoretycznie blokowanie jest na poziomie wiersza, ale...
jeśli dwa rekordy będą na jednej stronie danych, to SQL Server co
prawda zablokuje dany RID (rekord) w trybie U (UPDATE), ale zablokuje
też całą stronę danych w trybie IU - aby przeciwdziałać sytuacjom
deadlockowym. Efekt będzie pewnie taki, że nie da się z Połączenia 2
updatować żadnego z 2ch wierszy.

--
Pozdrawiam,
Marcin Guzowski
http://guzowski.info





Zbigniew Grzelczak - 03-02-2007 00:02

  Miło, że chciało Ci się tyle pisać.
Dzięki temu nareszcie wiem na czym polega nieco inne podejście do
współbieżności od tego, które znałem do tej pory.
Bardzo dziękuję

Pozdrawiam
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • effulla.pev.pl
  • comp
    Zdalny =?ISO-8859-2?Q?dost=EAp_do_MSSQL_bez_zarz=B1dzani?==?ISO-8859-2?Q?a?= [MSSQL] =?ISO-8859-2?Q?zgodno=B6ci_z_licencjami_Microsoft_?==?ISO-8859-2?Q?SQL_Server?= [MSSQL 2k] - jak =?ISO-8859-2?Q?pod=B3=B1czy=E6_serwer_na_?==?ISO-8859-2?Q?porcie_innym_ni=BF_1433=3F?= MSSQL Express czy Oracle Express [MSSQL] ACCESS - SQL =?ISO-8859-2?Q?B=B3ad_w_konwersji_lic?==?ISO-8859-2?Q?zb?= [MSSQL 2000] =?ISO-8859-2?Q?wywo=B3anie_procesu_z_poziomu_?==?ISO-8859-2?Q?job=27a?= [MSSQL 2K] =?ISO-8859-2?Q?Wp=B3yw_ustawie=F1_regionalnych_?==?ISO-8859-2?Q?serwera_na_zapytania?= Pobierananie danych z innej bazy danych w MSSQL MSSQL , funkcja pobierajaca sama date (bez czasu) w funkcji [mssql] insert do tabeli na podstawie danych z innej tabeli
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • atanvarne633.opx.pl
  • Cytat

    Decede mihi sole - nie zasłaniaj mi słonca.
    Gdy kogoś kochasz, jesteś jak stworzyciel świata - na cokolwiek spojrzysz, nabiera to kształtu, wypełnia się barwą, światłem. Powietrze przytula się do ciebie, choćby był mróz, a ty masz w sobie tyle radości, że musisz ją rozdawać wokoło, bo się w tobie nie mieści
    Hoc fac - tak czyń.
    A tergo - od tyłu; z tyłu.
    I czarne włosy posiwieją. Safona

    Valid HTML 4.01 Transitional

    Free website template provided by freeweblooks.com