Hi Khalid,
ich habe vergessen die Funktion zu registrieren.
Jetzt klappt es 😃
Danke
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Microsoft.SqlServer.Server;
using System.Data.SqlTypes;
using System.Security.Cryptography;
namespace sha_hash
{
public class UserDefinedFunctions
{
[Microsoft.SqlServer.Server.SqlFunction(IsDeterministic = true, DataAccess = DataAccessKind.None)]
public static SqlBytes GetHash(SqlString Algorithm, [SqlFacet(MaxSize = -1)] SqlBytes Plaintext)
{
if (Algorithm.IsNull || Plaintext.IsNull)
return SqlBytes.Null;
bool HashDefined = true;
HashAlgorithm Hash = null;
switch (Algorithm.Value.ToUpper())
{
case "SHA256":
Hash = new SHA256Managed();
break;
case "SHA384":
Hash = new SHA384Managed();
break;
case "SHA512":
Hash = new SHA512Managed();
break;
default:
HashDefined = false;
break;
}
if (!HashDefined)
{
throw new Exception("Unsupported hash algorithm - use SHA256, SHA384 or SHA512");
}
byte[] HashBytes = Hash.ComputeHash(Plaintext.Value);
// Convert result to a SqlBytes value
return new SqlBytes(HashBytes);
}
}
}
und
CREATE ASSEMBLY sha_hash FROM dateipfad WITH PERMISSION_SET = SAFE
Als Fehlermeldungen erhalte ich wenn ich den Assemblynamen mit nutze:
'Die "sha_hash"-Spalte oder die benutzerdefinierte Funktion bzw. das benutzerdefinierte Aggregat "sha_hash.UserDefinedFunctions.GetHash" wurde nicht gefunden, oder der Name ist mehrdeutig.'
VG
verwendetes Datenbanksystem: MSSQL2008
Hallo zusammen,
ich habe diesen Artikel entdeckt: http://sqlblog.com/blogs/michael_coles/archive/2009/04/16/13253.aspx
Laut MSDN http://msdn.microsoft.com/en-us/library/w2kae45k%28v=VS.80%29.aspx
soll man ein SQL Server Projekt erstellen. Ich habe VSEE2008, scheinbar habe ich diesen Projekttyp nicht.
Deshalb habe ich gehofft, dass man das ganze auch einfach per DLL machen kann.
also habe ich den Code als DLL erstellt und im MSSQL Server als Assembly hinzugefügt.
Bis hierhin hat alles funktioniert. Nur lässt sich die Funktion GetHash nicht aufrufen.
Ich erhalte immer die Meldung
"'GetHash' wird nicht als Name einer integrierten Funktion erkannt."
Frage1: Lässt sich das überhaupt als DLL mit VSEE2008 machen?
Frage2: Wenn ja, warum lässt sich die Funktion nicht aufrufen? Muss ich noch was beachten?
Danke für die Hilfe
Afr0
Danke für die Tipps.
Leider ist mir im Nachhinein aufgefallen, dass mein "Key" nicht immer eindeutig ist.
Dictionary<T> funktioniert da schon nicht mehr. Deshalb hab ichs erstmal doch wieder über object[][] geregelt.
Ich werde bei Zeit und Gelegenheit mal versuchen das per IEnumerable<T> und Dictionary oder Lookup zu lösen.
gruß
afr0
Hallo Gü,
das könnte doch was sein 😃
ich schau mir das mal an.
danke.
Hallo zusammen,
ich suche ein Objekt / eine Klasse in der ich folgendes realisieren kann:
Ich lade Daten aus einer Tabelle einer Datenbank. (bsp: username, vorname, nachname, email)
Die Werte möchte ich nun in meinem gesuchten Objekt wie folgt auslesen können
string vorname = objekt.next().value["vorname"];
string nachname = objekt.next().value["nachname"];
wobei objekt.next jeweils den nächsten usernamen liefert und value dann einen der dazugehörigen werte des usernamen liefert.
gibt es da schon eine passende klasse?
ich bin nicht sicher ob eine hashtable diese vorgehensweise unterstützen würde...
bisher habe ich es mit mehrdimensionalen arrays geregelt.
(string[][] user)
aber vllt gehts auch eleganter?
auf eine datatable würde ich auch gerne verzichten. 😃
danke für die hilfe
afr0
So ich hab das Problem gerade lösen können.
http://msdn.microsoft.com/en-us/library/fze2ytx2.aspx
request.proxy = null;
und schon wird der Proxy umgangen 😃
Vielleicht hilfts ja auch anderen.
Gruß
Afr0
hallo zusammen.
ich mache einen ftpwebrequest auf einen server:
EventLogs logs = new EventLogs();
logs.createLogFile();
//Ein Request erstellen an den ftp Server
FtpWebRequest request = (FtpWebRequest)WebRequest.Create("ftp://merinserver");
request.EnableSsl = false;
//Die Methode angeben um eine Datei hochzuladen
request.Method = WebRequestMethods.Ftp.ListDirectory;
//Berechtigungsdetails setzen vom ftp Server durch Username und Passwort
request.Credentials = new NetworkCredential("user", "pass");
//Versuch eine Verbindung zu erstellen und eine Antwort zu erhalten
FtpWebResponse response = (FtpWebResponse)request.GetResponse();
logs.writeFile("FROM CACHE: " + response.IsFromCache.ToString()); //ergebnis ist FALSE
logs.writeFile("URI: " + response.ResponseUri.AbsoluteUri); // ergebnis ist [URL]ftp://meinserver[/URL]
//Ein neuen Stream für den Response erstellen dem der FileStream mitgegeben wird.
Stream responseStream = response.GetResponseStream();
StreamReader sr = new StreamReader(responseStream, Encoding.Default);
while (sr.Peek() > -1)
{
//tu irgendwas
}
....
....
dabei frage ich einen ordner ab mit ListDirectory. der Ordner ist definitiv leer 😃
als ftpwebresponse erhalte ich jedoch folgende meldung (wird in eine log datei geschrieben):
2009-08-18 11:09:21 : FROM CACHE: False
2009-08-18 11:09:21 : URI: ftp://meinserver
2009-08-18 11:09:21 : <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
2009-08-18 11:09:21 : <!-- HTML listing generated by Squid 2.6.STABLE12 -->
2009-08-18 11:09:21 : <!-- Tue, 18 Aug 2009 06:03:59 GMT -->
2009-08-18 11:09:21 : <HTML><HEAD><TITLE>
2009-08-18 11:09:21 : FTP Directory: ftp://user@meinserver/
2009-08-18 11:09:21 : </TITLE>
2009-08-18 11:09:21 : <STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}--></STYLE>
2009-08-18 11:09:21 : </HEAD><BODY>
2009-08-18 11:09:21 : <H2>
2009-08-18 11:09:21 : FTP Directory: <A HREF="/">ftp://user@meinserver/</A>/
...
...
<!-- hier kommt irgendwann eine datei, die aber nicht mehr auf dem server vorhanden ist -->
2009-08-18 11:09:21 : Generated Tue, 18 Aug 2009 06:03:59 GMT by irgendeinproxyserver.de (squid/2.6.STABLE12)
2009-08-18 11:09:21 : </ADDRESS></BODY></HTML>
ich möchte aber gerne wissen was wirklich auf dem ftp server liegt.
hat jemand ne idee wie ich das anders abfragen kann und an die infos komme, die ich wirklich brauche?
dank und gruß
afr0
Wo dN!3L das schon erwähnt:
> ist evtl mal eine Lesestunde wert 😉. Dann dürfte auch das Hantieren mit object aufhören.LaTino
Ich habe das hier Abfragen für mehrere Tabellen (LINQ to DataSet) überflogen und es damit auch versucht, meine Daten aus dem DataSet zu holen. Deshalb bin ich auch so an dem 'new' hängen geblieben 😃
Aber durchlesen werde ich es mir trotzdem noch mal.
Gruß
Afr0
Ah 😃
das mit dem new wusste ich nicht. Genau da lag der Fehler.
mit select tbin; funktionierts.
Vielen Dank 😃