Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[18.116.36.192] |
|
Данный раздел предназначается исключительно для обсуждения вопросов использования языка запросов SQL. Обсуждение общих вопросов, связанных с тематикой баз данных - обсуждаем в разделе "Базы данных: общие вопросы". Убедительная просьба - соблюдать "Правила форума" и не пренебрегать "Правильным оформлением своих тем". Прежде, чем создавать тему, имеет смысл заглянуть в раздел "Базы данных: FAQ", возможно там уже есть ответ. |
Сообщ.
#1
,
|
|
|
Не знаю, понадобится ли кому данный финт ушами, но вчера он меня буквально спас.
Краткая предыстория ситуации такова. Застряли на удаленном серваке терминальные сессии и терминальный сервер со спокойно душой отправлял всех к чьей-то маме, ссылаясь на лицензионный лимит подключений. В общем, сервак стал совершенно неуправляеми кроме ftp и mssql никакого доступа. Причем прошло пару часов плясок с бубнами, пока я не вспомнил собственно про mssql и xp_cmdshell. Буквально минута и используя Query Analyzer в качестве консоли все было поставлено на свои места. Так что рекомендую всем, кому приходится рулить удаленным серваками с установленным MSSQL повыключать любые telnet/ssh-сервера и переходить на использование MSSQL в качестве секьюрной удаленной консоли Я даже для себя небольшую консольную приблуду на c# написал, если кому пригодиться, то я буду только рад. using System; using System.Data; using System.Data.SqlClient; namespace SqlTelnet { class SqlTelnet { [STAThread] static void Main(string[] args) { Console.WriteLine("SqlTelnet 1.0 by Guderian."); if (args.Length != 1) { Console.WriteLine("Usage:\n\tSqlTelnet <database connection string>\nExample:\n\tSqlTelnet \"server=remote_ip;database=master;username;password=pass\""); return; } try { SqlConnection connection = new SqlConnection(args[0]); SqlCommand command = connection.CreateCommand(); command.CommandType = CommandType.Text; connection.Open(); try { string line = null; while ( (line = Console.ReadLine()).ToLower() != "quit") { command.CommandText = string.Concat ("xp_cmdshell \"",line,"\""); Console.WriteLinecommand.CommandText); try { SqlDataReader reader = command.ExecuteReader(); try { while (reader.Read()) { for (int field = 0; field < reader.FieldCount; field++) { Console.Write(">> {0}",reader[field].ToString()); } Console.WriteLine(); } } finally { reader.Close(); } } catch (Exception e) { Console.WriteLine("Exception: {0}",e.Message); } } } finally { connection.Close(); } } catch (Exception e) { Console.WriteLine("Exception : {0}",e.Message); } } } } |