Страницы

Поиск по вопросам

понедельник, 24 февраля 2020 г.

команда USE Sercver в запросе

#c_sharp #sql_server


Господа, прошу объяснить не мыслимое

Есть простой запрос, который у меня работает, и в C# и в МС студии

//c#
string slim_sqlquery = "SELECT * FROM sys.Tables";
//Ms SQL Server Management Studio
SELECT * FROM sys.Tables


Но на некоторых серверах таблички не находятся, в студии делаю по другому

//Ms SQL Server Management Studio
Use MyServerName
GO
SELECT * FROM sys.Tables


А как это же самое реализовать на c# ?

//p.s.
string slim_sqlquery = "Use MyServerName GO SELECT * FROM sys.Tables";
SqlCommand cmd = new SqlCommand(slim_sqlquery, conn_my_servak);
SqlDataReader reader = cmd.ExecuteReader();//вот тут лезут ошибки, что SQL запрос
надо в 1 строку

    


Ответы

Ответ 1



SqlClient не понимает GO так, как это делает SSMS. Либо используйте three-part naming: SqlCommand cmd = new SqlCommand("SELECT * FROM MyServerName.sys.Tables", conn_my_servak); SqlDataReader reader = cmd.ExecuteReader(); Либо вынесите смену контекста в отдельную команду: conn_my_servak.ChangeDatabase("MyServerName"); SqlCommand cmd = new SqlCommand("SELECT * FROM sys.Tables", conn_my_servak); SqlDataReader reader = cmd.ExecuteReader();

Ответ 2



В Запросе Use MyServerName GO убери. using (var connection = new SqlConnection(conn_my_servak)) { connection.Open(); using (var command = connection.CreateCommand()) { command.CommandText("SELECT * FROM sys.Tables") using (var reader = command.ExecuteReader()) { while(reader.Read()) { SomeId = (int)reader["id"]; SomeString = reader["someStr"].ToString(); ..... } } } }

Комментариев нет:

Отправить комментарий