Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

MSSQL Feld einer Tabelle für andere Zugriffe sperren geht das?

Frage Entwicklung Datenbanken

Mitglied: Tomate007

Tomate007 (Level 1) - Jetzt verbinden

30.07.2007, aktualisiert 31.07.2007, 5830 Aufrufe, 4 Kommentare

Hallo,

ich suche eine Möglichkeit ein Feld für andere Zugriffe zu sperren außer für den Zugriff der den Befehl zum sperren gibt.

Also mal ein Beispiel.

Ich habe eine Tabelle:

CountryId char(2)
RefId char(30)
Start int
End int
value int.

nun möchte ich den Inhalt von value wo CoutnryId = 12 und RefId = 22 dieser Wert aus Value wird dann durch mein Programm verändert und wieder in value gespeichert. Erst dannach wird das Feld wieder freigegeben für andere Zugriffe. Das ist meine Vorstellung. Also Kurzform:

Feld value (wo CountryId = 12 AND RefId = 22) für andere Benutzer sperren.
Inhalt von value (wo CountryId = 12 AND RefId = 22) auslesen
Inhalt von value (wo CountryId = 12 AND RefId = 22) ändern
Inhalt in value (wo CountryId = 12 AND RefId = 22) abspeichern
value (wo CountryId = 12 AND RefId = 22) wieder für andere zugriffe freigeben.

Ist dies mit einer MSSQL-Datenbank möglich?? wenn ja könnte mir einer erklären wie es geht?

Ich danke im Vorraus...

MFG
Andre
Mitglied: AndreasHoster
30.07.2007 um 16:46 Uhr
Ja geht.
Erklären, nun ja, ginge schon, wäre aber etwas sehr aufwendig.
Schon mal was von Transaktionen gehört? Wäre hilfreich.
Und wie, mit welcher Programmiersprache soll das stattfinden? Direkt ein Transact SQL Programm auf dem Server oder doch eher eine VisualBasic Anwendung die per DAO oder ADO zugreift? Je nachdem muß man die Parameter anders / woanders angeben.

Insgesamt ist die Sperrlogik des SQL Servers auch nicht was, was man in 2 Minuten erklärt.
Aber falls Du selber in der SQL Hilfe noch lesen willst, Stichworte wären:
Isolationsstufen, Transaktionen, Sperren
Bitte warten ..
Mitglied: Tomate007
31.07.2007 um 08:13 Uhr
Auf dem Server läuft Delphi welches den Zugriff auf den SQL-Server steuert und das Value dann halt modifiziert.....

Also es is ne ISAPI von Delphi welches dann halt auf die Datenbank zugreift....

Ich hatte jetzt sowas gehofft wie als wenn es nen SQL befehlt zum sperren gibt und einen zum entsperen... weil dann könnte ich das so machen:

SQL SPERREN value where CountryId = 12 AND RefId = 22
SQL SELECT value where CountryId = 12 AND RefId = 22
Bearbeitung im Programm(Delphi)
SQL UPDATE Table value= 'neuer wert' where CountryId = 12 AND RefId = 22
SQL ENTSPERREN value where CountryId = 12 AND RefId = 22

Ist das nicht so einfach durch sql befehle möglich ?!

mmh wie die Datenbankverbindung hergestellt wird ich glaube über ODBC, muss ich nochmal meinen Ausbilder fragen.


EDIT1:
Also ich hab jetzt mal google befragt zu deinen Suchbegriffen habe auch sehr viel Text gefunden es auch gelesen aber ich versteh nur Bahnhof und Kofferklaun..... wäre es möglich das du auf mein Beispiel hier mir ein Beispiel zur sperrung der Datenbank schreibst?? weil wenn ich dann einmal nen Beispiel habe kann ich es auch leichter verstehen. Danke
Ende EDIT1

Danke für die Hilfe

MFG
Andre
Bitte warten ..
Mitglied: AndreasHoster
31.07.2007 um 08:59 Uhr
Ja, ja und dann stürzt das Programm ab und die Sperre bleibt ewig.
Nein, solche Sperren haben eine maximale Gültigkeit über eine Transaktion und wie man das mit Transaktionen macht ist von Programmiersprache zu Programmiersprache unterschiedlich.
Und Delphi ist jetzt nicht meine Programmiersprache.
Außerdem gibts verschiedene Stufen von Sperren (oder im SQL Jargon Isolationsstufen), je nachdem was alles vermieden werden soll. Bei Mehrbenutzersystemen ist es nämlich tödlich zuviel zu sperren, weil dann Wartezeiten und Deadlocks extrem zunehmen.

Unter VB lese ich die Zeile mit OpenRecordset(Select ...,,,) aus und kann im OpenRecordset Befehl sagen, wie gesperrt werden soll (dabei macht VB die Transaktionen implizit, ohne daß ich noch was machen muß) wenn man in den Edit Modus wechselt. Nehme mal an, Delphi kann sowas auch.
Bitte warten ..
Mitglied: Tomate007
31.07.2007 um 13:46 Uhr
Also ich hab jetzt nochmal genau nachgefragt...

Ich soll nichts in Delphi oder so programmieren sondern...

Ich soll eine Transact-SQL Prozedur auf dem MS-SQL-Server programmieren welche dann mit Execute und den 3 variablen (CountyId,RefId,neuer value wert) aufgerufen wird. Nun ist es schlimmer als erwartet und ich habe mir einfach mal die vorhandenen Systemprozeduren angesehen und verstehe nur Bahnhof und Kofferklauen. Das hab ich auch meinen Ausbilder gesagt aber der meinte ich soll es versuchen und nun steh ich da... kann mir einer nen gutes Tutorial zum Prozeduren programmieren auf einen MS-SQL-Server nennen??


MFG
Andre
Bitte warten ..
Ähnliche Inhalte
Datenbanken
gelöst MSSQL-Benutzer . Zugriff nur auf 2 Tabellen und 1 View (3)

Frage von Snuffchen zum Thema Datenbanken ...

Datenbanken
gelöst MySQL - Feld aus anderer Tabelle hinzusummieren? (5)

Frage von 1410640014 zum Thema Datenbanken ...

Datenbanken
gelöst Hilfe bei MSSQL-Anweisung, Werte in andere Tabelle einfügen (8)

Frage von d4shoerncheN zum Thema Datenbanken ...

Datenbanken
Informix SE Tabelle alle Felder auf NULL prüfen (4)

Frage von RalfHackmann zum Thema Datenbanken ...

Neue Wissensbeiträge
Windows Update

Microsoft Update KB4034664 verursacht Probleme mit Multimonitor-Systemen

Tipp von beidermachtvongreyscull zum Thema Windows Update ...

Viren und Trojaner

CNC-Fräsen von MECANUMERIC werden (ggf.) mit Viren, Trojanern, Würmern ausgeliefert

(4)

Erfahrungsbericht von anteNope zum Thema Viren und Trojaner ...

Windows 10

Windows 10: Erste Anmeldung Animation deaktivieren

(3)

Anleitung von alemanne21 zum Thema Windows 10 ...

Heiß diskutierte Inhalte
Router & Routing
gelöst Linksys wrt1200ac v2 mit dd-wrt: keine vlan-einstellungen im GUI (15)

Frage von Pixi123 zum Thema Router & Routing ...

E-Business
Wo tragt ihr eure privaten Termine ein? (13)

Frage von honeybee zum Thema E-Business ...

Batch & Shell
Batch zum suchen und verschieben von Verknüpfungen (12)

Frage von zeroblue2005 zum Thema Batch & Shell ...

Windows Server
Terminalserver starten willkürlich neu (12)

Frage von thaefliger zum Thema Windows Server ...