Это работает на моей установке SQL Server 2008 R2. Я вообще не вижу ничего, кроме пользовательских баз данных
SELECT
*
FROM
sys.objects
WHERE
OBJECTPROPERTY(object_id, 'IsMSShipped') = 0
Вы можете изменить sys.objects , чтобы сказать, sys.tables и он все еще работает, или используйте " тип "для фильтрации. Или используйте OBJECTPROPERTY (object_id, «IsProcedure») и т. Д.
Примечание: это sys.objects в SQL Server 2005 +
Примечание 2: OBJECTPROPERTY будет работать для SQL Server 2000 тоже:
SELECT
*
FROM
sysobjects
WHERE
OBJECTPROPERTY(id, 'IsMSShipped') = 0
Используйте это:
public abstract class AbstractDAProcedureMenuReceivedHandler<T extends AbstractDAProcedureMenuReceivedEvent> extends DaCommonEventHandler<T> {
private static final Logger logger = LoggerFactory.getLogger ( AbstractDAProcedureMenuReceivedHandler.class);
Почему бы вам просто не «жестко закодировать» это имя класса? Это общепринятый подход, когда дело доходит до регистраторов
public abstract class AbstractDAProcedureMenuReceivedHandler<T extends AbstractDAProcedureMenuReceivedEvent> extends DaCommonEventHandler<T> {
private static final Logger logger = LoggerFactory.getLogger(AbstractDAProcedureMenuReceivedHandler.class);
...
}
, любое другое решение - быть честным излишним для этого
private static final Logger LOGGER = LoggerFactory.getLogger(AbstractDAProcedureMenuReceivedHandler.class);