[ teri_kalijer @ 09.01.2017. 21:54 ] @
Imate li ideju kako to izvesti - identifikovati sve procedure iz baze A, koje rade INSERT/UPDATE slogova po tabelama koje se nalaze u bazi B?

Jedino što mi pada na pamet je pretraga teksta procedura baze A, i lociranje INSERT/UPDATE komandi koje referenciraju bazu B. Dakle, u osnovi, neka varijanta ovoga:

Code:

SELECT * FROM A.sys.sql_modules WHERE CHARINDEX('UPDATE B.', definition) > 0 OR CHARINDEX('INSERT INTO B.', definition) > 0


Međutim, to mi je malo prizeman pristup. Ima li neko robusnije/pouzdanije rešenje?
[ jablan @ 10.01.2017. 14:37 ] @
Pitaj na stackoverflow
[ mmix @ 13.01.2017. 21:39 ] @
Ako je SQL 2008 ili jaci sve te informacije imas u sys.sql_expression_dependencies

[ teri_kalijer @ 15.02.2017. 23:02 ] @
Miljane, hvala za zakašnjenjem, tek danas sam primetio tvoj odgovor. U pitanju je SQL Server 2005, ali kad nađem vremena prebaciću bekape potrebnih baza na neku testnu SQL 2008 instalaciju, evidentirati sve procedure koje ažuriraju podatke u bazi iz koje ne potiču i videti šta sa njima. Najradije bih ih prosledio onome ko ih je pisao da ih sredi. Ne mogu da kažem da sam ljubitelj takvih procedura - traže da nalogu koji ih izvršava bude dodeljena eksplicitna insert/update dozvola nad svim tabelama koje ažuiriraju, a koje se ne nalaze u istoj bazi kao i one.
[ mmix @ 17.02.2017. 21:45 ] @
Po defaultu procedure su samo wrapperi za SQL, dakle vazi security usera koji je poziva. Medjutim, procedure mogu da eskaliraju security na razne nacine, jedan je sa EXECUTE AS