Hypercell ein ] Hypercell aus ] Zeige Navigation ] Verstecke Navigation ]
c++.de  
   

Die mobilen Seiten von c++.de:
http://m.c-plusplus.de
Infos hier [BETA]

  
c++.de :: C# und .NET ::  Der SSPI-Kontext kann nicht generiert werden - ??????     Zeige alle Beiträge auf einer Seite Auf Beitrag antworten
Autor Nachricht
physikus
Mitglied

Benutzerprofil
Anmeldungsdatum: 20.08.2007
Beiträge: 34
Beitrag physikus Mitglied 13:11:42 12.05.2012   Titel:   Der SSPI-Kontext kann nicht generiert werden - ??????            Zitieren

Hallo

Ich habe mit c# und ADO.NET ein kleines Programm geschrieben welches von Rechner A aus Daten von einer DB (SQL Server) vom Rechner B ausliest.

Prinzipiell funktioniert das.

Wenn ich nun keine Verbindung mehr zum Domönencontroller habe (Rechnername und IP in host datei einegtragen) bekomme ich folgenden Fehler zurück:

Der SSPI-Kontext kann nicht generiert werden

Was bedeutet dieser Fehler?
Und was kann ich tun um auch ohne den DC die Daten abrufen zu können?

Gruß
physikus
Mitglied

Benutzerprofil
Anmeldungsdatum: 20.08.2007
Beiträge: 34
Beitrag physikus Mitglied 13:20:24 12.05.2012   Titel:   Quellcode            Zitieren

Hier der Quellcode

C#:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
            Console.WriteLine("start\t");
            string connectionString = "Data Source=Rechner-B;Initial Catalog=Testpr08;" + "Integrated Security=true";
 
            // Provide the query string with a parameter placeholder
            string queryString = "SELECT testcolumn from dbo.testtable";
 
            // Create and open the connection in a using block. This
            // ensures that all resources will be closed and disposed
            // when the code exits.
            using (SqlConnection connection = new SqlConnection(connectionString))
            {
                // Create the Command and Parameter objects.
                SqlCommand command = new SqlCommand(queryString, connection);
                //x command.Parameters.AddWithValue("@pricePoint", paramValue);
 
                // Open the connection in a try/catch block.
                // Create and execute the DataReader, writing the result
                // set to the console window.
                try
                {
                    connection.Open();
                    SqlDataReader reader = command.ExecuteReader();
                    while (reader.Read())
                    {
                        Console.WriteLine("\t{0}",reader[0]);
                    }
                    reader.Close();
                    connection.Close();
                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex.Message);
                }
                Console.WriteLine("ende");
                Console.ReadLine()
hustbaer
Mitglied

Benutzerprofil
Anmeldungsdatum: 27.10.2006
Beiträge: 16035
Beitrag hustbaer Mitglied 20:28:02 12.05.2012   Titel:   Re: Der SSPI-Kontext kann nicht generiert werden - ??????            Zitieren

physikus schrieb:
Der SSPI-Kontext kann nicht generiert werden

Was bedeutet dieser Fehler?

Na komm, versuch bloss nicht dir selbst eine Antwort zu ergoogeln.
Davon abgesehen denk einfach mal nach... Rechner B will ein Domänen-Konto anmelden, der Domain Controller antwortet aber nicht. Könnte das vielleicht Probleme machen?

Zitat:
Und was kann ich tun um auch ohne den DC die Daten abrufen zu können?

Na z.B. SQL Server Accounts verwenden.

_________________
"Let there be Licht..." http://lichttools.sourceforge.net/
Sehr cooles ASCII Spiel (leider nicht von mir): ASCII-Scramble - http://www.roskakori.at/ascii/


Zuletzt bearbeitet von hustbaer am 20:31:12 12.05.2012, insgesamt 1-mal bearbeitet
xdxd
Unregistrierter




Beitrag xdxd Unregistrierter 21:08:20 12.05.2012   Titel:              Zitieren

Ich glaube er ist bei Google gebannnt.
physikus
Mitglied

Benutzerprofil
Anmeldungsdatum: 20.08.2007
Beiträge: 34
Beitrag physikus Mitglied 16:57:20 13.05.2012   Titel:   Re: Der SSPI-Kontext kann nicht generiert werden - ??????            Zitieren

Hallo

AUf die google Idee binn ich auch schon selbst gekommen.
zb http://support.microsoft.com/kb/925744/de
aber so richtig klar ist es mir nicht. Insbesondere warum der DC notwendig is wenn doch die Namensauflösung funktioniert.

AUch das mit dem SQL Server Account habe ich versucht. Allerdings auch ohne erfolg.

Gruß
hustbaer
Mitglied

Benutzerprofil
Anmeldungsdatum: 27.10.2006
Beiträge: 16035
Beitrag hustbaer Mitglied 18:32:00 13.05.2012   Titel:   Re: Der SSPI-Kontext kann nicht generiert werden - ??????            Zitieren

physikus schrieb:
Hallo

AUf die google Idee binn ich auch schon selbst gekommen.
zb http://support.microsoft.com/kb/925744/de

Äh. Ja. Das hat mit deinem Problem ja nix zu tun.
Zitat:
aber so richtig klar ist es mir nicht. Insbesondere warum der DC notwendig is wenn doch die Namensauflösung funktioniert.

Das hat doch mit Namensauflösung nix zu tun. Du könntest ja genau so gut die IP des SQL Servers in den Connection-String schreiben, DAS ist ja nicht das Problem.

Du willst dich mit nem Domänen-Account einloggen.
Der SQL Server will dann natürlich prüfen ob dein Account OK ist (Passwort stimmt, Account nicht gesperrt etc.)
Und dafür braucht er halt einen Domain-Controller.

Jetzt könnte man denken "aber ich bin doch schon lokal angemeldet, das muss ja reichen". Tut es aber nicht, weil der SQL Server nicht einfach irgendeiner Workstation vertrauen kann, die meint dass bei ihr User X angemeldet wäre, und das sei schon OK.

Die Workstation schickt also nochmal die nötigen Informationen an den SQL Server, und der fragt beim Domain-Controller nach ob das OK ist. Da der Domain-Controller aber nicht läuft, kann der SQL Server das nicht, und verweigert natürlich das Login.

BTW: Workstations merken sich das letzte Passwort (bzw. den Hash) der letzten paar Domänen-Accounts die sich lokal angemeldet haben, damit man sich auch ohne DC lokal anmelden kann. Der SQL Server tut das soweit ich weiss nicht, und da der SQL Server der Workstation wie gesagt nicht einfach so vertrauen kann, verweigert er in so einem Fall den Zugriff.

Das ist auch nicht wirklich SQL-Server spezifisch. Mit File-Servern, IIS oder ganz allgemein irgendwelchen Services die Domänen-Accounts zur Authentifizierung verwenden ist es das selbe: es geht nix, wenn der DC nicht läuft (bzw. nicht erreichbar ist).

Zitat:
AUch das mit dem SQL Server Account habe ich versucht. Allerdings auch ohne erfolg.

Schalte den SQL-Server auf "mixed mode" Authentication um, leg einem SQL-Server User an, gib ihm Rechte die Datenbank zu verwenden und stell eine Verbindung mit dem SQL-Server User her ("username=x;passwort=y;" statt "Integrated Security=true").
Dazu gibt's aber auch nur ca. 100.000 Beschreibungen im Inet, ich weiss nicht wie man es schaffen kann das nicht zu schaffen.

_________________
"Let there be Licht..." http://lichttools.sourceforge.net/
Sehr cooles ASCII Spiel (leider nicht von mir): ASCII-Scramble - http://www.roskakori.at/ascii/
physikus
Mitglied

Benutzerprofil
Anmeldungsdatum: 20.08.2007
Beiträge: 34
Beitrag physikus Mitglied 21:17:14 16.05.2012   Titel:   Es funktioniert            Zitieren

Zitat:

Die Workstation schickt also nochmal die nötigen Informationen an den SQL Server, und der fragt beim Domain-Controller nach ob das OK ist.


Das habe ich auch so verstanden, bzw hab mir das schon gedacht.

Zitat:


Zitat:
AUch das mit dem SQL Server Account habe ich versucht. Allerdings auch ohne erfolg.


Schalte den SQL-Server auf "mixed mode" Authentication um, leg einem SQL-Server User an, gib ihm Rechte die Datenbank zu verwenden und stell eine Verbindung mit dem SQL-Server User her ("username=x;passwort=y;" statt "Integrated Security=true").
Dazu gibt's aber auch nur ca. 100.000 Beschreibungen im Inet, ich weiss nicht wie man es schaffen kann das nicht zu schaffen.


Das hatte ich eigentlich auch so gemacht, mit dem einzigen Unterschied: "Integrated Security=true" habe ich nicht etfernt und es hat nicht funktioniert. Liegt es wirklich daran?

In der Zwischenzeit habe ich meinen DB Server (läuft auf VM) als DC hochgezogen. Nun habe ich auch auf meiner Testumgebung einen DC und habe das Problem umgangen.

Da jetzt der DB Server auch DC ist kann ich nur leider nicht mehr einfach testen ober es nun auch ohne DC funktionieren würde wenn ich "Integrated Security=true" weg lasse.

Trotzdem Danke an alle!!
c++.de :: C# und .NET ::  Der SSPI-Kontext kann nicht generiert werden - ??????   Auf Beitrag antworten

Zeige alle Beiträge auf einer Seite




Nächstes Thema anzeigen
Vorheriges Thema anzeigen
Sie können Beiträge in dieses Forum schreiben.
Sie können auf Beiträge in diesem Forum antworten.
Sie können Ihre Beiträge in diesem Forum nicht bearbeiten.
Sie können Ihre Beiträge in diesem Forum nicht löschen.
Sie können an Umfragen in diesem Forum nicht mitmachen.

Powered by phpBB © 2001, 2002 phpBB Group :: FI Theme

c++.de ist Teilnehmer des Partnerprogramms von Amazon Europe S.à.r.l. und Partner des Werbeprogramms, das zur Bereitstellung eines Mediums für Websites konzipiert wurde, mittels dessen durch die Platzierung von Werbeanzeigen und Links zu amazon.de Werbekostenerstattung verdient werden kann.

Die Vervielfältigung der auf den Seiten www.c-plusplus.de, www.c-plusplus.info und www.c-plusplus.net enthaltenen Informationen ohne eine schriftliche Genehmigung des Seitenbetreibers ist untersagt (vgl. §4 Urheberrechtsgesetz). Die Nutzung und Änderung der vorgestellten Strukturen und Verfahren in privaten und kommerziellen Softwareanwendungen ist ausdrücklich erlaubt, soweit keine Rechte Dritter verletzt werden. Der Seitenbetreiber übernimmt keine Gewähr für die Funktion einzelner Beiträge oder Programmfragmente, insbesondere übernimmt er keine Haftung für eventuelle aus dem Gebrauch entstehenden Folgeschäden.