Avatar billede locturian Nybegynder
29. august 2003 - 14:10 Der er 25 kommentarer og
3 løsninger

Komme uden om Stored Procedures?

Hej!

Jeg arbejder med et system/bygger videre på, som benytter en del stored procedures - Nu ligger landet bare sådan, at jeg intet aner om Stored Procedures(SP) og når jeg prøver at indsætte nogle data i en tabel, får jeg følgende:

INSERT INTO medlem_medlemmer (medlem_brugernavn,medlem_type,medlem_mail1,medlem_mail2,medlem_password,medlem_oprettet_dato) VALUES('testerpigen', '1', 'nej@tak.dk', '', '1234', '2003-8-29 14:0:23')
Microsoft OLE DB Provider for SQL Server error '80040e14'

Could not find stored procedure 'Bla'.


Mit spørgsmål er så, hvordan kan jeg evt. komme uden om at den skal bruge de SP's ? - Eller kan jeg tilføje noget kode, så den ligefrem fatter noget? :)

Håber der er nogle kloger hovedet der lige ved det... :)
Avatar billede bennytordrup Nybegynder
29. august 2003 - 14:24 #1
Hvis du får fejl på den insert, lyder det som om, at der er en trigger på medlem_medlemmer ved insert, og denne så kalder en stored procedure, der ikke kan findes.
Avatar billede bennytordrup Nybegynder
29. august 2003 - 14:25 #2
Prøv at lave et create script på den tabel og medtage alle options. Du kan gøre det i Enterprise Manager.
Avatar billede locturian Nybegynder
29. august 2003 - 15:04 #3
Hvis jeg kigger under triggers, har jeg noget der siger:

CREATE TRIGGER [TRIGGER NAME] ON [dbo].[medlem_medlemmer]
FOR INSERT, UPDATE, DELETE
AS

Hvis det giver mening? :) Er ikke lige specialist i mssql...
Avatar billede bennytordrup Nybegynder
29. august 2003 - 15:30 #4
Jep. Hvad er indholdet? Formodentlig et kald til en stored procedure.

exec 'Bla'
Avatar billede locturian Nybegynder
29. august 2003 - 15:35 #5
Indholdet? - Ja, der ligger jo en masse oplysninger i den tabel der hedder medlem_medlemmer - Og forsøger at sætte data ind via en alm. sql sætning. Kender som sagt intet (NADA!) til SP's og kan ikke lige udmiddelbart se hvordan den skulle kalde dem fra scriptet? - Det må foregår i noget i selve Enterprise Manager... Kan jeg evt. slå det fra ?
Avatar billede bennytordrup Nybegynder
29. august 2003 - 15:44 #6
Hvis du i Query Analyzer vælger tabellen medlem_medlemmer, folder ud, vælger triggers og markerer højreklikker på triggeren, kan du vælge Create to new window. Det give dig udseended af triggeren.

Prøv det.
Avatar billede locturian Nybegynder
29. august 2003 - 15:53 #7
Mappen med triggers for den tabel er tom :(
Avatar billede kichian Nybegynder
31. august 2003 - 11:46 #8
Har du prøvet at køre din INSERT i Query Analyzer? For hvis det går godt, så er problemet ikke triggere.
Avatar billede kichian Nybegynder
31. august 2003 - 11:48 #9
Derudover er det helt klart smartere at du lærer at bruge SP, i stedet for at du skal skrive det hele om.
Du kan jo starte med at se på de SP som er en del af systemet!!.
Avatar billede locturian Nybegynder
31. august 2003 - 17:51 #10
Problemet er bare, at det system der er nu (noget værre lort :() er blandet sammen af en masse andre systemer, og kan se at den har en masse SP's den slet ikke bruger til noget.

Og da jeg ikke selv bruger SP's ville jeg foretrække helt at fjerne dem, frem for at bruge en del tid på at sætte mig ind i dem....

Men prøver lige at indsætte direkte i query analyzer
Avatar billede bennytordrup Nybegynder
01. september 2003 - 08:39 #11
Som kichian siger, så er det en *langt* bedre ide at sætte sig ind i stored procedures. Stored procedures udføres på SQL Serveren, så du sparer båndbredde på et netværk ved ikke at skulle overføre data til klienten, behandle dem, og derefter sende dem tilbage.

Desuden har jeg haft erfaring med, at en select udført i en stored procedure gav hurtigere respons end en select udført gennem en adodb.connection/recordset fra Visual Basic.
Avatar billede locturian Nybegynder
01. september 2003 - 11:31 #12
Normalt ville jeg være enig, men i dette tilfælde, skal jeg oprette en bruger internt i systemet, hvilket sker 1-2 gange om måneden, så det er derfor ikke noget der ville tage den store båndbrede. Når jeg lige har en del tid til overs, vil jeg også gerne sætte mig ind i SP's, men det har jeg desværre ikke for tiden :( Derfor jeg efterspurgte en hurtig løsning på problemet....
Avatar billede kichian Nybegynder
01. september 2003 - 12:07 #13
Har du prøvet direkte indsættelse endnu?
Avatar billede locturian Nybegynder
01. september 2003 - 14:40 #14
Har prøvet, men forstår ikke helt hvordan det fungere?

Prøvede med 'INSERT INTO medlem_medlemmer (medlem_brugernavn) VALUES('test')

Det fungere ikke :(
Avatar billede janus_007 Nybegynder
01. september 2003 - 15:11 #15
I din query analyzer skriver du
sp_helpconstraint medlem_medlemmer

Post nederste resultat her!

og derefter sp_helptrigger medlem_medlemmer
Post resultat her!
Avatar billede locturian Nybegynder
01. september 2003 - 15:32 #16
Avatar billede janus_007 Nybegynder
01. september 2003 - 15:33 #17
Jeg kan ikke se nogle billede :(
Avatar billede locturian Nybegynder
01. september 2003 - 15:35 #18
nå, den virker vist ikke lige nu :)

www.dansksex.dk/1.jpg
www.dansksex.dk/2.jpg
Avatar billede janus_007 Nybegynder
01. september 2003 - 15:47 #19
Fino!
Og meget sært egentligt, ingen relationer og ingen check constraints. Ingen tegn på en ydre procedure.

Lader til en lille efterladenskab fra et eller andet, virker bare lidt mærkeligt på mig.

I samme database som din tabel ligger laver du bare en sp
create proc bla
as
return 0

Ellers så sæt alle dine medlemmer ind i en ny tabel:
select * into tmpmedlem from medlem_medlemmer

omdøb din gamle tabel og kald tmpmedlem det nye navn medlem_medlemmer
husk at oprette de default værdier der angiver for kategori og status.
Avatar billede locturian Nybegynder
01. september 2003 - 16:05 #20
Hvordan kæder jeg den proc sammen med medlem_medlemmer ? Og vil det påvirke de stored proc's der er, eller ikke er (?) i forvejen ?
Avatar billede locturian Nybegynder
01. september 2003 - 20:29 #21
Fatter det simpelthen ikke - Synes jeg har prøvet alt efterhånden....

Jeg får som sagt denne fejl:

Microsoft OLE DB Provider for SQL Server error '80040e14'

Could not find stored procedure 'Sql_1'.

/inc/inc_medlemmer.asp, line 76

Linie 74,75 og 76:

Sql_1 = "INSERT INTO medlem_medlemmer (medlem_brugernavn,medlem_type,medlem_mail1,medlem_mail2,medlem_password,medlem_oprettet_dato) VALUES('" & medlem_brugernavn & "', '" & medlem_type & "', '" & medlem_mail1 & "', '" & medlem_mail2 & "', '" & medlem_password & "', '" & oprettet & "')"
response.write(Sql_1)
Myconn.execute("Sql_1")

Det ser jo meget normalt ud? :(
Avatar billede janus_007 Nybegynder
02. september 2003 - 07:28 #22
Njaa...Jow... Det er ikke lige til at sige allerede. Hvordan ser din connection ud?

Jeg ville nok lave den med command objektet også, (thats the right way)... Men burde ikke betyde noget.

Prøv lige at skrive Myconn.execute("select 2 as d") - funker det?
tag endvidere dit output fra response.writen og smid direkte ind i query analyzeren - funker det?
Avatar billede kichian Nybegynder
02. september 2003 - 20:24 #23
I stedet for:
Myconn.execute("Sql_1")

skal du skrive:
Myconn.execute(Sql_1)
Avatar billede kichian Nybegynder
02. september 2003 - 20:27 #24
Det er sært som en forkert antagelse omkring et problem, kan sende folk på spøgelsesjagt.
Avatar billede locturian Nybegynder
02. september 2003 - 20:29 #25
hehe, damn, det var da utroligt :) Nu kommer den godt nok med en anden fejl, men dog med en lidt mere håndgribelig fejl :) Tak skal du have :) Vender lige tilbage når det virker helt...
Avatar billede locturian Nybegynder
02. september 2003 - 20:32 #26
Har absolut INGEN IDE om hvordan de to " " har sneget sig ind :)
Avatar billede locturian Nybegynder
02. september 2003 - 20:59 #27
Sådan :) Så virker det fandme :) Og alt det bøvl pga. nogle gåseøjne... Nå, men, lidt point til alle for den gode og kontruktive hjælp :)
Avatar billede locturian Nybegynder
02. september 2003 - 20:59 #28
/Lukket :) Fortsat god aften...
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester