Estou usando servidores vinculados ao servidor SQL e encontro algumas dificuldades ao executar as consultas.
Abaixo está a consulta real.
USe testdb
SELECT 'Identitiy property OFF' where COLUMNPROPERTY( OBJECT_ID('Table_1'),'column1','IsIdentity')=0
Para executá-lo em um servidor vinculado, usei
Use mylinkedserver.testdb
SELECT 'Identitiy property OFF' where COLUMNPROPERTY( OBJECT_ID('Table_1'),'column1','IsIdentity')=0
Mas quando executo isso, recebo o erro mostrado abaixo O banco de dados 'mylinkedserver' não existe. Certifique-se de que o nome foi digitado corretamente.
Onde como posso consultar a tabela usando select * from pc91sql.testdb.dbo.Table_1
com sucesso.
Então, como executar a consulta acima? (Acho que não posso usar "USE" com o servidor vinculado. Então, qual é a alternativa
EDITAR:
Essas coisas que eu tentei depois de obter boas respostas. Então eu usei a opção OPENQUERY
SELECT * FROM OPENQUERY(pc91sql,'SELECT COLUMNPROPERTY( OBJECT_ID(''testdb.dbo.Table_1''),''column1'',''IsIdentity'')');
Devolveu NULL. Mas deveria ter retornado 1, pois a coluna1 é uma coluna de identidade.
Em seguida, verifiquei novamente executando minha consulta original diretamente no servidor vinculado sem usar o comando e NULL é retornado. Se eu executar a mesma consulta depois de mencionar use testdb
ou no SSMS depois de escolher o banco de dados da lista, ele retornará 1. Isso significa que OBJECT_ID
não é possível usar o nome do banco de dados junto com o nome da tabela (ou seja, ''testdb.dbo.Table_1'').
Você pode usar
EXEC
para executar o SQL dinâmico em um banco de dados ou servidor diferente. Além disso, tente usar as exibições de catálogo diretamente, em vez de todas essas funções confusas de metadados.Melhor ainda, parametrize-o:
Confira
OPENQUERY
( referência BOL )OPENQUERY
é projetado especificamente para executar consultas diretamente no Linked Server.O primeiro parâmetro é o nome do seu servidor vinculado, enquanto o segundo é a consulta que você deseja executar nele.
Não tenho certeza da sintaxe da sua consulta, mas algo assim deve funcionar.