MS-SQL Datenbankanbindung MS-SQL Datenbankanbindung INDEX _________________________________________________________________________________ Microsoft SQL Server Management Studio Express.......................2 Benutzer-Berechtigungen................................................................6 Verbindung zur Internet-Anwendung über ASP ..............................6 Verbindung zur Internet-Anwendung über ASP.NET.......................7 Verbindung zur Internet-Anwendung über PHP ..............................8 Verbindung zur Internet-Anwendung über Perl...............................9 Portieren einer bestehenden Access-Datenbank .........................10 Administration Ihrer Datenbank mit Microsoft Access ................17 Erstelldatum 15.01.08 Version 1.2 MS-SQL Datenbankanbindung Microsoft SQL Server Management Studio Express Mit der Software Microsoft SQL Server Management Studio Express, welche von Microsoft ( http://www.microsoft.com/downloads/details.aspx?FamilyId=C243A5AE-4BD1-4E3D-94B85A0F62BF7796&displaylang=en ) kostenlos bezogen werden kann, können Sie Ihre Datenbank administrieren. Klicken Sie auf New Query. Erstelldatum 15.01.08 / Version 1.2 / © green.ch Seite 2 von 19 MS-SQL Datenbankanbindung Tragen Sie den Servernamen ein, wechseln Sie auf SQL. Server Authentification und geben Sie die Zugangsdaten, welche Sie von unserer Administration erhalten haben, ein. Klicken Sie danach auf Connect. Nach einem Rechtsklick auf den Namen der Datenbank wählen Sie „Open in Object Explorer“. Um eine neue Tabelle zu erstellen, öffnen Sie Ihre Datenbank und wählen nach einem Rechklick „New Table“ aus. Sie gelangen direkt in die Entwurfsansicht einer neuen Tabelle und können Felder und Datentyp spezifizieren. Erstelldatum 15.01.08 / Version 1.2 / © green.ch Seite 3 von 19 MS-SQL Datenbankanbindung Unter Security –> Users können Sie Benutzer verwalten und Berechtigungen vergeben. Wenn beispielsweise der Besucher Ihrer Applikation über das Internet Daten hinzufügen können soll, können Sie hier dem _user die entsprechenden Berechtigungen erteilen. Erstelldatum 15.01.08 / Version 1.2 / © green.ch Seite 4 von 19 MS-SQL Datenbankanbindung Erstelldatum 15.01.08 / Version 1.2 / © green.ch Seite 5 von 19 MS-SQL Datenbankanbindung Benutzer-Berechtigungen Sie erhalten in den Zugangsdaten von unserer Administration drei Benutzer zugestellt, die Sie verwenden können und deren Berechtigungen nachfolgend erläutert werden. Die Benutzer und Passwörter können ansonsten über my.green.ch unter https://wadmin.green.ch unter SQL Database -> SQL Server -> Benutzer eingesehen werden. db123456_manager Dies ist der Besitzer der Datenbank (database owner) und hat die meisten Berechtigungen. Er muss verwendet werden, um neue Tabellen zu erstellen und für das Portieren einer bestehenden Datenbank. db123456_admin Dieser User hat standardmässig Lese- und Schreibrechte und kann verwendet werden, wenn zusätzlich zu einem Benutzer mit nur-Lese-Rechten, ein weiterer benötigt wird. Beispielsweise zum Hinzufügen von Daten nach einer Anmeldung im Admin-Bereich. db123456_user Für Applikationen, welche nur Lese-Rechte erfordern und keine Daten hinzufügen müssen, können Sie diesen User einsetzen, beispielsweise reine Informationsabfrage über eine Website. Verbindung zur Internet-Anwendung über ASP Damit Ihre Anwendung auf die Datenbankinhalte zugreifen kann, benötigen Sie einen connection-string, der Ihrer Anwendung den Speicherort der Datenbank mitteilt und in dem der Anwendung die Zugriffsberechtigung auf die Datenbank erteilt wird. Dieser sollte bei Internet-Anwendungen auf den public-user eingerichtet werden. Auf unseren Webservern wird kein ODBC-DSN (Data Source Name) eingerichtet, weshalb die Datenbank von Ihrer Applikation aus via OLEDB angesprochen werden muss. Den Servernamen sowie den jeweiligen Benutzernamen und das Passwort entnehmen Sie bitte Ihren Zugangsdaten, welche Sie von unserer Administration erhalten haben. Es ist sinnvoll, diesen Code in einer separaten Datei z.B. verbindung.asp abzuspeichern und sie per include in das jeweilige Script einzufügen, das Zugriff auf die Datenbank benötigt: <% Dim Str_connect Dim Connection Str_connect = "Provider=sqloledb;data source= sql3.mcis.agrinet.local;initial catalog=db123456;user id= db123456_user;password= 11111" Set Connection = Server.CreateObject("ADODB.Connection") Connection.Open Str_connect %> Der Kopf einer asp(Active Server Page)-Datei, die Zugriff auf Ihre db erhalten soll, könnte dann so aussehen: <%@ LANGUAGE="VBScript" %> <% Option Explicit %> <!--#include file="../include/verbindung.asp"--> <% Dim recordset ... Set recordset = Connection.Execute(“SELECT * FROM Tabelle”) Erstelldatum 15.01.08 / Version 1.2 / © green.ch Seite 6 von 19 MS-SQL Datenbankanbindung … %> Verbindung zur Internet-Anwendung über ASP.NET Für die Verbindung über ASP.NET benötigen Sie folgende Dateien im Verzeichnis Ihrer Applikation: Default.aspx: (wird aufgerufen und zeigt die Website an): <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="Sample2" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" > <head runat="server"> <title>my dropdown</title> </head> <body> <form id="form1" runat="server"> <asp:DropDownList ID="DropDown" runat="server"> </asp:DropDownList> </form> </body> </html> Default.aspx.cs (liest die Daten aus der Datenbank aus): using System; using System.Configuration; using System.Data; using System.Data.SqlClient; public partial class Sample2 : System.Web.UI.Page { private ConnectionStringSettings cs = System.Configuration.ConfigurationManager.ConnectionStrings["ConnString"]; private SqlConnection conn = null; protected void Page_Load(object sender, EventArgs e) { conn = new SqlConnection(cs.ConnectionString); conn.Open(); SqlCommand cmd = conn.CreateCommand(); cmd.CommandText = "SELECT Sample_Name FROM tblSample;"; cmd.CommandType = CommandType.Text; SqlDataReader reader = cmd.ExecuteReader(CommandBehavior.Default); while (reader.Read()) { Erstelldatum 15.01.08 / Version 1.2 / © green.ch Seite 7 von 19 MS-SQL Datenbankanbindung string text = reader.GetString(reader.GetOrdinal("Sample_Name")); this.DropDown.Items.Add(text); } conn.Close(); } } Web.config (stellt die Verbindung zum SQL-Server her): <?xml version="1.0"?> <configuration> <appSettings> </appSettings> <connectionStrings> <clear/> <add name="ConnString" connectionString="Data Source=sql3.mcis.agrinet.local;Initial Catalog=db123456;Persist Security Info=True;User ID=db607923_user;password=1111" /> </connectionStrings> <system.web> <customErrors mode="Off"/> <compilation debug="true" defaultLanguage="c#"></compilation> </system.web> </configuration> Falls Sie die Applikation in einen Unterordner Ihres Webs publizieren möchten, müssen Sie den Ordner für die Ausführung von aspx-Dateien freischalten und die Applikations-Isolation aktivieren. Dies können Sie im my.green.ch unter https://wadmin.green.ch -> greenHosting -> Ihre Domäne -> Web Verzeichnisse. Klicken Sie auf Neu, geben Sie das Verzeichnis in dem sich Ihre ASP-NET Applikation befindet an und aktivieren Sie „Scripts erlauben“ und „Applikations Isolation“. Verbindung zur Internet-Anwendung über PHP Die Verbindung zwischen Ihrer php-Applikation und Datenbank erfolgt über die php-mssql-Bibliothek. Das oben aufgeführte asp-script würde in php folgendermassen aussehen: <?php /* Variablen für connection-string deklarieren: hostname,databasename,username und passwort*/ $host = 'sql3.mcis.agrinet.local'; $db = 'db123456'; $user = 'db123456_user’; $pwd = '1111'; Erstelldatum 15.01.08 / Version 1.2 / © green.ch Seite 8 von 19 MS-SQL Datenbankanbindung /* Verbindung zum Datenbankserver herstellen $cn=mssql_connect($host,$user,$pwd); /* mit errorhandling: */ if (!$cn=mssql_connect($host,$user,$pwd)) { echo 'Keine Verbindung zum Datenbankserver möglich!<br>'; exit; } /* Datenbank wählen */ mssql_select_db($db,$cn); /* mit errorhandling: if (!mssql_select_db($db,$cn)) { echo 'Verbindung zur Datenbank nicht möglich!<br>'; exit; } */ /* sql-statment formulieren und ausführen */ $sql = "SELECT * from authors ORDER BY Tabname"; $result = mssql_query($sql); ?> Verbindung zur Internet-Anwendung über Perl Die Kommunikation zwischen Datenbank und Applikation erfolgt in perl üblicherweise mit dem dbi-modul. Unser Beispiel einschliesslich einer einfachen Ausgabe der gefundenen Ergebnisse sieht in perl folgendermassen aus: #!/usr/local/bin/perl use strict; use CGI qw(:standard); use DBI; my $dbuser = 'db123456_user'; my $dbpwd = '1111’; my $db = 'db123456'; my $host = ' sql3.mcis.agrinet.local'; my $connection = "driver={SQL Server};Server=$host;database=$db;uid=$dbuser;pwd=$dbpwd;"; print "Content-type: text/html\n\n"; print "<html>\n"; print "<head>\n"; print "<title>Test</title>\n"; print "</head>\n"; print "<body>\n"; my $dbh = DBI->connect( "dbi:ODBC:$connection", {RaiseError => 1, PrintError => 1, AutoCommit => 1} ) or die "Die Verbindung konnte nicht aufgebaut werden. Grund: " . $DBI::errstr . "\n"; print "<p>Verbindung zur $db-Datenbank auf dem MS SQL-Server $host unter perl erfolgreich aufgebaut</p>"; my $sql = "SELECT * from tabname"; my $sth = $dbh->prepare($sql); print "<table>\n"; print "<tr>\n"; Erstelldatum 15.01.08 / Version 1.2 / © green.ch Seite 9 von 19 MS-SQL Datenbankanbindung print "<td bgcolor=#EBEBEB>ID</td>\n"; print "<td bgcolor=#EBEBEB>Vorname</td>\n"; print "<td bgcolor=#EBEBEB>Nachname</td>\n"; print "</tr>\n"; $sth->execute(); while (my $ref = $sth->fetchrow_arrayref()) { print "<tr>\n"; print "<td><small>$ref->[0]</small></td>\n"; print "<td><small>$ref->[1]</small></td>\n"; print "<td><small>$ref->[2]</small></td>\n"; print "</tr>\n"; } print "</table>\n"; print "</html>"; $dbh->disconnect; Portieren einer bestehenden Access-Datenbank Falls Ihre Access-Datenbank (*.mdb) in einer älteren Access-Version erstellt wurde, speichern Sie diese bitte im Access 2002-2003-Dateiformat. Öffnen Sie Ihre zu portierende Datenbank, danach finden Sie den Wizard im Hauptmenü unter Extras, Datenbank-Dienstprogramme, Upsizing-Assistent. Wählen Sie die ‘Vorhandene Datenbank verwenden’. Erstelldatum 15.01.08 / Version 1.2 / © green.ch Seite 10 von 19 MS-SQL Datenbankanbindung Erstelldatum 15.01.08 / Version 1.2 / © green.ch Seite 11 von 19 MS-SQL Datenbankanbindung Wählen Sie weiter und unter Dateidatenquelle danach Neu. Wählen Sie SQL Server aus und klicken Sie auf Weiter. Erstelldatum 15.01.08 / Version 1.2 / © green.ch Seite 12 von 19 MS-SQL Datenbankanbindung Geben Sie den Namen für die DSN an. Geben Sie eine Beschreibung für Ihre Datenbank sowie den Namen des SQL-Servers ein. Wählen Sie „Mit SQL Server-Authentifizierung anhand des vom Benutzer eingegebenen Benutzernamens und Kennwortes und tragen Sie Ihre Zugangsdaten ein. Erstelldatum 15.01.08 / Version 1.2 / © green.ch Seite 13 von 19 MS-SQL Datenbankanbindung Es erscheinen abschliessend alle gesetzten Einstellungen. Mit „Datenquelle testen…“ lässt sich überprüfen, ob alle Optionen richtig gesetzt sind, was mit den beschriebenen Einstellungen funktionieren sollte: Der Database-owner (_Manager) besitzt die meisten Rechte und kann neue Tabellen anlegen. Da Sie mit dem Upsizing-Wizard neue Tabellen auf unserem Server anlegen müssen, melden Sie sich im folgenden Dialog mit seiner Kennung am Server an. Erstelldatum 15.01.08 / Version 1.2 / © green.ch Seite 14 von 19 MS-SQL Datenbankanbindung Wählen Sie aus Ihrer lokalen Access-Datenbank mit > bzw. >> die Tabellen, die Sie auf unserem Server einspielen wollen. Im nächsten Schritt wählen Sie, welche Tabellen-Attribute Sie portieren wollen. Wie Sie an den Auswahlmöglichkeiten erkennen, kann nahezu die gesamte Datenbanklogik auf SQL-Server übertragen werden. Sie haben die Möglichkeit zusätzlich zu den existierenden Tabellenfeldern ein timestamp-Feld einzufügen, das auf das aktuelle Datum gesetzt wird, sobald ein Datensatz bearbeitet wird. Erstelldatum 15.01.08 / Version 1.2 / © green.ch Seite 15 von 19 MS-SQL Datenbankanbindung Klicken Sie auf „Weiter“. Klicken Sie auf „Fertig stellen“. Am Ende wird ein Report des durchgeführten upsizing geliefert, mit dessen Hilfe Fehler untersucht und vermieden werden können. Erstelldatum 15.01.08 / Version 1.2 / © green.ch Seite 16 von 19 MS-SQL Datenbankanbindung Ihre Datenbank wir nun auf den SQL-Server portiert und kann danach mit dem Microsoft SQL Server Management Studio Express verwaltet werden. Administration Ihrer Datenbank mit Microsoft Access Wir empfehlen Ihnen die Verwaltung der Datenbank mit der Software Microsoft SQL Server Management Studio Express, welche von Microsoft kostenlos zur Verfügung gestellt wird. Sollten Sie Ihre Datenbank dennoch weiterhin über Microsoft Access verwalten, gehen Sie wie folgt vor. Unter Datei, Neu wählen Sie „Projekt aus bestehenden Daten“. Benennen Sie Ihr Datenbankprojekt (adp-Datei) mit einem frei gewählten Namen. Erstelldatum 15.01.08 / Version 1.2 / © green.ch Seite 17 von 19 MS-SQL Datenbankanbindung Sie kommen auf die Anmeldeseite – hier müssen Sie unseren Datenbankserver sowie Ihre LoginInformationen eingeben. Testen Sie die Verbindung. Erstelldatum 15.01.08 / Version 1.2 / © green.ch Seite 18 von 19 MS-SQL Datenbankanbindung Sollte die Verbindung nicht erfolgreich sein, müssen Sie ähnlich wie bei der ODBC-Verbindung dem System mitteilen, mit welchem Protokoll es mit dem Datenbankserver kommunizieren soll. Wählen Sie hierzu im Anmeldefenster den Reiter „Alle“ und editieren das Feld „Network Library“ mit dem Wert „dbmssocn“ – dies ist der Treiber für das TCP/IP-Protokoll. Nach erfolgreicher Anmeldung öffnet sich eine Arbeitsumgebung, die der von Access 2002-2003 sehr ähnelt. Innerhalb dieser Oberfläche können Sie Ihre Datenbank auf dem SQL-Server sehr komfortabel und ähnlich wie eine Access-Datenbank administrieren. Erstelldatum 15.01.08 / Version 1.2 / © green.ch Seite 19 von 19