Konfigurieren eines Datenbankservers für die Web Deploy-Veröffentlichung
von Jason Lee
In diesem Thema wird beschrieben, wie Sie einen SQL Server 2008 R2-Datenbankserver für die Unterstützung der Webbereitstellung und Veröffentlichung konfigurieren.
Die in diesem Thema beschriebenen Aufgaben sind für jedes Bereitstellungsszenario üblich – es spielt keine Rolle, ob Ihre Webserver für die Verwendung des IIS Web Deployment Tool (Web Deploy)-Remote-Agent-Diensts, des Web Deploy-Handlers oder der Offlinebereitstellung konfiguriert sind oder ob Ihre Anwendung auf einem einzelnen Webserver oder einer Serverfarm ausgeführt wird. Die Art und Weise, wie Sie die Datenbank bereitstellen, kann sich je nach Sicherheitsanforderungen und anderen Überlegungen ändern. Beispielsweise können Sie die Datenbank mit oder ohne Beispieldaten bereitstellen, und Sie können Benutzerrollenzuordnungen bereitstellen oder diese manuell nach der Bereitstellung konfigurieren. Die Konfiguration des Datenbankservers bleibt jedoch unverändert.
Sie müssen keine zusätzlichen Produkte oder Tools installieren, um einen Datenbankserver zur Unterstützung der Webbereitstellung zu konfigurieren. Wenn Sie davon ausgehen, dass Ihr Datenbankserver und Ihr Webserver auf unterschiedlichen Computern ausgeführt werden, müssen Sie einfach Folgendes ausführen:
- Erlauben Sie SQL Server, mithilfe von TCP/IP zu kommunizieren.
- Sql Server-Datenverkehr über alle Firewalls zulassen.
- Weisen Sie dem Webservercomputerkonto eine SQL Server-Anmeldung zu.
- Ordnen Sie die Computerkontoanmeldung allen erforderlichen Datenbankrollen zu.
- Weisen Sie dem Konto, das die Bereitstellung ausführt, eine SQL Server-Anmelde- und Datenbankerstellerberechtigung zu.
- Um wiederholte Bereitstellungen zu unterstützen, ordnen Sie die Anmeldung des Bereitstellungskontos der db_owner Datenbankrolle zu.
In diesem Thema erfahren Sie, wie Sie die einzelnen Verfahren ausführen. Bei den Aufgaben und exemplarischen Vorgehensweisen in diesem Thema wird davon ausgegangen, dass Sie mit einer Standardinstanz von SQL Server 2008 R2 beginnen, die unter Windows Server 2008 R2 ausgeführt wird. Bevor Sie fortfahren, stellen Sie folgendes sicher:
- Windows Server 2008 R2 Service Pack 1 und alle verfügbaren Updates werden installiert.
- Der Server ist einer Domäne beigetreten.
- Der Server verfügt über eine statische IP-Adresse.
- SQL Server 2008 R2 Service Pack 1 und alle verfügbaren Updates werden installiert.
Die SQL Server-Instanz muss nur die rolle Datenbank-Engine Services enthalten, die automatisch in jeder SQL Server-Installation enthalten ist. Um die Konfiguration und Wartung zu vereinfachen, empfehlen wir jedoch, dass Sie die Verwaltungstools – Grundlegende und Verwaltungstools – vollständige Serverrollen einschließen.
Hinweis
Weitere Informationen zum Hinzufügen von Computern zu einer Domäne finden Sie unter Hinzufügen von Computern zur Domäne und Anmeldung. Weitere Informationen zum Konfigurieren statischer IP-Adressen finden Sie unter Konfigurieren einer statischen IP-Adresse. Weitere Informationen zum Installieren von SQL Server finden Sie unter Installieren von SQL Server 2008 R2.
Aktivieren des Remotezugriffs auf SQL Server
SQL Server verwendet TCP/IP für die Kommunikation mit Remotecomputern. Wenn sich Ihr Datenbankserver und Ihr Webserver auf verschiedenen Computern befinden, müssen Sie:
- Konfigurieren Sie SQL Server-Netzwerkeinstellungen, um die Kommunikation über TCP/IP zuzulassen.
- Konfigurieren Sie alle Hardware- oder Softwarefirewalls so, dass TCP-Datenverkehr (und in einigen Fällen UDP-Datenverkehr) für die von der SQL Server-Instanz verwendeten Ports zulässig ist.
Verwenden Sie SQL Server-Konfigurations-Manager, um SQL Server für die Kommunikation über TCP/IP zu aktivieren, um die Netzwerkkonfiguration für Ihre SQL Server-Instanz zu ändern.
So aktivieren Sie SQL Server für die Kommunikation mit TCP/IP
Zeigen Sie im Startmenü auf "Alle Programme", klicken Sie auf Microsoft SQL Server 2008 R2, klicken Sie auf "Konfigurationstools", und klicken Sie dann auf SQL Server-Konfigurations-Manager.
Erweitern Sie im Strukturansichtsbereich die SQL Server-Netzwerkkonfiguration, und klicken Sie dann auf Protokolle für MSSQLSERVER.
Hinweis
Wenn Sie mehrere Instanzen von SQL Server installiert haben, wird für jede Instanz ein Element "Protokolle für[Instanzname]" angezeigt. Sie müssen Netzwerkeinstellungen auf Instanzbasis konfigurieren.
Klicken Sie im Detailbereich mit der rechten Maustaste auf die TCP/IP-Zeile , und klicken Sie dann auf "Aktivieren".
Klicken Sie im Dialogfeld "Warnung " auf "OK".
Sie müssen den MSSQLSERVER-Dienst neu starten, bevor die neue Netzwerkkonfiguration wirksam wird. Sie können dies an einer Eingabeaufforderung, über die Dienstkonsole oder über SQL Server Management Studio tun. In diesem Verfahren verwenden Sie SQL Server Management Studio.
Schließen Sie den SQL Server-Konfigurations-Manager.
Zeigen Sie im Startmenü auf "Alle Programme", klicken Sie auf Microsoft SQL Server 2008 R2, und klicken Sie dann auf SQL Server Management Studio.
Geben Sie im Dialogfeld "Mit Server verbinden" im Feld "Servername " den Namen des Datenbankservers ein, und klicken Sie dann auf "Verbinden".
Klicken Sie im bereich Objekt-Explorer mit der rechten Maustaste auf den übergeordneten Serverknoten (z. B. TESTDB1), und klicken Sie dann auf "Neu starten".
Klicken Sie im Dialogfeld "Microsoft SQL Server Management Studio " auf "Ja".
Wenn der Dienst neu gestartet wurde, schließen Sie SQL Server Management Studio.
Um SQL Server-Datenverkehr über eine Firewall zuzulassen, müssen Sie zuerst wissen, welche Ports Ihre SQL Server-Instanz verwendet. Dies hängt davon ab, wie die SQL Server-Instanz erstellt und konfiguriert wurde:
- Eine Standardinstanz von SQL Server lauscht (und antwortet auf) Anforderungen an TCP-Port 1433.
- Eine benannte Instanz von SQL Server lauscht (und antwortet auf) Anforderungen an einen dynamisch zugewiesenen TCP-Port.
- Wenn der SQL Server-Browserdienst aktiviert ist, können Clients den Dienst am UDP-Port 1434 abfragen, um herauszufinden, welcher TCP-Port für eine bestimmte SQL Server-Instanz verwendet werden soll. Dieser Dienst ist aus Sicherheitsgründen jedoch häufig deaktiviert.
Angenommen, Sie verwenden eine Standardinstanz von SQL Server, müssen Sie Ihre Firewall so konfigurieren, dass datenverkehr zulässig ist.
Direction | Vom Port | Portieren | Porttyp |
---|---|---|---|
Eingehend | Any | 1433 | TCP |
Ausgehend | 1433 | Any | TCP |
Hinweis
Technisch verwendet ein Clientcomputer einen zufällig zugewiesenen TCP-Port zwischen 1024 und 5000 für die Kommunikation mit SQL Server, und Sie können Ihre Firewallregeln entsprechend einschränken. Weitere Informationen zu SQL Server-Ports und Firewalls finden Sie unter TCP/IP-Portnummern, die für die Kommunikation mit SQL über eine Firewall erforderlich sind, und wie: Konfigurieren eines Servers zum Überwachen eines bestimmten TCP-Ports (SQL Server-Konfigurations-Manager).
In den meisten Windows Server-Umgebungen müssen Sie wahrscheinlich die Windows-Firewall auf dem Datenbankserver konfigurieren. Standardmäßig lässt die Windows-Firewall den gesamten ausgehenden Datenverkehr zu, es sei denn, eine Regel verbietet sie ausdrücklich. Damit Ihr Webserver Ihre Datenbank erreichen kann, müssen Sie eine eingehende Regel konfigurieren, die TCP-Datenverkehr für die von der SQL Server-Instanz verwendete Portnummer zulässt. Wenn Sie eine Standardinstanz von SQL Server verwenden, können Sie diese Regel mit dem nächsten Verfahren konfigurieren.
So konfigurieren Sie die Windows-Firewall so, dass die Kommunikation mit einer SQL Server-Standardinstanz zugelassen wird
Zeigen Sie auf dem Datenbankserver im Startmenü auf "Verwaltungstools", und klicken Sie dann auf "Windows-Firewall mit erweiterter Sicherheit".
Klicken Sie im Strukturansichtsbereich auf "Eingehende Regeln".
Klicken Sie im Bereich "Aktionen " unter "Eingehende Regeln" auf "Neue Regel".
Wählen Sie im Assistenten für neue eingehende Regel auf der Seite "Regeltyp" die Option "Port" aus, und klicken Sie dann auf "Weiter".
Stellen Sie auf der Seite "Protokoll und Ports " sicher, dass TCP ausgewählt ist, und geben Sie im Feld "Spezifische lokale Ports " den Wert 1433 ein, und klicken Sie dann auf "Weiter".
Lassen Sie auf der Seite "Aktion" die Option "Verbindung zulassen" ausgewählt, und klicken Sie auf "Weiter".
Lassen Sie auf der Profilseite "Domäne" aktiviert, deaktivieren Sie die Kontrollkästchen "Privat" und "Öffentlich", und klicken Sie dann auf "Weiter".
Geben Sie auf der Seite "Name " der Regel einen entsprechend beschreibenden Namen (z . B. SQL Server-Standardinstanz – Netzwerkzugriff), und klicken Sie dann auf "Fertig stellen".
Weitere Informationen zum Konfigurieren der Windows-Firewall für SQL Server, insbesondere wenn Sie mit SQL Server über nicht standardmäßige oder dynamische Ports kommunizieren müssen, finden Sie unter How to: Configure a Windows Firewall for Datenbank-Engine Access.
Konfigurieren von Anmelde- und Datenbankberechtigungen
Wenn Sie eine Webanwendung für Internetinformationsdienste (IIS) bereitstellen, wird die Anwendung mit der Identität des Anwendungspools ausgeführt. In einer Domänenumgebung verwenden Anwendungspoolidentitäten das Computerkonto des Servers, auf dem sie ausgeführt werden, um auf Netzwerkressourcen zuzugreifen. Computerkonten haben die Form [Domänenname]</strong>[Computername]$, z. B. FABRIKAM\TESTWEB1$. Damit Ihre Webanwendung über das Netzwerk auf eine Datenbank zugreifen kann, müssen Sie:
- Fügen Sie der SQL Server-Instanz eine Anmeldung für das Webservercomputerkonto hinzu.
- Ordnen Sie die Computerkontoanmeldung allen erforderlichen Datenbankrollen zu (in der Regel db_datareader und db_datawriter).
Wenn Ihre Webanwendung in einer Serverfarm statt auf einem einzelnen Server ausgeführt wird, müssen Sie diese Verfahren für jeden Webserver in der Serverfarm wiederholen.
Hinweis
Weitere Informationen zu Anwendungspoolidentitäten und zum Zugreifen auf Netzwerkressourcen finden Sie unter Anwendungspoolidentitäten.
Sie können diese Aufgaben auf unterschiedliche Weise angehen. Um die Anmeldung zu erstellen, können Sie eine der folgenden Aktionen ausführen:
- Erstellen Sie die Anmeldung manuell auf dem Datenbankserver mithilfe von Transact-SQL oder SQL Server Management Studio.
- Verwenden Sie ein SQL Server 2008 Server-Projekt in Visual Studio, um die Anmeldung zu erstellen und bereitzustellen.
Eine SQL Server-Anmeldung ist ein Objekt auf Serverebene und nicht ein Objekt auf Datenbankebene, sodass sie nicht von der Datenbank abhängig ist, die Sie bereitstellen möchten. Daher können Sie die Anmeldung jederzeit erstellen, und der einfachste Ansatz besteht häufig darin, die Anmeldung manuell auf dem Datenbankserver zu erstellen, bevor Sie mit der Bereitstellung von Datenbanken beginnen. Sie können das nächste Verfahren verwenden, um eine Anmeldung in SQL Server Management Studio zu erstellen.
So erstellen Sie eine SQL Server-Anmeldung für das Webservercomputerkonto
Zeigen Sie auf dem Datenbankserver im Startmenü auf "Alle Programme", klicken Sie auf Microsoft SQL Server 2008 R2, und klicken Sie dann auf SQL Server Management Studio.
Geben Sie im Dialogfeld "Mit Server verbinden" im Feld "Servername " den Namen des Datenbankservers ein, und klicken Sie dann auf "Verbinden".
Klicken Sie im Bereich Objekt-Explorer mit der rechten Maustaste auf "Sicherheit", zeigen Sie auf "Neu", und klicken Sie dann auf "Anmelden".
Geben Sie im Dialogfeld "Anmeldung – Neu" im Feld "Anmeldename" den Namen Ihres Webservercomputerkontos ein (z. B. FABRIKAM\TESTWEB1$).
Klicken Sie auf OK.
An diesem Punkt ist Ihr Datenbankserver bereit für die Web Deploy-Veröffentlichung. Alle von Ihnen bereitgestellten Lösungen funktionieren jedoch erst, wenn Sie die Computerkontoanmeldung den erforderlichen Datenbankrollen zuordnen. Das Zuordnen der Anmeldung zu Datenbankrollen erfordert viel mehr Gedanken, da Sie Rollen erst zuordnen können, nachdem Sie die Datenbank bereitgestellt haben. Um die Computerkontoanmeldung den erforderlichen Datenbankrollen zuzuordnen, können Sie eine der folgenden Aktionen ausführen:
- Weisen Sie die Datenbankrollen der Anmeldung manuell zu, nachdem Sie die Datenbank zum ersten Mal bereitgestellt haben.
- Verwenden Sie ein Skript nach der Bereitstellung, um die Datenbankrollen der Anmeldung zuzuweisen.
Weitere Informationen zum Automatisieren der Erstellung von Anmelde- und Datenbankrollenzuordnungen finden Sie unter Bereitstellen von Datenbankrollenmitgliedschaften in Testumgebungen. Alternativ können Sie das nächste Verfahren verwenden, um die Computerkontoanmeldung manuell den erforderlichen Datenbankrollen zuzuordnen. Denken Sie daran, dass Sie dieses Verfahren erst ausführen können, nachdem Sie die Datenbank bereitgestellt haben.
So ordnen Sie datenbankrollen der Anmeldung des Webservercomputerkontos zu
Öffnen Sie SQL Server Management Studio wie zuvor.
Erweitern Sie im Bereich Objekt-Explorer den Knoten "Sicherheit", erweitern Sie den Knoten "Anmeldungen", und doppelklicken Sie dann auf die Computerkontoanmeldung (z. B. FABRIKAM\TESTWEB1$).
Klicken Sie im Dialogfeld "Anmeldeeigenschaften " auf "Benutzerzuordnung".
Wählen Sie in der Dieser Anmeldetabelle zugeordneten Benutzer den Namen Ihrer Datenbank aus (z. B. ContactManager).
Wählen Sie in der Datenbankrollenmitgliedschaft für die Liste [Datenbankname] die erforderlichen Berechtigungen aus. Im Fall der Contact Manager-Beispiellösung müssen Sie die rollen db_datareader und db_datawriter auswählen.
Klicken Sie auf OK.
Während das manuelle Zuordnen von Datenbankrollen häufig mehr als ausreichend für Testumgebungen ist, ist es weniger wünschenswert, dass automatisierte oder einklick-Bereitstellungen in Staging- oder Produktionsumgebungen bereitgestellt werden. Weitere Informationen zum Automatisieren dieser Art von Aufgabe finden Sie unter Verwendung von Skripts nach der Bereitstellung in der Bereitstellung von Datenbankrollenmitgliedschaften in Testumgebungen.
Hinweis
Weitere Informationen zu Serverprojekten und Datenbankprojekten finden Sie unter Visual Studio 2010 SQL Server-Datenbankprojekte.
Konfigurieren von Berechtigungen für das Bereitstellungskonto
Wenn das Konto, das Sie zum Ausführen der Bereitstellung verwenden, kein SQL Server-Administrator ist, müssen Sie auch eine Anmeldung für dieses Konto erstellen. Um die Datenbank zu erstellen, muss das Konto Mitglied der Dbcreator-Serverrolle sein oder über gleichwertige Berechtigungen verfügen.
Hinweis
Wenn Sie Web Deploy oder VSDBCMD zum Bereitstellen einer Datenbank verwenden, können Sie Windows-Anmeldeinformationen oder SQL Server-Anmeldeinformationen verwenden (wenn Ihre SQL Server-Instanz für die Unterstützung der Authentifizierung im gemischten Modus konfiguriert ist). Im nächsten Verfahren wird davon ausgegangen, dass Sie Windows-Anmeldeinformationen verwenden möchten, aber es gibt nichts, das Sie daran hindert, einen SQL Server-Benutzernamen und ein Kennwort in Ihrer Verbindungszeichenfolge anzugeben, wenn Sie die Bereitstellung konfigurieren.
So richten Sie Berechtigungen für das Bereitstellungskonto ein
Öffnen Sie SQL Server Management Studio wie zuvor.
Klicken Sie im Bereich Objekt-Explorer mit der rechten Maustaste auf "Sicherheit", zeigen Sie auf "Neu", und klicken Sie dann auf "Anmelden".
Geben Sie im Dialogfeld "Anmeldung – Neu" im Feld "Anmeldename" den Namen Ihres Bereitstellungskontos ein (z. B. FABRIKAM\matt).
Klicken Sie im Seitenbereich "Auswählen" auf "Serverrollen".
Wählen Sie "dbcreator" aus, und klicken Sie dann auf "OK".
Um nachfolgende Bereitstellungen zu unterstützen, müssen Sie auch das Bereitstellungskonto der db_owner Rolle in der Datenbank nach der ersten Bereitstellung hinzufügen. Dies liegt daran, dass Sie bei nachfolgenden Bereitstellungen das Schema einer vorhandenen Datenbank ändern, anstatt eine neue Datenbank zu erstellen. Wie im vorherigen Abschnitt beschrieben, können Sie einer Datenbankrolle keinen Benutzer hinzufügen, bis Sie die Datenbank aus offensichtlichen Gründen erstellt haben.
So ordnen Sie die Anmeldeinformationen des Bereitstellungskontos der datenbankrolle db_owner zu
Öffnen Sie SQL Server Management Studio wie zuvor.
Erweitern Sie im fenster Objekt-Explorer den Knoten "Sicherheit", erweitern Sie den Knoten "Logins", und doppelklicken Sie dann auf die Computerkontoanmeldung (z. B. FABRIKAM\matt).
Klicken Sie im Dialogfeld "Anmeldeeigenschaften " auf "Benutzerzuordnung".
Wählen Sie in der Dieser Anmeldetabelle zugeordneten Benutzer den Namen Ihrer Datenbank aus (z. B. ContactManager).
Wählen Sie in der Liste "Datenbankrollenmitgliedschaft für: [Datenbankname]" die db_owner Rolle aus.
Klicken Sie auf OK.
Zusammenfassung
Ihr Datenbankserver sollte jetzt bereit sein, Remotedatenbankbereitstellungen zu akzeptieren und Remote-IIS-Webservern den Zugriff auf Ihre Datenbanken zu ermöglichen. Bevor Sie versuchen, Datenbanken bereitzustellen und zu verwenden, sollten Sie die folgenden wichtigen Punkte überprüfen:
- Haben Sie SQL Server so konfiguriert, dass Remote-TCP-/IP-Verbindungen akzeptiert werden?
- Haben Sie Firewalls so konfiguriert, dass SQL Server-Datenverkehr zugelassen wird?
- Haben Sie für jeden Webserver, der auf SQL Server zugreift, ein Computerkonto angemeldet?
- Enthält Ihre Datenbankbereitstellung ein Skript zum Erstellen von Benutzerrollenzuordnungen, oder müssen Sie diese manuell erstellen, nachdem Sie die Datenbank zum ersten Mal bereitgestellt haben?
- Haben Sie eine Anmeldung für das Bereitstellungskonto erstellt und der Dbcreator-Serverrolle hinzugefügt?
Weitere nützliche Informationen
Anleitungen zum Bereitstellen von Datenbankprojekten finden Sie unter Bereitstellen von Datenbankprojekten. Anleitungen zum Erstellen von Datenbankrollenmitgliedschaften durch Ausführen eines Skripts nach der Bereitstellung finden Sie unter Bereitstellen von Datenbankrollenmitgliedschaften in Testumgebungen. Anleitungen zur Erfüllung der eindeutigen Bereitstellungsanforderungen, die Mitgliedschaftsdatenbanken darstellen, finden Sie unter Bereitstellen von Mitgliedschaftsdatenbanken in Unternehmensumgebungen.