OBJECTPROPERTYEX (Transact-SQL)
Retorna informações sobre objetos de escopo de esquema no banco de dados atual. Para obter uma lista desses objetos, consulte sys.objects (Transact-SQL). Não é possível usar a função OBJECTPROPERTYEX para objetos que não sejam do escopo de esquema, como gatilhos DDL (linguagem de definição de dados) e notificação de eventos.
Convenções de sintaxe Transact-SQL
Sintaxe
OBJECTPROPERTYEX ( id , property )
Argumentos
id
É uma expressão que representa a ID do objeto no banco de dados atual. id é int e é considerado como um objeto no esquema com escopo no banco de dados especificado ou no contexto do banco de dados atual.property
É uma expressão que contém as informações que serão retornadas para o objeto especificado pela identificação. O tipo de retorno é sql_variant. A tabela a seguir mostra o tipo de dados base para obter cada valor de propriedade.Observação A não ser por indicação contrária, NULL é retornado quando property não é um nome de propriedade válido, id não é uma ID de objeto válida, id é um tipo de objeto sem-suporte para property especificada ou o chamador não tem permissão para exibir os metadados do objeto.
Nome da propriedade
Tipo de objeto
Descrição e valores retornados
BaseType
Qualquer objeto de escopo de esquema
Identifica o tipo base do objeto. Quando o objeto especificado for SYNONYM, será retornado o tipo base do objeto subjacente.
Não nulo = Tipo de objeto
Tipo de dados base: char(2)
CnstIsClustKey
Restrição
Restrição PRIMARY KEY com um índice clusterizado.
1 = Verdadeiro
0 = Falso
Tipo de dados base: int
CnstIsColumn
Restrição
Restrição CHECK, DEFAULT ou FOREIGN KEY em uma única coluna.
1 = Verdadeiro
0 = Falso
Tipo de dados base: int
CnstIsDeleteCascade
Restrição
Restrição FOREIGN KEY com a opção ON DELETE CASCADE.
1 = True
0 = False
Tipo de dados base: int
CnstIsDisabled
Restrição
Restrição desabilitada.
1 = True
0 = False
Tipo de dados base: int
CnstIsNonclustKey
Restrição
Restrição PRIMARY KEY com um índice não clusterizado.
1 = Verdadeiro
0 = Falso
Tipo de dados base: int
CnstIsNotRepl
Restrição
A restrição é definida por meio das palavras-chave NOT FOR REPLICATION.
1 = Verdadeiro
0 = Falso
Tipo de dados base: int
CnstIsNotTrusted
Restrição
A restrição foi habilitada sem verificação das linhas existentes. Portanto, a restrição pode não ser válida para todas as linhas.
1 = Verdadeiro
0 = Falso
Tipo de dados base: int
CnstIsUpdateCascade
Restrição
Restrição FOREIGN KEY com a opção ON UPDATE CASCADE.
1 = True
0 = False
Tipo de dados base: int
ExecIsAfterTrigger
Gatilho
Gatilho AFTER.
1 = True
0 = False
Tipo de dados base: int
ExecIsAnsiNullsOn
Função Transact-SQL, procedimento Transact-SQL, gatilho Transact-SQL, exibição
A configuração de ANSI_NULLS durante a criação.
1 = True
0 = False
Tipo de dados base: int
ExecIsDeleteTrigger
Gatilho
Gatilho DELETE.
1 = True
0 = False
Tipo de dados base: int
ExecIsFirstDeleteTrigger
Gatilho
O primeiro gatilho acionado quando DELETE é executado na tabela.
1 = Verdadeiro
0 = Falso
Tipo de dados base: int
ExecIsFirstInsertTrigger
Gatilho
O primeiro gatilho acionado quando INSERT é executado na tabela.
1 = Verdadeiro
0 = Falso
Tipo de dados base: int
ExecIsFirstUpdateTrigger
Gatilho
O primeiro gatilho acionado quando UPADTE é executado na tabela.
1 = True
0 = False
Tipo de dados base: int
ExecIsInsertTrigger
Gatilho
Gatilho INSERT.
1 = True
0 = False
Tipo de dados base: int
ExecIsInsteadOfTrigger
Gatilho
Gatilho INSTEAD OF.
1 = True
0 = False
Tipo de dados base: int
ExecIsLastDeleteTrigger
Gatilho
Último gatilho acionado quando DELETE é executado na tabela.
1 = Verdadeiro
0 = Falso
Tipo de dados base: int
ExecIsLastInsertTrigger
Gatilho
Último gatilho acionado quando INSERT é executado na tabela.
1 = Verdadeiro
0 = Falso
Tipo de dados base: int
ExecIsLastUpdateTrigger
Gatilho
Último gatilho acionado quando UPDATE é executado na tabela.
1 = Verdadeiro
0 = Falso
Tipo de dados base: int
ExecIsQuotedIdentOn
Função Transact-SQL, procedimento Transact-SQL, gatilho Transact-SQL, exibição
Configuração de QUOTED_IDENTIFIER na criação.
1 = True
0 = False
Tipo de dados base: int
ExecIsStartup
Procedimento
Procedimento de inicialização.
1 = True
0 = False
Tipo de dados base: int
ExecIsTriggerDisabled
Gatilho
Gatilho desabilitado.
1 = True
0 = False
Tipo de dados base: int
ExecIsTriggerNotForRepl
Gatilho
Gatilho definido como NOT FOR REPLICATION.
1 = True
0 = False
Tipo de dados base: int
ExecIsUpdateTrigger
Gatilho
Gatilho UPDATE.
1 = True
0 = False
Tipo de dados base: int
HasAfterTrigger
Tabela, exibição
A tabela ou exibição tem um gatilho AFTER.
1 = Verdadeiro
0 = Falso
Tipo de dados base: int
HasDeleteTrigger
Tabela, exibição
A tabela ou exibição tem um gatilho DELETE.
1 = Verdadeiro
0 = Falso
Tipo de dados base: int
HasInsertTrigger
Tabela, exibição
A tabela ou exibição tem um gatilho INSERT.
1 = Verdadeiro
0 = Falso
Tipo de dados base: int
HasInsteadOfTrigger
Tabela, exibição
A tabela ou exibição tem um gatilho INSTEAD OF.
1 = Verdadeiro
0 = Falso
Tipo de dados base: int
HasUpdateTrigger
Tabela, exibição
A tabela ou exibição tem um gatilho UPDATE.
1 = Verdadeiro
0 = Falso
Tipo de dados base: int
IsAnsiNullsOn
Função Transact-SQL, procedimento Transact-SQL, tabela, gatilho Transact-SQL, exibição
Especifica a configuração da opção ANSI_NULLS para a tabela como ON, ou seja, todas as comparações com um valor nulo são avaliadas como UNKNOWN. Essa configuração se aplica a todas as expressões na definição da tabela, inclusive colunas computadas e restrições, enquanto a tabela existir.
1 = Verdadeiro
0 = Falso
Tipo de dados base: int
IsCheckCnst
Qualquer objeto no escopo do esquema
Restrição CHECK.
1 = Verdadeiro
0 = Falso
Tipo de dados base: int
IsConstraint
Qualquer objeto no escopo do esquema
Restrição.
1 = Verdadeiro
0 = Falso
Tipo de dados base: int
IsDefault
Qualquer objeto no escopo do esquema
Padrão associado.
1 = Verdadeiro
0 = Falso
Tipo de dados base: int
IsDefaultCnst
Qualquer objeto no escopo do esquema
Restrição DEFAULT.
1 = Verdadeiro
0 = Falso
Tipo de dados base: int
IsDeterministic
Funções escalares e com valor de tabela, exibição
A propriedade determinista da função ou exibição.
1 = Determinista
0 = Não determinista
Tipo de dados base: int
IsEncrypted
Função Transact-SQL, procedimento Transact-SQL, tabela, gatilho Transact-SQL, exibição
Indica que o texto original da instrução de módulo foi convertido para um formato ofuscado. A saída do ofuscamento não é diretamente visível em quaisquer exibições do catálogo no SQL Server 2005. Os usuários que não tiverem acesso a tabelas do sistema ou arquivos do banco de dados não poderão recuperar o texto ofuscado. Entretanto, o texto estará disponível para usuários privilegiados que puderem acessar as tabelas do sistema na porta DAC ou acessar diretamente os arquivos do banco de dados. Além disso, os usuários que podem anexar um depurador ao processo de servidor também podem recuperar o procedimento original da memória em tempo de execução.
1 = Criptografado
0 = Não criptografado
Tipo de dados base: int
IsExecuted
Qualquer objeto de escopo de esquema
Especifica que o objeto pode ser executado (exibição, procedimento, função ou gatilho).
1 = Verdadeiro
0 = Falso
Tipo de dados base: int
IsExtendedProc
Qualquer objeto no escopo do esquema
Procedimento estendido.
1 = Verdadeiro
0 = Falso
Tipo de dados base: int
IsForeignKey
Qualquer objeto no escopo do esquema
Restrição FOREIGN KEY.
1 = Verdadeiro
0 = Falso
Tipo de dados base: int
IsIndexed
Tabela, exibição
Uma tabela ou exibição com um índice.
1 = Verdadeiro
0 = Falso
Tipo de dados base: int
IsIndexable
Tabela, exibição
Uma tabela ou exibição na qual um índice pode ser criado.
1 = True
0 = Falso
Tipo de dados base: int
IsInlineFunction
Função
Função embutida.
1 = Função embutida
0 = Função não embutida
Tipo de dados base: int
IsMSShipped
Qualquer objeto de escopo de esquema
Um objeto criado durante a instalação do SQL Server.
1 = Verdadeiro
0 = Falso
Tipo de dados base: int
IsPrecise
Coluna computada, função, tipo definido pelo usuário, exibição
Indica se o objeto contém uma computação imprecisa, como operações de ponto flutuante.
1 = Precisa
0 = Imprecisa
Tipo de dados base: int
IsPrimaryKey
Qualquer objeto no escopo do esquema
Restrição PRIMARY KEY.
1 = Verdadeiro
0 = Falso
Tipo de dados base: int
IsProcedure
Qualquer objeto no escopo do esquema
Procedimento.
1 = Verdadeiro
0 = Falso
Tipo de dados base: int
IsQuotedIdentOn
Restrição CHECK, definição DEFAULT, função Transact-SQL, procedimento Transact-SQL, tabela, gatilho Transact-SQL, exibição.
Especifica que a configuração do identificador entre aspas do objeto é ON, ou seja, aspas duplas delimitam identificadores em todas as expressões envolvidas na definição do objeto.
1 = Verdadeiro
0 = Falso
Tipo de dados base: int
IsQueue
Qualquer objeto no escopo do esquema
Fila do Service Broker
1 = Verdadeiro
0 = Falso
Tipo de dados base: int
IsReplProc
Qualquer objeto no escopo do esquema
Procedimento de replicação.
1 = Verdadeiro
0 = Falso
Tipo de dados base: int
IsRule
Qualquer objeto no escopo do esquema
Regra associada.
1 = Verdadeiro
0 = Falso
Tipo de dados base: int
IsScalarFunction
Função
Função de valor escalar.
1 = Função de valor escalar
0 = Função com valor não escalar
Tipo de dados base: int
IsSchemaBound
Função, exibição
Uma função associada a esquema ou exibição criada com SCHEMABINDING.
1 = Associada a esquema
0 = Não associada a esquema
Tipo de dados base: int
IsSystemTable
Tabela
Tabela do sistema.
1 = True
0 = False
Tipo de dados base: int
IsSystemVerified
Coluna computada, função, tipo definido pelo usuário, exibição
As propriedades de precisão e determinismo do objeto podem ser verificadas pelo SQL Server.
1 = True
0 = False
Tipo de dados base: int
IsTable
Tabela
Tabela.
1 = True
0 = False
Tipo de dados base: int
IsTableFunction
Função
Função com valor de tabela.
1 = Função com valor de tabela
0 = Função sem valor de tabela
Tipo de dados base: int
IsTrigger
Qualquer objeto no escopo do esquema
Gatilho.
1 = Verdadeiro
0 = False
Tipo de dados base: int
IsUniqueCnst
Qualquer objeto no escopo do esquema
Restrição UNIQUE.
1 = True
0 = False
Tipo de dados base: int
IsUserTable
Tabela
Tabela definida pelo usuário.
1 = True
0 = False
Tipo de dados base: int
IsView
Exibição
Exibição.
1 = True
0 = False
Tipo de dados base: int
OwnerId
Qualquer objeto no escopo do esquema
Proprietário do objeto.
Observação O proprietário do esquema não é necessariamente o proprietário do objeto. Por exemplo, objetos filho (aqueles em que parent_object_id não é nulo) sempre retornarão a mesma ID do proprietário como o pai.
Não nulo = A ID de usuário do banco de dados do proprietário do objeto.
NULL = Tipo de objeto sem suporte ou ID de objeto inválida.
Tipo de dados base: int
SchemaId
Qualquer objeto de escopo de esquema
A ID do esquema associado ao objeto:
Não nulo = ID do esquema do objeto.
Tipo de dados base: int
SystemDataAccess
Função, exibição
O objeto acessa dados do sistema, catálogos ou tabelas virtuais do sistema na instância local do SQL Server.
0 = Nenhum
1 = Leitura
Tipo de dados base: int
TableDeleteTrigger
Tabela
A tabela tem um gatilho DELETE.
>1 = ID do primeiro gatilho com o tipo especificado.
Tipo de dados base: int
TableDeleteTriggerCount
Tabela
A tabela tem o número especificado de gatilhos DELETE.
Não nulo = Número de gatilhos DELETE
Tipo de dados base: int
TableFullTextMergeStatus
Tabela
Se uma tabela que tem um índice de texto completo está atualmente em mesclagem.
0 = A tabela não tem um índice de texto completo ou o índice de texto completo não está sendo mesclado.
1 = O índice de texto completo está em mesclagem.
TableFullTextBackgroundUpdateIndexOn
Tabela
A tabela tem um índice de atualização em segundo plano de texto completo (controle de alterações automático) habilitado.
1 = TRUE
0 = FALSE
Tipo de dados base: int
TableFulltextCatalogId
Tabela
ID do catálogo de texto completo no qual residem os dados do índice de texto completo para a tabela.
Diferente de zero = ID de catálogo de texto completo associado ao índice exclusivo que identifica as linhas em uma tabela indexada de texto completo.
0 = A tabela não tem um índice de texto completo.
Tipo de dados base: int
TableFullTextChangeTrackingOn
Tabela
O controle de alterações de texto completo da tabela está habilitado.
1 = TRUE
0 = FALSE
Tipo de dados base: int
TableFulltextDocsProcessed
Tabela
Número de linhas processadas desde o início da indexação de texto completo. Em uma tabela indexada para pesquisa de texto completo, todas as colunas de uma linha são consideradas parte de um documento a ser indexado.
0 = Nenhum rastreamento ativo ou indexação de texto completo está concluído.
> 0 = Uma das seguintes opções:
O número de documentos processados pelas operações de inserção ou atualização desde o início da população de controle de alteração completa, incremental ou manual.
O número de linhas processadas pelas operações de inserção ou atualização desde que o controle de alterações com população de índice de atualização em segundo plano foi habilitado, o esquema de índice de texto completo alterado, o catálogo de texto completo recriado ou a instância do SQL Server reiniciada, etc.
NULL = A tabela não tem um índice de texto completo.
Tipo de dados base: int
Observação Essa propriedade não monitora nem conta linhas excluídas.
TableFulltextFailCount
Tabela
O número de linhas que a pesquisa de texto completo não indexou.
0 = A população foi concluída.
>0 = Uma das seguintes opções:
O número de documentos que não foram indexados desde o início da população de controle de alteração Completa, Incremental ou Manual.
Para controle de alteração com índice de atualização em segundo plano, o número de linhas que não foram indexadas desde o início ou reinício da população. A causa disso pode ter sido uma alteração de esquema, a recriação do catálogo, a reinicialização do servidor, e assim por diante.
NULL = A tabela não tem um índice de texto completo.
Tipo de dados base: int
TableFulltextItemCount
Tabela
Não nulo = Número de linhas com indexação de texto completo bem-sucedida.
NULL = A tabela não tem um índice de texto completo.
Tipo de dados base: int
TableFulltextKeyColumn
Tabela
ID da coluna associada ao índice exclusivo de coluna única que faz parte da definição de um índice de texto completo e de um índice semântico.
0 = A tabela não tem um índice de texto completo.
Tipo de dados base: int
TableFulltextPendingChanges
Tabela
Número de entradas de controle de alterações pendentes a serem processadas.
0 = O controle de alterações não está habilitado.
NULL = A tabela não tem um índice de texto completo.
Tipo de dados base: int
TableFulltextPopulateStatus
Tabela
0 = Ocioso.
1 = População completa em andamento.
2 = População incremental em andamento.
3 = Propagação de alterações controladas em andamento.
4 = Índice de atualização em segundo plano em andamento, bem como controle de alteração automática.
5 = Indexação de texto completo acelerado ou pausado.
Tipo de dados base: int
TableFullTextSemanticExtraction
Tabela
A tabela está habilitada para indexação semântica.
1 = True
0 = False
Tipo de dados base: int
TableHasActiveFulltextIndex
Tabela
A tabela tem um índice de texto completo ativo.
1 = True
0 = False
Tipo de dados base: int
TableHasCheckCnst
Tabela
A tabela tem uma restrição CHECK.
1 = True
0 = False
Tipo de dados base: int
TableHasClustIndex
Tabela
A tabela tem um índice clusterizado.
1 = True
0 = False
Tipo de dados base: int
TableHasDefaultCnst
Tabela
A tabela tem uma restrição DEFAULT.
1 = True
0 = False
Tipo de dados base: int
TableHasDeleteTrigger
Tabela
A tabela tem um gatilho DELETE.
1 = True
0 = False
Tipo de dados base: int
TableHasForeignKey
Tabela
A tabela tem uma restrição FOREIGN KEY.
1 = Verdadeiro
0 = Falso
Tipo de dados base: int
TableHasForeignRef
Tabela
A tabela é referenciada por uma restrição FOREIGN KEY.
1 = Verdadeiro
0 = False
Tipo de dados base: int
TableHasIdentity
Tabela
A tabela tem uma coluna de identidade.
1 = Verdadeiro
0 = False
Tipo de dados base: int
TableHasIndex
Tabela
A tabela tem um índice de qualquer tipo.
1 = Verdadeiro
0 = False
Tipo de dados base: int
TableHasInsertTrigger
Tabela
O objeto tem um gatilho INSERT.
1 = Verdadeiro
0 = False
Tipo de dados base: int
TableHasNonclustIndex
Tabela
A tabela tem um índice não clusterizado.
1 = True
0 = False
Tipo de dados base: int
TableHasPrimaryKey
Tabela
A tabela tem uma chave primária.
1 = True
0 = False
Tipo de dados base: int
TableHasRowGuidCol
Tabela
A tabela possui um ROWGUIDCOL para uma coluna uniqueidentifier .
1 = True
0 = False
Tipo de dados base: int
TableHasTextImage
Tabela
A tabela tem uma coluna text, ntext ou image.
1 = True
0 = False
Tipo de dados base: int
TableHasTimestamp
Tabela
A tabela tem uma coluna timestamp.
1 = True
0 = False
Tipo de dados base: int
TableHasUniqueCnst
Tabela
A tabela tem uma restrição UNIQUE.
1 = Verdadeiro
0 = Falso
Tipo de dados base: int
TableHasUpdateTrigger
Tabela
O objeto tem um gatilho UPDATE.
1 = Verdadeiro
0 = Falso
Tipo de dados base: int
TableHasVarDecimalStorageFormat
Tabela
A tabela está habilitada para o formato de armazenamento vardecimal.
1 = Verdadeiro
0 = Falso
TableInsertTrigger
Tabela
A tabela tem um gatilho INSERT.
>1 = ID do primeiro gatilho com o tipo especificado.
Tipo de dados base: int
TableInsertTriggerCount
Tabela
A tabela tem o número especificado de gatilhos INSERT.
>0 = O número de gatilhos INSERT.
Tipo de dados base: int
TableIsFake
Tabela
A tabela não é real. Ela é materializada internamente sob demanda pelo Mecanismo de Banco de Dados.
1 = True
0 = False
Tipo de dados base: int
TableIsLockedOnBulkLoad
Tabela
A tabela está bloqueada devido a um trabalho bcp ou BULK INSERT.
1 = True
0 = False
Tipo de dados base: int
TableIsPinned
Tabela
A tabela está fixada para ser mantida no cache de dados.
0 = Falso
Esse recurso não tem suporte no SQL Server 2005 e versões posteriores.
TableTextInRowLimit
Tabela
A opção text in row da tabela está definida.
> 0 = Máximo de bytes permitidos para text in row.
0 = Opção text in row não definida.
Tipo de dados base: int
TableUpdateTrigger
Tabela
A tabela tem um gatilho UPDATE.
> 1 = ID do primeiro gatilho com o tipo especificado.
Tipo de dados base: int
TableUpdateTriggerCount
Tabela
A tabela tem o número especificado de gatilhos UPDATE.
> 0 = O número de gatilhos UPDATE.
Tipo de dados base: int
UserDataAccess
Função, exibição
Indica que o objeto acessa dados de usuário e tabelas de usuário na instância local do SQL Server.
1 = Leitura
0 = Nenhum
Tipo de dados base: int
TableHasColumnSet
Tabela
A tabela tem um conjunto de colunas.
0 = Falso
1 = Verdadeiro
Para obter mais informações, consulte Usar conjuntos de colunas.
Cardinality
Tabela (sistema ou definido pelo usuário), exibição ou índice
O número de linhas no objeto especificado.
Tipos de retorno
sql_variant
Exceções
Retorna NULL no caso de erro ou se um chamador não tiver permissão para exibir o objeto.
Um usuário só pode exibir metadados de protegíveis de sua propriedade ou para os quais tenha recebido permissão. Isso significa que as funções internas emissoras de metadados, como OBJECTPROPERTYEX, podem retornar NULL se o usuário não tiver permissão no objeto. Para obter mais informações, consulte Configuração de visibilidade de metadados.
Comentários
O Mecanismo de Banco de Dados entende que object_id está no contexto do banco de dados atual. Uma consulta que faz referência a um object_id de outro banco de dados retornará NULL ou resultados incorretos. Por exemplo, na consulta a seguir, o contexto do banco de dados atual é o banco de dados master. O Mecanismo de Banco de Dados tentará retornar o valor da propriedade para o object_id especificado naquele banco de dados, em vez do banco de dados especificado na consulta. A consulta retornará resultados incorretos porque a exibição vEmployee não está no banco de dados master.
USE master;
GO
SELECT OBJECTPROPERTYEX(OBJECT_ID(N'AdventureWorks2012.HumanResources.vEmployee'), 'IsView');
GO
OBJECTPROPERTYEX(view_id, 'IsIndexable') pode utilizar recursos significativos do computador, pois a avaliação da propriedade IsIndexable exige a análise da definição da exibição, normalização e otimização parcial. Embora a propriedade IsIndexable identifique tabelas ou exibições que podem ser indexadas, a criação real do índice ainda pode falhar se determinados requisitos chave de índice não forem atendidos. Para obter mais informações, consulte CREATE INDEX (Transact-SQL).
OBJECTPROPERTYEX (table_id, 'TableHasActiveFulltextIndex') retornará um valor 1 (verdadeiro) quando pelo menos uma coluna de uma tabela for adicionada para indexação. A indexação de texto completo será ativada automaticamente para população assim que a primeira coluna for adicionada para indexação.
São aplicadas restrições de visibilidade dos metadados ao conjunto de resultados. Para obter mais informações, consulte Configuração de visibilidade de metadados.
Exemplos
A.Localizando o tipo base de um objeto
O exemplo a seguir cria um SYNONYM MyEmployeeTable para a tabela Employee do banco de dados AdventureWorks2012 , e, em seguida, retorna o tipo base do SYNONYM.
USE AdventureWorks2012;
GO
CREATE SYNONYM MyEmployeeTable FOR HumanResources.Employee;
GO
SELECT OBJECTPROPERTYEX ( object_id(N'MyEmployeeTable'), N'BaseType')AS [Base Type];
GO
O conjunto de resultados mostra que o tipo base do objeto subjacente, a tabela Employee, é uma tabela de usuário.
Base Type
--------
U
B.Retornando um valor de propriedade
O exemplo a seguir retorna o número de gatilhos UPDATE na tabela especificada.
USE AdventureWorks2012;
GO
SELECT OBJECTPROPERTYEX(OBJECT_ID(N'HumanResources.Employee'), N'TABLEUPDATETRIGGERCOUNT');
GO
C.Localizando tabelas que possuem uma restrição FOREIGN KEY
O exemplo a seguir usa a propriedade TableHasForeignKey para retornar todas as tabelas que têm uma restrição FOREIGN KEY.
USE AdventureWorks2012;
GO
SELECT name, object_id, schema_id, type_desc
FROM sys.objects
WHERE OBJECTPROPERTYEX(object_id, N'TableHasForeignKey') = 1
ORDER BY name;
GO
Consulte também
Referência
funções de metadados (Transact-SQL)
OBJECT_DEFINITION (Transact-SQL)