Microsoft SQL Server

Anbieterhomepagehttp://www.microsoft.com/germany/sql/2008/default.mspx
Download-
Unterstützte Versionab Version 2005

Allgemeine Hinweise zur Installation

Voraussetzung ist eine Installation von Microsoft SQL Server in der Version 2005 oder 2008. Es werden alle Editionen unterstützt.

Damit alle Einstellungen und Berechtigungen korrekt vorgenommen werden, wird die Verwendung der in dieser Anleitung enthaltenen SQL-Skripte empfohlen. Alternativ können Sie die Datenbankkonfiguration aber auch über das SQL Server Management Studio vornehmen. Beide Wege werden auf dieser Seite erläutert.

JDBC-Treiber (Download)

JDBC Treiber Download

Anmerkung: Nach dem Download des JDBC-Treibers kopieren Sie bitte die Datei sqljdbc4.jar in das Verzeichnis <home-dir>/server/<server-name>/lib/.

Installationsschritte (Datenbank, Schema, Login und Benutzer):

Hilfreiche Informationen nach Neuinstallation des SQL Servers: http://www.infocaptor.com/dashboard/jdbc-with-sqlserver-connection-refused-connect

Mit Hilfe der folgenden Skripte können Sie die Datenbank, das Schema für Nuclos, einen SQL Server-Login sowie den Datenbankbenutzer erstellen. Diese Skripte können Sie entweder über das sqlcmd-Dienstprogramm oder über das SQL Server Management Studio ausführen. Beachten Sie bei Ausführung im SQL Server Management Studio, dass der SQLCMD-Modus gesetzt ist (Menüleiste -> Query -> SQLCMD Mode).

Achtung: Skripte nur für SQL Server 2005 lauffähig. Bitte ansonsten die manuelle Anleitung heranziehen.

 

Datenbank erstellen

Eine neue Datenbank kann über das folgende Skript erstellt werden. Tragen Sie den Namen der neuen Datenbank sowie das Verzeichnis ein, in dem die Datendateien der Datenbank zu speichern sind, z.B.:

setvar PARAM_DBNAME "NUCLOS"
setvar PARAM_DBPATH "C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Data"
:setvar PARAM_DBNAME "<Name der Datenbank, z.B. NUCLOS>"
:setvar PARAM_DBPATH "<Verzeichnis für Datendateien, z.B. C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Data>"
USE [[Master | master]]
GO
CREATE DATABASE [[$(PARAM_DBNAME) | $(PARAM_DBNAME)]]
ON 
( NAME = $(PARAM_DBNAME),
    FILENAME = '$(PARAM_DBPATH)\$(PARAM_DBNAME).mdf',
    SIZE = 11264KB,
    MAXSIZE = UNLIMITED,
    FILEGROWTH = 1024KB )
LOG ON
( NAME = $(PARAM_DBNAME)_log,
    FILENAME = '$(PARAM_DBPATH)\$(PARAM_DBNAME)_log.ldf',
    SIZE = 47616KB,
    MAXSIZE = 2048GB,
    FILEGROWTH = 10% )
COLLATE Latin1_General_CI_AS
GO
EXEC dbo.sp_dbcmptlevel @dbname=N'$(PARAM_DBNAME)', @new_cmptlevel=90
GO
IF (1 = FULLTEXTSERVICEPROPERTY('IsFullTextInstalled'))
begin
EXEC [[$(PARAM_DBNAME) | $(PARAM_DBNAME)]].[[Dbo | dbo]].[[Sp_fulltext_database | sp_fulltext_database]] @action = 'disable'
end
GO
ALTER DATABASE [[$(PARAM_DBNAME) | $(PARAM_DBNAME)]] SET ANSI_NULL_DEFAULT OFF 
GO
ALTER DATABASE [[$(PARAM_DBNAME) | $(PARAM_DBNAME)]] SET ANSI_NULLS OFF 
GO
ALTER DATABASE [[$(PARAM_DBNAME) | $(PARAM_DBNAME)]] SET ANSI_PADDING OFF 
GO
ALTER DATABASE [[$(PARAM_DBNAME) | $(PARAM_DBNAME)]] SET ANSI_WARNINGS OFF 
GO
ALTER DATABASE [[$(PARAM_DBNAME) | $(PARAM_DBNAME)]] SET ARITHABORT OFF 
GO
ALTER DATABASE [[$(PARAM_DBNAME) | $(PARAM_DBNAME)]] SET AUTO_CLOSE OFF 
GO
ALTER DATABASE [[$(PARAM_DBNAME) | $(PARAM_DBNAME)]] SET AUTO_CREATE_STATISTICS ON 
GO
ALTER DATABASE [[$(PARAM_DBNAME) | $(PARAM_DBNAME)]] SET AUTO_SHRINK OFF 
GO
ALTER DATABASE [[$(PARAM_DBNAME) | $(PARAM_DBNAME)]] SET AUTO_UPDATE_STATISTICS ON 
GO
ALTER DATABASE [[$(PARAM_DBNAME) | $(PARAM_DBNAME)]] SET CURSOR_CLOSE_ON_COMMIT OFF 
GO
ALTER DATABASE [[$(PARAM_DBNAME) | $(PARAM_DBNAME)]] SET CURSOR_DEFAULT  GLOBAL 
GO
ALTER DATABASE [[$(PARAM_DBNAME) | $(PARAM_DBNAME)]] SET CONCAT_NULL_YIELDS_NULL OFF 
GO
ALTER DATABASE [[$(PARAM_DBNAME) | $(PARAM_DBNAME)]] SET NUMERIC_ROUNDABORT OFF 
GO
ALTER DATABASE [[$(PARAM_DBNAME) | $(PARAM_DBNAME)]] SET QUOTED_IDENTIFIER OFF 
GO
ALTER DATABASE [[$(PARAM_DBNAME) | $(PARAM_DBNAME)]] SET RECURSIVE_TRIGGERS OFF 
GO
ALTER DATABASE [[$(PARAM_DBNAME) | $(PARAM_DBNAME)]] SET  DISABLE_BROKER 
GO
ALTER DATABASE [[$(PARAM_DBNAME) | $(PARAM_DBNAME)]] SET AUTO_UPDATE_STATISTICS_ASYNC OFF 
GO
ALTER DATABASE [[$(PARAM_DBNAME) | $(PARAM_DBNAME)]] SET DATE_CORRELATION_OPTIMIZATION OFF 
GO
ALTER DATABASE [[$(PARAM_DBNAME) | $(PARAM_DBNAME)]] SET TRUSTWORTHY OFF 
GO
ALTER DATABASE [[$(PARAM_DBNAME) | $(PARAM_DBNAME)]] SET ALLOW_SNAPSHOT_ISOLATION OFF 
GO
ALTER DATABASE [[$(PARAM_DBNAME) | $(PARAM_DBNAME)]] SET PARAMETERIZATION SIMPLE 
GO
ALTER DATABASE [[$(PARAM_DBNAME) | $(PARAM_DBNAME)]] SET  READ_WRITE 
GO
ALTER DATABASE [[$(PARAM_DBNAME) | $(PARAM_DBNAME)]] SET RECOVERY FULL 
GO
ALTER DATABASE [[$(PARAM_DBNAME) | $(PARAM_DBNAME)]] SET  MULTI_USER 
GO
ALTER DATABASE [[$(PARAM_DBNAME) | $(PARAM_DBNAME)]] SET PAGE_VERIFY CHECKSUM  
GO
ALTER DATABASE [[$(PARAM_DBNAME) | $(PARAM_DBNAME)]] SET DB_CHAINING OFF
GO

Um die Datenbank über die Werkzeuge des SQL Server Management Studios zu erzeugen, öffnen Sie den Dialog zur Neuanlage einer Datenbank über den Object Explorer. Bitte entnehmen Sie die vorzunehmenden Einstellungen dem oben dargestellten Skript.

Schema anlegen

Das folgende Skript benötigen Sie, um ein Schema für Nuclos in der zuvor erstellten Datenbank zu erstellen. Tragen Sie den Datenbank- und Schemanamen ein, z.B.:

setvar PARAM_DBNAME "NUCLOS"
setvar PARAM_SCHEMA "nuclos"
:setvar PARAM_DBNAME "<Name der Datenbank, z.B. NUCLOS>"
:setvar PARAM_SCHEMA "<Name des Schemas, z.B. nuclos>"
USE [[$(PARAM_DBNAME) | $(PARAM_DBNAME)]]
GO
IF NOT EXISTS (SELECT * FROM sys.schemas WHERE name = N'$(PARAM_SCHEMA)')
EXEC sys.sp_executesql N'CREATE SCHEMA [[$(PARAM_SCHEMA) | $(PARAM_SCHEMA)]] AUTHORIZATION [[Dbo | dbo]]'
GO

Alternativ kann auch das Schema über das SQL Server Management Studio erstellt werden. Rufen Sie hierfür den Dialog zur Neuanlage eines Schemas über den Object Explorer auf. Vergeben Sie einen Schemanamen und tragen Sie keinen Owner ein.

Login anlegen

Im nächsten Schritt wird ein Login benötigt, der mit Hilfe des folgenden Skripts zu erstellen ist. Tragen Sie hier den Namen der Datenbank, den Loginnamen sowie das gewünschte Passwort ein, z.B.:

setvar PARAM_DBNAME "NUCLOS"
setvar PARAM_LOGINNAME "nuclos"
setvar PARAM_LOGINPWD "hdz%42dl6!"
:setvar PARAM_DBNAME "<Name der Datenbank, z.B. NUCLOS>"
:setvar PARAM_LOGINNAME "<Loginname, z.B. nuclos>"
:setvar PARAM_LOGINPWD "<Loginpasswort>"
USE [[$(PARAM_DBNAME) | $(PARAM_DBNAME)]]
GO
CREATE LOGIN [[$(PARAM_LOGINNAME) | $(PARAM_LOGINNAME)]] WITH PASSWORD=N'$(PARAM_LOGINPWD)', DEFAULT_DATABASE=[[$(PARAM_DBNAME) | $(PARAM_DBNAME)]], DEFAULT_LANGUAGE=[[Deutsch | Deutsch]], CHECK_EXPIRATION=OFF, CHECK_POLICY=OFF
GO
EXEC sys.sp_addsrvrolemember @loginame = N'$(PARAM_LOGINNAME)', @rolename = N'bulkadmin'
EXEC sys.sp_addsrvrolemember @loginame = N'$(PARAM_LOGINNAME)', @rolename = N'dbcreator'
EXEC sys.sp_addsrvrolemember @loginame = N'$(PARAM_LOGINNAME)', @rolename = N'diskadmin'
EXEC sys.sp_addsrvrolemember @loginame = N'$(PARAM_LOGINNAME)', @rolename = N'processadmin'
EXEC sys.sp_addsrvrolemember @loginame = N'$(PARAM_LOGINNAME)', @rolename = N'securityadmin'
EXEC sys.sp_addsrvrolemember @loginame = N'$(PARAM_LOGINNAME)', @rolename = N'serveradmin'
EXEC sys.sp_addsrvrolemember @loginame = N'$(PARAM_LOGINNAME)', @rolename = N'setupadmin'
GO
ALTER LOGIN [[$(PARAM_LOGINNAME) | $(PARAM_LOGINNAME)]] ENABLE
GO

Um den Login mit Hilfe des SQL Server Management Studios zu erstellen, öffnen Sie den Dialog zur Neuanlage eines Logins. Vergeben Sie einen Loginnamen sowie ein Passwort und konfigurieren Sie die Passwortrichtlinien entsprechend. Wählen Sie anschließend auf der Seite [[[Server Roles | [Server Roles]]] die empfohlenen Rollen aus (siehe SQL-Skript). Bevor Sie den Login speichern, ordnen Sie auf der Seite [[[User Mapping | [User Mapping]]] den Login der Datenbank und dem passenden Schema zu. Dadurch wird automatisch ein Benutzer mit identischem Namen erstellt. Wählen Sie neben der Rolle [[[public | [public]]] auch die Rolle [[[db_owner | [db_owner]]] für diese Zuordnung aus.

Benutzer und Berechtigungen anlegen

Abschließend muss ein Datenbankbenutzer für den erstellten Login mit entsprechenden Berechechtigungen angelegt werden. Tragen Sie hier den Datenbank-, schema- und Loginnamen ein, z.B.:

setvar PARAM_DBNAME "NUCLOS"
setvar PARAM_SCHEMA "nuclos"
setvar PARAM_LOGINNAME "nuclos"
:setvar PARAM_DBNAME "<Name der Datenbank, z.B. NUCLOS>"
:setvar PARAM_SCHEMA "<Name des Schemas, z.B. nuclos>"
:setvar PARAM_LOGINNAME "<Loginname, z.B. nuclos>"
USE [[$(PARAM_DBNAME) | $(PARAM_DBNAME)]]
GO
CREATE USER [[$(PARAM_LOGINNAME) | $(PARAM_LOGINNAME)]] FOR LOGIN [[$(PARAM_LOGINNAME) | $(PARAM_LOGINNAME)]] WITH DEFAULT_SCHEMA=[[$(PARAM_SCHEMA) | $(PARAM_SCHEMA)]]
GO
GRANT BACKUP DATABASE TO [[$(PARAM_LOGINNAME) | $(PARAM_LOGINNAME)]]
GRANT BACKUP LOG TO [[$(PARAM_LOGINNAME) | $(PARAM_LOGINNAME)]]
GRANT CREATE FUNCTION TO [[$(PARAM_LOGINNAME) | $(PARAM_LOGINNAME)]]
GRANT CREATE PROCEDURE TO [[$(PARAM_LOGINNAME) | $(PARAM_LOGINNAME)]]
GRANT CREATE SCHEMA TO [[$(PARAM_LOGINNAME) | $(PARAM_LOGINNAME)]]
GRANT CREATE SYNONYM TO [[$(PARAM_LOGINNAME) | $(PARAM_LOGINNAME)]]
GRANT CREATE TABLE TO [[$(PARAM_LOGINNAME) | $(PARAM_LOGINNAME)]]
GRANT CREATE VIEW TO [[$(PARAM_LOGINNAME) | $(PARAM_LOGINNAME)]]
GRANT DELETE TO [[$(PARAM_LOGINNAME) | $(PARAM_LOGINNAME)]]
GRANT EXECUTE TO [[$(PARAM_LOGINNAME) | $(PARAM_LOGINNAME)]]
GRANT INSERT TO [[$(PARAM_LOGINNAME) | $(PARAM_LOGINNAME)]]
GRANT REFERENCES TO [[$(PARAM_LOGINNAME) | $(PARAM_LOGINNAME)]]
GRANT SELECT TO [[$(PARAM_LOGINNAME) | $(PARAM_LOGINNAME)]]
GRANT UPDATE TO [[$(PARAM_LOGINNAME) | $(PARAM_LOGINNAME)]]
GRANT VIEW DATABASE STATE TO [[$(PARAM_LOGINNAME) | $(PARAM_LOGINNAME)]]
GRANT VIEW DEFINITION TO [[$(PARAM_LOGINNAME) | $(PARAM_LOGINNAME)]]
GO
ALTER AUTHORIZATION ON SCHEMA::$(PARAM_SCHEMA) TO $(PARAM_LOGINNAME);
GO

Falls Sie die Neuanlage des Logins über das Management Studio vorgenommen haben, müssen Sie keinen neuen Benutzer erstellen, sondern lediglich die Berechtigungen für diesen User vergeben. Dies erfolgt an zwei unterschiedlichen Stellen. Öffnen Sie zunächst die Eigenschaften der Datenbank, die Sie für Nuclos verwenden möchten. Dort wählen Sie auf der Seite Permissionsfür den automatisch erstellten Benutzer die folgenden Berechtigungen aus: BACKUP DATABASE, BACKUP LOG, CREATE FUNCTION, CREATE PROCEDURE, CREATE SCHEMA, CREATE SYNONYM, CREATE TABLE, CREATE VIEW, VIEW DATABASE STATE und VIEW DEFINITION. Zudem DELETE, EXECUTE, INSERT, REFERENCES, SELECT und UPDATE.

Im nächsten Schritt müssen die Berechtigungen für das Schema konfiguriert werden. Klicken Sie im Object Explorer mit rechts auf das erstellte Schema und wechseln Sie auf die Seite Permissions. Dort tragen Sie für den automatisch erstellten Datenbankbenutzer die Berechtigungen, wie in der Abbildung unten dargestellt, ein.

Anpassen der nuclos.xml

Als Letztes müssen Sie noch die Datenbank-Einstellungen in der nuclos.xml an Ihre Konfiguration anpassen:

<adapter>mssql
<connection-url>jdbc:sqlserver://localhost:1433;#1#2DatabaseName=<database> (Schritt 1)
<user>, <password>Login und Passwort (Schritt 3)
<schema>Schema-Name (Schritt 2)
<tablespace>Bitte leer lassen

#1 localhost:1433 sind durch den Namen/IP-Addreesse und Port Ihres Datenbank-Servers zu ersetzen (siehe MSDN).

#2 Zur Unterstützung von Named Instances tragen Sie den Instanznamen durch einen Backslash getrennt nach der IP bzw. dem Hostnamen ein (siehe MSDN, z.B.: jdbc:sqlserver://localhost\<instance>:1433;DatabaseName=<database>

Alternative: Skriptgesteuerte Anlage der Datenbank für Nuclos

USE [master]
GO

CREATE DATABASE [nuclos_db]
GO

CREATE LOGIN [nuclos_user] WITH  PASSWORD=N'nuclos_password',
	DEFAULT_DATABASE=[nuclos_db],
	CHECK_POLICY=OFF
GO

USE [nuclos_db]
GO

CREATE USER [nuclos_user] FOR LOGIN [nuclos_user]
GO

ALTER USER [nuclos_user] WITH DEFAULT_SCHEMA=[nuclos_schema]
GO

CREATE SCHEMA [nuclos_schema] AUTHORIZATION [nuclos_user]
GO

EXEC sp_addrolemember N'db_owner', N'nuclos_user'
GO

Sonstige Informationen

Für den Fall, dass Sie eine Sicherung Ihrer Datenbank wiederherstellen möchten, muss der erstellte Login nach erfolgtem Restore wieder dem Benutzer der Datenbank zugeordnet werden. Dies ist über folgenden Befehl möglich (siehe MSDN):

sp_change_users_login 'Update_One', '<Benutzername>', '<Loginname>'
GO