tightDev 0 Geschrieben 26. Mai 2018 Melden Teilen Geschrieben 26. Mai 2018 Hiho. Sorry, aber ich komme grade einfach nicht weiter... Zum DB Setup: Nichts kompliziertes. Was den Fehler verursacht ist nur eine Tabelle und eine Funktion. Script ist angefügt. Rufe ich die auf funktioniert sie auch, der Eintrag wird in die Tabelle eingetragen, trotzdem wird mir aber ein Fehler geworfen der die darüberlegende ASP.Net App zum Absturz bringt: Meldung 8115, Ebene 16, Status 2, Prozedur Language.Add, Zeile 25 Arithmetischer Überlauffehler beim Konvertieren von expression in den nvarchar-Datentyp. (1 Zeile(n) betroffen) USE [LocEdit.Net2] GO /****** Objekt: Table [dbo].[tblUserLanguage] Skriptdatum: 05/26/2018 18:55:40 ******/ CREATE TABLE [dbo].[tblUserLanguage]( [ID] [int] IDENTITY(1,1) NOT NULL, [User] [uniqueidentifier] NOT NULL, [Language] [varchar](5) COLLATE Latin1_General_CI_AS NOT NULL CONSTRAINT [DF_tblUserLanguages_Language] DEFAULT (''), CONSTRAINT [PK_tblUserLanguages] PRIMARY KEY CLUSTERED ( [ID] ASC )WITH (PAD_INDEX = OFF, IGNORE_DUP_KEY = OFF) ON [PRIMARY] ) ON [PRIMARY] -- =========================================================================== -- Author: Thomas Baumann - LocEdit.Net -- Create date: 2018-04-20 -- Description: Assigns a new language to an user account. -- Parameters: @Caller: The user which calls this procedure. -- @User: The user id which assign a language to. -- @Language: The 2 letter iso code of the language to assign. -- =========================================================================== ALTER PROCEDURE [dbo].[Language.Add] @Caller UNIQUEIDENTIFIER, @User UNIQUEIDENTIFIER, @Language VARCHAR(5) AS BEGIN SET NOCOUNT ON IF (@Caller <> @User) AND ([dbo].[User.IsAdmin](@Caller) = 0) BEGIN RAISERROR('SQL - Add Language: Access denied', 18, -1, 'Language.Add') RETURN END IF [dbo].[User.Exists](@User) = 0 BEGIN RAISERROR('SQL - Add Language: User not found', 18, -1, 'Language.Add') RETURN END INSERT INTO [tblUserLanguage] ( [User], [Language] ) VALUES ( @User, @Language ) END Die IF Abfragen sind es nicht, die werden an zig anderen Stellen ebenfalls genutzt. Aufruf (exemplarisch): USE [LocEdit.Net2] GO DECLARE @return_value int EXEC @return_value = [dbo].[Language.Add] @Caller = '4117c5e5-5b7e-44e4-830d-7856168bf0c6', @User = '4117c5e5-5b7e-44e4-830d-7856168bf0c6', @Language = 'de' SELECT 'Return Value' = @return_value TRUNCATE TABLE [tblUserLanguage] -- Only for testing, so clear table afterwards Ich nutze hier nirgendwo nvarchar, gecastet werden muss ja auch nichts 0.o Danke im Voraus :) Zitieren Link zu diesem Kommentar
DerFrank 15 Geschrieben 26. Mai 2018 Melden Teilen Geschrieben 26. Mai 2018 hi du hast das bestimm auch schon gefunden und ausprobiert ? https://www.sqlservercentral.com/Forums/434638/passing-GUID-to-a-stored-procedure Zitieren Link zu diesem Kommentar
tightDev 0 Geschrieben 26. Mai 2018 Autor Melden Teilen Geschrieben 26. Mai 2018 (bearbeitet) Guter Punkt, aber daran kann es nicht liegen :( Ich habe andere Funktionen, die funktionieren auch mit GUIDs. Ich rufe die Prozedur auch (normalerweise) nicht per SQL auf sondern halt im ASP.Net, und da per parametrisierter Abfrage. Public Shared Sub Add(ByVal Caller As Guid, ByVal User As Guid, ByVal Language As String) Using Command As SqlCommand = Connection.CreateCommand Command.CommandText = "[Language.Add]" Command.CommandType = CommandType.StoredProcedure Command.Parameters.AddWithValue("@Caller", Caller) Command.Parameters.AddWithValue("@User", User) Command.Parameters.AddWithValue("@Language", Language) Command.ExecuteScalar() End Using End Sub (VB.Net fehlt hier als Highlighter...) Die Funktion funktioniert ja auch. Aber halt mit Fehler (auch wenn ich beide IFs rausnehme). bearbeitet 26. Mai 2018 von tightDev Unnötige Tabs entfernt Zitieren Link zu diesem Kommentar
tightDev 0 Geschrieben 27. Mai 2018 Autor Melden Teilen Geschrieben 27. Mai 2018 *facepalm* Den ganzen Samstag hab ich gesucht... Kurz um: die Abfrage: IF [dbo].[User.Exists](@User) = 0 BEGIN war falsch. Richtig: IF [dbo].[User.IdExists](@User) = 0 BEGIN Erstes erwartet den Benutzernamen, Zweites die Guid... Narf. Danke trotzdem :) Zitieren Link zu diesem Kommentar
DerFrank 15 Geschrieben 27. Mai 2018 Melden Teilen Geschrieben 27. Mai 2018 Super! Danke auch für den hinweis. manchmal sind es die kleinen dinge im leben die einen glücklich machen Zitieren Link zu diesem Kommentar
Empfohlene Beiträge
Schreibe einen Kommentar
Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.