1) Jak założyć nową bazę danych? 2) C# - MS SQL Server Named Pipes Provider, error: 40

0

Witam,

Na razie w skrócie: mam bazę danych na MS SQL Server 2008R. Autoryzacja windows działa - mogę normalnie odpytywać przez SQL. Ale potrzebuję autoryzację SQL, żeby połączyć się z bazą docelową:

public obSQL(string user, string pass, string instance, string dbdir)/// autoryzacja SQL Server
                                                                             /// uzytkownik /// haslo /// nazwa instancji /// nazwa bazy danych
        {
            polaczenie = new SqlConnection();
            polaczenie.ConnectionString = "user id=" + user + ";" +
                                          "password=" + pass + 
                                          ";Data Source=" + instance + ";" +
                                          "Trusted_Connection=no;" +
                                          "database=" + dbdir + "; " +
                                          "connection timeout=3"; // Więcej na: http://www.connectionstrings.com/
            polaczenie.Open();
        }

Po wpisaniu danych otrzymuję błąd:

błąd SqlException: System.Data.SqlClient.SqlException (0x80131904): Wystąpił błąd związany z siecią lub wystąpieniem podczas ustanawiania połączenia z serwerem programu SQL Server. Nie można odnaleźć serwera lub jest on niedostępny. Sprawdź, czy nazwa wystąpienia jest poprawna i czy konfiguracja serwera programu SQL Server zezwala na połączenia zdalne. (provider: Named Pipes Provider, error: 40 - Nie można otworzyć połączenia z programem SQL Server)
w System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection)
w System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning()
w System.Data.SqlClient.TdsParser.Connect(ServerInfo serverInfo, SqlInternalConnectionTds connHandler, Boolean ignoreSniOpenTimeout, Int64 timerExpire, Boolean encrypt, Boolean trustServerCert, Boolean integratedSecurity)
w System.Data.SqlClient.SqlInternalConnectionTds.AttemptOneLogin(ServerInfo serverInfo, String newPassword, Boolean ignoreSniOpenTimeout, TimeoutTimer timeout, SqlConnection owningObject)
w System.Data.SqlClient.SqlInternalConnectionTds.LoginNoFailover(ServerInfo serverInfo, String newPassword, Boolean redirectedUserInstance, SqlConnection owningObject, SqlConnectionString connectionOptions, TimeoutTimer timeout)
w System.Data.SqlClient.SqlInternalConnectionTds.OpenLoginEnlist(SqlConnection owningObject, TimeoutTimer timeout, 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 cennik01.obSQL..ctor(String user, String pass, String instance, String dbdir)
w Cennik_v2._1.Form1.button1_Click(Object sender, EventArgs e)

Nie wiem dlaczego, ten sam błąd otrzymuję zarówno lokalnie, na testowej bazie danych, jak i przy próbie połączenia z bazą na serwerze. Opiszę problem szerzej, ale najpierw mam inny pomysł: żeby mieć pewność co do tego, że źle (lub dobrze) wpisuję login i hasło chciałbym założyć nową, pustą bazę danych i się z nią połączyć. I tutaj mam problem: jak to zrobić? Baza z której korzystam została wygenerowana automatycznie przez pewien program (jest to przykładowa baza danych) i autoryzacja windows na nim działa, teraz chcę utworzyć całkowicie własną, odrębną bazę danych, ustawić własny login i własne hasło. Nie wiem od czego zacząć :(

Mój komputer:
MS SQL Server 2008R,
Windows 7,
Visual Studio 2010

Serwer z którym nie mogę nawiązać połączenia:
MS SQL Server 2005
Windows Vista (i tak pozostanie)

0

provider: Named Pipes Provider, error: 40 - Nie można otworzyć połączenia z programem SQL Server

  1. Czy instancja SQL Server na której hostujesz swoją bazę ma wybraną metodę autoryzacji jako Mixed mode? (czy tylko windows Authentication?). Czy możesz się połączyć podając login i hasło z poziomu Managment Studio?
  2. SQL Configuration Tools zobacz jakie protokoły masz włączone dla tej instancji.
  3. Zdalna maszyna powinna mieć wyjątek na firewall (sprawdź też połączenie pomiędzy kompami) - lokalnej bazy to nie dotyczy, bo na localhoscie wszystko jest zaufane.
0

dokładnie, sprawdź czy na tych samych parametrach połaczysz się z kompa A na Server B przy użyciu sql studio. jesli nie to szukaj rozwiązania sieciowego :)

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