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, 5662 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...

Mit freundlichen Grüßen
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

Mit freundlichen Grüßen
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??


Mit freundlichen Grüßen
Andre
Bitte warten ..
Neuester Wissensbeitrag
Windows 10

Powershell 5 BSOD

(1)

Tipp von agowa338 zum Thema Windows 10 ...

Ähnliche Inhalte
Windows Netzwerk
Windows 10 RDP geht nicht (18)

Frage von Fiasko zum Thema Windows Netzwerk ...

Datenschutz
gelöst USB-Ports sperren über Kaspersky (1)

Frage von Tak-47 zum Thema Datenschutz ...

Windows Server
gelöst Active Directory CA öffentlich vertrauenswürdig machen, geht das? (2)

Frage von DeathangelCH zum Thema Windows Server ...

Outlook & Mail
gelöst Outlook 2013 Von Feld in alten Entwürfen (2)

Frage von Xartor zum Thema Outlook & Mail ...

Heiß diskutierte Inhalte
Windows Userverwaltung
Ausgeschiedene Mitarbeiter im Unternehmen - was tun mit den AD Konten? (34)

Frage von patz223 zum Thema Windows Userverwaltung ...

LAN, WAN, Wireless
gelöst Server erkennt Client nicht wenn er ausserhalb des DHCP Pools liegt (28)

Frage von Mar-west zum Thema LAN, WAN, Wireless ...

Windows Server
Server 2008R2 startet nicht mehr (Bad Patch 0xa) (18)

Frage von Haures zum Thema Windows Server ...