Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Базы данных под .NET > Поиск SQL- серверов


Автор: alsergeich 20.10.2006, 08:24
Подобный вопрос уже был.
Ответы мне не очень понравились, поэтому задаю еще раз но с уточнением, может кто-нибудь сможет помочь...
Мне нужно подключиться к SQL-серверу(это понятно smile )
Хочется чтобы пользователь мог нажать на кнопочку и ему вываливался список серверов. это я сделал
Код

                SqlDataSourceEnumerator instance =
                  SqlDataSourceEnumerator.Instance;
                DataTable table = instance.GetDataSources();

                foreach (DataRow row in table.Rows)
                {
                    if ( row[ "InstanceName" ].ToString() == "" )
                        serverComboBox.Items.Add( row[ "ServerName" ] );
                    else
                        serverComboBox.Items.Add( row[ "ServerName" ]+"\\" + row[ "InstanceName" ] );
                        
                }

а дальше в идеале надо, чтобы в соседнем окошечке вываливался список баз данных... и вот тут я попал в тупик...
может знает кто????

Автор: mr.DUDA 20.10.2006, 08:40
А дальше придётся коннектиться к серверу и выполнять запрос "exec sys.sp_databases"

Автор: alsergeich 20.10.2006, 08:44
а можно чуть по-подробней..
вот я скажем законектился
Код

          string connectionString = "Provider=SQLOLEDB;server=TEST;User ID= ;Password= ;Integrated Security=SSPI";
          OleDbConnection oleDbConnection = new OleDbConnection( connectionString);
          oleDbConnection.Open();


и что дальше нужно сделать???
честно говоря мне "exec sys.sp_databases" вообще не о чем не говорит, ни че не понимаю  smile 

Автор: mr.DUDA 20.10.2006, 11:05
Пример:

Код
using System;
using System.Data;
using System.Data.SqlClient;

class Program
{
    static void Main()
    {
        string connString = ...;

        DataTable tbDatabases = new DataTable();

        using (SqlConnection conn = new SqlConnection(connString))
        {
            // настраиваем команду
            SqlCommand cmd = conn.CreateCommand();
            cmd.CommandText = "sys.sp_databases";
            cmd.CommandType = CommandType.StoredProcedure;

            // заполняем таблицу со списком баз данных
            SqlDataAdapter adapter = new SqlDataAdapter(cmd);
            adapter.Fill(tbDatabases);
        }

        // выводим всё это дело на консоль
        foreach (DataRow row in tbDatabases.Rows)
            Console.WriteLine(row["DATABASE_NAME"]);
    }
}



Автор: alsergeich 20.10.2006, 11:11
псб.
а нет ли какого альтернативного способа в обход SqlDataAdapter?
я пытался  sqlconnection.GetShema("DataBases") или "Tables" и т.д. нужной информации нет
databases вообще не распознает, может есть еще способ???

Автор: mr.DUDA 20.10.2006, 13:41
Можно через ODBC, но не всегда работает и часто глючит. В любом случае нужно открывать соединение с авторизацей, если я не ошибаюсь. Тогда чем SqlDataAdapter не нравится ?

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)