Wie kann ich von einem anderen Computer, der mit derselben Arbeitsgruppe verbunden ist, auf eine SQL Server-Datenbank zugreifen?

11

Ich habe eine C # -Anwendung erstellt, die eine SQL Server-Datenbank verwendet. Ich habe andere Computer in einer Arbeitsgruppe mit mir und untereinander verbunden. Ich habe meine C # -Anwendung mit anderen geteilt. Wenn sie die Anwendung öffnen, erhalten sie den Fehler

Beim Herstellen einer Verbindung zu SQL Server ist ein netzwerkbezogener oder instanzspezifischer Fehler aufgetreten. Der Server wurde nicht gefunden oder war nicht zugänglich

Aber die Anwendung funktioniert gut auf meinem PC. Die Verbindungszeichenfolge, die ich verwende, ist

Data Source=ASHISHPC1\SQLEXPRESS;Initial Catalog=ACW;User ID=ash159;Password=ashish159

welches in einer .configDatei gespeichert ist .

Die Anwendung funktioniert gut auf meinem PC. Was muss ich tun? Ich habe TCP / IP auf dem Server aktiviert, aber der gleiche Fehler bleibt bestehen. Einige Änderungen in der Verbindungszeichenfolge oder etwas anderes?

Gemeinschaft
quelle
1
Versuchen Sie, die IP-Adresse für 'Datenquelle' zu verwenden
Mitch Wheat
1
Versuchen Sie, die Windows-Firewall auszuschalten. Überprüfen Sie auch technet.microsoft.com/en-us/library/hh231672.aspx. Dies sollte für Sie funktionieren.
3
Das Ausschalten der Windows-Firewall ist nicht erforderlich - bitte hören Sie auf, diesen Mythos zu verbreiten! Siehe meine Antwort unten.
Jon Seigel

Antworten:

17

Es gibt zwei Sicherheitsstufen, die geändert werden müssen, um den Remotezugriff zu ermöglichen.

  1. SQL Server-Konfiguration . In den Editionen Express, Developer und Enteprise Evaluation ist die Verbindung über das TCP / IP-Protokoll standardmäßig deaktiviert . Aktivieren Sie dies mit SQL Server Configuration Manager.

  2. Windows-Firewall . Während das vollständige Deaktivieren der Firewall für diese Komponente funktioniert , ist dies keine bewährte Sicherheitsmethode (und auch nicht erforderlich). (Hinweis: In diesem Abschnitt gehe ich von einer Standardkonfiguration aus . Es können viele Einstellungen geändert werden, die sich geringfügig auf diese Schritte auswirken.)

    Abhängig vom Typ der SQL Server-Instanz, zu der Sie eine Verbindung herstellen, gibt es zwei Fälle:

    1. Standardinstanz (Verbindung nur über den Computernamen). Fügen Sie eine Zulassungsregel für eingehende Nachrichten entweder am TCP-Port 1433 oder am Datenbankmoduldienst hinzu.

    2. Benannte Instanz (Verbindung über Computername + Instanzname). Fügen Sie am UDP-Port 1434 eine Zulassungsregel für eingehenden Zugriff auf den SQL Browser-Dienst hinzu. Fügen Sie dem Datenbankmodul-Dienst eine Regel zum Zulassen eingehender Nachrichten hinzu.

Dieses Verfahren ist vollständig dokumentiert hier , oder Sie können mir erklären , beobachten und dann durch die Konfiguration für eine benannte Instanz gehen hier .

Jon Seigel
quelle
0

Sie müssen die richtigen Netzwerkeinstellungen in Ihrem SQL-Server festlegen: Active TCP / IP in SQL-Server Stellen Sie außerdem sicher, dass Ihr Server-Browser-Dienst ausgeführt wird, da Sie nicht auf den SQL-Server zugreifen können, wenn er gestoppt wird. Server.

BendEg
quelle
0

Stellen Sie sicher, dass der SQLBrowser-Dienst wie von Bendeg erwähnt aktiviert ist und dass UDP 1434 auf Ihrem Computer geöffnet ist, damit Clients den SQLBrowser-Server aufrufen können, um den Namen aufzulösen. Öffnen Sie auch den TCP / IP-Port der benannten Instanz.

Um den Port Ihrer Instanz zu finden, stellen Sie eine Verbindung mit dem Präfix tcp: in Management Studio wie folgt her: tcp: ASHISHPC1 \ SQLEXPRESS. Das Ergebnis der folgenden Abfrage sollte der Port sein, den Sie für die Clients in Ihrer Arbeitsgruppe bereitstellen müssen.

SELECT local_tcp_port FROM sys.dm_exec_connections WHERE session_id = @@SPID
Robert Gannon
quelle
-1

Ich habe die Windows-Firewall für das Heimnetzwerk ausgeschaltet und es hat gut funktioniert. Vielen Dank an alle .. :)

user27553
quelle
5
Wenn dies Ihre Frage war, sollten Sie sich hier mit denselben Anmeldeinformationen anmelden, die Sie auf der ursprünglichen Site verwendet haben ( Stapelüberlauf ), damit Sie hier Eigentümer der Frage werden.
Jcolebrand