Replikation Sql Server 2005 SP3-> 2008R2:
=========================================
generell: wenn man vom SSMS (Sql Server Management Studio) Replikation einrichten will, muß man sich mit dem Netzwerknamen des Servers einloggen, nicht mit localhost, IP Adressen oder sonstigen Aliasen, sonst erhält man die irreführende Fehlermeldung: MMSM is unable to access replication components because replication is not installed on this instance of SQL Server.
Für die Publikation ist ein Distributer nötig (rechte Maustaste auf Replikations Knoten im SSMS)
Snapshot:
---------
geht ohne Probleme
Transactional:
-------------
geht, die zu replizierenden Tabellen müssen einen primary key haben, sonst erhält man: Database 'DB_NAME' contains no objects that can be replicated with the selected publication type. Click Back to choose another database or change the publication type, Performance: Distributor auf eigenem server
Merge:
------
Fehlermeldung "For merge Publications, the version of the Subscriber must not exceed the version of the Publisher."
LogShipping:
============
geht nur im "No Recovery Mode" und nicht im Standby Mode
meine Sys/Db admin & Developper Notitzen - wer Rechtschreibfehler findet darf sie behalten ... my Sys/Db Admin and developper notes - I don't care about typos
Monday, April 04, 2011
Tuesday, March 29, 2011
RunDLL und RunDLL32
Zitat: "RunDLL ruft Funktionen auf, die entweder aus 16bit-DLLs (RunDLL.exe) oder 32bit-DLLs (RunDLL32.exe) exportiert werden. RunDLL unterstützt diese Funktionalität nur für solche DLLs, die diese Aufruf-Möglichkeit explizit unterstützen - so können beispielsweise die System-DLLs des API nicht genutzt werden." Source/Quelle: BasicPro
Die generelle Syntax für die Nutzung von RunDLL:
RUNDLL.EXE, [opt. Argumente]
bzw.
RUNDLL32.EXE, [opt. Argumente]
Bei Ausfürung ist die Groß/Kleinschreibung zu beachten!
Oder sind Sie speziell auf der Suche nach Druckersteuerung per Kommandzeile?
--------------------------------------------------------------------------------
Praktische Anwendungsmöglichkeiten
Allgemein:
rundll32.exe shell32.dll,Control_RunDLL
Zeigt die Systemsteuerung in Explorer-Stil an.
Eingabehilfen: (Modul: access.cpl)
rundll32.exe shell32.dll,Control_RunDLL access.cpl,,1
Zeigt die Tastatur-Eigenschaften für die Eingabehilfen an.
rundll32.exe shell32.dll,Control_RunDLL access.cpl,,2
Zeigt die Audio-Eigenschaften für die Eingabehilfen an.
rundll32.exe shell32.dll,Control_RunDLL access.cpl,,3
Zeigt die Anzeige-Eigenschaften für die Eingabehilfen an.
rundll32.exe shell32.dll,Control_RunDLL access.cpl,,4
Zeigt die Maus-Eigenschaften für die Eingabehilfen an.
rundll32.exe shell32.dll,Control_RunDLL access.cpl,,5
Zeigt die generellen Eigenschaften für die Eingabehilfen an.
Anzeige: (Modul: desk.cpl)
rundll32.exe shell32.dll,Control_RunDLL desk.cpl,,0
Zeigt "Eigenschaften von Anzeige - Hintergrund" an.
rundll32.exe shell32.dll,Control_RunDLL desk.cpl,,1
Zeigt "Eigenschaften von Anzeige - Bildschirmschoner" an.
rundll32.exe shell32.dll,Control_RunDLL desk.cpl,,2
Zeigt "Eigenschaften von Anzeige - Darstellung" an.
rundll32.exe shell32.dll,Control_RunDLL desk.cpl,,3
Zeigt "Eigenschaften von Anzeige - Einstellungen" an.
Grundeinstellungen: (Modul: main.cpl)
rundll32.exe shell32.dll,Control_RunDLL main.cpl @0
Zeigt "Eigenschaften von Maus - Tasten" an.
rundll32.exe shell32.dll,Control_RunDLL main.cpl @1
Zeigt "Eigenschaften von Tastatur - Geschwindigkeit" an.
rundll32.exe shell32.dll,Control_RunDLL main.cpl @1,1
Zeigt "Eigenschaften von Tastatur - Sprache" an.
rundll32.exe shell32.dll,Control_RunDLL main.cpl @1,2
Zeigt "Eigenschaften von Tastatur - Allgemein" an.
rundll32.exe shell32.dll,Control_RunDLL main.cpl @2
Zeigt den Drucker-Ordner im Explorer-Stil an.
rundll32.exe shell32.dll,Control_RunDLL main.cpl @3
Zeigt den Schriftarten-Ordner im Explorer-Stil an.
rundll32.exe shell32.dll,Control_RunDLL main.cpl @4
Zeigt die Energiesparfunktionen an.
Multimedia: (Modul: mmsys.cpl)
rundll32.exe shell32.dll,Control_RunDLL mmsys.cpl,,0
Zeigt "Eigenschaften von Multimedia - Audio" an.
rundll32.exe shell32.dll,Control_RunDLL mmsys.cpl,,1 Zeigt "Eigenschaften von Multimedia - Video" an.
rundll32.exe shell32.dll,Control_RunDLL mmsys.cpl,,2
Zeigt "Eigenschaften von Multimedia - MIDI" an.
rundll32.exe shell32.dll,Control_RunDLL mmsys.cpl,,3
Zeigt "Eigenschaften von Multimedia - Musik-CD" an.
rundll32.exe shell32.dll,Control_RunDLL mmsys.cpl,,4
Zeigt "Eigenschaften von Multimedia - Erweitert" an.
rundll32.exe shell32.dll,Control_RunDLL mmsys.cpl @1
Zeigt den Dialog "Akustische Signale" an.
Ländereinstellungen:(Modul: intl.cpl)
rundll32.exe shell32.dll,Control_RunDLL intl.cpl,,0
Zeigt "Eigenschaften von Ländereinstellungen - Gebietsschema" an.
rundll32.exe shell32.dll,Control_RunDLL intl.cpl,,1
Zeigt "Eigenschaften von Ländereinstellungen - Zahlen" an.
rundll32.exe shell32.dll,Control_RunDLL intl.cpl,,2
Zeigt "Ländereinstellungen - Währung" an.
rundll32.exe shell32.dll,Control_RunDLL intl.cpl,,3
Zeigt "Ländereinstellungen - Uhrzeit" an.
rundll32.exe shell32.dll,Control_RunDLL intl.cpl,,4
Zeigt "Ländereinstellungen - Datum" an.
System:(Modul: sysdm.cpl)
rundll32.exe shell32.dll,Control_RunDLL sysdm.cpl,,0
Zeigt "Eigenschaften für System - Allgemein" an.
rundll32.exe shell32.dll,Control_RunDLL sysdm.cpl,,1
Zeigt "Eigenschaften für System - Geräte-Manager" an.
rundll32.exe shell32.dll,Control_RunDLL sysdm.cpl,,2
Zeigt "Eigenschaften für System - Hardwareprofile" an.
rundll32.exe shell32.dll,Control_RunDLL sysdm.cpl,,3
Zeigt "Eigenschaften für System - Leistungsmerkmale" an.
rundll32.exe shell32.dll,Control_RunDLL sysdm.cpl @1
Zeigt den Hardware-Assistenten zur Installation neuer Hardware-Komponenten an.
Netzwerk: (Modul: netcpl.cpl)
rundll32.exe shell32.dll,Control_RunDLL netcpl.cpl
Zeigt die "Netzwerk - Konfiguration" an.
Kennwörter: (Modul: password.cpl)
rundll32.exe shell32.dll,Control_RunDLL password.cpl
Zeigt "Eigenschaften von Kennwörter - Kennwörter ändern" an.
Datum/Uhrzeit: (Modul: timedate.cpl)
rundll32.exe shell32.dll,Control_RunDLL timedate.cpl
Zeigt "Eigenschaften von Datum/Uhrzeit- Datum und Uhrzeit" an.
rundll32.exe shell32.dll,Control_RunDLL timedate.cpl,,1
Zeigt "Eigenschaften von Datum/Uhrzeit- Zeitzone" an.
Joystick: (Modul: joy.cpl)
rundll32.exe shell32.dll,Control_RunDLL joy.cpl
Zeigt "Eigenschaften von Joystick- Joystick" an.
Modems: (Modul: modem.cpl)
rundll32.exe shell32.dll,Control_RunDLL modem.cpl
Zeigt "Eigenschaften für Modems - Allgemein" an.
rundll32.exe shell32.dll,Control_RunDLL modem.cpl,,add
Zeigt den Wizard "Neus Modem installieren" an.
Software: (Modul: appwiz.cpl)
rundll32.exe shell32.dll,Control_RunDLL appwiz.cpl
Zeigt "Eigenschaften von Software - Installieren/Deinstallieren" an.
rundll32.exe shell32.dll,Control_RunDLL appwiz.cpl,,2
Zeigt "Eigenschaften von Software - Windows-Setup" an.
rundll32.exe shell32.dll,Control_RunDLL appwiz.cpl,,3
Zeigt "Eigenschaften von Software - Startdiskette" an.
rundll32.exe appwiz.cpl,NewLinkHere c:\temp
Startet den Verknüpfungs-Assistenten und legt im angegebenen Verzeichnis die vom Benutzer angegebene Verknüpfung an
Sonstiges:
rundll32.exe shell32.dll,Control_FillCache_RunDLL
Läßt Windows die Systemsteuerung neu einrichten.
rundll32.exe shell32.dll,Control_RunDLL wgpocpl.cpl
Zeigt den Administrator-Dialog für ein Microsoft Workgroup-Postoffice an.
rundll32.exe shell32.dll,OpenAs_RunDLL c:\datei.asd
Zeigt den "Öffnen mit"-Dialog an und assoziiert (bei entsprechend aktivierter Dialog-Option) bei Anwendungsauswahl die Dateiendung (hier: .asd) mit der ausgewählten Anwendung.
rundll32.exe shell32.dll,SHFormatDrive
Zeigt den "Diskette formatieren"-Dialog an.
rundll32.exe shell32.dll,SHHelpShortcuts_RunDLL AddPrinter
Ruft den Assistenten für die Druckerinstallation auf.
rundll32.exe shell32.dll,SHHelpShortcuts_RunDLL PrintTestPage
Druckt eine Testseite auf dem aktuellen Drucker.
rundll32.exe rnaui.dll,RnaWizard
Ruft den Assistenten für eine DFÜ-Netzwerkverbindung auf (mit vorheriger Erklärung).
rundll32.exe rnaui.dll,RnaWizard @1
Ruft den Assistenten für eine DFÜ-Netzwerkverbindung auf (ohne Erklärung).
rundll32.exe rnaui.dll,RnaDial Internet
Ruft den Assistenten "Verbinden mit" mit dem angegebenen Verbindungsnamen auf.
rundll32.exe syncui.dll,Briefcase_Intro
Zeigt ein Informationsfenster zum Windows-Aktenkoffer an.
rundll32.exe syncui.dll,Briefcase_Create
Legt einen neuen Aktenkoffer an (nähere Verwendung noch unklar).
rundll32.exe diskcopy.dll,DiskCopyRunDll
Ruft den Dialog "Diskette kopieren" auf.
rundll32.exe sysdm.cpl,DMFistTimeSetup
Ruft den (alleine recht sinnfreien) Dialog "Hardwarekonfiguration" mit einer Meldung "Die Konfiguration des Computers wird vervollständigt" auf.
rundll32.exe url.dll,FileProtocolHandler http://masterbootrecord.de
Ruft die angegebene Datei oder Adresse in der assoziierten Anwendung auf.
rundll32.exe url.dll,TelnetProtocolHandler 194.45.127.79
Stellt eine Telnet-Verbindung zum angegebenen Rechner her.
rundll32.exe url.dll,MailToProtocolHandler webmaster@masterbootrecord.de
Ruft das Standard-Mailprogramm auf.
rundll32.exe url.dll,NewsProtocolHandler de.prog.perl
Ruft den Standard-Newsreader auf.
rundll32.exe shell32.dll,Control_RunDLL mlcfg32.cpl
Zeigt die Eigenschaftsseite des Microsoft-Exchange-Profils an.
rundll32.exe desk.cpl,InstallScreenSaver c:\windows\system\ssaver.scr
Installiert einen vorhandenen Bildschirmschoner.
rundll32.exe shell32.dll,Control_RunDLL inetcpl.cpl @1
Zeigt (bei installiertem Internet Explorer) den Dialog "Benutzereinstellungen - Benutzerliste" an.
rundll32.exe shell32.dll,Control_RunDLL inetcpl.cpl,,0
Zeigt (bei installiertem Internet Explorer) den Dialog "Eigenschaften von Internet - Allgemein" an.
Rundll32.exe user,ExitWindows
Beendet Windows.
Rundll32.exe user,ExitWindowsExec
Startet Windows neu.
Rundll32.exe krnl386.exe,exitkernel
Beendet Windows auf eine unsanfte Art...
Rundll32.exe user,disableoemlayer
Lässt Windows die grafische Oberfläche deaktivieren. Man sieht nur noch einen Blinkenden Cursor... Netter Gag.
Rundll32.exe user,repaintscreen
Aktualisiert die Anzeige (F5).
Rundll32.exe user,setcursorpos
Setzt den Mauscursor in die linke obere Ecke.
Rundll32.exe user,swapmousebutton
Vertauscht bis zum nächsten Neustart die beiden Maustasten.
Rundll32.exe keyboard,disable
Deaktiviert bis zum nächsten Neustart die Tastatur.
Rundll32.exe mouse,disable
Deaktiviert bis zum nächsten Neustart die Maus.
Die generelle Syntax für die Nutzung von RunDLL:
RUNDLL.EXE
bzw.
RUNDLL32.EXE
Bei Ausfürung ist die Groß/Kleinschreibung zu beachten!
Oder sind Sie speziell auf der Suche nach Druckersteuerung per Kommandzeile?
--------------------------------------------------------------------------------
Praktische Anwendungsmöglichkeiten
Allgemein:
rundll32.exe shell32.dll,Control_RunDLL
Zeigt die Systemsteuerung in Explorer-Stil an.
Eingabehilfen: (Modul: access.cpl)
rundll32.exe shell32.dll,Control_RunDLL access.cpl,,1
Zeigt die Tastatur-Eigenschaften für die Eingabehilfen an.
rundll32.exe shell32.dll,Control_RunDLL access.cpl,,2
Zeigt die Audio-Eigenschaften für die Eingabehilfen an.
rundll32.exe shell32.dll,Control_RunDLL access.cpl,,3
Zeigt die Anzeige-Eigenschaften für die Eingabehilfen an.
rundll32.exe shell32.dll,Control_RunDLL access.cpl,,4
Zeigt die Maus-Eigenschaften für die Eingabehilfen an.
rundll32.exe shell32.dll,Control_RunDLL access.cpl,,5
Zeigt die generellen Eigenschaften für die Eingabehilfen an.
Anzeige: (Modul: desk.cpl)
rundll32.exe shell32.dll,Control_RunDLL desk.cpl,,0
Zeigt "Eigenschaften von Anzeige - Hintergrund" an.
rundll32.exe shell32.dll,Control_RunDLL desk.cpl,,1
Zeigt "Eigenschaften von Anzeige - Bildschirmschoner" an.
rundll32.exe shell32.dll,Control_RunDLL desk.cpl,,2
Zeigt "Eigenschaften von Anzeige - Darstellung" an.
rundll32.exe shell32.dll,Control_RunDLL desk.cpl,,3
Zeigt "Eigenschaften von Anzeige - Einstellungen" an.
Grundeinstellungen: (Modul: main.cpl)
rundll32.exe shell32.dll,Control_RunDLL main.cpl @0
Zeigt "Eigenschaften von Maus - Tasten" an.
rundll32.exe shell32.dll,Control_RunDLL main.cpl @1
Zeigt "Eigenschaften von Tastatur - Geschwindigkeit" an.
rundll32.exe shell32.dll,Control_RunDLL main.cpl @1,1
Zeigt "Eigenschaften von Tastatur - Sprache" an.
rundll32.exe shell32.dll,Control_RunDLL main.cpl @1,2
Zeigt "Eigenschaften von Tastatur - Allgemein" an.
rundll32.exe shell32.dll,Control_RunDLL main.cpl @2
Zeigt den Drucker-Ordner im Explorer-Stil an.
rundll32.exe shell32.dll,Control_RunDLL main.cpl @3
Zeigt den Schriftarten-Ordner im Explorer-Stil an.
rundll32.exe shell32.dll,Control_RunDLL main.cpl @4
Zeigt die Energiesparfunktionen an.
Multimedia: (Modul: mmsys.cpl)
rundll32.exe shell32.dll,Control_RunDLL mmsys.cpl,,0
Zeigt "Eigenschaften von Multimedia - Audio" an.
rundll32.exe shell32.dll,Control_RunDLL mmsys.cpl,,1 Zeigt "Eigenschaften von Multimedia - Video" an.
rundll32.exe shell32.dll,Control_RunDLL mmsys.cpl,,2
Zeigt "Eigenschaften von Multimedia - MIDI" an.
rundll32.exe shell32.dll,Control_RunDLL mmsys.cpl,,3
Zeigt "Eigenschaften von Multimedia - Musik-CD" an.
rundll32.exe shell32.dll,Control_RunDLL mmsys.cpl,,4
Zeigt "Eigenschaften von Multimedia - Erweitert" an.
rundll32.exe shell32.dll,Control_RunDLL mmsys.cpl @1
Zeigt den Dialog "Akustische Signale" an.
Ländereinstellungen:(Modul: intl.cpl)
rundll32.exe shell32.dll,Control_RunDLL intl.cpl,,0
Zeigt "Eigenschaften von Ländereinstellungen - Gebietsschema" an.
rundll32.exe shell32.dll,Control_RunDLL intl.cpl,,1
Zeigt "Eigenschaften von Ländereinstellungen - Zahlen" an.
rundll32.exe shell32.dll,Control_RunDLL intl.cpl,,2
Zeigt "Ländereinstellungen - Währung" an.
rundll32.exe shell32.dll,Control_RunDLL intl.cpl,,3
Zeigt "Ländereinstellungen - Uhrzeit" an.
rundll32.exe shell32.dll,Control_RunDLL intl.cpl,,4
Zeigt "Ländereinstellungen - Datum" an.
System:(Modul: sysdm.cpl)
rundll32.exe shell32.dll,Control_RunDLL sysdm.cpl,,0
Zeigt "Eigenschaften für System - Allgemein" an.
rundll32.exe shell32.dll,Control_RunDLL sysdm.cpl,,1
Zeigt "Eigenschaften für System - Geräte-Manager" an.
rundll32.exe shell32.dll,Control_RunDLL sysdm.cpl,,2
Zeigt "Eigenschaften für System - Hardwareprofile" an.
rundll32.exe shell32.dll,Control_RunDLL sysdm.cpl,,3
Zeigt "Eigenschaften für System - Leistungsmerkmale" an.
rundll32.exe shell32.dll,Control_RunDLL sysdm.cpl @1
Zeigt den Hardware-Assistenten zur Installation neuer Hardware-Komponenten an.
Netzwerk: (Modul: netcpl.cpl)
rundll32.exe shell32.dll,Control_RunDLL netcpl.cpl
Zeigt die "Netzwerk - Konfiguration" an.
Kennwörter: (Modul: password.cpl)
rundll32.exe shell32.dll,Control_RunDLL password.cpl
Zeigt "Eigenschaften von Kennwörter - Kennwörter ändern" an.
Datum/Uhrzeit: (Modul: timedate.cpl)
rundll32.exe shell32.dll,Control_RunDLL timedate.cpl
Zeigt "Eigenschaften von Datum/Uhrzeit- Datum und Uhrzeit" an.
rundll32.exe shell32.dll,Control_RunDLL timedate.cpl,,1
Zeigt "Eigenschaften von Datum/Uhrzeit- Zeitzone" an.
Joystick: (Modul: joy.cpl)
rundll32.exe shell32.dll,Control_RunDLL joy.cpl
Zeigt "Eigenschaften von Joystick- Joystick" an.
Modems: (Modul: modem.cpl)
rundll32.exe shell32.dll,Control_RunDLL modem.cpl
Zeigt "Eigenschaften für Modems - Allgemein" an.
rundll32.exe shell32.dll,Control_RunDLL modem.cpl,,add
Zeigt den Wizard "Neus Modem installieren" an.
Software: (Modul: appwiz.cpl)
rundll32.exe shell32.dll,Control_RunDLL appwiz.cpl
Zeigt "Eigenschaften von Software - Installieren/Deinstallieren" an.
rundll32.exe shell32.dll,Control_RunDLL appwiz.cpl,,2
Zeigt "Eigenschaften von Software - Windows-Setup" an.
rundll32.exe shell32.dll,Control_RunDLL appwiz.cpl,,3
Zeigt "Eigenschaften von Software - Startdiskette" an.
rundll32.exe appwiz.cpl,NewLinkHere c:\temp
Startet den Verknüpfungs-Assistenten und legt im angegebenen Verzeichnis die vom Benutzer angegebene Verknüpfung an
Sonstiges:
rundll32.exe shell32.dll,Control_FillCache_RunDLL
Läßt Windows die Systemsteuerung neu einrichten.
rundll32.exe shell32.dll,Control_RunDLL wgpocpl.cpl
Zeigt den Administrator-Dialog für ein Microsoft Workgroup-Postoffice an.
rundll32.exe shell32.dll,OpenAs_RunDLL c:\datei.asd
Zeigt den "Öffnen mit"-Dialog an und assoziiert (bei entsprechend aktivierter Dialog-Option) bei Anwendungsauswahl die Dateiendung (hier: .asd) mit der ausgewählten Anwendung.
rundll32.exe shell32.dll,SHFormatDrive
Zeigt den "Diskette formatieren"-Dialog an.
rundll32.exe shell32.dll,SHHelpShortcuts_RunDLL AddPrinter
Ruft den Assistenten für die Druckerinstallation auf.
rundll32.exe shell32.dll,SHHelpShortcuts_RunDLL PrintTestPage
Druckt eine Testseite auf dem aktuellen Drucker.
rundll32.exe rnaui.dll,RnaWizard
Ruft den Assistenten für eine DFÜ-Netzwerkverbindung auf (mit vorheriger Erklärung).
rundll32.exe rnaui.dll,RnaWizard @1
Ruft den Assistenten für eine DFÜ-Netzwerkverbindung auf (ohne Erklärung).
rundll32.exe rnaui.dll,RnaDial Internet
Ruft den Assistenten "Verbinden mit" mit dem angegebenen Verbindungsnamen auf.
rundll32.exe syncui.dll,Briefcase_Intro
Zeigt ein Informationsfenster zum Windows-Aktenkoffer an.
rundll32.exe syncui.dll,Briefcase_Create
Legt einen neuen Aktenkoffer an (nähere Verwendung noch unklar).
rundll32.exe diskcopy.dll,DiskCopyRunDll
Ruft den Dialog "Diskette kopieren" auf.
rundll32.exe sysdm.cpl,DMFistTimeSetup
Ruft den (alleine recht sinnfreien) Dialog "Hardwarekonfiguration" mit einer Meldung "Die Konfiguration des Computers wird vervollständigt" auf.
rundll32.exe url.dll,FileProtocolHandler http://masterbootrecord.de
Ruft die angegebene Datei oder Adresse in der assoziierten Anwendung auf.
rundll32.exe url.dll,TelnetProtocolHandler 194.45.127.79
Stellt eine Telnet-Verbindung zum angegebenen Rechner her.
rundll32.exe url.dll,MailToProtocolHandler webmaster@masterbootrecord.de
Ruft das Standard-Mailprogramm auf.
rundll32.exe url.dll,NewsProtocolHandler de.prog.perl
Ruft den Standard-Newsreader auf.
rundll32.exe shell32.dll,Control_RunDLL mlcfg32.cpl
Zeigt die Eigenschaftsseite des Microsoft-Exchange-Profils an.
rundll32.exe desk.cpl,InstallScreenSaver c:\windows\system\ssaver.scr
Installiert einen vorhandenen Bildschirmschoner.
rundll32.exe shell32.dll,Control_RunDLL inetcpl.cpl @1
Zeigt (bei installiertem Internet Explorer) den Dialog "Benutzereinstellungen - Benutzerliste" an.
rundll32.exe shell32.dll,Control_RunDLL inetcpl.cpl,,0
Zeigt (bei installiertem Internet Explorer) den Dialog "Eigenschaften von Internet - Allgemein" an.
Rundll32.exe user,ExitWindows
Beendet Windows.
Rundll32.exe user,ExitWindowsExec
Startet Windows neu.
Rundll32.exe krnl386.exe,exitkernel
Beendet Windows auf eine unsanfte Art...
Rundll32.exe user,disableoemlayer
Lässt Windows die grafische Oberfläche deaktivieren. Man sieht nur noch einen Blinkenden Cursor... Netter Gag.
Rundll32.exe user,repaintscreen
Aktualisiert die Anzeige (F5).
Rundll32.exe user,setcursorpos
Setzt den Mauscursor in die linke obere Ecke.
Rundll32.exe user,swapmousebutton
Vertauscht bis zum nächsten Neustart die beiden Maustasten.
Rundll32.exe keyboard,disable
Deaktiviert bis zum nächsten Neustart die Tastatur.
Rundll32.exe mouse,disable
Deaktiviert bis zum nächsten Neustart die Maus.
Thursday, January 27, 2011
Default Value bei Stored Procedure TSQl
ALTER PROCEDURE testRaiseError
@Severity int =18
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
Raiserror('Test Raiserrror',@Severity,10)
END
@Severity int =18
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
Raiserror('Test Raiserrror',@Severity,10)
END
Transaktionen und Fehlerbehandlung in TSQL
Beispiel Insert und Update in einer Transaktion, wenn eines fehlschlägt wird zurückgerollt und der Fehler weitergegeben
BEGIN TRAN T1
BEGIN TRY
--write all values to mcit.auditrail (@UserId)
INSERT INTO [AuditTrail] ([ActionType],[ObjectType],[ObjectId],[OldValues],[NewValues],[UserId])
SELECT 'Update','Products',Id,CONVERT(Nvarchar(MAX),Price),CONVERT(Nvarchar(MAX),Price*@PriceFact),@UserId
from product where [year]=@Year and SupplierGroupId=@SupplierGroupId and IsDeleted=0
update mcit.product set Price=Price*@PriceFact where [year]=@Year and SupplierGroupId=@SupplierGroupId and IsDeleted=0
END TRY
BEGIN CATCH
print 'Fehler in Transaktion aufgetreten - Rolle zurück'
ROLLBACK TRAN T1
DECLARE @MSG NVARCHAR(MAX) SET @MSG=ERROR_MESSAGE()
DECLARE @SEV INT SET @SEV=ERROR_SEVERITY()
DECLARE @STA INT SET @STA=ERROR_STATE()
RAISERROR (@MSG,@SEV,@STA)
RETURN
END CATCH
COMMIT TRAN T1
END
BEGIN TRAN T1
BEGIN TRY
--write all values to mcit.auditrail (@UserId)
INSERT INTO [AuditTrail] ([ActionType],[ObjectType],[ObjectId],[OldValues],[NewValues],[UserId])
SELECT 'Update','Products',Id,CONVERT(Nvarchar(MAX),Price),CONVERT(Nvarchar(MAX),Price*@PriceFact),@UserId
from product where [year]=@Year and SupplierGroupId=@SupplierGroupId and IsDeleted=0
update mcit.product set Price=Price*@PriceFact where [year]=@Year and SupplierGroupId=@SupplierGroupId and IsDeleted=0
END TRY
BEGIN CATCH
print 'Fehler in Transaktion aufgetreten - Rolle zurück'
ROLLBACK TRAN T1
DECLARE @MSG NVARCHAR(MAX) SET @MSG=ERROR_MESSAGE()
DECLARE @SEV INT SET @SEV=ERROR_SEVERITY()
DECLARE @STA INT SET @STA=ERROR_STATE()
RAISERROR (@MSG,@SEV,@STA)
RETURN
END CATCH
COMMIT TRAN T1
END
Monday, January 24, 2011
MSI entpacken mittels MSIEXEC
msiexec /a DATEINAME.msi /qn TARGETDIR="PFAD"
wichtig: Rargetidrpfad muss nicht existieren, darf aber nicht das msi file enthalten
wichtig: Rargetidrpfad muss nicht existieren, darf aber nicht das msi file enthalten
Monday, December 27, 2010
sqlserver managementstuido spaltenüberschriften in abfrageergebnis Copy
Tuesday, December 21, 2010
COM (OLE) Server in C#
Com Überblick:
OLE Automation dient dem Zugriff auf Com Objekten con Script Sprachen aus, diese benötigen ein Late Binding, da ja kein Compiler vorhanden ist, der das Binding vor der Laufzeit macht. Daher gibt es das IDispatch Interface, alle OLE Server müssen dieses Implementieren.
In c# erledigt die ganze Interfacedefinition usw. die Attributierung der Klasse, die COM zur Verfügung gestellt werden soll - wichtig: in VS2008 und VS2010 muss man ComVisible(true) explizit angeben, früher war dies im Attribut ClassInterface enthalten ... im Projekt vom Typ Class Library sollte unter Properties/Build/Output register for Com interop angehackt sein, das registriert den OLE Server gleich und generiert die Type Librarty, die für Script Sprachen die vorhandenen Methoden zur Verfügung stellt. Man kann dies aber auch mit regasm oder tlbexp Ole6.dll /out:Ole5.tlb machen
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Runtime.InteropServices;
namespace Ole6
{
[Guid("9C78E2DB-E664-47BE-A2C2-213AA2005078"),
ClassInterface(ClassInterfaceType.AutoDual),
ComVisible(true)]
public class Ole6
{
public Ole6() { }
public string Test()
{
return "Test";
}
}
}
OLE Automation dient dem Zugriff auf Com Objekten con Script Sprachen aus, diese benötigen ein Late Binding, da ja kein Compiler vorhanden ist, der das Binding vor der Laufzeit macht. Daher gibt es das IDispatch Interface, alle OLE Server müssen dieses Implementieren.
In c# erledigt die ganze Interfacedefinition usw. die Attributierung der Klasse, die COM zur Verfügung gestellt werden soll - wichtig: in VS2008 und VS2010 muss man ComVisible(true) explizit angeben, früher war dies im Attribut ClassInterface enthalten ... im Projekt vom Typ Class Library sollte unter Properties/Build/Output register for Com interop angehackt sein, das registriert den OLE Server gleich und generiert die Type Librarty, die für Script Sprachen die vorhandenen Methoden zur Verfügung stellt. Man kann dies aber auch mit regasm oder tlbexp Ole6.dll /out:Ole5.tlb machen
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Runtime.InteropServices;
namespace Ole6
{
[Guid("9C78E2DB-E664-47BE-A2C2-213AA2005078"),
ClassInterface(ClassInterfaceType.AutoDual),
ComVisible(true)]
public class Ole6
{
public Ole6() { }
public string Test()
{
return "Test";
}
}
}
Sunday, December 19, 2010
.net TextfileTracelistener adden
ins app.config File einfügen:
system.diagnostics
trace autoflush="true" indentsize="2"
listeners
add name="textfilelistener" type="System.Diagnostics.TextWriterTraceListener" initializeData="Log.txt"
listeners
trace
system.diagnostics
im code verwenden:
Trace.TraceInformation(Application.ExecutablePath + " started at " + DateTime.Now.ToString());
system.diagnostics
trace autoflush="true" indentsize="2"
listeners
add name="textfilelistener" type="System.Diagnostics.TextWriterTraceListener" initializeData="Log.txt"
listeners
trace
system.diagnostics
im code verwenden:
Trace.TraceInformation(Application.ExecutablePath + " started at " + DateTime.Now.ToString());
windows forms anzeige refrehsen während hintergrundtask im selben thread läuft
eigentlich ist es ja nicht schön, einen längerdauernden task im GUI Thread laufen zu lassen, aber bei quick & dirty testforms macht es ab und zu sinn. Wenn man den status des länger dauernden tasks dann anzeigen will, ist es sinnvoll nicht nur
this.refresh(); aufs formular in der langdauernden schleife aufzurufen sondern auch
Application.DoEvents(); ... dann werden die ganzen Windwos Messages abgearbeitte, die z.b. durch progressbar.PerformStep() ausgelöst werden ...
this.refresh(); aufs formular in der langdauernden schleife aufzurufen sondern auch
Application.DoEvents(); ... dann werden die ganzen Windwos Messages abgearbeitte, die z.b. durch progressbar.PerformStep() ausgelöst werden ...
Thursday, December 02, 2010
eigene config klasse
muss von ConfigurationSection abgeleitet sein, braucht eine Property SectionName, anbei der Code zum lesen und Schreiben, bei Fehlersuche ist es ratsam im Visual Studio unter Debug/Exceptions bei CLR Exceptions das Häckchen bei Thrown anzuhacken, da Fehler sonst vom Configurationmanager unterdrückt werden. Aktiviert man aber dass die Ausführung bei thrown Exceptions unterbricht,bekommt man die Orignal Fehlermeldung des Configurationmanagers.
private string _SectionName;
public string Name
{
get
{
return this.SectionInformation.Name;
}
}
public string SectionName
{
get
{
return _SectionName;
}
set
{
_SectionName = value;
}
}
public static List GetSectionsFromConfig()
{
Configuration c = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
ConfigurationSectionGroup csg = c.GetSectionGroup("DataContextParams");
List ldcp = new List();
foreach (DataContextParams dcp in csg.Sections)
{
ldcp.Add(dcp);
}
return ldcp;
}
///
/// schreibt dieses Objekt in die Config
///
/// wenn null wird in die execonfig geschrieben
public void SaveSectionToConfig(string configfile)
{
ExeConfigurationFileMap oConfigFile = new ExeConfigurationFileMap();
Configuration oConfiguration;
if (null == configfile)
{
oConfiguration = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
}
else
{
oConfigFile.ExeConfigFilename = configfile;
oConfiguration = ConfigurationManager.OpenMappedExeConfiguration(oConfigFile, ConfigurationUserLevel.None);
}
//Add it to the configuration's sections
oConfiguration.Sections.Add(SectionName, this);
//Save the given section in the configuration file
this.SectionInformation.ForceSave = true;
oConfiguration.Save(ConfigurationSaveMode.Full);
}
private string _SectionName;
public string Name
{
get
{
return this.SectionInformation.Name;
}
}
public string SectionName
{
get
{
return _SectionName;
}
set
{
_SectionName = value;
}
}
public static List
{
Configuration c = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
ConfigurationSectionGroup csg = c.GetSectionGroup("DataContextParams");
List
foreach (DataContextParams dcp in csg.Sections)
{
ldcp.Add(dcp);
}
return ldcp;
}
///
/// schreibt dieses Objekt in die Config
///
/// wenn null wird in die execonfig geschrieben
public void SaveSectionToConfig(string configfile)
{
ExeConfigurationFileMap oConfigFile = new ExeConfigurationFileMap();
Configuration oConfiguration;
if (null == configfile)
{
oConfiguration = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
}
else
{
oConfigFile.ExeConfigFilename = configfile;
oConfiguration = ConfigurationManager.OpenMappedExeConfiguration(oConfigFile, ConfigurationUserLevel.None);
}
//Add it to the configuration's sections
oConfiguration.Sections.Add(SectionName, this);
//Save the given section in the configuration file
this.SectionInformation.ForceSave = true;
oConfiguration.Save(ConfigurationSaveMode.Full);
}
schreiben in app.config
Configuration configuration = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
configuration.AppSettings.Settings.Remove("Test");
configuration.AppSettings.Settings.Add("Test","meinTestWert");
configuration.Save(ConfigurationSaveMode.Modified);
ConfigurationManager.RefreshSection("appSettings");
configuration.AppSettings.Settings.Remove("Test");
configuration.AppSettings.Settings.Add("Test","meinTestWert");
configuration.Save(ConfigurationSaveMode.Modified);
ConfigurationManager.RefreshSection("appSettings");
Tuesday, November 16, 2010
PostgresSql
einspieln von sql scripts:
-h host
--username=...
-f file
-d datenbank
psql -h localhost --username=s2010_admin -f c:\sql\test.sql -d s2010
autoincrement=bigserial (=8byte integer), zusätzlich primary key angeben !
create table Einnahmeform ( javascript:void(0)
ID BIGSERIAL CONSTRAINT PK PRIMARY KEY,
Einnahmeform varchar(80)
);
alle tabellen in einem schema
SELECT table_name FROM information_schema.tables where table_schema='schemaname'
-h host
--username=...
-f file
-d datenbank
psql -h localhost --username=s2010_admin -f c:\sql\test.sql -d s2010
autoincrement=bigserial (=8byte integer), zusätzlich primary key angeben !
create table Einnahmeform ( javascript:void(0)
ID BIGSERIAL CONSTRAINT PK PRIMARY KEY,
Einnahmeform varchar(80)
);
alle tabellen in einem schema
SELECT table_name FROM information_schema.tables where table_schema='schemaname'
Thursday, October 21, 2010
delagtes Übersicht
delegate void TestDelegate(string s);
TestDelegate testDelA = new TestDelegate(M); //C#1.0 explicite Method M must me declared
TestDelegate testDelB = delegate(string s) { Console.WriteLine(s); }; //C#2.0 inline "anonymos method
TestDelegate testDelC = (x) => { Console.WriteLine(x); }; // C# 3.0. lambda expr.
Action TestDelegate; //C#4.0 DelegateDefinition einfacher //C# 4.0 Actions
In Windows Forms muss eine anonyme Methode noch zu einem MethodInvoker konvertiert werden:
this.Invoke(new MethodInvoker(delegate() { pgbStatus.Minimum = 0; }));
In Wpf zu einer Action:
Application.Current.Dispatcher.Invoke((Action)delegate
{
SetButtonsEnabled(true);
}, null);
TestDelegate testDelA = new TestDelegate(M); //C#1.0 explicite Method M must me declared
TestDelegate testDelB = delegate(string s) { Console.WriteLine(s); }; //C#2.0 inline "anonymos method
TestDelegate testDelC = (x) => { Console.WriteLine(x); }; // C# 3.0. lambda expr.
Action
In Windows Forms muss eine anonyme Methode noch zu einem MethodInvoker konvertiert werden:
this.Invoke(new MethodInvoker(delegate() { pgbStatus.Minimum = 0; }));
In Wpf zu einer Action:
Application.Current.Dispatcher.Invoke((Action)delegate
{
SetButtonsEnabled(true);
}, null);
Sql Server 2008 Resource Governator
Resource Governtor steuert CPU und Memory Consumption von Connections. Eine ResourceGovernorClassifier Funktion wird verwendet um LoginName zu einer Workloadgruppe zuzuordnen, die ihrerseits wieder einem ResourcePool zugeordnet ist. Ein Resourcepool kann mehrere Workloadgruppen haben, die sich auch in Resourcezuordnung unterscheiden können, also ein 2 stufiges Resourcevergabeschema.
Funktion zum Zuordnen der Logins zu den Workloadgruppen (setzt Vorraus dass diese existieren):
Alter Function dbo.fn_ResourceGovernorClassifier()
Returns sysname
WITH Schemabinding
as
BEGIN
DECLARE @group sysname
IF SUSER_SNAME()='Executive' SET @group='ExecutivesWL'
ELSE IF SUSER_SNAME()='Customer' SET @group='CustomersWL'
ELSE IF SUSER_SNAME()='Report' SET @group='ReportWG'
ELSE SET @group='default'
RETURN @group
END
GO
ALTER RESOURCE GOVERNOR WITH (Classifier_Function = dbo.fn_ResourceGovernorClassifier)
GO
ALTER RESOURCE GOVERNOR RECONFIGURE
GO
Create Login Executive with password='pwd'
Create Login Customer with password='pwd'
Create Login Report with password='pwd'
SELECT b.name,a.login_name, a.session_id
from sys.dm_exec_sessions a inner join sys.dm_resource_governor_workload_groups b on a.group_id=b.group_id
where b.name<>'internal'
Funktion zum Zuordnen der Logins zu den Workloadgruppen (setzt Vorraus dass diese existieren):
Alter Function dbo.fn_ResourceGovernorClassifier()
Returns sysname
WITH Schemabinding
as
BEGIN
DECLARE @group sysname
IF SUSER_SNAME()='Executive' SET @group='ExecutivesWL'
ELSE IF SUSER_SNAME()='Customer' SET @group='CustomersWL'
ELSE IF SUSER_SNAME()='Report' SET @group='ReportWG'
ELSE SET @group='default'
RETURN @group
END
GO
ALTER RESOURCE GOVERNOR WITH (Classifier_Function = dbo.fn_ResourceGovernorClassifier)
GO
ALTER RESOURCE GOVERNOR RECONFIGURE
GO
Create Login Executive with password='pwd'
Create Login Customer with password='pwd'
Create Login Report with password='pwd'
SELECT b.name,a.login_name, a.session_id
from sys.dm_exec_sessions a inner join sys.dm_resource_governor_workload_groups b on a.group_id=b.group_id
where b.name<>'internal'
Thursday, October 14, 2010
Outlook Autovervollständigungen in 2010 importieren
bis outlook 2007 wurden die AUtovervollständigungen in AppData/Roaming/Microsoft/Outlook/Profilname.nk2 gespeichert. In 2010 werden diese am Exchange Server gespeichert. Daher Nk2 Datei in obiges Verzeichnis mit Profilnamen kopieren, dann Outlook.exe /importnk2 ausführen ...
Friday, September 10, 2010
Clustering
Windows Server Clustering:
==========================
Standard Clustering: eine Quorum Datenbank = Single Point of Failure
Majority: jede node eine Kopie der Quorum Datenbank \\%NodeName%\%ResourceGUID%$ share auf Quorum Db in %SystemRoot%\Cluster\QuN.
%ResourceGUID%$\%ResourceGUID%\MSCS
ClusterAccount muss locale Admin Rechte haben
Disk:
-----
keine dyn. Disk unterstütz, SCSI oder Fibre HD
MS DTC Disk
Antivirus software: Database Dirs ausnehmen, da sonst failover zu lange dauert
Network:
--------
2 Netwerkkarten: internes Netzwerk (Cluster Netzwerk) über dieses wird ping looksalive gesendet, wenn keine Antwort failover process
gestartet, öffentliches Netzwek
RPC wird benötigt
beim failover wird der netzwerkname des clusterst vom DNS unregisterded, dann wird die cluster Ip auf die netzwerkkarte des anderen
nodes geslegt und neu im dns registriert
SQLServerClustering:
====================
jede SQL Server Instanz bruacht einen eigenen Drive Letter, Transaktionen werden zurückgerollt beim Failover, es gibt kein Load Balancing bei SQL Server
Security Grouppe für jedes SQL Service als Domain Gruppe
Wichtig: Es können nach der Installation keine weiteren Features mehr hinzugefügt werden => Analysis Services z.b. gelich hinzufügen !
==========================
Standard Clustering: eine Quorum Datenbank = Single Point of Failure
Majority: jede node eine Kopie der Quorum Datenbank \\%NodeName%\%ResourceGUID%$ share auf Quorum Db in %SystemRoot%\Cluster\QuN.
%ResourceGUID%$\%ResourceGUID%\MSCS
ClusterAccount muss locale Admin Rechte haben
Disk:
-----
keine dyn. Disk unterstütz, SCSI oder Fibre HD
MS DTC Disk
Antivirus software: Database Dirs ausnehmen, da sonst failover zu lange dauert
Network:
--------
2 Netwerkkarten: internes Netzwerk (Cluster Netzwerk) über dieses wird ping looksalive gesendet, wenn keine Antwort failover process
gestartet, öffentliches Netzwek
RPC wird benötigt
beim failover wird der netzwerkname des clusterst vom DNS unregisterded, dann wird die cluster Ip auf die netzwerkkarte des anderen
nodes geslegt und neu im dns registriert
SQLServerClustering:
====================
jede SQL Server Instanz bruacht einen eigenen Drive Letter, Transaktionen werden zurückgerollt beim Failover, es gibt kein Load Balancing bei SQL Server
Security Grouppe für jedes SQL Service als Domain Gruppe
Wichtig: Es können nach der Installation keine weiteren Features mehr hinzugefügt werden => Analysis Services z.b. gelich hinzufügen !
Tuesday, September 07, 2010
DateTimePicker an Dataset gebunden: Out of range exception
bei Dataset.Clear() ...
woraround: clear des tableadaptes verwenden, sodass das dataset gleich wieder gefüllt wird
woraround: clear des tableadaptes verwenden, sodass das dataset gleich wieder gefüllt wird
Monday, September 06, 2010
ASP.Net C# Inline Markup
Mit spitzer Klammer auf, Prozent Zeichen wird ein c# inline Markup eingeleitet:
InlineDemo1: <%Response.Write("Date="+DateTime.Now); %>
config werte direkt in control properties schreiben (geht auch mit Resourcen):
InlineConfigValue: < asp:Literal runat="server" Text="<% $ AppSettings: test%>" />"
http://translate.google.at/translate?hl=de&langpair=en%7Cde&u=http://msdn.microsoft.com/en-us/library/d5bd1tad.aspx
InlineDemo1: <%Response.Write("Date="+DateTime.Now); %>
config werte direkt in control properties schreiben (geht auch mit Resourcen):
InlineConfigValue: < asp:Literal runat="server" Text="<% $ AppSettings: test%>" />"
http://translate.google.at/translate?hl=de&langpair=en%7Cde&u=http://msdn.microsoft.com/en-us/library/d5bd1tad.aspx
Thursday, September 02, 2010
Rapid GUI Development mit VS2008 & Datasets
Vorgehensweise:
===============
1) fertiges Datenbank Design
2) Vs2008/Menü Data / Add New Datasource / Tabeeln, Views Functions 6 Stored Proc. aussuchen
3) einstellen ob Tabellen / Detailansicht und mittels Drag & Drop die Datatabels aus dem Dataset in den Windows Forms Designer ziehen
4) Namen der generierten Tableadapter, BindingSource eventuell anpassen, Shortcut für Datatables erstellen
5) Spalten der Datagrids Formatieren
6) anpassen des generierten Codes
Was wird generiert ?
====================
1) Datenbankobjekte -> Dataset ziehen:
generiert Tableadapter und Datatable pro Tabelle / SotredProc oder Function
2) Datatables aus dem Dataset -> Formular ziehen:
genereirt Instanz des Datasets, Tableadapter+tableAdapterManager, Bindingsource, bindingsourceNavigator, toolstrip + Datagridview / einzelne Controls für Felder
Was bringt das ?
================
Der Columndesigner des Datasets erspart viel Tipparbeit, die generierten Datenzugriffselemente müssen meist händisch angepasst werden ...
===============
1) fertiges Datenbank Design
2) Vs2008/Menü Data / Add New Datasource / Tabeeln, Views Functions 6 Stored Proc. aussuchen
3) einstellen ob Tabellen / Detailansicht und mittels Drag & Drop die Datatabels aus dem Dataset in den Windows Forms Designer ziehen
4) Namen der generierten Tableadapter, BindingSource eventuell anpassen, Shortcut für Datatables erstellen
5) Spalten der Datagrids Formatieren
6) anpassen des generierten Codes
Was wird generiert ?
====================
1) Datenbankobjekte -> Dataset ziehen:
generiert Tableadapter und Datatable pro Tabelle / SotredProc oder Function
2) Datatables aus dem Dataset -> Formular ziehen:
genereirt Instanz des Datasets, Tableadapter+tableAdapterManager, Bindingsource, bindingsourceNavigator, toolstrip + Datagridview / einzelne Controls für Felder
Was bringt das ?
================
Der Columndesigner des Datasets erspart viel Tipparbeit, die generierten Datenzugriffselemente müssen meist händisch angepasst werden ...
Wednesday, September 01, 2010
Dataset und TableAdapter generieren und updaten
Um Datasets von einer bestehenden Datenbank zu erzeugen, einfach im Visual Studio im Menü Data "Create New Datasource" auswählen. Ein Wizard frägt die Datenbankverbindung ab, dann kann man auswählen welcehe Tabellen, Views und Functions/StoredProcedures man im Dataset haben möchte (bei Lightswitch gehen nur Tabellen und Views derzeit).
Dann werden für die ausgewählten Einträge DataTables und TableAdapter (zum Befüllen) erzeugt. bei Auswahl von Tabellen kann der Dataadapter auch Updates und Deletes sowie INserts machen. bei StoredProc usw. nur Select.
ändert sich an der Definition des Datenbankobjektes etwas, so kann man das im Dataset Designer mit rechter Maustaste auf die Datatable und Configure anpassen. Wenn Tabellendefinitionen geändert werden, ist es wichtig auch alle table valued functions, die darauf passieren anzupassen. Hinzufügen von Feldern ist dem Dataset egal, da es das SQL REsultset und die Dataset Spalten per Name mapped.
Wichtig: Constraint Fehlerkönnen sich sowohl auf Schlüsselverletzungen aber auch Feldconstraint (nicht null, Länge) beziehen, da ist die Fehlermeldung der Tableadapter.Fill Methode sehr unaussagekräftig.
Dann werden für die ausgewählten Einträge DataTables und TableAdapter (zum Befüllen) erzeugt. bei Auswahl von Tabellen kann der Dataadapter auch Updates und Deletes sowie INserts machen. bei StoredProc usw. nur Select.
ändert sich an der Definition des Datenbankobjektes etwas, so kann man das im Dataset Designer mit rechter Maustaste auf die Datatable und Configure anpassen. Wenn Tabellendefinitionen geändert werden, ist es wichtig auch alle table valued functions, die darauf passieren anzupassen. Hinzufügen von Feldern ist dem Dataset egal, da es das SQL REsultset und die Dataset Spalten per Name mapped.
Wichtig: Constraint Fehlerkönnen sich sowohl auf Schlüsselverletzungen aber auch Feldconstraint (nicht null, Länge) beziehen, da ist die Fehlermeldung der Tableadapter.Fill Methode sehr unaussagekräftig.
Subscribe to:
Posts (Atom)