Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi MSSQL Datenbank in Ordner "Eigene Dateien" erstellen (https://www.delphipraxis.net/144731-mssql-datenbank-ordner-eigene-dateien-erstellen.html)

Daniela.S 15. Dez 2009 10:42

Datenbank: MSSQL • Version: Express 2005 • Zugriff über: SQL

MSSQL Datenbank in Ordner "Eigene Dateien" erstell
 
Hallo,

ich habe beim Erstellen einer MSSQL Datenbank ein kleines Problem. Und zwar möchte ich die Datenbank in dem Ordner "Eigene Dateien" erstellen. Also nicht im Default "programme\mssql..." Verzeichnis.

Auf meinem Entwicklungsrechner hat das auch tadellos funktioniert (WinXP, User als Admin). Auf einem anderen PC (ebenso WinXP, User als Admin) schlägt das Erstellen aber mit der Meldung "5133 - Betriebssystemfehler5(Zugriff verweigert)" fehl. Der Benutzer ist aber als Admin angemeldet und kann natürlich in seinem eigenen Ordner Dateien erstellen. Ich konnte keinen Unterschied der beiden Benutzer und Berechtigungen auf den beiden PCs finden. Auch wenn ich den sa User vom SQL Server verwende bekomme ich den selben Fehler. Der SQL Server verwendet die Windows Authentifizierung. Das Zielverzeichnis existiert natürlich auch. Eigenlich sollte für das Ganze ja gar kein Admin User erforderlich sein.

SQL Befehl schaut so aus...

SQL-Code:
USE [master]
CREATE DATABASE [testdb] ON PRIMARY
( NAME = N'TESTDB', FILENAME = N'C:\Dokumente und Einstellungen\User\Anwendungsdaten\Database\testdb.mdf' , SIZE = 5120KB , MAXSIZE = UNLIMITED, FILEGROWTH = 1024KB )
...
Vielleicht sitze ich jetzt schon zu lange daran und sehe die Lösung nicht :wall:
Im Internet lässt sich auch nichts brauchbares finden.
für Tipps bin ich echt dankbar :-D

Bernhard Geyer 15. Dez 2009 10:44

Re: MSSQL Datenbank in Ordner "Eigene Dateien" ers
 
Und hat auch der Dienst unter dem der MS SQL-Server läuft Zugriff auf das Verzeichnis?

mkinzler 15. Dez 2009 10:45

Re: MSSQL Datenbank in Ordner "Eigene Dateien" ers
 
Verwende mal nicht den absoluen Pfad, sondern mit specialfolder

Daniela.S 15. Dez 2009 10:56

Re: MSSQL Datenbank in Ordner "Eigene Dateien" ers
 
Den Pfad hab ich über eine Funktion, die den Pfadnamen über SHGetSpecialFolderLocation - CSIDL_APPDATA ermittelt, eingefügt. Der Dienst ist bei beiden Systemen "NT AUTHORITY\NetworkService". Hab bei der Installation eigentlich auch das Gleiche gemacht...

Daniela.S 15. Dez 2009 11:26

Re: MSSQL Datenbank in Ordner "Eigene Dateien" ers
 
...habe gesehen, dass ich auf dem einen PC den gesamten User-Ordner freigegeben habe :wall:
Da hat natürlich dann auch der Dienst zugriff darauf. Vielleicht ist es Zeit für heute Feierabend zu machen *gg*
Danke euch jedenfalls :-D

Andererseits wäre es trotzdem interessant zu wissen wie ich die Datenbank da rein bringe. Das würde die Datensicherung für Benutzer auf jeden Fall erleichtern. Gibt es eine Funktion, die ich in ein Setup einbauen kann, um die Berechtigung eines Ordners zu ändern?

shmia 15. Dez 2009 13:17

Re: MSSQL Datenbank in Ordner "Eigene Dateien" ers
 
Das was du vorhast ist nicht empfehlenswert.
Die Express-Edition wird üblicherweise als "Benannte Instanz" installiert,
das heisst das man mehrere Instanzen (auch verschiedene Versionen 2000, 2005 und 2008) auf dem gleichen Rechner installieren kann.
Der SQL Server läuft als Dienst unter einem bestimmten Konto (meistens das Systemkonto).
Sobald der Dienst gestartet wird, versucht er alle Datenbanken einzubinden und online zu schalten.
Wenn du nun die Datenbank unter eigene Dateien des Admins ablegen möchtest ist die Wahrscheinlichkeit hoch, dass der Dienst dort keine Rechte hat.
Das Verzeichnis gehört dem Admin; der Dienst hat dort keine Rechte.
Ich würde dir empfehlen, das Standardverzeichnis des SQL Server zu verwenden.

Zum Thema Datensicherung:
Man kann beim SQL Server nicht einfach die Datenbankdateien sichern weil sie ja im exklusiven Zugriff sind.
Man müsste vorher den Server herunterfahren/Dienst beenden.
Die richtige Vorgehensweise ist dem SQL-Server einen Backup-Befehl zu schicken und dann die *.bak Datei zu sichern.
Vollbackup einer SQL Server Datenbank erstellen
Backups können beim SQL Server auch während des laufenden Betriebs erzeugt werden.
Beim Erstellen des Backups muss man die BAK-Datei mit Pfad angeben.
Diese Datei muss auf den lokalen Platten des Rechners liegen. Netzwerkplatten oder entfernbare Medien (USB-Stick) sind meines Wissens nicht erlaubt.

Für gewerbliche Zwecke würde ich empfehlen die Standard-Edition des SQL Servers einzusetzen.
Sie beinhaltet unter anderem den SQL Server Agent.
Der Agent kann zeitgesteuert Backups der Datenbank erstellen.

Daniela.S 16. Dez 2009 06:09

Re: MSSQL Datenbank in Ordner "Eigene Dateien" ers
 
Guten Morgen Shmia,

danke dir. Denke du hast recht. Werde eine Oberfläche mit den wichtigsten Funktionen erstellen, dann sollte das für einen User auch einfach zu bedienen sein...


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:14 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz