Laden...
V
Benutzerbeschreibung
Ich liebe SQL 🙂

Forenbeiträge von Viper78 Ingesamt 162 Beiträge

15.08.2013 - 20:27 Uhr

HI,

totaler Unsinn die Logins zu entfernen.
Das sind ja nur Logins auf Benutzer in deiner Datenbank.

Sicherer wird die nicht da durch.
Wenn du mehr Hilfe willst schreib mal dein Ziel auf.

08.08.2013 - 23:09 Uhr

verwendetes Datenbanksystem: <MS SQL 2010>

Morgen Leute,

ich möchte eine Prozedur erstellen, die mit für eine übergebene Tabelle den Maximalwert für ein Feld (ID) ausliest. Leider komme ich hier an meine Grenzen. Kann mir jemand weiterhelfen?
...

HI,

also es klingt danach das du den nächsten wert haben willst.
Wenn du ein Insert machst kann man einfach erfragen welche neue ID vergeben wurde: SELECT @@IDENTITY
Wenn du selber zählst solltest du dir ein Tabelle machen mit einer Row wo du dann beim Update in einer Transaktion eine Row Sperrung machst.

Bitte schreibe einfach noch genauer was du erreichen willst.

mfg
Björn

05.08.2013 - 11:02 Uhr

Hi,

versuchs mal hiermit.


    public class Person
    {
        public Person()
        {
            Meeting = new Collection<Meeting>();
        }
        [Key]
        public int PersonID { get; set; }
        public string FirstName { get; set; }
        public string LastName { get; set; }

        public virtual ICollection<Meeting> Meeting { get; set; }
    }

    public class Meeting
    {
        [Key]
        public int MeetingID { get; set; }

        public int CustomerID { get; set; }
        [ForeignKey("CustomerID")]
        public virtual Person Customer { get; set; }

        public int SalesAgentID { get; set; }
        [ForeignKey("SalesAgentID")]
        public virtual Person SalesAgent { get; set; }
    }

MfG
Björn

31.07.2013 - 11:04 Uhr

Huhu,

dieser Aussage

Zu erst die wenigst häufig wechselnden Spalten und zu letzt die am warscheinlichst häufigst unterschiedlichen Spalten.

muss ich leider auf das heftigste Wiedersprechen! Ein Index ist dann besonders wirksam, wenn das Filterkriterium möglichst weit vorne im Index steht. Bei mehreren Kirterien sollte das Kriterium mit der höchsten Frequenz vorne stehen. Dadurch wird beim Zugriff die Ergebnismenge schon durch den Filter auf das erste Feld erheblich eingschränkt!

Hi du hast recht es war genau anders rum. Sorry war gestern Spät.

...

Auch das hier

Wenn eins ein Full-Tablescan macht, must du optimieren.
stimmt nicht immer. Wenn Du alle oder fast alle Sätze einer Tabelle lesen willst ist der Relation Scan eben der beste Zugriff, den man nicht weite optimieren kann!
...

Ok man muss eben immer wissen was man tut. Deshalb ja auch meine allgemeines Fazit am Ende, dass es viele Wege gibt und kein alleiniges Lösungsmittel, wie z.B. nur eine Index anlegen reicht.

LG
Björn

31.07.2013 - 02:02 Uhr

Hi,
gehe unter Server-Netzwerkkonfiguration.
Aktiviere TCP/IP und dann rechtsklick. (wie im Bild)
Ganz unten steht der Statische Netzwerkport. Dort 1433 eintragen und dann sollte es gehen.
Sonst werden nur Dynamische Ports unterstützt.

31.07.2013 - 01:58 Uhr

Hi,

wieviele Millionen meinst du? Es ist schon entscheident.

@BerndFfm: Viele Indexe können auch das lesen langsammer machen, wenn der Optimizer den falschen Index wählt. Es ist wie immer das maß der Dinge. Nicht zu viel und nicht zu wenig.

@sindibad:
-SQLPLUS und dort mal EXPLAIN deiner SQL Statments eingeben. Wenn eins ein Full-Tablescan macht, must du optimieren.

  • FK kosten beim einfügen, etc. Performance.
  • Trigger kosten beim einfügen, etc. Performance.

Bei Oracle 8 brachte es performance eine Index nach der häufigkeit von unterschiedlichen werten anzulegen.
z.B.:
create index on Table XXX ON BOOLEAN, NUMBER, DATETIME
(Anhand des Datentypen veranschauliche ich die Möglichkeit von unterschiedlichen einträgen.)
Zu erst die wenigst häufig wechselnden Spalten und zu letzt die am warscheinlichst häufigst unterschiedlichen Spalten.

Manchmal muss man einfach eine Index anlegen nur für eine Spalte. Nur weil das Where über 2 Spalten geht muss der Index nicht über beide gehen. Das muss man messen und Teste.

Fremdschlüssel müssen immer Indiziert werden. Bei einem FK passiert das dann Automatisch. (Bin nicht 100% sicher ob das bei Oracle auch so ist.)

Optimieren kannst du auch indem du das Tablespace für Indexe auf ein Stripeset (Raid 0) legst.

Hast du Blobs in deiner Tabelle? Wenn ja bedeutet das immer ein Read wenn du die "Select * from tabelle" machst. Wenn du Blobs hast bitte immer die Abfragen ohne "*" machen wenn man den Blob nich benötigt., da es sonst immer ein I/O Read bedeutet und somit performance.

Eine umstellungen der SQL Statmens kann auch Geschwindigkeit bringen.

Z.B. Die Ergebnissmenge zu erst klein machen und dann Groupieren.

Ach es gibt einfach zu viele möglichkeiten eine Datenbank zu Optimieren um dir die passende zu liefern. Einfach mal ein gutes Buch lesen.

LG
Björn

09.07.2012 - 08:55 Uhr

SQL: TRUNCATE TABLE [NAME_TABELLE]

Das sollte dir weiter helfen.

MfG

02.12.2010 - 13:50 Uhr

Hi,

ich würde zu MSSQL greifen.
Enfach wegen der Volltextsuche.

Wenn du was mit Documenten machen willst, wirst du auch sicher deren Texte auslesen und speichern.
Eben um diese danach durch suchen zu können.

MfG
Björn

18.10.2010 - 11:45 Uhr

hi,

du verwendest eine Procedur. Da gibt es kein RETURN.

Ausführen:

EXEC [dbo].[TestCase] @Text = N'173', @Laenge = 3

Procedur:


CREATE PROCEDURE [dbo].[TestCase] ( @Text NVARCHAR(50), @Laenge INT)
AS
DECLARE @EndErgebnis NVARCHAR(50)


DECLARE @Zahl INT
DECLARE @Ergebnis NVARCHAR(500)
DECLARE @Zeichen NCHAR(1)
DECLARE @retZeichen NVARCHAR(10)
SET @Zahl = 1
SET @Ergebnis = ''
SET @EndErgebnis = ''
SET @Zeichen = ''

WHILE (@Zahl <=@Laenge)
BEGIN

SET @Zeichen = SUBSTRING(@text, @Zahl, 1)

SELECT
@retZeichen = CASE
WHEN @Zeichen = N'0' THEN 'null'
WHEN @Zeichen = N'1' THEN 'eins'
WHEN @Zeichen = N'2' THEN 'zwei'
WHEN @Zeichen = N'3' THEN 'drei'
WHEN @Zeichen = N'4' THEN 'vier'
WHEN @Zeichen = N'5' THEN 'fünf'
WHEN @Zeichen = N'6' THEN 'sechs'
WHEN @Zeichen = N'7' THEN 'sieben'
WHEN @Zeichen = N'8' THEN 'acht'
WHEN @Zeichen = N'9' THEN 'neun'
ELSE
'blub'
END

IF len(@EndErgebnis) = 0
BEGIN
SET @EndErgebnis = @retZeichen
END
ELSE
BEGIN
SET @EndErgebnis = @EndErgebnis + '-' + @retZeichen
END


SET @Zahl = @Zahl + 1

END
SELECT @EndErgebnis as RetValue

GO


Du verarbeitest es wie ein SELECT in ADO.NET

MfG
Björn

16.10.2010 - 08:05 Uhr

Witte hat genau das hat das beschrieben was ich dir als Beispiel geschrieben habe.

15.10.2010 - 09:45 Uhr

Für so etwas gibt es z.B. Nagios

Schau dir das mal an.

MfG
Björn

14.10.2010 - 16:48 Uhr

Oh, sorry hatte dich miss verstanden.

SELECT 
 A.Auftragsnr 
FROM 
 tbl_Person P, 
 tbl_Auftrag A 
where P.ID = A.Person 
 AND  P.ID in (1,3)
group by  A.Auftragsnr 
having count(*) = 2

Das liefert dir die Auftragsnummer, in welchem Benutzer 1 und 3 **gemeinsamm **vorhanden sind.
Damit kannst du dann ja weiter Joinen.

MfG
Björn

14.10.2010 - 10:57 Uhr
SELECT
 A.Auftragsnr
 P.Name
FROM
 tbl_Person P,
 tbl_Auftrag A
where P.ID = A.Person 
 AND A.Auftragsnr = 1000

Ergebniss:
Auftragsnr | Name
1000       | Hans
1000       | Tom
1000       | Norbert

Ich hoffe das meintest du.

MfG
Björn

13.10.2010 - 09:58 Uhr

Hi,

also ich muss die URI beim erstellen des Webservice (WSHttpBinding) immer selber angeben.
Du erstellst ja dort sogenante : Endpoints.
Da must du die Uri mit geben.

08.10.2010 - 11:00 Uhr

Ahm,

mir stellt sich die Frage was willst du erreichen am ende?
Beschäftige dich mit den System-Tabellen vom MSSQL und du kannst die Tabellen-Scripte etc auslesen.

07.10.2010 - 17:01 Uhr

Wenn du eine Profiler mitlaufen läst,
kannst du alle SQL bekommen.

Frag mich nun aber nicht nach einem Programm.
Bei MSSQL 2000 war es dabei.

MfG
Björn

07.10.2010 - 08:43 Uhr

...
Eine weitere Alternative, ... ist M von Microsoft (Teil des Oslo SDK) ....

Oslo wird von Microsoft nicht weiter getrieben.

Das CoCo/R sieht doch gut aus.
Viele Beispiele auch in C# da sollte doch was gehen.

06.10.2010 - 16:30 Uhr

Wird die DLL mit kopiert in den Debug Ordner?
Wenn nicht fehlt Sie und der Fehler ist berechtigt 😃

06.10.2010 - 15:41 Uhr

Mit Windows API geht das auch.

Hier ein altes Beispiel in VB5/6!

MfG
Björn

06.10.2010 - 11:10 Uhr

Jo,

ich hab es genau anders verstanden. Mein Fehler.

 use share

ist natürlich das richtige.

06.10.2010 - 11:01 Uhr

Hi,

versuch das mal im SQL Server Managmement Studio
DB -> Verwaltung -> Legacy -> Data Transformation Services

Die sind genau dafür geschaffen.

MfG
Björn

06.10.2010 - 10:20 Uhr

Schau mal hier.

net use
24.09.2010 - 13:26 Uhr

Hi,

ein bischen googeln und du hättest es gefunden.

JSON heist dein Thema.

Für .NET gibt es sogar eine Bibliothek.

MfG
Björn

23.09.2010 - 16:28 Uhr

Naja vielleicht schickt er auch seine Mittarbeiter mit Autos los 😃
Da wird das dann schon weniger klapen mit WLAN.

23.09.2010 - 16:26 Uhr

Hi,

du versuchst es zu öffnen.
Wenn das nicht klapt gibt es keine Exception, mein ich zumindest.
Du fragst den ConnectionState.Open ab, und weist dan ob das öffnen geklapt hat.
Wenn nicht versuchst du es noch einmal mit dem Passwort.

Wenn doch eine Exception kommt, kannst du damit doch auch sehr gut arbeiten.
Du solltest natürlich nicht einfach nur System.Exception fangen, sondern eben genau die passende Exception benutzen.
Warscheinlich aus System.Data.XXXXX.

MfG
Björn

23.09.2010 - 09:15 Uhr

HI,

Es gibt von Microsoft ein Sync Framework.

Um Datenbanken zu Syncen kannst du das Konzept hier finden.

Datein als Blob ist meine empfehlung.
Wobei mit dem Sync Framwork kannst du auch Datein direkt syncen.

Ich selber hab es noch nicht benutzt. Hier im Forum schrieben schon einige Positives da drüber.

MfG
Björn

21.09.2010 - 13:25 Uhr

Ups,

hab mich vertahn, das war ja der Proxy und nicht der Server....
sorry

21.09.2010 - 11:56 Uhr

Hi,

also meines wissens nach kann das nicht funktionieren.
Es geht immer nur ein Contract Pro EndPoint.
Du versuchst aber 2 in deine Proxy zu packen.

svcutil.exe /noLogo /namespace:*,SimpleWCFProxy /o:proxy.cs /serializer:XmlSerializer **:::

Siehe ServiceHost, der "Type serviceType" ist eben nur einfach, eben kein Array, etc.

MfG
björn

16.09.2010 - 11:59 Uhr

Jear,

super das wars.

THX Khalid

16.09.2010 - 11:47 Uhr

verwendetes Datenbanksystem: NHibernat 2.1.2 mit MSSQL 2008 (.Net4)

Hi,

ich habe ein "System.DateTime" Wert. Dieser ist in der DB Null.
Das soll auch lange so bleiben. Bis dieser bewust gesetzt wird.

Leider kann "System.DateTime" in .NET4 nicht "Null" sein.
So hab ich das Problem das er nun immer was eintragen will.

Meine Lösung ist z.B.: 01.01.1900 als 0 Wert zu benutzen, find ich nur nicht elegant.
Ich will "Null" in der Tabellenspalte stehen haben.

Hat da wer eine guten Tip?

MfG
Björn

PS: Hier kurz die Definitionen.

<property name="DeletedTime" type="Timestamp" />
public virtual DateTime DeletedTime{ get; set; }

16.09.2010 - 08:43 Uhr

HI,

kann es sein das du IPSec verwechselst???
IPSec arbeite auf der TCP/IP schiene und muss im Betribssystem verankert sein (Routing).
Es ist eben für VPN gedacht. Du baust dann ein IP Netzwerk auf und dadrüber kommuniziert deine Anwendung.
Also reicht es föllig fremde Produkte zu nehmen. Einmal von Nucleus und auf der Gegenstelle einen Server/Firewall mit VPN/etc..

In C# würde heißen das du nur etwas Programmierst was ja schon da ist.
Ich weiß auch nicht ob man mit .NET Treiber enwickeln kann für Windows.
Meinst du vielleicht SSL, HTTPS, etc? Das würde sinn machen.

Kann es vielleicht sein das dein Auftraggeber über IPSec nicht genau bescheid weiß?

MfG
Björn

14.09.2010 - 16:42 Uhr

Thx,

hatte auf dich gehofft, da du ja schon viel zu NHibernat schriebst.
Hab schon Googel penetriert und lese mich gerade ein.

Dicken Dank.

14.09.2010 - 16:34 Uhr

verwendetes Datenbanksystem: NHibernat 2.1.2 mit MSSQL 2008

Hi ich frage mich ob ich die POCO mit


using System.Collections.Generic;
public virtual Generic.IList<MandantParameters> MandantParameters { get; set; }

oder


using Iesi.Collections;
public virtual ISet MandantParameters { get; set; }

verwenden soll.
Die GUI wird mit WPF gemacht.

Vielleicht weiß jemand einen guten Grund warum man sich für ISet oder IList<T> entscheiden sollte.

MfG
Björn

14.09.2010 - 14:44 Uhr

Hm,

ich gehe von C# aus hier im Forum.

Naja warum sollst du denn einen IPSec Client schreiben wenn das Betriebsystem das schon implementiert hat?
Schaust mal hier rein!

MfG
Björn

14.09.2010 - 12:00 Uhr

Hm,
das ist nicht wirtschaftlich.
Für eine App ist das auch nicht zu gebrauchen.
Es gibt ein paar Programme auf dem Markt (z.B. Shrew Soft Inc.). Das könnte helfen

Allein schon der IKE (Internet Key Exchange Teil) der Dokumente ist oft zu komplex und es wird leider nicht alles erklärt. Das wird noch viel komplexer. Du must dich mit Windows Treiber/Protokoll Enwicklung beschäftigen.

Ich meine wofür wird IPSec benötigt?
Um Point to Point zu verbinden mit einem sicheren Transport von Daten.
Billig ist auch z.B. 2 Fritzboxen zusammenschalten 😃
(Ob da die geforderte Sicherheit für Firmen gegebn ist wird wohl der BSI wissen.)

In einer Software macht das keinen sinn.
Schreib doch mal genauer wofür das benötigt wird.

MfG
Björn

14.09.2010 - 08:43 Uhr

HI,

wenn du eine PK mit Varchar verwendest,
dann sollte man meiner Meinung nach mit ≤ 1 Millionen Datensätze in der Tabelle arbeiten.
Wenn es die GUID ist, da gibt es mittlerweile eine Datentyp.

Wie lange dauert es denn alleine z.B. die PK Daten zu ermitteln, damit diese gelöscht werden könnten?

Auch wenn du mit Datum arbeitest stellt sich die Frage, brauchst du die Sekunden?
Datatime oder Smalldatatime?
Machst du auf den Tabellen viel mit Zeit und werden diese im Durchschnitt größer als 10 Millionen Datensätze,
dann empfiehlt es sich das Datum in Jahr,Monat,Tag,Stunde,Minute,Sekunde aufzuteilen.
Achtung: Wenn du deine SQL-Server als 32Bit Software betreibst, dann sollten die numerischen Werte Int32 sein.
Bei einem 64Bit SQL-Server dann Int64.
Das ist wichtig, weil der SQL-Server dann den Numerischen Wert nicht casten muss sondern ihn nativ laden und
verarbeiten kann. Bit, tinyint, etc verwendet man nur wenn man nicht über Sie sucht, eben um Daten zu speichern.

MfG
Björn

13.09.2010 - 14:41 Uhr

Naja da hängt noch ein wenig mehr hinter, du sollst ja auch nicht einfach alles Kopieren.
Du must es schon für dich anpassen.
Deinen Client zu debuggen bringt nix.
Du must die Exception fangen in deinem Host, sonst bringt dieser Thread nichts mehr. Erst wenn der Host den Port öffnet lohnt es sich den Client zu testen.

Öffne eine Admin-Console und schreib:


Netstat -a -b >> C:\Port.Temp.List.txt

Und dann kannst du im Explorer auf C:\ eine Datei (Port.Temp.List.txt) finden und dort drinne dein Host.Exe (Der name deines Dienstes) suchen oder eben den Port.
Achtung kann 30-120 Sekunden dauern bis es erledigt ist.

Wenn da dein Port nicht offen ist, wenn dein Dienst läuft dann weist du bescheid.

13.09.2010 - 14:27 Uhr

Hm,

es kann auch helfen sich mit dem IChannel mal genauer zu befassen.

Wenn du da mal liest wirst du sehen das es mehr möglichkeiten gibt.
Bei einer anfrage (Request) z.B. IRequestChannel.Abort()
Das hab ich halt nicht getestet, sollte dir aber die möglichkeit geben Anfragen zu beenden und erneut wieder welche ab zu schicken ohne die Connection zu beenden.

Das mit der Session, da weiß ich leider nicht.

MfG
Björn

13.09.2010 - 14:07 Uhr

Hi,

ich hab den Snipp hier mal erweitert und verbessert.
Da dies ein Helper für mich ist, habe ich die Abstracte HashAlgorithm-Klasse nicht implementiert.

using System;
using System.Collections.Generic;
using System.IO;
using System.Text;
using System.Security.Cryptography;

namespace Helper
{
 /// <summary>
    /// Hash helper für MD5, SHA1, SHA265, SHA384, SHA512
    /// </summary>
    public static class Hash
    {
        /// <summary>
        /// Hash type wie MD5 SHA1, SHA256, SHA384, SHA512
        /// </summary>
        public enum HashType : int
        {
            /// <summary>
            /// MD5 = 32 Char Hash
            /// </summary>
            MD5,
            /// <summary>
            /// SHA1 = 40 Char Hash
            /// </summary>
            SHA1,
            /// <summary>
            /// SHA256 = 64 Char Hash
            /// </summary>
            SHA256,
            /// <summary>
            /// SHA384 = 96 Char Hash
            /// </summary>
            SHA384,
            /// <summary>
            /// SHA512 = 128 Char Hash
            /// </summary>
            SHA512
        }

        /// <summary>
        /// Berechnet die verschiedenen Hashcode-Typen eines Strings
        /// </summary>
        /// <param name="text">String Text aus dem der Hash errechnet werden soll</param>
        /// <param name="hashType">HashType - MD5, SHA1, SHA256, SHA384 oder SHA512</param>
        /// <returns>string Hash</returns>
        public static string GetHashFromString(string text, HashType hashType)
        {
            string hashString;
            switch (hashType)
            {
                case HashType.MD5:
                    hashString = GetMD5(text);
                    break;
                case HashType.SHA1:
                    hashString = GetSHA1(text);
                    break;
                case HashType.SHA256:
                    hashString = GetSHA256(text);
                    break;
               case HashType.SHA384:
                    hashString = GetSHA384(text);
                    break;
                case HashType.SHA512:
                    hashString = GetSHA512(text);
                    break;
                default:
                    hashString = "Invalid Hash Type";
                    break;
            }
            return hashString;
        }

        /// <summary>
        /// Berechnet die verschiedenen Hashcode-Typen eines Filestreams
        /// </summary>
        /// <param name="Filename">Vollständiger Pfad + Dateiname</param>
        /// <param name="hashType">HashType - MD5,SHA1,SHA256,SHA384 oder SHA512</param>
        /// <returns>string Hash</returns>
        public static string GetHashFormFile(string Filename, HashType hashType)
        {
            string hashString;

            switch (hashType)
            {
                case HashType.MD5:
                    hashString = GetMD5(Filename, FileMode.Open, FileAccess.Read);
                    break;
                case HashType.SHA1:
                    hashString = GetSHA1(Filename, FileMode.Open, FileAccess.Read);
                    break;
                case HashType.SHA256:
                    hashString = GetSHA256(Filename, FileMode.Open, FileAccess.Read);
                    break;
                case HashType.SHA384:
                    hashString = GetSHA384(Filename, FileMode.Open, FileAccess.Read);
                    break;
                case HashType.SHA512:
                    hashString = GetSHA512(Filename, FileMode.Open, FileAccess.Read);
                    break;
                default:
                    hashString = "Invalid Hash Type";
                    break;
            }
            return hashString;
        }

        #region // Verify


        /// <summary>
        /// String String vergleichen
        /// </summary>
        /// <param name="originalString">Originalstring</param>
        /// <param name="verifyString">Verifystring</param>
        /// <param name="hashType">HashType</param>
        /// <returns>bool Vergleich IO/NIO</returns>
        public static bool verifyStringAndString(string originalString, string verifyString, HashType hashType)
        {
            string originalHash = GetHashFromString(originalString, hashType);
            string verifyHash = GetHashFromString(verifyString, hashType);
            return (verifyHashAndHash(originalHash, verifyHash));
        }
        /// <summary>
        /// String Hash vergleichen
        /// </summary>
        /// <param name="originalString">Originalstring</param>
        /// <param name="verifyHash">Verifyhash</param>
        /// <param name="hashType">HashType</param>
        /// <returns>bool Vergleich IO/NIO</returns>
        public static bool verifyStringHash(string originalString, string verifyHash, HashType hashType)
        {
            string originalHash = GetHashFromString(originalString, hashType);
            return (verifyHashAndHash(originalHash, verifyHash));
        }
        /// <summary>
        /// Hash Hash vergleichen
        /// </summary>
        /// <param name="originalHash">Originalhash</param>
        /// <param name="verifyHash">Verifyhash</param>
        /// <returns>bool Vergleich IO/NIO</returns>
        public static bool verifyHashAndHash(string originalHash, string verifyHash)
        {
            //OrdinalIgnoreCase = non case sensitive
            StringComparer strComparer = StringComparer.OrdinalIgnoreCase;
            if (0 == strComparer.Compare(originalHash, verifyHash))
            {
                return true;
            }
            else
            {
                return false;
            }
        }
        #endregion

        #region // Get MD5
        

        /// <summary>
        /// Get MD5 Funktion aus String text
        /// </summary>
        /// <param name="text">//String aus dem der Hash ermittelt werden soll</param>
        /// <returns>string Hashcode</returns>
        private static string GetMD5(string text)
        {
            byte[] hashValue;
            byte[] message = Encoding.Unicode.GetBytes(text);

            MD5 hashString = new MD5CryptoServiceProvider();
            string hex = "";

            hashValue = hashString.ComputeHash(message);
            foreach (byte x in hashValue)
            {
                hex += String.Format("{0:x2}", x);
            }
            return hex;
        }
        /// <summary>
        /// Get MD5 Hash von einer Datei
        /// </summary>
        /// <param name="Filename">Vollständiger Dateipfad</param>
        /// <param name="fmode">Filemode zum Öffner der Datei</param>
        /// <param name="faccess">Fileaccess - Zugriffsart auf die Datei
        /// READ
        /// READ/WRITE
        /// WRITE</param>
        /// <returns>string Hashcode</returns>
        private static string GetMD5(string Filename, FileMode fmode, FileAccess faccess)
        {
            FileStream fs = new FileStream(Filename, fmode, faccess);
            byte[] hashValue;

            MD5 hashString = new MD5CryptoServiceProvider();
            string hex = "";

            hashValue = hashString.ComputeHash(fs);
            foreach (byte x in hashValue)
            {
                hex += String.Format("{0:x2}", x);
            }
            return hex;
        }
        #endregion

        #region //Get SHA1
        /// <summary>
        /// Get SHA1 Funktion aus String text
        /// </summary>
        /// <param name="text">//String aus dem der Hash ermittelt werden soll</param>
        /// <returns>string Hashcode</returns>
        private static string GetSHA1(string text)
        {
            byte[] hashValue;
            byte[] message = Encoding.Unicode.GetBytes(text);

            SHA1Managed hashString = new SHA1Managed();
            string hex = "";

            hashValue = hashString.ComputeHash(message);
            foreach (byte x in hashValue)
            {
                hex += String.Format("{0:x2}", x);
            }
            return hex;
        }

        /// <summary>
        /// Get SHA1 Hash von einer Datei
        /// </summary>
        /// <param name="Filename">Vollständiger Dateipfad</param>
        /// <param name="fmode">Filemode zum Öffner der Datei</param>
        /// <param name="faccess">Fileaccess - Zugriffsart auf die Datei
        /// READ
        /// READ/WRITE
        /// WRITE</param>
        /// <returns>string Hashcode</returns>
        private static string GetSHA1(string Filename, FileMode fmode, FileAccess faccess)
        {
            FileStream fs = new FileStream(Filename, fmode, faccess);
            byte[] hashValue;

            SHA1Managed hashString = new SHA1Managed();
            string hex = "";

            hashValue = hashString.ComputeHash(fs);
            foreach (byte x in hashValue)
            {
                hex += String.Format("{0:x2}", x);
            }
            return hex;
        }
        #endregion

        #region //Get SHA256
        /// <summary>
        /// Get SHA256 Funktion aus String text
        /// </summary>
        /// <param name="text">//String aus dem der Hash ermittelt werden soll</param>
        /// <returns>string Hashcode</returns>
        private static string GetSHA256(string text)
        {
            byte[] hashValue;
            byte[] message = Encoding.Unicode.GetBytes(text);

            SHA256Managed hashString = new SHA256Managed();
            string hex = "";

            hashValue = hashString.ComputeHash(message);
            foreach (byte x in hashValue)
            {
                hex += String.Format("{0:x2}", x);
            }
            return hex;
        }

        /// <summary>
        /// Get SHA256 Hash von einer Datei
        /// </summary>
        /// <param name="Filename">Vollständiger Dateipfad</param>
        /// <param name="fmode">Filemode zum Öffner der Datei</param>
        /// <param name="faccess">Fileaccess - Zugriffsart auf die Datei
        /// READ
        /// READ/WRITE
        /// WRITE</param>
        /// <returns>string Hashcode</returns>
        private static string GetSHA256(string Filename, FileMode fmode, FileAccess faccess)
        {
            FileStream fs = new FileStream(Filename, fmode, faccess);
            byte[] hashValue;

            SHA256Managed hashString = new SHA256Managed();
            string hex = "";

            hashValue = hashString.ComputeHash(fs);
            foreach (byte x in hashValue)
            {
                hex += String.Format("{0:x2}", x);
            }
            return hex;
        }
        #endregion

        #region //Get SHA384
        /// <summary>
        /// Get SHA384 Funktion aus String text
        /// </summary>
        /// <param name="text">//String aus dem der Hash ermittelt werden soll</param>
        /// <returns>string Hashcode</returns>
        private static string GetSHA384(string text)
        {
            byte[] hashValue;
            byte[] message = Encoding.Unicode.GetBytes(text);

            SHA384Managed hashString = new SHA384Managed();
            string hex = "";

            hashValue = hashString.ComputeHash(message);
            foreach (byte x in hashValue)
            {
                hex += String.Format("{0:x2}", x);
            }
            return hex;
        }

        /// <summary>
        /// Get SHA384 Hash von einer Datei
        /// </summary>
        /// <param name="Filename">Vollständiger Dateipfad</param>
        /// <param name="fmode">Filemode zum Öffner der Datei</param>
        /// <param name="faccess">Fileaccess - Zugriffsart auf die Datei
        /// READ
        /// READ/WRITE
        /// WRITE</param>
        /// <returns>string Hashcode</returns>
        private static string GetSHA384(string Filename, FileMode fmode, FileAccess faccess)
        {
            FileStream fs = new FileStream(Filename, fmode, faccess);
            byte[] hashValue;
            
            SHA384Managed hashString = new SHA384Managed();
            string hex = "";

            hashValue = hashString.ComputeHash(fs);
            foreach (byte x in hashValue)
            {
                hex += String.Format("{0:x2}", x);
            }
            return hex;
        }
        #endregion

        #region //Get SHA512
        /// <summary>
        /// Get SHA512 Funktion aus String text
        /// </summary>
        /// <param name="text">//String aus dem der Hash ermittelt werden soll</param>
        /// <returns>string Hashcode</returns>
        private static string GetSHA512(string text)
        {
            byte[] hashValue;
            byte[] message = Encoding.Unicode.GetBytes(text);

            SHA512Managed hashString = new SHA512Managed();
            string hex = "";

            hashValue = hashString.ComputeHash(message);
            foreach (byte x in hashValue)
            {
                hex += String.Format("{0:x2}", x);
            }
            return hex;
        }

        /// <summary>
        /// Get SHA512 Hash von einer Datei
        /// </summary>
        /// <param name="Filename">Vollständiger Dateipfad</param>
        /// <param name="fmode">Filemode zum Öffner der Datei</param>
        /// <param name="faccess">Fileaccess - Zugriffsart auf die Datei
        /// READ
        /// READ/WRITE
        /// WRITE</param>
        /// <returns>string Hashcode</returns>
        private static string GetSHA512(string Filename, FileMode fmode, FileAccess faccess)
        {
            FileStream fs = new FileStream(Filename, fmode, faccess);
            byte[] hashValue;
            
            SHA512Managed hashString = new SHA512Managed();
            string hex = "";

            hashValue = hashString.ComputeHash(fs);
            foreach (byte x in hashValue)
            {
                hex += String.Format("{0:x2}", x);
            }
            return hex;
        }
        #endregion
    }
}

MfG
Björn

PS: Danke an schoko01 !!!

13.09.2010 - 11:13 Uhr

Arbeite mit

Begin Transaction
Update ....
Commit Transaction
Begin Transaction
Select .....
Commit Transaction

ADO.NET stellt dafür auch was bereit.

13.09.2010 - 10:22 Uhr

Mit CREATE erstellst du Sie.

 CREATE PROCEDURE P_XXXXX ....

Mit ALTER veränderst du Sie.

 ALTER PROCEDURE P_XXXXX ....

MfG
Björn

13.09.2010 - 10:18 Uhr
Service : System.ServiceProcess.ServiceBase

Ich starte diesen eben als Consolenanwendung.

13.09.2010 - 09:20 Uhr

HI,

ich hab das Problem beim SQL Express,
daß dieser nicht erreichbar ist,
wenn der Dienst nicht nach Standart Installation mit Standart-Benutzern installiert wurde.
Ändere ich den Benutzer ab, startet der Dienst aber er ist eben nicht erreichbar.

MfG
Björn

13.09.2010 - 08:54 Uhr

Du startest den Dienst.exe im DEBUG und erhälst eine Konsolenanwendung.

Diese kannst du besser DEBUGGEN.

Benutz mal einfach

Console.Write();

Damit bekommst du mehr Informationen.
Eben ob z.B. der Port überhaupt geöffnet wird.

MfG
Björn

10.09.2010 - 15:11 Uhr

Du hast ja eine Service.
Mach aus dem Eine consolen anwendung im Visual Studio.

static class Program
    {
        /// <summary>
        /// Der Haupteinstiegspunkt für die Anwendung.
        /// </summary>
        static void Main()
        {
#if (!DEBUG)

            ServiceBase[] ServicesToRun;
            ServicesToRun = new ServiceBase[] 
            { 
                new Service() 
            };
            ServiceBase.Run(ServicesToRun);
#else
            try
            {
                Console.WriteLine("Starting Service");
                Service.StartService();
                Console.WriteLine("Service Started");
                System.Threading.Thread.Sleep(System.Threading.Timeout.Infinite);

            }
            catch (Exception e)
            {
                Console.WriteLine("Error occurred " + e.Message);
            }

#endif
        }

So stellst du einfachst um.
Versuch mal das als nicht Admin zu starten und bei Fehlern schau dir dei Exception an.

MfG
Björn

10.09.2010 - 14:19 Uhr

Zu 1:


SELECTA.Artikelnummer, B.* FROM
(SELECT * FROMarticle GROUP BY Artikelnummer ) A,
Artikelnummer B
WHERE A.Artikelnummer
= B.Artikelnummer

Zu 2:
Ich wüste da nichts, einfach ein "big Fail" beim Programmieren.

Grundsätzlich liest es sich so, daß du die Strucktur deiner Tabellen neu überdenken solltest.

MfG
Björn

10.09.2010 - 14:09 Uhr

Hat dein Dienst das Recht eine Port aufzumachen?

10.09.2010 - 11:30 Uhr

Oh mann,

 <id name="ServerID" column="ServerID" type="System.Guid">
<generator class="guid" />
</id>

dann sollte es doch gehen.
Hab den Wald vor lauter Bäumen nicht gesehen ^^

Hier die Docu dazu 😃

MfG
Björn

EDIT:
Docu noch eingefügt.

10.09.2010 - 11:22 Uhr

2.1.2 ist die Aktuelle Version.
Veilleicht geht es damit.

MfG
Björn