Autor Wątek: Błąd przy konwersji bazy danych 0x80040E14 - obiekt o nazwie sp_addextendedproc  (Przeczytany 4588 razy)

0 użytkowników i 1 Gość przegląda ten wątek.

Offline marianpro

  • Nowy użytkownik
  • *
  • Wiadomości: 19
  • Reputacja +0/-0
  • Wersja programu: Subiekt GT
Czołem wszystkim. :)

Próbowałem dziś zrobić aktualizację Subiekta z wersji 1.51 do 1.53 HF1 i wywaliło mi po konwersji:

Błąd 0x80040E14: W bazie danych istnieje już obiekt o nazwie sp_addextendedproc.
Aktualizacja struktury podmiotu zakończona sukcesem
Nie udało się odzyskać wszystkich obiektów użytkownika.


Zacząłem więc próbować konwersji stopniowej i doszedłem bez błędów do 1.51 SP1.
Nałożenie 1.52 wywaliło błąd - ten sam co wyżej do 1.53 HF1.
SQL w wersji 2014 Express, ten co się instaluje z Subiektem GT domyślnie.
Test na innym kompie z instalacją od zera, dał taki sam rezultat.

Zdaniem infolinii Inserta, przyczyną są indywidualne modyfikacje w programie / bazie, których jednak nie robiliśmy.
Z tego co pogooglałem to faktycznie tak jakby to sp_addextendedproc było jakąś niezalecaną funkcją, ale skąd się wzięła w bazie...

Wirus?

Będę wdzięczny za jakiekolwiek sugestie.

Offline birds22

  • Ekspert
  • *****
  • Wiadomości: 9211
  • Reputacja +1304/-21
  • Wersja programu: Najnowsza
To jest przecież obiekt systemowy - był tam od zawsze.

Trzeba sprawdzić co Subiekt próbuje odtwarzać.
Sławek, Zduńska Wola

Offline candy

  • Zaawansowany użytkownik
  • ****
  • Wiadomości: 4878
  • Reputacja +172/-11
Z tego co pogooglałem to faktycznie tak jakby to sp_addextendedproc było jakąś niezalecaną funkcją, ale skąd się wzięła w bazie...
Niezalecane jest jej używanie w nowych projektach, bo w kolejnych edycjach SQL Servera może jej nie być ("This feature will be removed in a future version of Microsoft SQL Server. Avoid using this feature in new development work, and plan to modify applications that currently use this feature.")
Nie pytaj co rząd może zrobić dla Ciebie. Spytaj czy mógłby tego nie robić.

Offline marianpro

  • Nowy użytkownik
  • *
  • Wiadomości: 19
  • Reputacja +0/-0
  • Wersja programu: Subiekt GT
To jest przecież obiekt systemowy - był tam od zawsze.

Trzeba sprawdzić co Subiekt próbuje odtwarzać.

Dzięki birds22 za sugestię. :)

Skrypt wypluwa takie info:

Błąd 0x80040E14: W bazie danych istnieje już obiekt o nazwie sp_dropextendedproc.
Nie powiodło się wykonanie polecenia:
if not exists (select * from dbo.sysobjects where id = object_id(N'dbo.sp_addextendedproc') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
BEGIN
EXEC sp_executesql N'create procedure sp_addextendedproc --- 1996/08/30 20:13

@functname nvarchar(517),/* (owner.)name of function to call */
@dllname varchar(255)/* name of DLL containing function */
as
set implicit_transactions off
if @@trancount > 0
begin
raiserror(15002,-1,-1,''sp_addextendedproc'')
return (1)
end
dbcc addextendedproc( @functname, @dllname)
return (0) -- sp_addextendedproc
' END

Wyglądało by, że nowsze wersje coś weryfikują, aczkolwiek na innym, starszym podmiocie jaki miałem, poszła konwersja na tym samym serwerze do 1.53 HF1 i to z 1.49 SP1

Pozdro.

Offline dkozlowski

  • Ekspert
  • *****
  • Wiadomości: 17067
  • Reputacja +798/-27
  • Wersja programu: GT/Navireo/nexo
Jak widać problem jest z tą konkretną bazą danych... Zamieść cały log z konwersji, a nie tylko ten wycinek.
Daniel, Białystok.

Offline marianpro

  • Nowy użytkownik
  • *
  • Wiadomości: 19
  • Reputacja +0/-0
  • Wersja programu: Subiekt GT
Jak widać problem jest z tą konkretną bazą danych... Zamieść cały log z konwersji, a nie tylko ten wycinek.

Zamieszczam zatem to co wypluł skrypt w postaci pliku txt:

========================================================================
Aktualizacja podmiotu: PODMIOT z wersji: 1.5100 do wersji: 1.5300.0.4209 dnia: 2018-06-22 11:08:54
Zapisywanie informacji o początku konwersji
Modyfikacja wartości wersji struktury bazy z 1.5100 na 1.5101
Wartość wersji została zmodyfikowana
Zastosowano funkcję konwertującą z wersji bazy danych 1.5101 do 1.5102.
Ustawianie wartości domyślnych dla tabel jpk_WysylkaElektroniczna oraz jpk_ParametrZakończone
Modyfikacja wartości wersji struktury bazy z 1.5101 na 1.5102
Wartość wersji została zmodyfikowana
Modyfikacja wartości wersji struktury bazy z 1.5102 na 1.5103
Wartość wersji została zmodyfikowana
Zastosowano do podmiotu skrypt: C:\Program Files (x86)\InsERT\InsERT GT\Skrypty\skrypt1.5103_1.5200.enc
Czas: OdczepianieObiektow 00:00:00
Czas: UsuwanieConstraintow:Check,Default 00:00:06
Czas: OdczepianieConstraintow:PK,FK,Unique 00:00:00
Czas: UsuwanieRegul 00:00:00
Czas: UsuwanieDefaultow 00:00:01
Czas: DodawanieDefaultow 00:00:00
Czas: DodawanieRegul 00:00:00
Czas: PorzadkowanieTypowDanych 00:00:00
Czas: OdczepianieIndexow 00:00:00
Czas: PorzadkowanieTabelek 00:00:03
Czas: PorzadkowanieDanychSlownikowych 00:00:00
Czas: __Update 00:00:00
Czas: DodawanieIndexow 00:00:00
Czas: DodawanieConstraintow 00:00:00
Czas: UsuwanieZbednychTypowDanych 00:00:00
Czas: NakladanieObiektow 00:00:02
Czas: __PostUpdate 00:00:00
Czas: Calosc 00:00:16
Modyfikacja wartości wersji struktury bazy z 1.5103 na 1.5200
Wartość wersji została zmodyfikowana
Modyfikacja wartości wersji struktury bazy z 1.5200 na 1.5201
Wartość wersji została zmodyfikowana
Zastosowano do podmiotu skrypt: C:\Program Files (x86)\InsERT\InsERT GT\Skrypty\skrypt1.5201_1.5300.enc
Czas: OdczepianieObiektow 00:00:00
Czas: UsuwanieConstraintow:Check,Default 00:00:06
Czas: OdczepianieConstraintow:PK,FK,Unique 00:00:00
Czas: UsuwanieRegul 00:00:00
Czas: UsuwanieDefaultow 00:00:00
Czas: DodawanieDefaultow 00:00:00
Czas: DodawanieRegul 00:00:00
Czas: PorzadkowanieTypowDanych 00:00:00
Czas: OdczepianieIndexow 00:00:00
Czas: PorzadkowanieTabelek 00:00:04
Czas: PorzadkowanieDanychSlownikowych 00:00:00
Czas: __Update 00:00:00
Czas: DodawanieIndexow 00:00:00
Czas: DodawanieConstraintow 00:00:01
Czas: UsuwanieZbednychTypowDanych 00:00:00
Czas: NakladanieObiektow 00:00:05
Czas: __PostUpdate 00:00:00
Czas: Calosc 00:00:19
Modyfikacja wartości wersji struktury bazy z 1.5201 na 1.5300
Wartość wersji została zmodyfikowana
Aktualizacja identyfikatorów...Zakończono
Czas: Aktualizacja identyfikatorów 00:00:01
Aktualizacja typów wzorców wydruków...Zakończono
Czas: Aktualizacja typów wzorców wydruków 00:00:02
Aktualizacja standardowych wzorców wydruków...Zakończono
Czas: Aktualizacja standardowych wzorców wydruków 00:00:42
Aktualizacja domyślnych wzorców wydruków...Zakończono
Czas: Aktualizacja domyślnych wzorców wydruków 00:00:00
Aktualizacja standardowych zestawień...Zakończono
Czas: Aktualizacja standardowych zestawień 00:00:01
Aktualizacja driverów homebankingu...Zakończono
Czas: Aktualizacja driverów homebankingu 00:00:00
Aktualizacja wzorców deklaracji...Zakończono
Czas: Aktualizacja wzorców deklaracji 00:00:08
Aktualizacja parametrów historycznych...Zakończono
Czas: Aktualizacja parametrów historycznych 00:00:00
Aktualizacja słowników ZUS...Zakończono
Czas: Aktualizacja słowników ZUS 00:00:01
Aktualizacja listy uprawnień...Zakończono
Czas: Aktualizacja listy uprawnień 00:00:02
Aktualizacja listy uprawnień UEPiK...Zakończono
Czas: Aktualizacja listy uprawnień UEPiK 00:00:00
Aktualizacja sprawozdań...Zakończono
Czas: Aktualizacja sprawozdań 00:00:02
Aktualizacja wzorcowego planu kont...Zakończono
Czas: Aktualizacja wzorcowego planu kont 00:00:00
Aktualizacja słowników...Zakończono
Czas: Aktualizacja słowników 00:00:00
Aktualizacja flag własnych...Zakończono
Czas: Aktualizacja flag własnych 00:00:00
Aktualizacja listy modułów...Zakończono
Czas: Aktualizacja listy modułów 00:00:00
Aktualizowanie parametrów użytkowników...Zakończono
Czas: Aktualizowanie parametrów użytkowników 00:00:00
Aktualizacja definicji podglądu obiektów...Zakończono
Czas: Aktualizacja definicji podglądu obiektów 00:00:10
Dodawanie naklejek...Naklejki: C:\Program Files (x86)\InsERT\InsERT GT\Skrypty\Wspolne\nk_ZrodloDanych.xml
Naklejki: C:\Program Files (x86)\InsERT\InsERT GT\Skrypty\Wspolne\nk_UkladWzorcowy.xml
Naklejki: C:\Program Files (x86)\InsERT\InsERT GT\Skrypty\Wspolne\nk_ZestawDanych.xml
Zakończono
Czas: Dodawanie naklejek 00:00:01
Aktualizacja typu kadr...Zakończono
Czas: Aktualizacja typu kadr 00:00:00
Aktualizacja składki wypadkowej wspólnika...Zakończono
Czas: Aktualizacja składki wypadkowej wspólnika 00:00:00
Aktualizacja obiektów 1.52...Zakończono
Czas: Aktualizacja obiektów 1.52 00:00:00
Aktualizacja pracowników kontrahentów...Zakończono
Czas: Aktualizacja pracowników kontrahentów 00:00:00
Dodawanie celów przetwarzania...Zakończono
Czas: Dodawanie celów przetwarzania 00:00:00
Konwersja zgód kontrahentów i pracowników kontrahentów...Zakończono
Czas: Konwersja zgód kontrahentów i pracowników kontrahentów 00:00:00
Aktualizacja statusu telemetrycznego....Zakończono
Czas: Aktualizacja statusu telemetrycznego. 00:00:00
Aktualizacja uprawnień 1.52...Zakończono
Czas: Aktualizacja uprawnień 1.52 00:00:00
Aktualizacja kontrahentów- podzielona płatność....Zakończono
Czas: Aktualizacja kontrahentów- podzielona płatność. 00:00:01
Kompaktowanie podmiotu...Zakończono
Czas: Kompaktowanie podmiotu 00:00:03
Odtwarzanie obiektów użytkownika ...
Nie powiodło się wykonanie polecenia:
if not exists (select * from dbo.sysobjects where id = object_id(N'dbo.sp_dropextendedproc') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
BEGIN
EXEC sp_executesql N'create procedure dbo.sp_dropextendedproc

@functname nvarchar(517) -- name of function

as

-- If we''re in a transaction, disallow the dropping of the

-- extended stored procedure.

set implicit_transactions off

if @@trancount > 0

begin

raiserror(15002,-1,-1,''sys.sp_dropextendedproc'')

return (1)

end

-- Drop the extended procedure mapping.

dbcc dropextendedproc( @functname )

return (0) -- sp_dropextendedproc

' END

Błąd 0x80040E14: W bazie danych istnieje już obiekt o nazwie sp_dropextendedproc.
Nie powiodło się wykonanie polecenia:
if not exists (select * from dbo.sysobjects where id = object_id(N'dbo.sp_addextendedproc') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
BEGIN
EXEC sp_executesql N'create procedure sp_addextendedproc --- 1996/08/30 20:13

@functname nvarchar(517),/* (owner.)name of function to call */

@dllname varchar(255)/* name of DLL containing function */

as

set implicit_transactions off

if @@trancount > 0

begin

raiserror(15002,-1,-1,''sp_addextendedproc'')

return (1)

end

dbcc addextendedproc( @functname, @dllname)

return (0) -- sp_addextendedproc

' END

Błąd 0x80040E14: W bazie danych istnieje już obiekt o nazwie sp_addextendedproc.
Aktualizacja struktury podmiotu zakończona sukcesem
Nie udało się odzyskać wszystkich obiektów użytkownika.
 Skrypt wszystkich obiektów użytkownika można zobaczyć w pliku:
'C:\Users\Admin\AppData\Roaming\InsERT GT\PODMIOT.sql'
Zapisywanie informacji o konwersji...Zakończono
Czas: Zapisywanie informacji o konwersji 00:00:00
Aktualizacja podmiotu została zakończona dnia: 2018-06-22 11:11:15

========================================================================

oraz do kompletu zamieszczam też skrypt, na jaki wskazuje ww. błąd:

if not exists (select * from dbo.sysobjects where id = object_id(N'dbo.sp_dropextendedproc') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
BEGIN
EXEC sp_executesql N'create procedure dbo.sp_dropextendedproc

@functname nvarchar(517) -- name of function

as

-- If we''re in a transaction, disallow the dropping of the

-- extended stored procedure.

set implicit_transactions off

if @@trancount > 0

begin

raiserror(15002,-1,-1,''sys.sp_dropextendedproc'')

return (1)

end

-- Drop the extended procedure mapping.

dbcc dropextendedproc( @functname )

return (0) -- sp_dropextendedproc

' END
GO

if not exists (select * from dbo.sysobjects where id = object_id(N'dbo.sp_addextendedproc') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
BEGIN
EXEC sp_executesql N'create procedure sp_addextendedproc --- 1996/08/30 20:13

@functname nvarchar(517),/* (owner.)name of function to call */

@dllname varchar(255)/* name of DLL containing function */

as

set implicit_transactions off

if @@trancount > 0

begin

raiserror(15002,-1,-1,''sp_addextendedproc'')

return (1)

end

dbcc addextendedproc( @functname, @dllname)

return (0) -- sp_addextendedproc

' END
GO

if not exists (select * from dbo.sysobjects where id = object_id(N'dbo.fnWartoscBoMaWWalucie') and xtype in (N'FN', N'IF', N'TF'))
BEGIN
EXEC sp_executesql N' -- exec sp_depends ''fnWartoscBoMaWWalucie''


CREATE FUNCTION .


(


@Konto as TKonto


, @idRoku as int


, @waluta as TWaluta


)


RETURNS money


--WITH SCHEMABINDING, ENCRYPTION --sp_setapprole

 


AS





BEGIN


DECLARE @dko_KwotaMa money





DECLARE @rozrach bit


SET @rozrach = (SELECT TOP 1 ko_Rozrachunkowe FROM dbo.pk_PlanKont WHERE ko_Nr like @Konto AND ko_IdRokuObrotowego=@idRoku)





IF @rozrach=1





select


@dko_KwotaMa = SUM( CASE WHEN nzd_Pomniejsza=1 THEN -dbo.fnFinanse_WartoscRozNaDzienBilansowy(nzf_Id,dko_IdRoku) ELSE dbo.fnFinanse_WartoscRozNaDzienBilansowy(nzf_Id,dko_IdRoku) END )


from dbo.dkr_Pozycja LEFT JOIN dbo.nz_RozDekret ON nzd_IdDekretu = dko_Id


   LEFT JOIN dbo.nz__Finanse ON nzd_IdRozrachunku = nzf_Id 


where


   dko_Konto like @Konto


   AND dko_IdRoku = @idRoku AND dko_Status = 5


   AND nzf_IdWaluty = @waluta


   AND dko_KwotaMa <> 0





ELSE





select


@dko_KwotaMa = sum(isnull(dko_KwotaMaWaluta,0))


from dbo.dkr_Pozycja


where


   dko_Konto like @Konto


   AND dko_IdRoku = @idRoku AND dko_Status = 5


   AND dko_Waluta = @waluta





return @dko_KwotaMa


END


' END
GO

if not exists (select * from dbo.sysobjects where id = object_id(N'dbo.fnWartoscBoWnWWalucie') and xtype in (N'FN', N'IF', N'TF'))
BEGIN
EXEC sp_executesql N' CREATE FUNCTION .


(


@Konto as TKonto


, @idRoku as int


, @waluta as TWaluta


)


RETURNS money


--WITH SCHEMABINDING, ENCRYPTION --sp_setapprole

 


AS





BEGIN


Declare @dko_KwotaWn money





DECLARE @rozrach bit


SET @rozrach = (SELECT TOP 1 ko_Rozrachunkowe FROM dbo.pk_PlanKont WHERE ko_Nr like @Konto AND ko_IdRokuObrotowego=@idRoku)





IF @rozrach=1





select


@dko_KwotaWn = SUM( CASE WHEN nzd_Pomniejsza=1 THEN -dbo.fnFinanse_WartoscRozNaDzienBilansowy(nzf_Id,dko_IdRoku) ELSE dbo.fnFinanse_WartoscRozNaDzienBilansowy(nzf_Id,dko_IdRoku) END )


from dbo.dkr_Pozycja LEFT JOIN dbo.nz_RozDekret ON nzd_IdDekretu = dko_Id


   LEFT JOIN dbo.nz__Finanse ON nzd_IdRozrachunku = nzf_Id 


where


   dko_Konto like @Konto


   AND dko_IdRoku = @idRoku AND dko_Status = 5


   AND nzf_IdWaluty = @waluta


   AND dko_KwotaWn <> 0





ELSE





select


@dko_KwotaWn = sum(isnull(dko_KwotaWnWaluta,0))


from dbo.dkr_Pozycja


where


   dko_Konto like @Konto


   AND dko_IdRoku = @idRoku AND dko_Status = 5


   AND dko_Waluta = @waluta





return @dko_KwotaWn


END


' END
GO

if not exists (select * from dbo.sysobjects where id = object_id(N'dbo.vwFinanseRozKontrahenciDokRewBazowy') and OBJECTPROPERTY(id, N'IsView') = 1)
BEGIN
EXEC sp_executesql N' CREATE VIEW .


--WITH SCHEMABINDING, ENCRYPTION --sp_setapprole




AS


SELECT


Roz.nzf_Id,


Roz.nzf_TerminPlatnosci,


Roz.nzf_Typ,


Roz.nzf_Status,


Roz.nzf_NumerPelny,


Roz.nzf_IdObiektu,


Roz.nzf_TypObiektu,


Roz.nzf_IdAdresu,


Roz.nzf_WartoscPierwotna,


Roz.nzf_Data,


Roz.spoznienie,


Roz.nzf_Nota,


Roz.nzf_Program,


Roz.nzf_Zrodlo,


Roz.nzf_Powiazanie,


Roz.nzf_IdWystawil,


Roz.nzf_IdKategorii,


Roz.naleznosc,


Roz.zobowiazanie,


Roz.nalWaluta,


    Roz.zobWaluta,


Roz.nalPierwotna,


    Roz.zobPierwotna,


Roz.nalPierwotnaWaluta,


    Roz.zobPierwotnaWaluta,


Roz.nzf_IdWaluty,


Roz.nzf_TypOdsetek,


Roz.nzf_StopaOdsetek,


Roz.nzf_IdDokumentAuto,


Roz.dok_PlatnikAdresHId,


Roz.nzf_Podtyp,


Roz.nzf_Korekta,


Roz.nzf_WartoscWaluta,


Roz.nzf_Wystawil,


Roz.nzf_DataOstatniejSplaty,


Roz.Identyfikator,


Roz.nzf_Flaga,


Roz.nzf_FlagaZmianaPersonelId,


Roz.nzf_FlagaZmianaCzas,


ANALITYKA_D,


ANALITYKA_O,


ANALITYKA,


ANALITYKA_WSPOLNA


FROM dbo.vwFinanseRozKontrahenciDokRewBazowyWszystkie Roz


WHERE nzf_Typ IN (39,40)











' END
GO

if not exists (select * from dbo.sysobjects where id = object_id(N'dbo.vwFinanseRozKontrahenciDokRew') and OBJECTPROPERTY(id, N'IsView') = 1)
BEGIN
EXEC sp_executesql N' CREATE VIEW .


--WITH SCHEMABINDING, ENCRYPTION --sp_setapprole




AS


SELECT


Roz.nzf_Id,


Roz.nzf_TerminPlatnosci,


Roz.nzf_Typ,


Roz.nzf_Status,


Roz.nzf_NumerPelny,


Roz.nzf_IdObiektu,


Roz.nzf_TypObiektu,


Roz.nzf_IdAdresu,


Roz.nzf_WartoscPierwotna,


Roz.nzf_Data,


Roz.spoznienie,


Roz.nzf_Nota,


Roz.nzf_Program,


Roz.nzf_Zrodlo,


Roz.nzf_Powiazanie,


Roz.nzf_IdWystawil,


Roz.nzf_IdKategorii,


Roz.naleznosc,


Roz.zobowiazanie,


Roz.nalWaluta,


    Roz.zobWaluta,


Roz.nalPierwotna,


    Roz.zobPierwotna,


Roz.nalPierwotnaWaluta,


    Roz.zobPierwotnaWaluta,


Roz.nzf_IdWaluty,


Roz.nzf_TypOdsetek,


Roz.nzf_StopaOdsetek,


Roz.nzf_IdDokumentAuto,


Roz.dok_PlatnikAdresHId,


Roz.nzf_Podtyp,


Roz.nzf_Korekta,


Roz.nzf_WartoscWaluta,


Roz.nzf_Wystawil,


Roz.nzf_DataOstatniejSplaty,


Roz.Identyfikator,


Roz.nzf_Flaga,


Roz.nzf_FlagaZmianaPersonelId,


Roz.nzf_FlagaZmianaCzas,


ANALITYKA_D,


ANALITYKA_O,


ANALITYKA,


ANALITYKA_WSPOLNA


FROM dbo.vwFinanseRozKontrahenciDokRewBazowy Roz


WHERE nzf_Typ IN (39,40) AND nzf_WartoscWaluta > 0








' END
GO

if not exists (select * from dbo.sysobjects where id = object_id(N'dbo.vwFinanseRozrachunkiWgKontrahentowKhRew') and OBJECTPROPERTY(id, N'IsView') = 1)
BEGIN
EXEC sp_executesql N' CREATE VIEW .


--WITH SCHEMABINDING, ENCRYPTION --sp_setapprole




AS


SELECT


Roz.nzf_Id,


Roz.nzf_TerminPlatnosci,


Roz.nzf_Typ,


Roz.nzf_Status,


Roz.nzf_NumerPelny,


Roz.nzf_IdObiektu,


Roz.nzf_TypObiektu,


Roz.nzf_IdAdresu,


Roz.nzf_WartoscPierwotna,


Roz.nzf_Data,


Roz.spoznienie,


Roz.nzf_Nota,


Roz.nzf_Program,


Roz.nzf_Zrodlo,


Roz.nzf_Powiazanie,


Roz.nzf_IdWystawil,


Roz.nzf_IdKategorii,


Roz.naleznosc,


Roz.zobowiazanie,


Roz.nalWaluta,


    Roz.zobWaluta,


Roz.nalPierwotna,


    Roz.zobPierwotna,


Roz.nalPierwotnaWaluta,


    Roz.zobPierwotnaWaluta,


    Roz.spNal,


    Roz.spZob,


Roz.nzf_IdWaluty,


Roz.nzf_TypOdsetek,


Roz.nzf_StopaOdsetek,


Roz.nzf_IdDokumentAuto,


Roz.dok_PlatnikAdresHId,


Roz.nzf_Podtyp,


Roz.nzf_Korekta,


Roz.nzf_WartoscWaluta,


Roz.nzf_Wystawil,


Roz.nzf_DataOstatniejSplaty,


Roz.Identyfikator,


Roz.nzf_Flaga,


Roz.nzf_FlagaZmianaPersonelId,


Roz.nzf_FlagaZmianaCzas,


ANALITYKA_D,


ANALITYKA_O,


ANALITYKA,


ANALITYKA_WSPOLNA,


Roz.dok_Typ,


Roz.Rozliczenie,


Roz.dok_MagId,


ss_data_zamkniecia,


ss_data_blokady_rach,


Roz.nzf_TermPlatStatus,


Roz.nzf_TermPlatTransId


FROM dbo.vwFinanseRozKontrahenciDokRewBazowyWszystkie Roz LEFT JOIN vw_SesjaBlokada ON ss_typ_obiektu = dbo.fnGtoTypeFromFinType(Roz.nzf_Typ)


WHERE nzf_Typ IN (39, 40, 41, 42, 45, 46) OR


( nzf_Typ IN (17, 18, 19, 20) AND nzf_Zaliczka = 1 )


' END
GO

if not exists (select * from dbo.sysobjects where id = object_id(N'dbo.tr_PrInneDochody_Adding') and OBJECTPROPERTY(id, N'IsTrigger') = 1)
BEGIN
EXEC sp_executesql N' create trigger [tr_PrInneDochody_Adding] ON [pr_InneDochody]

instead of insert as

begin

insert into pr_InneDochody

select

pid_Id, pid_IdPracownika, pid_DataWpisu, pid_Opis, pid_Rok, pid_Kwota, pid_Typ,

ISNULL(pid_Miesiac, MONTH(pid_DataWpisu))

from inserted

end

' END
GO

if not exists (select * from dbo.sysobjects where id = object_id(N'dbo.Feniksfnx_TowarSynchInsert') and OBJECTPROPERTY(id, N'IsTrigger') = 1)
BEGIN
EXEC sp_executesql N' CREATE TRIGGER .[Feniksfnx_TowarSynchInsert] ON .[fnx_TowarSynch] INSTEAD OF UPDATE

AS

BEGIN

UPDATE fnx_TowarSynch SET

mt_SubiektId = ins.mt_SubiektId,

mt_MultiStoreId = ins.mt_MultiStoreId,

mt_LastSynchDate = ins.mt_LastSynchDate,

mt_LastChangeDate = ins.mt_LastChangeDate,

mt_StateId = ins.mt_StateId,

mt_DimensionsChanged = ins.mt_DimensionsChanged,

mt_HistoryMultistoreId = CASE WHEN ins.mt_MultistoreId IS NOT NULL THEN ins.mt_MultistoreId ELSE ts.mt_HistoryMultistoreId END

FROM fnx_TowarSynch ts, INSERTed ins

WHERE ts.mt_Id = ins.mt_Id

END




' END
GO


Offline dkozlowski

  • Ekspert
  • *****
  • Wiadomości: 17067
  • Reputacja +798/-27
  • Wersja programu: GT/Navireo/nexo
Ewidentnie coś niedobrego z tą bazę się działo/dzieje lub ktoś coś kombinował... Tych procedur nie powinno być w schemacie dbo, powinny być w sys, z tego powodu mechanizm konwersji je skryptuje i próbuje otworzyć po konwersji ("Odtwarzanie obiektów użytkownika ...")... Spróbuj po prostu usunąć te procedury (tylko w schemacie dbo).
Daniel, Białystok.

Offline marianpro

  • Nowy użytkownik
  • *
  • Wiadomości: 19
  • Reputacja +0/-0
  • Wersja programu: Subiekt GT
Daniel, dzięki za trafną sugestię. :)

Wykasowałem te dwie procedury, tj. sp_addextendedproc i sp_dropextendedproc z sekcji dbo i faktycznie konwersja poszła bez błędów.
Jednak zastanawiam się co się kryje za tymi procedurami.
Sprawdziłem powiązania ale nic w okienku się nie wyświetla. Błędów i ostrzeżeń też  SSMS nie pokazuje.

Czy mógłby jednak ktoś bardziej obeznany rzucić okiem na skrypty tych procedur? Zamieszczam:

USE [PODMIOT]
GO
/****** Object:  StoredProcedure [dbo].[sp_addextendedproc]    Script Date: 2018-06-28 11:56:45 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER OFF
GO
ALTER procedure [dbo].[sp_addextendedproc] --- 1996/08/30 20:13
@functname nvarchar(517),/* (owner.)name of function to call */
@dllname varchar(255)/* name of DLL containing function */
as
set implicit_transactions off
if @@trancount > 0
begin
raiserror(15002,-1,-1,'sp_addextendedproc')
return (1)
end
dbcc addextendedproc( @functname, @dllname)
return (0) -- sp_addextendedproc


USE [PODMIOT]
GO
/****** Object:  StoredProcedure [dbo].[sp_dropextendedproc]    Script Date: 2018-06-28 11:59:20 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER OFF
GO
ALTER procedure [dbo].[sp_dropextendedproc]
@functname nvarchar(517) -- name of function
as
-- If we're in a transaction, disallow the dropping of the
-- extended stored procedure.
set implicit_transactions off
if @@trancount > 0
begin
raiserror(15002,-1,-1,'sys.sp_dropextendedproc')
return (1)
end
-- Drop the extended procedure mapping.
dbcc dropextendedproc( @functname )
return (0) -- sp_dropextendedproc


Dodam, że pierwsza instalacja Subiekta na tym podmiocie odbyła się w 2015 roku. Nie było więc jakichś konwersji z wersji DOS czy coś.
Nie było też jak pisałem na początku zlecanych modyfikacji programu.



Offline dkozlowski

  • Ekspert
  • *****
  • Wiadomości: 17067
  • Reputacja +798/-27
  • Wersja programu: GT/Navireo/nexo
Wykasowałem te dwie procedury, tj. sp_addextendedproc i sp_dropextendedproc z sekcji dbo i faktycznie konwersja poszła bez błędów.
Jednak zastanawiam się co się kryje za tymi procedurami.
Sprawdziłem powiązania ale nic w okienku się nie wyświetla. Błędów i ostrzeżeń też  SSMS nie pokazuje.

A są te procedury w schemacie sys ?

Czy mógłby jednak ktoś bardziej obeznany rzucić okiem na skrypty tych procedur? Zamieszczam:

Czyli niby kto na przykład ? Uważasz, że jest to temat do rozwiązywania przez forum ? Możesz sam porównać treść z oryginalnymi procedurami ze schematu sys, z tego co na szybko zaglądałem są takie same.

Dodam, że pierwsza instalacja Subiekta na tym podmiocie odbyła się w 2015 roku. Nie było więc jakichś konwersji z wersji DOS czy coś.
Nie było też jak pisałem na początku zlecanych modyfikacji programu.

I co mam Ci powiedzieć, zawsze to słyszę, a później w większości przypadków potwierdza się, że było inaczej, ktoś na przykład kilka lat temu pobrał jakieś demo jakiegoś rozwiązania i je uruchomił... Może to też efekt jakiejś próby włamania przez serwer SQL... Ja w każdym razie w cuda nie wierzę, że zrobiło się samo, a Ty ?
Daniel, Białystok.

Offline marianpro

  • Nowy użytkownik
  • *
  • Wiadomości: 19
  • Reputacja +0/-0
  • Wersja programu: Subiekt GT
Cytuj
A są te procedury w schemacie sys ?
Cytuj
Możesz sam porównać treść z oryginalnymi procedurami ze schematu sys, z tego co na szybko zaglądałem są takie same.

A, no widzisz, u mnie nie są takie same, a na innym podmiocie nie mam w ogóle tych procedur w schemacie dbo, tylko sys.
Tak u mnie wygląda z sys.sp_addextendedproc:

USE [PODMIOT]
GO
/****** Object:  StoredProcedure [sys].[sp_addextendedproc]    Script Date: 2018-06-28 15:11:17 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

---------------------------- sp_addextendedproc ------------------------------
ALTER procedure [sys].[sp_addextendedproc]
@functname nvarchar(517), -- (owner.)name of function to call
@dllname varchar(255) -- name of DLL containing function
as
-- If we're in a transaction, disallow the addition of the
--  extended stored procedure.
set implicit_transactions off
if @@trancount > 0
begin
raiserror(15002,-1,-1,'sys.sp_addextendedproc')
return (1)
end

-- Disallow 0-length string & NULL
if @dllname is null or datalength(@dllname) = 0
begin
raiserror(15311,-1,-1,@dllname)
return (1)
end

BEGIN TRANSACTION

declare @dllwname nvarchar(255)
set @dllwname = convert(nvarchar(255), @dllname)

-- Create the extended procedure mapping.
EXEC %%System().AddExtendedProc( Name = @functname, Value = @dllwname)
if @@error <> 0
begin
ROLLBACK
return 1
end

declare @objid int
select @objid = object_id(@functname)

-- EMDEventType(x_eet_Create_Extended_Procedure), EMDUniversalClass(x_eunc_Object), src major id, src minor id, src name
-- -1 means ignore target stuff, target major id, target minor id, target name,
-- # of parameters, 5 parameters
EXEC %%System().FireTrigger(ID = 221, ID = 1, ID = @objid, ID = 0, Value = @functname,
ID = -1, ID = 0, ID = 0, Value = NULL,
ID = 2, Value = @functname, Value = @dllname, Value = NULL, Value = NULL, Value = NULL, Value = NULL, Value = NULL)

COMMIT

return (0) -- sp_addextendedproc

a tak sys.sp_dropextendedproc:

USE [PODMIOT]
GO
/****** Object:  StoredProcedure [sys].[sp_dropextendedproc]    Script Date: 2018-06-28 15:39:43 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

---------------------------- sp_dropextendedproc ------------------------------
ALTER procedure [sys].[sp_dropextendedproc]
@functname nvarchar(517) -- name of function
as
-- If we're in a transaction, disallow the dropping of the
--  extended stored procedure.
set implicit_transactions off
if @@trancount > 0
begin
raiserror(15002,-1,-1,'sys.sp_dropextendedproc')
return (1)
end

BEGIN TRANSACTION

-- Drop the extended procedure mapping.
EXEC %%System().DropExtendedProc(Name = @functname)

COMMIT

return (0) -- sp_dropextendedproc

Cytuj
Czyli niby kto na przykład ? Uważasz, że jest to temat do rozwiązywania przez forum ?

Trudno mi rozpoczynając ten wątek ocenić czy to jest do rozwiązania przez forum czy nie. Czasami ktoś się z czymś spotkał i podzieli się rozwiązaniem, które da się zastosować w prosty sposób, czasami jest to kolejne ciężkie studium przypadku i szukanie po omacku. Do tego dochodzą różnice między poziomem fachowości forumowiczów i jestem tego świadom, że lamer ze mnie. Ale inaczej bym nie zakładał wątku. ;)
Nie adresuję też tego pytania do jednej osoby, i to właśnie uważam za największą zaletę społeczności forum.
Niczego nie oczekuję i nie wymagam.

Cytuj
I co mam Ci powiedzieć, zawsze to słyszę, a później w większości przypadków potwierdza się, że było inaczej, ktoś na przykład kilka lat temu pobrał jakieś demo jakiegoś rozwiązania i je uruchomił... Może to też efekt jakiejś próby włamania przez serwer SQL... Ja w każdym razie w cuda nie wierzę, że zrobiło się samo, a Ty ?

Zrobiło się "samo", w sensie bez świadomego udziału usera, co nie oznacza, że nie było czynnika inicjującego. Na początku roku serwer oberwał jakimś wirusem szyfrującym, ale baza została ściągnięta z backupu e-archiwizacji po posprzątaniu systemu. Być może oberwało archiwum, ale AV nic nie znalazł w niej.
Być może coś poszło nie tak przy którejś aktualizacji.
Nie wiem czym różni się obecna aktualizacja od poprzednich, że do 1.51 SP1 szło a dalej już nie. Może doszła jakaś weryfikacja.
Być może jest też inny powód którego nie jestem świadom po prostu.



Offline dkozlowski

  • Ekspert
  • *****
  • Wiadomości: 17067
  • Reputacja +798/-27
  • Wersja programu: GT/Navireo/nexo
Cytuj
A są te procedury w schemacie sys ?
Cytuj
Możesz sam porównać treść z oryginalnymi procedurami ze schematu sys, z tego co na szybko zaglądałem są takie same.

A, no widzisz, u mnie nie są takie same, a na innym podmiocie nie mam w ogóle tych procedur w schemacie dbo, tylko sys.
Tak u mnie wygląda z sys.sp_addextendedproc:

Przecież serwer SQL nie występuje w jednej, jedynej wersji - sprawdź na wersji 2005.

Cytuj
Czyli niby kto na przykład ? Uważasz, że jest to temat do rozwiązywania przez forum ?

Trudno mi rozpoczynając ten wątek ocenić czy to jest do rozwiązania przez forum czy nie. Czasami ktoś się z czymś spotkał i podzieli się rozwiązaniem, które da się zastosować w prosty sposób, czasami jest to kolejne ciężkie studium przypadku i szukanie po omacku. Do tego dochodzą różnice między poziomem fachowości forumowiczów i jestem tego świadom, że lamer ze mnie. Ale inaczej bym nie zakładał wątku. ;)

Nie miałem na myśli zakładania wątku tylko dalsze dociekania przyczyn problemu.

Nie adresuję też tego pytania do jednej osoby, i to właśnie uważam za największą zaletę społeczności forum.
Niczego nie oczekuję i nie wymagam.

Większość for internetowych straciło już swój pierwotny sens istnienia - co to niby za forum, gdzie praktycznie wszyscy tylko szukają pomocy i nie pomagają innym, a pomaga tylko kilka osób, które oczywiście nie są użytkownikami programów, bo gdyby byli to nie byliby w stanie pomagać innym...

Cytuj
I co mam Ci powiedzieć, zawsze to słyszę, a później w większości przypadków potwierdza się, że było inaczej, ktoś na przykład kilka lat temu pobrał jakieś demo jakiegoś rozwiązania i je uruchomił... Może to też efekt jakiejś próby włamania przez serwer SQL... Ja w każdym razie w cuda nie wierzę, że zrobiło się samo, a Ty ?

Zrobiło się "samo", w sensie bez świadomego udziału usera, co nie oznacza, że nie było czynnika inicjującego. Na początku roku serwer oberwał jakimś wirusem szyfrującym, ale baza została ściągnięta z backupu e-archiwizacji po posprzątaniu systemu. Być może oberwało archiwum, ale AV nic nie znalazł w niej.

No właśnie, dopiero teraz jak "przycisnąłem" to zaczynają się pojawiać istotne informacje... W jakiej wersji był serwer SQL przed reinstalacją ? W jakiej jest teraz ?

Być może coś poszło nie tak przy którejś aktualizacji.

Nie.

Nie wiem czym różni się obecna aktualizacja od poprzednich, że do 1.51 SP1 szło a dalej już nie. Może doszła jakaś weryfikacja.

Między 1.51 a 1.51 SP1 były HF1 i HF1, które przecież NIE wykonywały konwersji bazy danych, więc wysypało się na pierwszej konwersji do 1.51 SP1...

Mam rozumieć, że sprawdziłeś archiwum sprzed wersji 1.51 i tam już były te procedury skoro podejrzewasz, że zmieniła się procedura konwersji bazy danych ?

Być może jest też inny powód którego nie jestem świadom po prostu.

No ktoś kto opiera się tylko na informacjach od Ciebie tym bardziej tego nie wie... Jak sugerowałem powinieneś szukać wśród osób, które maja dostęp do bazy danych.
Daniel, Białystok.

Offline marianpro

  • Nowy użytkownik
  • *
  • Wiadomości: 19
  • Reputacja +0/-0
  • Wersja programu: Subiekt GT
Daniel, dziękuję Ci i rozumiem.

Będę gmerać dalej w temacie we własnym zakresie.

Offline dkozlowski

  • Ekspert
  • *****
  • Wiadomości: 17067
  • Reputacja +798/-27
  • Wersja programu: GT/Navireo/nexo
No byłoby jednak miło, abyś odpowiedział na zadane pytania, ja nie ma nic przeciwko uczeniu się i zdobywaniu doświadczenia...
Daniel, Białystok.

Offline marianpro

  • Nowy użytkownik
  • *
  • Wiadomości: 19
  • Reputacja +0/-0
  • Wersja programu: Subiekt GT
Daniel, grzecznie zwróciłeś mi uwagę, że szukam porady a nic od siebie nie daję, więc już nie wiem co mam zrobić by było dobrze... Tym bardziej, że nie ma innych dyskutujących ani pytających ani odpowiadających.

Cytuj
Przecież serwer SQL nie występuje w jednej, jedynej wersji - sprawdź na wersji 2005.

Z tego co wiem, konwersja jest w jedną stronę, więc w jakim celu mam sprawdzać 2008 jeżeli nie dysponuję taką wersją bazy?

Cytuj
Nie miałem na myśli zakładania wątku tylko dalsze dociekania przyczyn problemu.

Rozumiem, ale to dla mnie analogiczne. Ja nie śmigam w bazach, więc nie wiem gdzie jest jeszcze entry level a gdzie już nie. Mnie znalezienie sposobu na usunięcie procedury zajęło dłuższą chwilę, a przecież to dwa kliknięcia. Kilka dni temu nie wiedziałem nawet co to tajemnicze SSMS. Myślałem, że MMS albo SMS. ;)

Cytuj
Większość for internetowych straciło już swój pierwotny sens istnienia - co to niby za forum, gdzie praktycznie wszyscy tylko szukają pomocy i nie pomagają innym, a pomaga tylko kilka osób, które oczywiście nie są użytkownikami programów, bo gdyby byli to nie byliby w stanie pomagać innym...

Jak napisałem: nie oczekuję i nie wymagam, tym bardziej by ktoś mnie wyręczył a ja będę błyszczeć. Też wkładam w to swoją pracę. Poza tym każdy też tu w jakiś sposób się uczy, nawet ekspert, jeżeli to jego chleb codzienny.
Liczyłem się z tym, że dostanę np. odpowiedź, że ktoś też ma z tym problem i jest on wynikiem instalacji np. takiej a takiej poprawki Windowsa, tudzież że jest to jakaś typowa procedura, która jest wykorzystywana do czegoś tam i dokleja się wtedy a wtedy.

Cytuj
No właśnie, dopiero teraz jak "przycisnąłem" to zaczynają się pojawiać istotne informacje... W jakiej wersji był serwer SQL przed reinstalacją ? W jakiej jest teraz ?

Data wprowadzenia procedury to zeszły rok wg SSMS, a temat wirusa to rok obecny. Ogarniam to miesiąca po jakimś informatyku, bazując na tym co mi szef powiedział.
Nie sprawdzę więc czy była tam wersja 2008. Natomiast na innym podmiocie (na tym samym serwerze i wersji SQL rzecz jasna), sprawdzałem i nie ma tych śmieci.

Cytuj
Mam rozumieć, że sprawdziłeś archiwum sprzed wersji 1.51 i tam już były te procedury skoro podejrzewasz, że zmieniła się procedura konwersji bazy danych?

Nie sprawdzałem przed 1.51 bo nie dysponuję. Szef jeszcze poszuka na jakimś penie, jak znajdzie to sprawdzę.

Cytuj
No ktoś kto opiera się tylko na informacjach od Ciebie tym bardziej tego nie wie... Jak sugerowałem powinieneś szukać wśród osób, które maja dostęp do bazy danych.

Mi nie chodzi o znalezienie przyczyny i winnego, tylko ocenę tego co taka procedura robiła i jaki wpływ będzie mieć jej usunięcie. To uznałem za realne, ale mogę się mylić.

Offline dkozlowski

  • Ekspert
  • *****
  • Wiadomości: 17067
  • Reputacja +798/-27
  • Wersja programu: GT/Navireo/nexo
Daniel, grzecznie zwróciłeś mi uwagę, że szukam porady a nic od siebie nie daję, więc już nie wiem co mam zrobić by było dobrze... Tym bardziej, że nie ma innych dyskutujących ani pytających ani odpowiadających.

Nie, nie, nie... Nie to było moim celem, odniosłem się jedynie do "idei forum", którego w praktyce nie ma... Poza tym od nikogo nie oczekuję, że najpierw będzie pomagał zanim sam zacznie szukać pomocy, więc masz jeszcze czas... ;)

Cytuj
Przecież serwer SQL nie występuje w jednej, jedynej wersji - sprawdź na wersji 2005.

Z tego co wiem, konwersja jest w jedną stronę, więc w jakim celu mam sprawdzać 2008 jeżeli nie dysponuję taką wersją bazy?

Na właśnie dlatego - kiedyś bazy mogła pracować pod SQL'em w wersji 2005... Nie prawdą jest też, że nie dysponujesz bazą w starszej wersji - w dowolnej chwili możesz zainstalować serwer SQL i utworzyć nową bazę danych, w której znalazłbyś procedury systemowe o takiej samej treści jak te "nadmiarowe".

Cytuj
Większość for internetowych straciło już swój pierwotny sens istnienia - co to niby za forum, gdzie praktycznie wszyscy tylko szukają pomocy i nie pomagają innym, a pomaga tylko kilka osób, które oczywiście nie są użytkownikami programów, bo gdyby byli to nie byliby w stanie pomagać innym...

Jak napisałem: nie oczekuję i nie wymagam, tym bardziej by ktoś mnie wyręczył a ja będę błyszczeć. Też wkładam w to swoją pracę. Poza tym każdy też tu w jakiś sposób się uczy, nawet ekspert, jeżeli to jego chleb codzienny.

To prawda, to jeden z głównych powodów, dla których poświęcamy czas na forum.

Liczyłem się z tym, że dostanę np. odpowiedź, że ktoś też ma z tym problem i jest on wynikiem instalacji np. takiej a takiej poprawki Windowsa, tudzież że jest to jakaś typowa procedura, która jest wykorzystywana do czegoś tam i dokleja się wtedy a wtedy.

No nie, ten problem okazał się bardzo nietypowy, w internecie nic nie znalazłem, może powstaje częściej, ale w praktycznie wszystkich innych bazach się nie ujawni - w bazie Insertu ujawni się ze względu na specyficzne założenia konwersji podmiotów.

Cytuj
No właśnie, dopiero teraz jak "przycisnąłem" to zaczynają się pojawiać istotne informacje... W jakiej wersji był serwer SQL przed reinstalacją ? W jakiej jest teraz ?

Data wprowadzenia procedury to zeszły rok wg SSMS, a temat wirusa to rok obecny. Ogarniam to miesiąca po jakimś informatyku, bazując na tym co mi szef powiedział.

Tu popełniasz błąd - jeśli nie czujesz się w czymś pewnie to warto skorzystać z fachowej pomocy... Poza tym jeśli ktoś wcześniej "próbował" zajmować się bazą danych to wszystko jest możliwe.

Nie sprawdzę więc czy była tam wersja 2008.

Pisałem o wersji 2005.... W sumie w wersji 2008 nie sprawdzałem, gdyż była to bardzo rzadko wykorzystywana wersja i nie mam takiej instancji do testów.

Natomiast na innym podmiocie (na tym samym serwerze i wersji SQL rzecz jasna), sprawdzałem i nie ma tych śmieci.

Różne bazy danych mają prawo się różnić.

Cytuj
Mam rozumieć, że sprawdziłeś archiwum sprzed wersji 1.51 i tam już były te procedury skoro podejrzewasz, że zmieniła się procedura konwersji bazy danych?

Nie sprawdzałem przed 1.51 bo nie dysponuję. Szef jeszcze poszuka na jakimś penie, jak znajdzie to sprawdzę.

Czyli podejrzenie, że coś zmieniło się w mechanizmie konwersji nie ma podstaw - podejrzewam, że obiekty te pojawiły się w wersji 1.51 i baza danych nie była z nimi konwertowana.

Cytuj
No ktoś kto opiera się tylko na informacjach od Ciebie tym bardziej tego nie wie... Jak sugerowałem powinieneś szukać wśród osób, które maja dostęp do bazy danych.

Mi nie chodzi o znalezienie przyczyny i winnego, tylko ocenę tego co taka procedura robiła i jaki wpływ będzie mieć jej usunięcie. To uznałem za realne, ale mogę się mylić.

Myślałem, że to jest oczywiste... Procedury robią dokładnie to co odpowiedniki systemowe, są udokumentowane: https://docs.microsoft.com/pl-pl/previous-versions/sql/sql-server-2012/ms188379(v=sql.110), https://docs.microsoft.com/en-us/previous-versions/sql/sql-server-2012/ms189506(v=sql.110), treść jest taka sama jak w procedurach z SQL'a 2005... Wyraźnie też napisałem wcześniej, że nie powinno ich w ogóle być w bazie danych i bezkarnie można je usunąć.
Daniel, Białystok.

Forum Użytkownikow Subiekt GT