Array
(
)

Lendo uma tabela SQL Server com Esquema no CSharp SQLDatareader

Luciano
   - 24 mar 2015

Pessoal,
Estou com um problema para ler a query de uma tabela com esquema e não sei como fazer.
Exemplo :
Passo a query para uma string para depois poder utilizar o SQLDatareader e efetuar a leitura do resultado (Segue um resumo do que estou fazendo):

string query = "SELECT ID, NOME FROM TABELA WHERE ID = " + pID;
SqlConnection sqlCon = conexaoSQL.metododeConexao();
SqlCommand cmd = new SqlCommand(query, sqlCon);
sqlCon.Open();
SqlDataReader dr = cmd.ExecuteReader();

while (dr.Read())
{
id = Convert.ToString(dr["ID"]);
}
Até aqui tudo bem, funcionando normalmente. O problema ocorre quando passo para a string query uma tabela que está em um esquema do SQL Server, Exemplo :
query = "SELECT ID, NOME FROM NOME_ESQUEMA.NOME_TABELA WHERE ID = " + pID;
Neste caso, o SqlDataReader passa direto. Gostaria de saber como passo uma tabela que está em um esquema do SQL Server para a string em C#.
Já testei com :
string query = "SELECT ID, NOME FROM 'NOME_ESQUEMA.NOME_TABELA' WHERE ID = " + pID;
e
string query = "SELECT ID, NOME FROM [NOME_ESQUEMA].[NOME_TABELA] WHERE ID = " + pID;
Não funfou, se alguém puder me ajudar, ficarei muito agradecido.
Abs

Jothaz
   - 24 mar 2015

Não entendi se funciona para que adicionar o shema?

Luciano
   - 24 mar 2015

Na verdade o erro foi meu, não tinha problema algum.
Estava achando que não conseguia ler pelo motivo da tabela fazer parte de um esquema, onde na verdade eu estava tentando fazer um select em uma tabela que estava vazia no ambiente de testes pela aplicação e no SQL Server, estava fazendo um select em produção, acabei me confundindo. Foi falta de atenção mesmo.
Respondendo ao Jothaz, não é que eu adiciono o esquema no select, o esquema já existe para a tabela no SQL Server, e para eu chamá-la preciso informar schema_name.Table_Name.
Dei 2 exemplos, um com uma tabela que não possui esquema e outro com outra tabela que possui esquema.
Você pode ter várias tabelas com o mesmo nome dentro do mesmo banco, sendo que elas precisam estar em esquemas diferentes.
Ex.: RH.PERMISSOES , GERAL.PERMISSOES, ADMIN.PERMISSOES, caso não informe o nome do schema o sql irá referenciar a que não possui nenhum schema, que é a dbo.PERMISSOES (Se existir).
Mesmo assim, obrigado pela atenção.