Você pode usar o
OBJECTPROPERTY()
função no SQL Server para descobrir se um objeto é ou não uma exibição. Essa função aceita dois parâmetros:o ID do objeto e a propriedade para a qual você está verificando.
Portanto, você pode passar o ID do objeto como o primeiro argumento e
IsView
como o segundo, e a função retornará um 1
ou um 0
dependendo se é ou não uma visão. Um valor de retorno de
1
significa que é uma visualização e um valor de 0
significa que não é. Exemplo 1 – Uso básico
Aqui está um exemplo rápido para demonstrar.
USE Music; SELECT OBJECTPROPERTY(1525580473, 'IsView') AS [IsView];
Resultado:
+----------+ | IsView | |----------| | 1 | +----------+
Nesse caso, a Música database tem um objeto com o ID fornecido, e é uma view.
Exemplo 2 – Obtendo o ID do objeto
Se você sabe o nome do objeto, mas não seu ID, você pode usar o
OBJECT_ID()
função para recuperar o ID com base em seu nome. Exemplo:
SELECT OBJECTPROPERTY(OBJECT_ID('RockAlbums'), 'IsView') AS [IsView];
Resultado:
+----------+ | IsView | |----------| | 1 | +----------+
Nesse caso, verifiquei o mesmo objeto do exemplo anterior.
Aqui está novamente com a saída de ID separadamente.
SELECT OBJECT_ID('RockAlbums') AS [Object ID], OBJECTPROPERTY(OBJECT_ID('RockAlbums'), 'IsView') AS [IsView];
Resultado:
+-------------+----------+ | Object ID | IsView | |-------------+----------| | 1525580473 | 1 | +-------------+----------+
Exemplo 3 – Quando o Objeto NÃO é uma View
Aqui está o que acontece quando o objeto não é uma visualização.
SELECT OBJECTPROPERTY(885578193, 'IsView') AS [IsView];
Resultado:
+----------+ | IsView | |----------| | 0 | +----------+
Nesse caso, o banco de dados não na verdade tenho um objeto com esse ID, mas o objeto na verdade é uma tabela, então recebo um resultado negativo.
Aqui está novamente usando
OBJECT_ID()
. SELECT OBJECT_ID('Artists') AS [Object ID], OBJECTPROPERTY(OBJECT_ID('Artists'), 'IsView') AS [IsView];
Resultado:
+-------------+----------+ | Object ID | IsView | |-------------+----------| | 885578193 | 0 | +-------------+----------+
Exemplo 4 – Objeto não existe
O SQL Server pressupõe que a identificação do objeto está no contexto do banco de dados atual. Se você passar um ID de objeto de um banco de dados diferente, obterá um resultado NULL ou obterá resultados incorretos.
SELECT OBJECTPROPERTY(OBJECT_ID('NonExistentObject'), 'IsView') AS [NonExistentObject], OBJECTPROPERTY(11111111, 'IsView') AS [11111111];
Resultado:
+---------------------+------------+ | NonExistentObject | 11111111 | |---------------------+------------| | NULL | NULL | +---------------------+------------+
Nesse caso, o banco de dados não contém objetos com esse nome ou ID e, portanto, obtenho um resultado NULL.
Você também receberá NULL em caso de erro ou se não tiver permissão para visualizar o objeto.