AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

XML zu Datenbanken

Ein Thema von Ydobon · begonnen am 25. Jan 2022 · letzter Beitrag vom 29. Jan 2022
Antwort Antwort
Seite 1 von 2  1 2      
Ydobon

Registriert seit: 3. Mär 2006
264 Beiträge
 
Delphi 11 Alexandria
 
#1

XML zu Datenbanken

  Alt 25. Jan 2022, 12:54
Datenbank: MSSQL Express • Version: 2019 • Zugriff über: ADO
Hallo,

eigentlich wollte ich nach 10-20 Jahren ein paar Altlasten kurz modernisieren. Die ursprünglichen XML-Daten haben sich in der Zeit komplett verändert, meine alten Programme funktionieren also sowieso nicht mehr und lassen sich auch nicht sinnvoll anpassen. Damals hatte ich Jet SQL für die Datenbanken verwendet. Da ein Datensatz einen Text größer als 255 Zeichen enthält und ich für die Spalte lieber auf Memo verzichten wollte aber vor allem, um endlich etwas zeitgemäßeres zu verwenden, habe ich mich für SQL Express entschieden.
Nachdem ich für das Einlesen der XML-Dateien in ein nutzbares XML-Dokument schon furchtbar lange gebraucht habe, kommen nun noch Probleme mit dem DBMS. Ich hoffe es stört nicht, wenn ich meine Fragen alle hier anbringe, sie sind nur kurz.

1. Den Servernamen bekomme ich aus dem Computernamen sowie "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microso ft SQL Server" und dort "InstalledInstances"? Gilt das Allgemein oder gibt es da Ausnahmen?

2. Das dämliche "N" bei Inserts. Kann man eine Datenbank von Anfang an so konfigurieren, dass man darauf verzichten kann? Unicode muss aber sein, es geht um CJK Texte.

3. Wenn ich mir das Schema mit den Datenbanknamen hohle, gibt es auch das Feld Description. Wie kann ich die setzen? Bei Jet ging das ja wohl über die Properties.

4. Vor dem Erstellen neuer Datenbanken soll man die master-DB sichern. Wirklich sinnvoll und wenn dann wie? Einfach die Dateien kopieren?

5. Es werden ja automatisch mehrere Dateien angelegt. Wenn man die DB immer nur in SQL per Name anspricht (create, drop usw.) werden alle Dateien mitbehandelt? Ich glaube, ich hatte mal einen Fehle, weil etwas zurück geblieben war.

Danke für die Geduld beim Lesen.
  Mit Zitat antworten Zitat
Redeemer

Registriert seit: 19. Jan 2009
Ort: Kirchlinteln (LK Verden)
1.054 Beiträge
 
Delphi 2009 Professional
 
#2

AW: XML zu Datenbanken

  Alt 25. Jan 2022, 13:41
1. Den Servernamen bekomme ich aus dem Computernamen sowie "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microso ft SQL Server" und dort "InstalledInstances"? Gilt das Allgemein oder gibt es da Ausnahmen?
Wo soll denn der Server laufen?

2. Das dämliche "N" bei Inserts. Kann man eine Datenbank von Anfang an so konfigurieren, dass man darauf verzichten kann? Unicode muss aber sein, es geht um CJK Texte.
Seit 2016 ist UTF-8 eine Kollation für nicht-nationale Typen. Das könnte funktionieren. Ob man die Implikationen möchte, ist eine andere Frage.

3. Wenn ich mir das Schema mit den Datenbanknamen hohle, gibt es auch das Feld Description. Wie kann ich die setzen? Bei Jet ging das ja wohl über die Properties.
Das ist eine Systemtabelle, sys.extended_properties WHERE name='MS_Description' . Da brauchst du aber weitere Werte für den PK: Den Wert für die Spalte schema_id bekommt man aus sys.schemas und den Wert für die Spalten major_id und minor_id aus sys.columns (object_id und column_id ). Völlig logisch, oder?

4. Vor dem Erstellen neuer Datenbanken soll man die master-DB sichern. Wirklich sinnvoll [...]?
Ich mach's nicht.

5. Es werden ja automatisch mehrere Dateien angelegt. Wenn man die DB immer nur in SQL per Name anspricht (create, drop usw.) werden alle Dateien mitbehandelt?
Selbstverständlich. Das ist der Sinn eines DBMS (genauer: einer Storage Engine). Der Nutzer hat sich gefälligst nicht um die Speicherung der Daten oder - noch viel schlimmer - Dateien zu scheren! (Außer dass die Festplatte nicht kaputt geht.)
Janni
2005 PE, 2009 PA, XE2 PA
  Mit Zitat antworten Zitat
generic

Registriert seit: 24. Mär 2004
Ort: bei Hannover
2.416 Beiträge
 
Delphi XE5 Professional
 
#3

AW: XML zu Datenbanken

  Alt 25. Jan 2022, 21:37
Magst du mir mal die N'String' Sache etwas mehr erläutern?
Evtl. ist den Code anfällig für SQL-Injections.
Benutzt du parametrisierten Abfragen?


In der Master sind die serverseitigen Logins drin und diverse andere Sicherheitseinstellungen.
Bei Contained Databases nicht.
Also abhängig wo du die Logins hast, empfehle ich ein Sicherung.
Coding BOTT - Video Tutorials rund um das Programmieren - https://www.youtube.com/@codingbott

Geändert von generic (25. Jan 2022 um 21:46 Uhr)
  Mit Zitat antworten Zitat
Ydobon

Registriert seit: 3. Mär 2006
264 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: XML zu Datenbanken

  Alt 26. Jan 2022, 14:24
Danke für eure Antworten. Allerdings, ich bin ein lausiger Laie bei dem Thema, einige Antworten waren daher recht schwer zu verstehen. Aber irgendwann muss man ja mal anfangen. Ich versuche erst einmal nur die XML-Daten in eine Datenbank zu bekommen, um dann einfache Abfragen, Sichten und vielleicht auch Prozeduren mit Parametern schreiben zu können.

1. Den Servernamen bekomme ich aus dem Computernamen sowie "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microso ft SQL Server" und dort "InstalledInstances"? Gilt das Allgemein oder gibt es da Ausnahmen?
Wo soll denn der Server laufen?
Zunächst nur auf einem Einzelplatzrechner. Das was man beim "ConnectionString" unter "DataSource" angibt bzw. beim Server Management Studio zum Anmelden eingibt.

2. Das dämliche "N" bei Inserts. Kann man eine Datenbank von Anfang an so konfigurieren, dass man darauf verzichten kann? Unicode muss aber sein, es geht um CJK Texte.
Seit 2016 ist UTF-8 eine Kollation für nicht-nationale Typen. Das könnte funktionieren. Ob man die Implikationen möchte, ist eine andere Frage.
Danke, klappt. Wenn ich bei CREATE DATABASE mit COLLATE eine UTF8-Option wähle, funktioniert es auch ohne 'N'. Absolut verständlich, dass es von der Sortierung abhängt.
Zitat von Microsoft:
Stellen Sie einer Unicode-Zeichenfolgenkonstanten den Buchstaben „N“ voran, um UCS-2- oder UTF-16-Eingabe zu markieren, je nachdem, ob eine Sortierung mit zusätzlichen Zeichen verwendet wird. Ohne das Präfix „N“ wird die Zeichenfolge in die Standardcodepage der Datenbank konvertiert, die einige Zeichen ggf. nicht erkennt. Ab SQL Server 2019 (15.x) gilt Folgendes: Wenn eine Sortierung mit aktiviertem UTF-8 verwendet wird, kann die Standardcodepage einen UNICODE UTF-8-Zeichensatz speichern.
Scheint auch noch recht neu zu sein.

3. Wenn ich mir das Schema mit den Datenbanknamen hohle, gibt es auch das Feld Description. Wie kann ich die setzen? Bei Jet ging das ja wohl über die Properties.
Das ist eine Systemtabelle, sys.extended_properties WHERE name='MS_Description' . Da brauchst du aber weitere Werte für den PK: Den Wert für die Spalte schema_id bekommt man aus sys.schemas und den Wert für die Spalten major_id und minor_id aus sys.columns (object_id und column_id ). Völlig logisch, oder?
Guter Tipp. Ich habe mit 'sp_addextendedproperty' eine Beschreibung hinein bekommen. Zumindest finde ich sie im Management Studio allerdings nicht in der einfachen Schema-Abfrage. Aber ich weiß ja wo es steht, dann kann ich sie auch abfragen.
  Mit Zitat antworten Zitat
Redeemer

Registriert seit: 19. Jan 2009
Ort: Kirchlinteln (LK Verden)
1.054 Beiträge
 
Delphi 2009 Professional
 
#5

AW: XML zu Datenbanken

  Alt 26. Jan 2022, 16:54
Danke für eure Antworten. Allerdings, ich bin ein lausiger Laie bei dem Thema, einige Antworten waren daher recht schwer zu verstehen. Aber irgendwann muss man ja mal anfangen. Ich versuche erst einmal nur die XML-Daten in eine Datenbank zu bekommen, um dann einfache Abfragen, Sichten und vielleicht auch Prozeduren mit Parametern schreiben zu können.

1. Den Servernamen bekomme ich aus dem Computernamen sowie "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microso ft SQL Server" und dort "InstalledInstances"? Gilt das Allgemein oder gibt es da Ausnahmen?
Wo soll denn der Server laufen?
Zunächst nur auf einem Einzelplatzrechner. Das was man beim "ConnectionString" unter "DataSource" angibt bzw. beim Server Management Studio zum Anmelden eingibt.
Kann man den Nutzer den Servernamen nicht in deinem Programm konfigurieren lassen? Betrifft ja nur diejenigen Nutzer, die auch so schlau (oder „schlau“) waren, den Standardservernamen GetEnvironmentVariable('COMPUTERNAME') + '\MSSQLSERVER' zu ändern – da sollten sie das schon wissen. Der Rest nimmt den gerade genannten Standardwert.
Janni
2005 PE, 2009 PA, XE2 PA
  Mit Zitat antworten Zitat
TigerLilly

Registriert seit: 24. Mai 2017
Ort: Wien, Österreich
1.205 Beiträge
 
Delphi 11 Alexandria
 
#6

AW: XML zu Datenbanken

  Alt 27. Jan 2022, 08:20
Kann man den Nutzer den Servernamen nicht in deinem Programm konfigurieren lassen? Betrifft ja nur diejenigen Nutzer, die auch so schlau (oder „schlau“) waren, den Standardservernamen GetEnvironmentVariable('COMPUTERNAME') + '\MSSQLSERVER' zu ändern – da sollten sie das schon wissen. Der Rest nimmt den gerade genannten Standardwert.
Das stimmt nicht ganz. Die Standardinstanz hört via ConnectionString auf DataSource=<computername>. Es kann aber auch benannte Instanzen geben, die hören dann auf DataSource=<computername>\<InstanzName>.
"localhost" gibtes auch noch und mit der IP-Adresse würde es auch funktionieren.
  Mit Zitat antworten Zitat
Ydobon

Registriert seit: 3. Mär 2006
264 Beiträge
 
Delphi 11 Alexandria
 
#7

AW: XML zu Datenbanken

  Alt 27. Jan 2022, 09:28
@Redeemer: Bei mir ist es ja bereits "SQLEXPRESS" und nicht "MSSQLSERVER". Da müsste also auf jeden Fall die installierte Version abgefragt werden. Der Name lässt sich scheinbar auch relativ leicht ändern (SSMS->Registrierte Server) oder mehrere Instanzen installieren. Sind dann alle Namen unter diesem Reg-Schlüssel aufgelistet?

@TigerLilly: "Localhost" geht tatsächlich auch. Gilt die entsprechende Computer-IP dann in Netzwerken?
  Mit Zitat antworten Zitat
TigerLilly

Registriert seit: 24. Mai 2017
Ort: Wien, Österreich
1.205 Beiträge
 
Delphi 11 Alexandria
 
#8

AW: XML zu Datenbanken

  Alt 27. Jan 2022, 09:42
@TigerLilly: Gilt die entsprechende Computer-IP dann in Netzwerken?
Ja. An Stelle des Servernamens kannst du auch die IP Adresse nehmen. Hilft zB, wenn - warum auch immer - die Namensauflösung nicht funktioniert. Aber Achtung: Bei der Express-Edition lauscht der SQL-Server per default NICHT ins Netzwerk. Da muss man die Protokolle erst aufdrehen und sicherstellen, dass die Ports nicht geblockt sind (Firewall).

Siehe auch:
https://portal.marcos-software.de/su...-ip-protokoll-
https://blog.sqlauthority.com/2019/0...om-start-menu/
  Mit Zitat antworten Zitat
Redeemer

Registriert seit: 19. Jan 2009
Ort: Kirchlinteln (LK Verden)
1.054 Beiträge
 
Delphi 2009 Professional
 
#9

AW: XML zu Datenbanken

  Alt 27. Jan 2022, 10:01
Es gibt Situationen, in denen für die Ansprache der Standardinstanz ohne ihren Namen der SQL Server Native Client erforderlich ist, da der bei Windows 10 mitgelieferte SQL Server Native Client nicht für Verbindungen mit Versionen neuer als 2005 gedacht ist. Ich versuche, eine Abhängigkeit vom SQL Server Native Client zu vermeiden.
Janni
2005 PE, 2009 PA, XE2 PA
  Mit Zitat antworten Zitat
TigerLilly

Registriert seit: 24. Mai 2017
Ort: Wien, Österreich
1.205 Beiträge
 
Delphi 11 Alexandria
 
#10

AW: XML zu Datenbanken

  Alt 27. Jan 2022, 12:50
Es gibt Situationen, in denen für die Ansprache der Standardinstanz ohne ihren Namen der SQL Server Native Client erforderlich ist, da der bei Windows 10 mitgelieferte SQL Server Native Client nicht für Verbindungen mit Versionen neuer als 2005 gedacht ist. Ich versuche, eine Abhängigkeit vom SQL Server Native Client zu vermeiden.
Hmm. Ich hatte mal den Fall, dass Provider=SQLOLEDB.1 den Server nicht fand, Provider=SQLNCLI11 aber schon. Dein Hinweis ist mir neu. Hatten wir noch nicht.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:19 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