Połączenie się z bazą danych SQL Server

0

Poszukuje sposobu w jaki powinienem połączyć się z bazą danych stworzoną w SQL Server 2008 (nie jest to wersja Express !!!). Otóż w SQL Server Management Studio mam stworzyłem bazę danych TestDB a w niej dwie tabele. Dostęp do bazy danych ustawiłem jako Windows authentication.

Ta baza danych znajduje się na tym samym komputerze, na którym piszę program do łączenia się z tą bazą.

Napisałem kilka linijek kodu aby połączyć się z bazą danych ale nie mogę się połączyć.

        private void connectToDatabase()
        {
            string connetionString = null;
            SqlConnection cnn ;
			connetionString = "Data Source=ServerName;Initial Catalog=DatabaseName;User ID=UserName;Password=Password";
            cnn = new SqlConnection(connetionString);
            try
            {
                cnn.Open();
                MessageBox.Show("Connection Open !");
                cnn.Close();
            }
            catch (Exception ex)
            {
                MessageBox.Show("Can not open connection ! ");
            }           
        }

teraz linijka connectionString. Dane do połączenia wypełniłem zgodnie z tym co jest napisane w okienkach programu SQL Server Management Studio. Jednak nie jestem w stanie połączyć się z bazą danych.

Może ktoś wyjaśnić co (i dlaczego) robię źle? Przygarnę również tutorial do ustawienia bazy a następnie jak się z tą bazą połączyć.

Przeczytałem, że należy wyszukać w services.msc pozycję SQL SERVER. U mnie znajdują się dwie:

  • SQL SERVER(MSSQLSERVER)
  • SQL SERVER(SQLEXPRESS)

Co dalej nic mi nie daje... Tak więc proszę kogoś o pomoc.

0

ok a może chociaż podaj jakiś błąd który Ci zwraca?

zazwyczaj jednak problemem jest konfiguracja serwera, tutaj rozwiązanie:
http://www.linglom.com/2009/03/28/enable-remote-connection-on-sql-server-2008-express/

jeśli nie pomoże to daj znać

0

No tak, nie podałem co wyrzuca Exception:

System.Data.SqlClient.SqlException: Login failed for user 'XXX-4684757C665\abc'.
w System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection)
w System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj)
w System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj)
w System.Data.SqlClient.SqlInternalConnectionTds.CompleteLogin(Boolean enlistOK)
w System.Data.SqlClient.SqlInternalConnectionTds.AttemptOneLogin(ServerInfo serverInfo, String newPassword, Boolean ignoreSniOpenTimeout, Int64 timerExpire, SqlConnection owningObject)
w System.Data.SqlClient.SqlInternalConnectionTds.LoginNoFailover(String host, String newPassword, Boolean redirectedUserInstance, SqlConnection owningObject, SqlConnectionString connectionOptions, Int64 timerStart)
w System.Data.SqlClient.SqlInternalConnectionTds.OpenLoginEnlist(SqlConnection owningObject, SqlConnectionString connectionOptions, String newPassword, Boolean redirectedUserInstance)
w System.Data.SqlClient.SqlInternalConnectionTds..ctor(DbConnectionPoolIdentity identity, SqlConnectionString connectionOptions, Object providerInfo, String newPassword, SqlConnection owningObject, Boolean redirectedUserInstance)
w System.Data.SqlClient.SqlConnectionFactory.CreateConnection(DbConnectionOptions options, Object poolGroupProviderInfo, DbConnectionPool pool, DbConnection owningConnection)
w System.Data.ProviderBase.DbConnectionFactory.CreatePooledConnection(DbConnection owningConnection, DbConnectionPool pool, DbConnectionOptions options)
w System.Data.ProviderBase.DbConnectionPool.CreateObject(DbConnection owningObject)
w System.Data.ProviderBase.DbConnectionPool.UserCreateRequest(DbConnection owningObject)
w System.Data.ProviderBase.DbConnectionPool.GetConnection(DbConnection owningObject)
w System.Data.ProviderBase.DbConnectionFactory.GetConnection(DbConnection owningConnection)
w System.Data.ProviderBase.DbConnectionClosed.OpenConnection(DbConnection outerConnection, DbConnectionFactory connectionFactory)
w System.Data.SqlClient.SqlConnection.Open()
w PartList.Zaloguj.connectToDatabase() w C:\Documents and Settings\abc\Moje dokumenty\Praca\Programy\Visual C#\PartList\PartList\Zaloguj.cs:wiersz 73

Wiersz 73 to cnn.Open();

Włączyłem serwer wg opisu ale nadal dostaje tą samą wiadomość. Nie połączy się z bazą i już.

0

Czyli masz zainstalowaną zarówno pełną wersję SQL Servera jak i wersję Express. A w której utworzyłeś swoją bazę danych? I z którą chcesz się połączyć? Pamiętaj, że podawana w connection stringu nazwa serwera dla pełnej wersji to np. '(local)', a dla wersji Express trzeba się łączyć przez '(local)\SQLEXPRESS'.

0

Tak, w komputerze mam zainstalowane SQL Server Express oraz SQL Server 2008. I łączyłem się właśnie z tą ostatnią. Błąd leżał gdzie indziej, mianowicie w poleceniu.

Łańcuch połączeniowy wyglądał następująco:

connetionString = "Data Source=ServerName;Initial Catalog=DatabaseName;User ID=UserName;Password=Password";

I byłoby to poprawne gdybym nie zaznaczył Windows Authentication Mode. Zmodyfikowany łańcuch wygląda następująco:

connetionString = "Data Source=ServerName;Initial Catalog=DatabaseName;Integrated Security=True";

Drobny szczegół, który powodował coraz większa frustrację :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1