Błąd przy połączeniu się z bazą danych

0

Przy próbie połączenia się z bazą danych:

conn.Open(); objSqlCommand.ExecuteNonQuery(); conn.Close(); ```

mam błąd
Cannot open database "Baza" requested by the login. The login failed.

tu jest mój ConnectionString:
"Data Source=.\\SQLEXPRESS;Initial Catalog=Baza;Integrated Security=True";

0

A serwer ma ustawione Windows Authentication jako sposób uwierzytelniania?

0
somekind napisał(a)

A serwer ma ustawione Windows Authentication jako sposób uwierzytelniania?

Miał ustawione Windows Authentication, ale znalazłem w Internecie, że trzeba zmienić na Windows and SQL Authentication, ale dalej nie działa

0

Jesli laczysz sie po Windows Authentication (nie da sie tego wylaczyc, nomen omen) to musisz dodac uzytkownika, na ktorym probujesz sie polaczyc, do bazy danych. To sie samo nie zrobi. Czyli jesli odpalasz aplikacje na prawach uzytkownika Zdzislaw, to musisz najpierw wejsc sobie np. w Management Studio, w galezi Security/Logins dodac uzytkownika (of coz jako konto, nie po prostu wpisujac taka sama nazwe) i ustawic mu dostep do pożądanej bazy.

0
johny_bravo napisał(a)

Jesli laczysz sie po Windows Authentication (nie da sie tego wylaczyc, nomen omen) to musisz dodac uzytkownika, na ktorym probujesz sie polaczyc, do bazy danych. To sie samo nie zrobi. Czyli jesli odpalasz aplikacje na prawach uzytkownika Zdzislaw, to musisz najpierw wejsc sobie np. w Management Studio, w galezi Security/Logins dodac uzytkownika (of coz jako konto, nie po prostu wpisujac taka sama nazwe) i ustawic mu dostep do pożądanej bazy.

w Security/Logins mam już dodanego użytkownika tego, którego nazwa występuje w błędzie Cannot open database "Baza" requested by the login.

i ma on uprawnienia db_owner do tej bazy, ale i tak mam ten sam błąd

0

Znaczy cos popsules. Daj zrzuty z wlasciwosci loginu, zakladki General i User Mappings w Management Studio.

0

a jeżeli to jest baza detachowana/attachowana/backup/restore z innego serwera, to w ogole jestes gleboko w szambie i bedzies zmusial poprzepinac sporo wpisow o uprawnieniach loginuserwera-vs-uzytkownikabazy.. zacznij wiec od tego, jak te baze stworzyles, czym sie do niej laczysz, czy managementstudio jest w stanie sie do tego polaczyc, etc, etc, etc

0

bazę stworzyłem w VS2008 i przez ten program (okno Server Explorer) łączę się z nią (tylko na potrzeby aplikacji WWW), w Management Studio mogę się do niej podłączyć

screeny z Management Studio:
http://zapodaj.net/4809f9362e32.bmp.html
http://zapodaj.net/6e79ebf7523e.bmp.html

0

Nie wiem czy dobrze zrozumiałem to co teraz napisałes: wszystko działa (MgmtStudio,ServExplroer), a tylko aplikacja WWW ktora z tej bazy korzysta nie moze sie podlaczyc?
Jesli tak, to bacz na to, ze aplikacja www chodzaca na IIS nie chodzi jako "ty" tylko jako np. IWAM/IUSR_dsfgs/ASPNET/NetworkService lub inne konto, zaleznie jak skonfigurowales pule aplikacji IIS i impersonacje osob logujacych sie na stronke

0

Otoz to, jak nie robiles dziwnych ustawien to na 99% chodzi na uzytkowniku IIS, ktorego zapewne nie dodales/nie dodales mapowan.

0
quetzalcoatl napisał(a)

Nie wiem czy dobrze zrozumiałem to co teraz napisałes: wszystko działa (MgmtStudio,ServExplroer), a tylko aplikacja WWW ktora z tej bazy korzysta nie moze sie podlaczyc?
Jesli tak, to bacz na to, ze aplikacja www chodzaca na IIS nie chodzi jako "ty" tylko jako np. IWAM/IUSR_dsfgs/ASPNET/NetworkService lub inne konto, zaleznie jak skonfigurowales pule aplikacji IIS i impersonacje osob logujacych sie na stronke

gdzie sprawdzic konfigurację IIS (jaka jest nazwa konta) i impersonację?

0

problem już rozwiązany, mam jeszcze tylko pytanie co do składni:
mam zmienną typu string użytkownik, chcę wykonać taką operację:

objSqlCommand.CommandText = "SELECT id FROM Uczniowie WHERE nazwa_uzytkownika=@uzytkownik";

i dostaję błąd:

Must declare the scalar variable "@uzytkownik".
0

objSqlCommand.Parameters.Add(...) <- musisz podac wartosc parametru @Uzytkownik.

0

znalazłem już to rozwiązanie, ale teraz rekord nie dodaje się do bazy (nie ma żadnego błędu):

 conn = new SqlConnection();
conn.ConnectionString = "Data Source=.\\SQLEXPRESS;AttachDbFilename=|DataDirectory|\\Baza.mdf;Integrated Security=True;User Instance=True";
objSqlCommand = new SqlCommand();
objSqlCommand.Connection = conn;
objSqlCommand.CommandType = CommandType.Text;
objSqlCommand.CommandText = "INSERT INTO Uczniowie_Testy_Oceny VALUES (@id,1,@ocena)";
 objSqlCommand.Parameters.AddWithValue("@ocena", int.Parse(this.Label2.Text));
String uzytkownik = Session["Uzytkownik"].ToString();
conn.Open();
objSqlCommand = new SqlCommand();
objSqlCommand.Connection = conn;
objSqlCommand.CommandType = CommandType.Text;
objSqlCommand.CommandText = "SELECT id FROM Uczniowie WHERE [nazwa_uzytkownika]=@uzytkownik";
 objSqlCommand.Parameters.AddWithValue("@uzytkownik", uzytkownik);
int id =int.Parse((objSqlCommand.ExecuteScalar().ToString()));
objSqlCommand.Parameters.AddWithValue("@id", id);
this.objSqlCommand.ExecuteNonQuery();
conn.Close();
0

Moze skorzystaj z konstrukcji insert into ... select from ...

0

a jak ma się dodawać jak tworzysz SqlCommand z insertem , wypelniasz, otwierasz polaczenie , tworzysz SqlCommand z selectem(nazwa ta sama).. Zaraz po otworzeniu poleczenia wykonaj pierwsza komendę ,a potem zrób selecta. Z resztą ten insert ,też jest troche bez sensu zrobiony ,bo chcesz 3 wartości wsadzić w 1 kolumnę...

0

już wszystko działa ;-)

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