19.04.2023

MS SQL Server

MS SQL Server / MSDE
MySQL Server
PostqreSQL
Pervasive PSQL
sonstiges

Navigation:

Links
MSSQL Server Forum
Berechtigung der Rollen auf Serverebene (MSSQL2014)
Berechtigung der Rollen auf Datenbankebene (MSSQL2014)
Berechtigung der Rollen auf Datenbankebene (MSSQL2008)
KB 272318 Transaktion Protokoll verkleinern
KB224071 SQL Datenbank verschieben
SQLmaint
MSSQL Hilfe alle Versionen
MSSQL Server Build Versionsübersicht

Download
MSDE 2000
MS SQL Server 2005 Express Edition SP4
MS SQL Server 2008 Express SP1
Microsoft® SQL Server® 2008 R2 Service Pack 3 v.10.50.6000.34
Microsoft® SQL Server® 2008 R2 SP2 - Express Edition v.10.50.4000.0
Microsoft SQL Server 2008 R2 RTM – Express mit Verwaltungstools v.10.50.1600.1
Microsoft SQL Server 2008 R2 RTM – Express mit Advanced Services v.10.50.1600.1
Microsoft SQL Server 2008 R2 Management Studio Express (SSMSE) v.10.50.1600.1
Microsoft SQL Server 2012 SP3 Express v.11.0.6598.0
Microsoft SQL Server 2014 Express v.12.0.2000.8
Microsoft SQL Server 2014 Express SP2 v.12.0.5546.0
Microsoft SQL Server 2016 Express SP2 v.13.0.5026.0
Microsoft SQL Server 2017 Express v.14.0.1000.169
Microsoft SQL Server 2019 Express v.15.0.2000.5
SQL Server 2019
SQL Server Management Studio (SSMS) v.15.0.18424.0
Access Runtime 2007
SQL Feature Pack/SQL Native Client 2005
SQL Feature Pack/SQL Native Client 2008
SQL Feature Pack/SQL Native Client 2008 R2
Microsoft® SQL Server® 2012 Native Client – QFE

Seitenanfang

Installation

MSDE2000

den Download entpacken nach z.B. C:\Temp\MSDE. Dann die Installation starten durch

setup.exe /settings setup.ini
[Options]
SECURITYMODE=SQL
UPGRADEUSER=sa
BLANKSAPWD=1
INSTANCENAME="SQLDATA"
DISABLENETWORKPROTOCOLS=0

oder

setup.exe SAPWD="AStrongPassword" SECURITYMODE=SQL INSTANCENAME="SQLDATA"

Microsoft SQL Server 2014-Setup

Fehlermeldung nach der Installation:
Fehler beim Warten auf das Wiederherstellungshandle des Datenbankmoduls. Überprüfen Sie das SQL Server-Fehlerprotokoll auf die möglichen Ursachen.

Lösung, den Diensten folgende Konten zuweisen:
SQL Server-Datenbankmodul NT Service\MSSQL$SQLEXPRESS
SQL Server-Datenbankmodul NT-AUTORITÄT\Netzwerkdienst

 

Seitenanfang

MSSQL Express mit Netzwerk

SQL2008

alle Programme | Microsoft SQL Server | Konfigurationstools | SQL Server-Konfigurations-Manager
SQL Server xxxx-Dienste | SQL Server-Browser: starten
SQL Server Netzwerkkonfiguration | Protokolle für xxx
TCP/IP: aktivieren

Verbindung testen

eine Datei mit der Endung .udl erstellen, Eigenschaften
Provider: Microsoft OLE DB Provider for SQL Server
Verbindungen
Servername: <SQL-Server\Instanz>
Benutzername: <wie angelegt>
Passwort: <wie angelegt>
Datenbank auf dem Server: <Datenbank>

zum Abschluß Verbindung testen

Seitenanfang

Upgrade mit einem ServicePack

- bei einem Upgrade ist unbedingt der Instanzname mit anzugeben, hier ein Beispiel für ein Upgrade der Standardinstanz. Hier ist unbedingt "upgradesp" anzugeben (für den User "sa" ist kein Passwort gesetzt).

setup /upgradesp SQLRUN SECURITYMODE=SQL UPGRADEUSER=sa BLANKSAPWD=1 /L*v C:\MSDELog.log
setup.exe /upgradesp sqlrun INSTANCENAME=SQLDATA DISABLENETWORKPROTOCOLS=0 BLANKSAPWD=1

man kann das Upgrade auch mit Hilfe der "setup.ini" erledigen

setup.exe /settings setup.ini /upgradesp sqlrun

Beispiel für eine "setup.ini" zum Upgraden.

[Options]
UPGRADEUSER=sa
BLANKSAPWD=1
INSTANCENAME=SQLDATA
DISABLENETWORKPROTOCOLS=0

wenn es eine Stardardinstanz upgraden will, darf man "INSTANCENAME" nicht angeben. Es kann auch beim Upgrade zu Problemen kommen, wenn der "INSTANCENAME" in der .ini Datei in Anführungszeichen gesetzt ist.

Optionen
- Passwort bei der Installation festlegen
SAPWD="AStrongPassword"
- mit leerem Passwort installieren
BLANKSAPWD=1
- gemischte Modus SQL als auch Benutzerautentifizierung ist erlaubt
SECURITYMODE=SQL
- eine Benutzerdefinierte Instanz anlegen (SQLDATA)
INSTANCENAME="SQLDATA"
- den Netzwerkzugriff für andere Clients erlauben
DISABLENETWORKPROTOCOLS=0
für den Netzwerkzugriff benutzt MSDE den TCP Port 1433
- Upgrade mit einem ServicePACK
UPGRADEUSER=admin
UPGRADEPWD=admin_pwd

- Ändern des Authentifizierungsmodus bei einer Standard MSDE Instanz
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer\MSSQLServer]
"LoginMode"=dword:00000002

Schlüssel für eine Benutzerdefinierte Instanz SQLDATA
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\SQLDATA\MSSQLServer]
"LoginMode"=dword:00000000

Seitenanfang

Anmelden am SQL Server

mit dem Tools osql eine Verbindung zu MSDE herstellen, osql ist Interaktiv.

osql -U sa
oder
osql -U sa -P "Kennwort"
oder
osql -E
oder
osql -U sa -S server\sqldata

mit der Option -S kann man die SQLServer Instanz wählen, auf einem Server können bis zu 16 Instanzen installiert werden (eine Standardinstanz und 15 weitere).

- Passwort Benutzer sa ändern (Kommando Prozedurname altes_Kennwort, neues_Kennwort, Loginname), das alte Kennwort ist leer, deshalb muss der Wert NULL übergeben werden.

sp_password @old = null, @new = 'newpasswd',  @loginame ='sa'
go
oder
sp_password null, 'newpasswd', 'sa'
go

- Datenbank Test erstellen

create database test
go

Datenbank wird im angegebenen Verzeichnis erstellt, mit Protokolldatei

CREATE DATABASE SATest
 ON (NAME = SATest_Daten, FILENAME = 'c:\SQLDATA\SATest_Daten.MDF')
 LOG ON (NAME = SATest_Protokoll, FILENAME = 'c:\SQLDATA\SATest_Protokoll.LDF')
GO

- Datenbank auf Fehler prüfen (sollte regelmäßig vor der Datensicherung erfolgen)

dbcc checkdb ('test')
go

- Datenbank Test löschen

drop database test
go

- eine zweite Instanz (SQLDATA) von MSDE auf einem Rechner installieren. Diese Instanz wird in der Systemsteuerung unter Software extra aufgeführt und kann auch einzeln wieder deinstalliert werden.

[Options]
SAPWD="sa"
SECURITYMODE=SQL
INSTANCENAME="SQLDATA2"

auf dies neu angelegte Instanz kann man dann mittels osql -U sa -P sa -S msde-server\sqldata zugreifen. Option -U Username, -P Passwort, -S Server\Instanz

- Netzwerkzugriff konfigurieren mittels SVRNETCN
C:\Programme\Microsoft SQL Server\80\Tools\Binn\SVRNETCN.exe

Hilfe für die Verwendung von osql

- einem System Anmelde oder Benutzerkonto eine Verbindung zur SQL Server-Instanz

EXEC sp_grantlogin 'server\user'
go

- einem SQL-Benutzer den Zugriff auf eine MSDE-Instanz erlauben.

EXEC sp_addlogin 'user','passwd'
go

- OSQL kann auch am PROMPT oder in einem Batch verwendet werden

osql -U SA -P "Kennwort" -d model -Q "dbcc checkdb"

hier wird die Datenbank "MODEL" auf Fehler überprüft oder interaktiv

dbcc checkdb ('model') -o "D:\ERGEBNIS.TXT"
go

Die Ausgabe kann auch zur späteren Kontrolle in eine Datei umgeleitet werden.

osql -U SA -P "Kennwort" -d model -Q "dbcc checkdb" -o "D:\ERGEBNIS.TXT"
Seitenanfang

Datensicherung | Restore

- Offlinesicherung, vor der Datensicherung muß der Server angehalten werden, nun kann man das komplette MSDE Verzeichniss sichern

NET STOP MSSQLSERVER
xcopy c:\MSSQL c:\Backup

- Onlinesicherung, der SQLServer läuft bei der Sicherung, es wird jede Datenbank einzeln gesichert.

osql -U SA -P "Kennwort" -Q "backup database samuster to disk =
 'c:\backup\samuster.bak' with init" -o c:\backup\samuster.txt

- interaktive Datensicherung

backup database samuster to disk = 'c:\backup\samuster.bak' with init -o d:\backups\samuster.txt
go
BACKUP LOG samuster TO DISK = 'C:\backup\samuster_log.bak'

man kann die Protokolldatei auch einzeln sichern.

Datenbank BackupScript über SQLAgent (SQL 2000)

EXECUTE master.dbo.xp_sqlmaint N'-PlanID xxx-xxx-xxx-xxx -WriteHistory  -VrfyBackup -BkUpMedia DISK
 -BkUpDB "D:\Backup\SQL-Backup"  -BkExt "BAK"'

LOG BackupScript über SQLAgent (SQL 2000)

EXECUTE master.dbo.xp_sqlmaint N'-PlanID xxx-xxx-xxx-xxx -WriteHistory  -VrfyBackup -BkUpMedia DISK
 -BkUpLog "D:\Backup\SQL-Backup" -BkExt "TRN"'

DelBkUps - Zeitspanne wann die erstellte Sicherung gelöscht wird ( Beispiele 12weeks, 3months, 15days )
CrBkSubDir - Im Backup Verzeichnis wird ein Unterordner für jede Datenbank erstellt

SQL Datensicherung (ab MSSQL 2005)

- Backup, einfache Version

sqlcmd -E -S <Server>\<Instance> -Q "BACKUP DATABASE <DB-Name> TO DISK = 'c:\backupdirectory\test' WITH INIT, SKIP"

- Restore, einfache Version

sqlcmd -E -S <Server>\<Instance> -Q "RESTORE DATABASE <DB-Name> FROM DISK = 'c:\backupdirectory\test" 

- Backup, erweitert mit SQLCMD

-S - Servername
-E - Verbindung mit aktuellem Anmeldekonto
-i - Eingabedatei SQLScript
-o - Ausgabedatei LOG

--- Backup Script und SQL Sicherungsscript ---

bei jedem Ausführen des Scriptes, wird im Backupverzeichnis eine neue Sicherungsdatei erstellt mit aktuellen Datum, wenn vom Tag schon eine enthalten ist, wird diese überschrieben. Dateien die 5 Tage oder älter sind werden aus dem Verzeichnis gelöscht (Option /d -5 im Script).

@REM --- SQLBackup.cmd ---
@echo off
SET SERVER=.
SET INSTANZ=SQL
SET BACKUPDIR=C:\Backup
SET SCRIPTDIR=C:\Scripte
SET LOGFILE=%SCRIPTDIR%\%date:~6,4%.%date:~3,2%.%date:~0,2%_DBData.log
SET BACKUPFILE=DBData.bak
SET SQLDB=DBDATA
SET PATH=C:\Programme\Microsoft SQL Server\100\Tools\Binn;%PATH%

C:
if not exist %BACKUPDIR% md %BACKUPDIR%
sqlcmd.exe -S %SERVER%\%INSTANZ% -E -b -i %SCRIPTDIR%\SQLBackup.sql -o %LOGFILE%
forfiles /p "%BACKUPDIR%" /m *.bak /c "cmd /c if @isdir==FALSE echo del @file & del @file" /d -5
/* --- SQLBackup.sql ---
SQLExpress Sicherung mit Datumsangabe
Zielpath	BACKUPDIR
Backup Datei	%Datum%_BACKUPFILE
Datenbank	SQLDB
*/

declare @file nvarchar(255)
SELECT @file = N'$(BACKUPDIR)\' + REPLACE(convert(varchar,GEtDate(),102),'.','_') +  N'_$(BACKUPFILE)'

BACKUP DATABASE [$(SQLDB)] TO DISK = @file
	WITH  INIT,
	STATS = 10,
	NAME = N'DB-Vollsicherung'
;

--- Backup Script und SQL Sicherungsscript ---

im Backupverzeichnis wird eine Datei erstellt DBData.bak, mit einem Sicherungssatz der erst nach 7 Tagen überschrieben werden kann. Man kann sich so eine tägliche Sicherung erstellen, für jeden Tag der Woche eine Script und .sql Datei, dabei kann man sicher sein, das nicht aus versehen ein Backup überschrieben wird (Ablaufprüfung - NoSkip).

@REM --- SQLBackup.cmd ---
@echo off
SET SERVER=.
SET INSTANZ=SQL
SET BACKUPDIR=C:\Backup
SET SCRIPTDIR=C:\Scripte
SET LOGFILE=%SCRIPTDIR%\%date:~6,4%.%date:~3,2%.%date:~0,2%_DBData.log
SET BACKUPFILE=DBData.bak
SET SQLDB=DBDATA

@SET PATH=C:\Programme\Microsoft SQL Server\100\Tools\Binn;%PATH%

C:
if not exist %BACKUPDIR% md %BACKUPDIR%
sqlcmd.exe -S %SERVER%\%INSTANZ% -E -b -i %SCRIPTDIR%\SQLBackup.sql -o %LOGFILE%
/*
SQLExpress Sicherung mit Datumsangabe
Zielpath		BACKUPDIR
Backup Datei		%Datum%_BACKUPFILE
Datenbank		SQLDB
*/
BACKUP DATABASE [$(SQLDB)] TO DISK = N'$(BACKUPDIR)\$(BACKUPFILE)'
	WITH  RETAINDAYS = 7,
	NOFORMAT,
	INIT,
	NoSKIP,
	NOREWIND,
	NOUNLOAD,
	STATS = 10,
	NAME = N'DB-Vollsicherung'
;

MSDN Artikel Backup Optionen

Option Erkläuterung
INIT, Sicherungssatz überschreiben
NOINIT, Sicherungssatz anhängen
RETAINDAYS = 14, Aufbewahrung der Sicherung in Tagen z.B 14 Tage
NOFORMAT, vorhandenen Medienheader und Sicherungssätze auf den Medienvolumes beibehalten
SKIP, Deaktiviert die Prüfung von Ablaufdatum
STATS = 10, Statusanzeige alle 10 Prozent
NAME = N'DB-Vollsicherung' Name des Backups

 

Wiederherstellen der gesicherten Daten

osql -U SA -P "Kennwort" -Q "restore database samuster from disk =
 'c:\backup\samuster.bak' with replace" -o c:\backup\samuster.txt

- interaktive Wiederherstellung

restore database samuster from disk = 'c:\backup\samuster.bak' with replace -o d:\backups\samuster.txt
go

Datenbank sichern, Transaktionslog verkleinern
im SQL Server Management Studio | Datenbanken | Datenbank wählen | Eigenschaften | Optionen | Wiederherstellungsmodell einstellen Einfach, Massenprotokolliert oder Vollständig

Variante Beschreibung
Einfach Protokoll braucht nicht gesichert werden, Wiederherstellung bis zur Sicherung möglich
Massenprotokolliert Protokollsicherung notwendig, Zeitpunktwiederherstellung wird unterstützt
Vollständig Protokollsicherung notwendig, Zeitpunktwiederherstellung wird nicht unterstützt

Übersicht Wiederherstellungsmethoden

RESTORE DATABASE [David_Database] FROM  DISK = N'C:\Temp\David_Database.bak'
 WITH  FILE = 1,
 MOVE N'David_Database'
 TO N'c:\MSSQL-DB\MSSQL10_50.DAVID\MSSQL\DATA\David_Database.mdf',
 MOVE N'David_Database_log' TO N'c:\MSSQL-DB\MSSQL10_50.DAVID\MSSQL\DATA\David_Database_1.LDF',
 NOUNLOAD,  STATS = 10
GO

 

 

Seitenanfang

SQL Datenbank importieren | exportieren

USE [master]
GO
CREATE DATABASE [SASystem] ON
 ( FILENAME = N'C:\Programme\Microsoft SQL Server\MSSQL\Data\SASystem_Daten.MDF' ),
 ( FILENAME = N'C:\Programme\Microsoft SQL Server\MSSQL\Data\SASystem_Protokoll.LDF' )
FOR ATTACH
GO

- Datenbank vom Server trennen (Datenbank wird vom Server entfernt, wird aber nicht physikalisch gelöscht), nach dem trennen kann man die Datenbank auf den gleichen oder einen anderen Server wieder einfügen.

EXEC sp_detach_db 'SASystem'

- eine Datenbank auf einem Server einfügen

EXEC sp_attach_db @dbname = N'SASystem',
   @filename1 = N'C:\Programme\Microsoft SQL Server\MSSQL\Data\SASystem_Daten.mdf',
   @filename2 = N'C:\Programme\Microsoft SQL Server\MSSQL\Data\SASystem_Protokoll.ldf'
go
Seitenanfang

SQL Datenbank umbenennen

im SQL Server Management Studio unter Datenbanken | Datenbank wählen | Eigenschaften | Optionen | Status: Zugriff beschränken von Multi-User auf Single_User stellen, hinter der Datenbank wird dann (Einzellbenutzermodus) angezeigt.

ALTER DATABASE old_dbName MODIFY NAME = new_dbName
oder
EXEC sp_renamedb 'old_dbName', 'new_dbName'

 

Seitenanfang

SQL Datenbank abfragen

- zeigt alle Daten der angegebenen Tabelle an

USE [Datenbank]
GO
SELECT * FROM [Name_der_Tabelle]
GO

- ersten 20 Einträge der angegebenen Spalten anzeigen

USE [Datenbank]
GO
SELECT TOP 20 [Spalte1],[Spalte2] FROM [Name_der_Tabelle]
GO

 

Seitenanfang

Lizenzen

 

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\90\MSSQLLicenseInfo\MSSQL9.00

Name		Type		Value
Mode		REG_DWORD 2	ß LICENSE_MODE_PERPROC
ConcurrentLimit	REG_DWORD 4	ß Number of Processors

Name		Type		Value
Mode		REG_DWORD 0	ß LICENSE_MODE_PERSEAT
ConcurrentLimit	REG_DWORD 100	ß No. of client licenses registered for SQL Server in Per Seat mode.

- Lizenz prüfen

SELECT  ServerProperty('LicenseType') as LicenseType, ServerProperty('NumLicenses') as ProcessorCount
Seitenanfang

Anpassungen / Einstellungen

MSSQL Server LOG File Größe festlegen

LOG Datei "C:\Program Files\Microsoft SQL Server\MSSQL15. \MSSQL\Log\ERRORLOG" auf max. 50MB anwachsen lassen, bevor eine neue angelegt wird, max. 10 ältere ErrorLog Dateien behalten ERRORLOG - ERRORLOG.9

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL15.<Instance Name>\MSSQLServer]
"ErrorLogSizeInKb"=dword:0000c350
"NumErrorLogs"=dword:0000000a

oder im SQL Server Management Studio unter Server\Instance | Verwaltung | SQL-Server-Protokolle wählen rechte Maus Konfigurieren | Allgemein
Anzahl der Fehlerprotokolldateien vor der Wiederverwendung beschränken: aktivieren
Maximale Anzahl von Fehlerprotokolldateien: 10
Maximale Größe der Fehlerprotokolldateien in KB: 50000

 

 

 

 

 

Seitenanfang

sonstiges

- SQL Version anzeigen

select @@VERSION

mit einer Datenbank auf anderen Server umziehen

SQL mit Benutzer und Passwörter migrieren
Using the Copy Database Wizard
Datenbank markieren | Task | Copy Database

Prozedur
sp_updatestats

SQL Installations-Fehler auf einem Domaincontroller

Fehler beim Installieren von Instanzfunktionen der SQL Server Database Engine Services
Fehler beim Warten auf das Wiederherstellungshandle des Datenbankmoduls. Überprüfen Sie das SQL Server-Fehlerprotokoll auf die möglichen Ursachen.
Fehlercode: 0x851A001A
um Hilfe bei der Problembehandlung zu erhalten.

Lösung

SQL Blog Eintrag

Beim der Installation für den SQL Server ein Domainaccount benutzen.

SQL Server-Dienst kann nicht gestartet werden

- Bei Startproblemen des SQL Servers, folgende Kommandozeile verwenden.

C:\Program Files\Microsoft SQL Server\MSSQL11.SQLEXPRESS\MSSQL\Binn>sqlservr -f -T3608

Fehler bei der Installation von SQL Server Management Studio

Fehler 1911.Typbibliothek für Datei "C:\Program Files (x86)\Common Files\Microsoft Shared\MSEnv\dte90.olb" konnte nicht registriert werden. Wenden Sie sich an den technischen Support.

Lösung: Deinstallation des Sicherheitsupdates KB3072630, danach neu starten und "SQL Server Management Studio" noch einmal installieren.

- MSSQL Server startet nicht unter Windows 11 auf einer Samsung SSD

Blog Eintrag

fsutil fsinfo sectorinfo C:
reg add "HKLM\SYSTEM\CurrentControlSet\Services\stornvme\Parameters\Device" /v "ForcedPhysicalSectorSizeInBytes" /t reg_multi_sz /d "* 4095" /f

Rechner neu starten