[ 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
Copyright (C) 2001-2024 by www.elitesecurity.org. All rights reserved.