Połączenie z bazą danych SQL Server

0

Witam.

Wykonuję projekt w VBD, korzystam z C# i SQL Server 2008. Mam problem z połączeniem się bazą. O ile wykorzystam kontrolkę SQLDataSource to problemów nie ma. Jeśli chcę zrobić coś w ten sposób:

protected void Button4_Click(object sender, EventArgs e)
    {
        try
        {

            SqlConnection conn = new SqlConnection("Server=(local)\\SQLEXPRESS ;  Database=baza;  Integrated security=true;");
            conn.Open();


            if (conn.State == ConnectionState.Open)
                Label2.Text = "Połączenie otwarte";



        }
        catch (Exception ex)
        {
            Label2.Text = ex.ToString();

        }
    }

Pojawia się:

`System.Data.SqlClient.SqlException (0x80131904): Cannot open database "baza" requested by the login. The login failed. Login failed for user 'Laptop\Tomek'. w System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection, Action`1 wrapCloseInAction) w System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj, Boolean callerHasConnectionLock, Boolean asyncClose) w System.Data.SqlClient.TdsParser.TryRun(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj, Boolean& dataReady) 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, SecureString newSecurePassword, Boolean ignoreSniOpenTimeout, TimeoutTimer timeout, Boolean withFailover) w System.Data.SqlClient.SqlInternalConnectionTds.LoginNoFailover(ServerInfo serverInfo, String newPassword, SecureString newSecurePassword, Boolean redirectedUserInstance, SqlConnectionString connectionOptions, SqlCredential credential, TimeoutTimer timeout) w System.Data.SqlClient.SqlInternalConnectionTds.OpenLoginEnlist(TimeoutTimer timeout, SqlConnectionString connectionOptions, SqlCredential credential, String newPassword, SecureString newSecurePassword, Boolean redirectedUserInstance) w System.Data.SqlClient.SqlInternalConnectionTds..ctor(DbConnectionPoolIdentity identity, SqlConnectionString connectionOptions, SqlCredential credential, Object providerInfo, String newPassword, SecureString newSecurePassword, Boolean redirectedUserInstance, SqlConnectionString userConnectionOptions, SessionData reconnectSessionData) w System.Data.SqlClient.SqlConnectionFactory.CreateConnection(DbConnectionOptions options, DbConnectionPoolKey poolKey, Object poolGroupProviderInfo, DbConnectionPool pool, DbConnection owningConnection, DbConnectionOptions userOptions) w System.Data.ProviderBase.DbConnectionFactory.CreatePooledConnection(DbConnectionPool pool, DbConnection owningObject, DbConnectionOptions options, DbConnectionPoolKey poolKey, DbConnectionOptions userOptions) w System.Data.ProviderBase.DbConnectionPool.CreateObject(DbConnection owningObject, DbConnectionOptions userOptions, DbConnectionInternal oldConnection) w System.Data.ProviderBase.DbConnectionPool.UserCreateRequest(DbConnection owningObject, DbConnectionOptions userOptions, DbConnectionInternal oldConnection) w System.Data.ProviderBase.DbConnectionPool.TryGetConnection(DbConnection owningObject, UInt32 waitForMultipleObjectsTimeout, Boolean allowCreate, Boolean onlyOneCheckConnection, DbConnectionOptions userOptions, DbConnectionInternal& connection) w System.Data.ProviderBase.DbConnectionPool.TryGetConnection(DbConnection owningObject, TaskCompletionSource`1 retry, DbConnectionOptions userOptions, DbConnectionInternal& connection) w System.Data.ProviderBase.DbConnectionFactory.TryGetConnection(DbConnection owningConnection, TaskCompletionSource`1 retry, DbConnectionOptions userOptions, DbConnectionInternal oldConnection, DbConnectionInternal& connection) w System.Data.ProviderBase.DbConnectionInternal.TryOpenConnectionInternal(DbConnection outerConnection, DbConnectionFactory connectionFactory, TaskCompletionSource`1 retry, DbConnectionOptions userOptions) w System.Data.ProviderBase.DbConnectionClosed.TryOpenConnection(DbConnection outerConnection, DbConnectionFactory connectionFactory, TaskCompletionSource`1 retry, DbConnectionOptions userOptions) w System.Data.SqlClient.SqlConnection.TryOpenInner(TaskCompletionSource`1 retry) w System.Data.SqlClient.SqlConnection.TryOpen(TaskCompletionSource`1 retry) w System.Data.SqlClient.SqlConnection.Open() w _Default.Button3_Click(Object sender, EventArgs e) w c:\Visual Studio - projekty\WebSite1\Default.aspx.cs:wiersz 87 ClientConnectionId:66ee91bc-8e68-49d2-bb77-7a46b4d60ce8`

Czy ktoś może mi pomóc? Testowałem na 2 komputerach - Win7 i Win8, te same rezultaty.
0

masz błąd logowania do bazy w string-u połączenia brakuje użytkownika i hasła

"Data Source=(local)\\SQLEXPRESS;Initial Catalog=baza;User ID= ??? ;Password=****;Integrated security=true;"
0
.Al napisał(a):

szukałeś po googlach? trochę tego jest https://www.google.pl/#q=Cannot+open+database+requested+by+the+login.+The+login+failed.+Login+failed+for

Tak, męczę się z tym już 6 godzin. Nic mi się nie udało zrobić, był jakieś rozwiązania z Sql Server Managment Studio, ale wersja 2008 nie chce mi działać na Win8.

szymon7500 napisał(a):

masz błąd logowania do bazy w string-u połączenia brakuje użytkownika i hasła

"Data Source=(local)\\SQLEXPRESS;Initial Catalog=baza;User ID= ??? ;Password=****;Integrated security=true;"

A to nie jest tak, że dla windows authentication jest bez loginu i hasła?

0

musisz zainstalować Sql Managment Studio i spróbować zalogować się do bazy jako Windows Authentication? chyba że jesteś w stanie sprawdzić czy masz ustawioną bazę na to logowanie?

masz błąd logowania do bazy

System.Data.SqlClient.SqlException (0x80131904): Cannot open database "baza" requested by the login. The login failed. Login failed for user 'Laptop\Tomek'

0

Myślałem, że Windows Authentication jest domyślne. Nie mam zainstalowanego Sql Managment Studio - o ile SQL Server 2008 z sp3 działa na Windowsie 8, to Managment Studio 2008 już nie.
Czy możesz mi napisać krok po kroku, co mam zrobić żeby to łączenie z bazą działało? Żadnego id i hasła nie zakładałem, a wszędzie czytam, że Windows Authentication jest domyślne.

0

Zainstaluj SQL Server Management Studio. Może być najnowsza wersja, nie musi być 2008. Tak czy siak trudno Ci będzie bez niego pracować.
Skąd w ogóle wiesz, że serwer jest uruchomiony, i że Twoja baza jest do niego podłączona?
Jaki sposób uwierzytelniania wybrałeś podczas instalacji SQL Server?

0
somekind napisał(a):

Zainstaluj SQL Server Management Studio. Może być najnowsza wersja, nie musi być 2008. Tak czy siak trudno Ci będzie bez niego pracować.?

Zainstalowałem na razie na drugim komputerze SSMS 2008 Express i zalogowałem się .\SQLEXPRESS
Co mam teraz zrobić?

somekind napisał(a):

Skąd w ogóle wiesz, że serwer jest uruchomiony, i że Twoja baza jest do niego podłączona?

Ponieważ do tej pory zrobiłem prostą aplikację, która dodaje do bazy danych SQL Server poprzez SqlDataSource.InsertCommand i wszystko działa.

somekind napisał(a):

Jaki sposób uwierzytelniania wybrałeś podczas instalacji SQL Server?

Wszystko domyślnie.

0

Sorry, że piszę post pod postem, ale jestem jako gość i nie mogę edytować.

Po zalogowaniu się w SSMS mojej bazy "baza.mdf" nie widzę. W VBD jak daje prawym na bazie i klikam "modify connection" i kilkam na "test connection" (windows aut.) to jest OK.

0
Yezup napisał(a):

Zainstalowałem na razie na drugim komputerze SSMS 2008 Express i zalogowałem się .\SQLEXPRESS
Co mam teraz zrobić?

I jest widoczna Twoja baza w gałęzi Databases? Możesz zobaczyć jakie ma tabele i wykonywać jakieś zapytania?

Wszystko domyślnie.

A domyślnie jest chyba Mixed Mode, a nie Windows Authentication.

0

Po zalogowaniu przez Windows Authentication w SSMS jako .\SQLEXPRESS nie ma tam mojej bazy baza.mdf. Co mam z tym zrobić?

0

najpierw zlokalizuj gdzie jest plik bazy, domyślenie C:\Program Files\Microsoft SQL Server\MSSQL10.SQLEXPRESS\MSSQL\DATA
w sql server manager logujesz się, w lewym oknie Databases -> Attach -> Add ... dołącz swój plik mdf

co to jest ten VBD?

0

Literówka, VWD - visual web developer, baza danych jest jak zwykle w folderze z projektem w App_data

0
Yezup napisał(a):

Literówka, VWD - visual web developer, baza danych jest jak zwykle w folderze z projektem w App_data

To chyba należałoby od tego zacząć, że nie korzystasz z prawdziwej bazy danych, tylko takiej w pliku lokalnym. Generalnie jest to może dobre do testów, ale nie w przypadku wdrażania aplikacji na docelowym środowisku.

Connection string powinien wyglądać mniej więcej tak: Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\baza.mdf;Integrated Security=True;User Instance=True

Zresztą, prawidłowy connection string możesz przecież podejrzeć w swoim VWD, a ten cały wątek jest bez sensu.

0

Tak, wiem, że jest to baza lokalna, ale myślałem, że w ten sposób też się można połączyć. Mój błąd.

Próbowałem tego Connection string z VWD już przed napisaniem tematu, wygląda tak jak ten Twój, ale nie działa nadal. Dla było .\SQLEXPRESS jest error "Unrecognized escape sequence", dla \ inny błąd.
Zadziałało jak dodałem @ na początku. Dzięki za pomoc.

Swoją drogą - dlaczego stosowanie lokalnej bazy danych jest złym pomysłem? W przypadku projektu na uczelnie, a nie jakiejś komercyjnej aplikacji. We wszystkich książkach, które wypożyczyłem korzystają właśnie z lokalnej i dla tego tak zacząłem.

1
Yezup napisał(a):

Swoją drogą - dlaczego stosowanie lokalnej bazy danych jest złym pomysłem?

Choćby dlatego, że nie z każdym SQL Serverem to zadziała. A konkretnie, to działa tylko z wersją Express. Ta wersja z kolei nie posiada Profilera, więc nie można debugować zapytań.
A poza tym, to jak się ma bazę danych normalnie zarządzaną przez SQL Server, to wszystko jest dostępne i widoczne w Management Studio, więc nie trzeba szukać zaginionych baz, jak Ty w tym wątku. ;)

0

OK, rozumiem. Na razie zostanę przy tej lokalnej, bo już dużo zrobiłem do tego małego projekciku, a następnym razem już tak jak piszesz. Ale skoro już Was tyle męczę, to jeszcze o coś zapytam ;)
Czy aplikację z taką lokalną bazą danych mogę wrzucić na jakiś darmowy hosting i będzie to działać?

0

Niewiele jest darmowych hostingów ASP.NET, a tym bardziej wątpliwie, żeby jakikolwiek udostępniał MS SQL Server w wersji Express. No, ale poszukaj, to może jakiś znajdziesz.

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