swonson Geschrieben 8. Juli 2010 Geschrieben 8. Juli 2010 Guten Abend Freunde, ich habe folgendes Problem, ich möchte ein Programmschreiben, welches biliebige Daten in eine SQL Datenbank schreibt, welche auf meinem Rootserver liegt. Heißt, mein Program soll Daten über eine Internetverbindung in eine Datenbank eintragen. Ich habe es so versucht: SqlConnection con = new SqlConnection(); con.ConnectionString = "Data Source=www.domain.de;" + "Initial Catalog=DM-Name;" + "User ID=user;" + "Password=pw"; // SQL-Befehl string strSQL = "INSERT INTO test(Feld1, Feld2) " + "VALUES('Test1','Test2')"; con.Open(); SqlCommand cmd = new SqlCommand(strSQL, con); // Kommando absetzen cmd.ExecuteNonQuery(); con.Close(); Er sagt mir immer Server existiert nicht oder zugriff verweigert. Ich kenne die seite connectionstrings bereit, weiss allerdings nicht wirklich welchen ich benutzen soll. Kann mir jemand weiter helfen, wie ich dieses Problem zu lösen habe oder vielleicht irgendwelche wirklich hilfreichen seiten. Ich hab bei google nicht gefunden, was mit einem Internetsqlserver funktioniert. Ich danke euch für eure Hilfe. gruß der swonson Zitieren
Klotzkopp Geschrieben 8. Juli 2010 Geschrieben 8. Juli 2010 Ich hab bei google nicht gefunden, was mit einem Internetsqlserver funktioniert.Vermutlich, weil der Begriff "Internetsqlserver" totaler Käse ist. Was für ein DBMS ist es denn? Und ist dein Server überhaupt so eingerichtet, dass die Datenbank direkt von außen erreichbar ist? Das wäre eher ungewöhnlich. Zitieren
swonson Geschrieben 9. Juli 2010 Autor Geschrieben 9. Juli 2010 Guten Morgen Klotzkopp, natürlich habe ich diese äußerst fragwürdige Wort nicht bei der googlesuche verwendet. Dein Einwand ist berächtigt und ich muss ehrlich gestehen ich weiss es nicht. Weisst du, wie ich die von dir "verlangten" Informationen erhalte? grüße der Swonson Zitieren
swonson Geschrieben 9. Juli 2010 Autor Geschrieben 9. Juli 2010 (bearbeitet) .... hilft das? MySQL version 5.0.45... --- Ich habe es jetzt mal mit einer ip und den port zum server versucht, da kommt folgendes, vielleicht ist es ja hilfreich.. Netzwerkbezogener oder instanzspezifischer Fehler beim Herstellen einer Verbindung mit SQL Server. Der Server wurde nicht gefunden, oder auf ihn kann nicht zugegriffen werden. Überprüfen Sie, ob der Instanzname richtig ist und ob SQL Server Remoteverbindungen zulässt. (provider: SQL-Netzwerkschnittstellen, error: 25 - Verbindungszeichenfolge ungültig) Bearbeitet 9. Juli 2010 von swonson Zitieren
Klotzkopp Geschrieben 9. Juli 2010 Geschrieben 9. Juli 2010 MySQL version 5.0.45... Das ist schon mal besser als "Internet SQL" Die entscheidende Frage ist aber immer noch, ob der MySQL-Server überhaupt von außen erreichbar ist. Üblicherweise will man genau das nämlich aus Sicherheitsgründen verhindern. Bist du der Administrator dieses Servers? Falls nein, sprich das bitte mit dem Admin ab. Und selbst wenn du den Server so konfigurierst, dass er von außen erreichbar ist, brauchst du wohl noch den hier: MySQL :: Download Connector/Net. Aber wie gesagt, die Erreichbarkeitsfrage ist die entscheidende. Zitieren
swonson Geschrieben 9. Juli 2010 Autor Geschrieben 9. Juli 2010 Ja der Server gehört mir. Ist die Sicherheit wirklich so gefährdet, durch diese erlaubnis? Okay vielleicht hast du ja eine andere wie ich das lösen kann. Ich will ein Program schreiben, welches auf einem Server läuft (dort werden alle Prozesse laufen). Dieses Program soll aber eben so ein Webinterface haben worüber man es steuern kann... Daher auch die idee, das beide "Zugriffmöglichkeiten: Webinterface und Desktop" die gleiche db haben und sie folglich im Internet liegen sollte. Hast du dazu vielleicht eine andere idee, die mein Problem lösen könnte. In meinen Rootservereintsellungen steht als host zwar immer localhost, aber bei dem Punkt Zugriff ist "alles hosts" ausgewählt... kann das schonmal das richtige sein ?! Zitieren
Klotzkopp Geschrieben 9. Juli 2010 Geschrieben 9. Juli 2010 Ja der Server gehört mir. Ist die Sicherheit wirklich so gefährdet, durch diese erlaubnis?Du öffnest dadurch die komplette Funktionalität des DBMS nach außen (z.B. Tabellen löschen, Benutzerrechte ändern), und dein einziger Schutz sind Benutzername und Passwort. Wenn du nur lokale Zugriffe über eine Anwendung auf dem Server erlaubst, kannst du eine definierte Schnittstelle schaffen und nur das erlauben, was für den Betrieb notwendig ist. Okay vielleicht hast du ja eine andere wie ich das lösen kann. Ich will ein Program schreiben, welches auf einem Server läuft (dort werden alle Prozesse laufen). Dieses Program soll aber eben so ein Webinterface haben worüber man es steuern kann... Daher auch die idee, das beide "Zugriffmöglichkeiten: Webinterface und Desktop"Das verstehe ich nicht. Was meinst du mit "Desktop"? Wenn das Programm auf dem Server läuft, greift es nicht über das Internet zu. Zitieren
swonson Geschrieben 9. Juli 2010 Autor Geschrieben 9. Juli 2010 Okay ich erkläre das mal. Ich möchte ein eProgrammschreiben, welches bei mir zuhause auf meinem Computer läuft. Soll Datenverwalten. Nun möchte ich dieses Program, welches bei mir zuhasue auf dem Pc läuft über ein Webinterface steuern. Da das Program auf meinem Rechner läuft und die Webseite auf meinem Rootserver, brauchen sie ja eine gemeinsame DB... meine Idee war es, eine DB auf meinem Rootserver zu erstellen... Damit muss das Orgram ja per ip auf diese DB zu greifen.. Ich habe den Connector installiert... aber der Zugriff geht noch immer nicht. Zitieren
swonson Geschrieben 9. Juli 2010 Autor Geschrieben 9. Juli 2010 so es geht... mein DB server hat diese einstellung für den Remotezugriff die ganze zeit gehabt, leider habe ich noob nicht an die Firewall gedacht... Danke für den Tipp mit dem Connector... war aufjedenfall super. Ich werde jetzt mal weiter sehen, ob ich irgendetwas nicht hinbekommen, was das SELECT statement angeht... danke nochmal Zitieren
Gateway_man Geschrieben 9. Juli 2010 Geschrieben 9. Juli 2010 Naja ne Datenbank nur lokal laufen zu lassen ist evtl für Testzwecke nützlich, aber in der Regel nutzt man ja so ein Konstrukt um von überall aus Daten abrufen zu können. Was aufjedenfall empfehlenswert ist, sofern du die SQL Instanz übers öffentliche Netz laufen lassen willst: --> Ändern des Listener Ports (Standart ist gefährlich (ist ja Public)) --> Standartuser löschen (bei mysql wäre das AFAIK root) Zu den Verbindungsproblemen: Wenn du per C Sharp drauf zugreifen möchstest, empfehle ich dir das über ODBC abzuwickeln. Treiber gibts hier ! Und das wäre dann der Connectionstring in C Sharp und als beispiel ein simpler Select Befehl: using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using System.Data.Odbc; namespace WindowsFormsApplication1 { public partial class Form1 : Form { private OdbcConnection con = new OdbcConnection("Server=myServerAddress(IP);Database=myDataBase(DBName);Uid=myUsername;Pwd=myPassword;"); public Form1() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { OdbcCommand cmd = new OdbcCommand(); cmd.Connection = con; cmd.CommandText = "SELECT * From [Table]"; DataTable dt = new DataTable(); OdbcDataAdapter ada = new OdbcDataAdapter(cmd); ada.Fill(dt); } } } Lg Gateway Zitieren
swonson Geschrieben 9. Juli 2010 Autor Geschrieben 9. Juli 2010 Vielen Dank für deine Hilfe und deinem Tipp. Warum würdest du es über ODBC abwickeln, wenn ich fragend darf? Wie man ja schon bemerkt hat kenne ich mich da nicht so aus. Grüße der Swonson Zitieren
flashpixx Geschrieben 9. Juli 2010 Geschrieben 9. Juli 2010 Ich sehe noch das Problem, dass die Daten unverschlüsselt übertragen werden. Gerade die Authentifizierungsdaten sind unverschlüsselt. Ich würde evtl das ganze per SSL tunneln oder einen Webservice o.ä. dazwischen legen, so dass die Kommunikation verschlüsselt abläuft Zitieren
Gateway_man Geschrieben 9. Juli 2010 Geschrieben 9. Juli 2010 Ganz einfach, weil der MySQL Connector, welchen du installiert hast, nichts weiter ist als ein ODBC Treiber. Dieser beschreibt die jeweiligen Zugriffsverfahren, etc. auf das DBMS. Wenn du wissen willst, welche ODBC Treiber bereits auf deinem Rechner installiert sind, kannst du das unter: Systemsteuerung -> Verwaltung -> Datenquellen(ODBC) Und dann auf die Registerkarte Treiber. Lg Gateway PS: Es gibt viele ODBC Treiber für alle möglichen Datentypen (bsp. *.csv, etc.) sowie DBMS , welche dem Entwickler Zugriffe und Abfragen wesentlich erleichtern. Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.