Welcome to Sign in | Help
in Search

SQL Server 2000 dependencies

Last post 10-22-2007, 7:39 PM by AngieB. 5 replies.
Sort Posts: Previous Next
  •  10-21-2007, 11:48 AM 3003

    SQL Server 2000 dependencies

    Salut la toata lumea,

    In SQL Server 2000 exista dependinte? Nu am gasit prin documentatii; daca exista, obiectele Logins, Roles, Users (din oricare database) au actiunea dependencies? aceleasi obiecte+users messages (master database) au optiunea dependencies? Conform documenatiei de 2005 procedura sp_depends afiseaza informatii despre dependintele obiectelor din database, ca : table, view, stored procedure (pp ca si pt database master extended procedures), user-defined function, triggers. Pentru 2000 nu am gasit informatii.

    Multumesc anticipat celor care o sa ma ajute.Smile 

     

     

  •  10-21-2007, 1:25 PM 3006 in reply to 3003

    Re: SQL Server 2000 dependencies

    sp_depends e disponibila si in SQL Server 2000.
  •  10-21-2007, 2:32 PM 3009 in reply to 3006

    Re: SQL Server 2000 dependencies

    Si obiectele mentionate au dependinte?
  •  10-21-2007, 3:24 PM 3010 in reply to 3009

    Re: SQL Server 2000 dependencies

    Cateva observatii se impun (pentru SQL Server 2000):
    [ 1 ] sp_depends 'obj' afiseaza atat obiectele care depind de 'obj' cat si obiectele de care depinde 'obj'

    [ 2 ] sp_depends are anumite limite: sunt suportate doar referintele la obiectele din aceeasi baza de date conform "Books online" ("References to objects outside the current database are not reported")

    [ 3 ] sp_depends in SQL Server 2000 Standard Edition are un bug: nu afiseaza declansatoarele ("trigger"-ele) conform http://support.microsoft.com/kb/180490

    [ 4 ] daca se ruleaza scriptul urmator:
    <script>

    CREATE DATABASE TestDep
    GO

    USE TestDep
    GO

    CREATE TABLE Factura (
        IDFactura INT IDENTITY(1,1) PRIMARY KEY ,
        Serie VARCHAR(10) NOT NULL ,
        Nr INT NOT NULL,
        Data DATETIME NOT NULL
    )
    GO

    CREATE UNIQUE INDEX Idx_Factura_1 ON Factura (Serie,Nr)
    GO

    CREATE TABLE ProdusFacturat (
        IDProdusFacturat INT IDENTITY(1,1) PRIMARY KEY ,
        IDFactura INT NOT NULL,
        IDProdus INT NOT NULL,
        Cant FLOAT NOT NULL
    )
    GO

    ALTER TABLE ProdusFacturat
        ADD CONSTRAINT Restrictie_Produsfacturat_1
        FOREIGN KEY (IDFactura) REFERENCES Factura(IDFactura) ON DELETE CASCADE
    GO

    CREATE PROCEDURE sp_Factura
        @id INT
    AS
    SELECT *
    FROM Factura F
        INNER JOIN ProdusFacturat PF ON F.IDFactura = PF.IDFactura
    WHERE F.IDFactura = @id
    GO

    </script>

    atunci la executia procedurii stocate
    EXEC sp_depends 'Factura' --sql2000
    este afisata o singura inregistrare:
    dbo.sp_Factura    stored procedure !

    Acelasi comportament poate fi observat si in sql2005 (cel putin la versiunea Express).

    Problema in acest exemplu este ca sp_depends nu afiseaza pentru apelul
    EXEC sp_depends 'Factura' --sql2000
    si tabela "de legatura" ProdusFacturat (de care Factura este legata astfel: cheia externa
    ProdusFacturat.IDfactura -> cheia primara Factura.IDFactura).
    Plus ca in Enterprise Manager (sql2000) in lista dependetelor pentru 'Factura' vor fi afisate si tabela 'ProdusFacturat' cat si procedura stocata 'sp_Factura'  (asa cum ar fi corect).

    [ 5 ] se poate utiliza procedura  sp_MSdependencies pentru eliminarea acestui inconvenient:
    EXEC sp_MSdependencies N'dbo.ProdusFacturat', null, 1315327 --obiecte care depind de  ProdusFacturat
    EXEC sp_MSdependencies N'dbo.ProdusFacturat', null, 1053183 --obiecte de care depinde ProdusFacturat

    EXEC sp_MSdependencies N'dbo.Factura', null, 1315327 --obiecte care depind de  Factura
    EXEC sp_MSdependencies N'dbo.Factura', null, 1053183 --obiecte de care depinde Factura

    Referinte sp_MSdependencies: http://www.mssqltips.com/tip.asp?tip=1294

    [ 6 ] Poti studia codul sursa al procedurilor sp_depends , sp_MSdependencies si codul sursa generat de Enterprise Manager atunci cand afiseaza dependinţele: http://www.mssqltips.com/tipimages/1294_sqlcode.txt
    plus poti analiza informatiile referitoare la tabelele (ex. sysdepends & co) sistem din master & co  lecturând systbl.chm (download systbl.chm) .

    De asemenea, poti folosi SQL Profiler pentru a vizualiza comenzile SQL executate de SQL Server in momentul in care in Enterprise Manager selectezi pentru tabela 'ProdusFacturat' (de exemplu) optiunea All tasks > Display dependencies (in SQL profiler trebuie selectate clasele de evenimente "TSQL" si "Stored procedurs" .

    Posibile probleme cu sp_MSDependencies: http://support.microsoft.com/kb/308888

    [ 7 ] daca doresti ceva specific (ex. doar dependinţele (aici putem vorbi si despre dependenţe funcţionale ... :-)) dintre cheiele externe si cheile primare sau toti utilizatorii asignati unei baze de date sau ...)  atunci ar trebui sa detaliezi / reformulezi problema

    [ 8 ] pentru a obtine informatii detaliate despre dependintele obiectelor poti folosi 
    SQL Dependency Tracker (referinta http://www.red-gate.com/products/SQL_Dependency_Tracker/video.htm)
    care este mult mai flexibil decat procedurile stocate predefinite ale SQL Server si optiunile din Enterprise Manager.

    ... etc ... 

  •  10-21-2007, 5:51 PM 3011 in reply to 3009

    Re: SQL Server 2000 dependencies

    AngieB:
    Si obiectele mentionate au dependinte?

    Si acuma sa raspund "la obiect" : sp_depends se bazeaza in esenta pe datele din tabela sysdepends iar descrierea acestei tabele este: "

    Contains dependency information between objects (views, procedures, and triggers), and the objects (tables, views, and procedures) contained in their definition. This table is stored in each database." Raspunsul este nu in cazul in care te intereseaza dependintele pentru conturile de "login" , utilizatori si roluri.

    Analizand schema partiala a bazei de date master

    master 


     se poate observa ca nu exista o legatura directa intre tabelele sysmessages si sysusers .

     

     

  •  10-22-2007, 7:39 PM 3053 in reply to 3011

    Re: SQL Server 2000 dependencies

    Oh, great! Thanks!
View as RSS news feed in XML
Powered by Community Server (Commercial Edition), by Telligent Systems