Schlagwort-Archive: SQL Express

Microsoft SQL Express

MSSQL: Computeraccount als Login hinzufügen

Problem:
Während eines Umzuges der lokalen SQL-Datenbank eines WSUS-Servers auf einen dedizierten SQL-Server musste auf dem neuen Server laut Microsoft technet Anleitung das Computerkonto als Login eingetragen werden.
Wählt man den Sicherheitsbereich des SQL-Servermanagers aus, kann man kein Computerkonto (COMPUTERNAME$) auswählen.

Lösung:

Man öffnet eine neue Abfrage für die Instanz und gibt folgendes ein:

— Erzeuge ein Login für den Machinen Account
CREATE LOGIN [Domain\machine_name$] FROM WINDOWS
GO

Damit wird ein Computerkonten-Login erzeugt. Jetzt kann man dem Computer-Account die notwendigen Berechtigungen und Zuordnungen zuweisen.

Wenn man das noch prüfen will, schaut man am besten mal nach

SELECT * FROM sys.server_principals WHERE name LIKE ‚Domain\machine_name%

SQL: Online SQL Statements testen

Wenn man mal auf die Schnelle ein paar SQL Befehle probieren will, sollte man sich die Seite w3schools.com anschauen.

Dort bekommt man neben der Beschreibung des jeweiligen SQL-Befehls auch gleich die Möglichkeit das Ganze online zu testen.Damit erspart man sich das Anlegen einer Testdatenbank.

Also zum Beispiel

SELECT * FROM Customers;
erhält man einen Link namens „Try it yourself„, bei dem man das dann probieren kann.

Automatisches Backup einer SQL Server 2008 Express Datenbank auf Windows Server 2008 R2

In einem anderen Artikel hatte ich beschrieben, wie man eine SQL-Express auf einem Windows Arbeitsplatzrechner sichert.

Nach einer Softwareinstallation auf einem Windows 2008 R2 Server musste nun dafür gesorgt werden, dass auch dort die SQLExpress Datenbanken gesichert werden.

1. Backup Ziel erstellen:
In meinem Fall habe ich einfach einen Ordner C:\Backup\MSSQL-Express\ angelegt.
Dieser wird dann vom Backup-Tool einfach als File-Backup weggesichert.

2. SQLCMD als Helferlein 🙂
Im Gegensatz zur vorherigen Beschreibung ist in diesem Fall keine Softwareinstallation mehr notwendig! Der Server bleibt also ’sauber‘.
In der Beschreibung der Software war lediglich angegeben, dass eine SQLExpress-Datenbank verwendet wird. Aber für das Backup müsste man schon wissen, welche Datenbanken dort existieren:

Konsole (cmd.exe) als Administrator ausführen und folgendes testen:
C:\Program Files\Microsoft SQL Server\100\Tools\Binn>sqlcmd -S SERVERNAME\SqlExpress
Damit verbindet man sich erst einmal mit dem SQL-Express Server und erhält eine Eingabeaufforderung die mit ‚1>‘ beginnt.
Dort erfragen wir jetzt die vorhandenen SQL-Datenbanken. Nach der ersten Zeile bitte einmal ENTER drücken, um in der zweiten Zeile dann mit ‚Go‘ das Kommando auszulösen::
1> SELECT name from sys.databases
2> Go

Ergebnis:name
—————————————————————————-
master
tempdb
model
msdb
SOPHOS521
SophosSecurity
SOPHOSPATCH52
SOPHOSENC52

Okay:
Die Syntax:
„C:\Program Files\Microsoft SQL Server\100\Tools\Binn\SQLCMD.EXE“ -E -S <SERVERNAME>\<SQLEXPRESSERVERNAME> -Q „BACKUP DATABASE <DATENBANKNAME> TO DISK='<BACKUPVERZEICHNIS>'“

Jetzt das Backup manuell testen:
„C:\Program Files\Microsoft SQL Server\100\Tools\Binn\SQLCMD.EXE“ -E -S MEINSERVER\SQLExpress -Q „BACKUP DATABASE SOPHOS521 TO DISK=’C:\Backup\MSSQL-Express\SOPHOS521.bak'“

Jetzt sollte sich im Backup-Verzeichnis eine Datei namens SOPHOS521.bak befinden.
Die Dateinamen muss man natürlich anpassen. 🙂

UZI – we do it automatic:
Also Aufgabenplaner auf, Einfache Aufgabe erstellen:
Name: SQL-Backup
Beschreibung: Backup der SQLExpress Datenbanken
Sicherheitsoptionen: Unabhängig von der Benutzeranmeldung ausführen + mit höchsten Berechtigungen ausführen + Ausgeblendet Konfigurieren für WinServer 2008
Trigger: Täglich 21:00 Uhr
Aktionen:
Programm starten: „C:\Program Files\Microsoft SQL Server\100\Tools\Binn\SQLCMD.EXE“
Argumente hinzufügen: -E -S SERVER\SQLExpress -Q „BACKUP DATABASE SOPHOS521 TO DISK=’C:\Backup\MSSQL-Express\SOPHOS521.bak'“

Das sollte es schon gewesen sein. Hat man mehrere Datenbanken, kann man übrigens eine  bestehende Aufgabe exportieren, in einem Texteditor anpassen und dann wieder importieren. So muss man die Jobs nicht immer komplett neu einrichten, sondern muss nur den Datenbanknamen und den Namen der Backupdatei anpassen.

Was tun, wenn die Instanz nicht SQLExpress heißt?
In einigen Fällen kann es sein, dass ein Softwarehersteller eine eigene SQLExpress Instanz anlegt, die natürlich dann auch einen beliebigen Namen hat.
Keine Ahnung? Kein Problem:
Einfach die Dienste auf dem Server anzeigen lassen: Start -> services.msc oder START -> Verwaltung -> Dienste
Dort gibt es einen SQL Server Dienst, der einen Namen in Klammern stehen hat.
Z.B. „SQL Server (SOPHOS)“
Dieser Name in den Klammern ist der Instanzname. Also in dem Fall SOPHOS – SERVERNAME\SOPHOS.

ZUSATZ:
Wenn man die .bak Datei bei jedem Lauf überschreiben will, muss man an die Argumente noch ein ‚WITH INIT‘ anfügen.
Also:
Programm starten: „C:\Program Files\Microsoft SQL Server\100\Tools\Binn\SQLCMD.EXE“
Argumente hinzufügen: -E -S SERVER\SQLExpress -Q „BACKUP DATABASE SOPHOS521 TO DISK=’C:\Backup\MSSQL-Express\SOPHOS521.bak‘ WITH INIT“

 

Automatisches Backup einer SQL Server 2008 Express Datenbank

Problem:
Ein Problem der SQL Express Varianten ist, dass man mit Bordmitteln zunächst einmal kein automatisches Backup erstellen lassen kann, da der gesamte Wartungsbereich, den man aus „echten“ SQL-Servern kennt, in der Express Variante fehlt.

Lösung:

Benötigte Software:
Microsoft® SQL Server® 2008 Management Studio Express
Aufgabenplanung (Systemsteuerung -> Verwaltung -> Aufgabenplanung) oder über START –> taskschd.msc

Vorgehensweise:
Zuerst startet man das SQL Server Management Studio Express und erstellt eine manuelle Sicherung über „Rechtsklick auf die Datenbank“ -> Tasks -> Sichern.
Dort werden alle notwendigen Einstellungen angepasst, wie z.B. das Sicherungsziel.
Das Backup wird aber noch NICHT gestartet.

Im nächsten Schritt klickt man nun auf „Skript“ (oben in der Mitte), um sich das SQL-Skript zu diesem Sicherungsjob anzeigen zu lassen.
Das sieht dann etwa so aus:

SQLQuery-WFDB.sql

BACKUP DATABASE [WFDB] TO  DISK = N’D:\Backup\MSSQL-Express\WFDB.bak‘ WITH NOFORMAT, NOINIT,  NAME = N’WFDB-Vollständig Datenbank Sichern‘, SKIP, NOREWIND, NOUNLOAD,  STATS = 10
GO

Dieses Skript muss nun an einem gut erreichbaren Ort abgespeichert werden.
Als Test kann man das Backup einmal laufen lassen.
Vorsicht: Das Backup Ziel muss für den Benutzer, der den SQL-Dienst ausführt, beschreibbar sein. Das kann man prüfen, indem man sich in der Dienste-Ansicht auf dem Karteireiter ‚Anmelden‘ anzeigen läßt, unter welchem Acount der SQLEXPRESS ausgeführt wird. Bei mir war es das Konto ‚Netzwerkdienst‘.
Diesem Konto muss man auf das Backup-Ziel noch Schreibrechte eintragen.

Jetzt öffnet man die Aufgabenplanung und fügt eine neue ‚einfache Aufgabe‘ dazu.

Aktion: „Programmstarten“
Programm/Skript: „C:\Program Files\Microsoft SQL Server\100\Tools\Binn\SQLCMD.exe“
Argumente hinzufügen (optimal): -S SERVERNAME\SQLEXPRESS -i „D:\Scripte\SQLQuery-WFDB.sql“

Jetzt nur noch einstellen, wann der Task laufen soll und schon ist man fertig.
Sollte das Backup-Ziel augf einem Netztlaufwerk liegen, sollte man einen Domänen-Benutzer für die Ausführung des SQL-Dienstes verwenden.