Avatar billede nielslbeck Nybegynder
08. august 2003 - 12:20 Der er 8 kommentarer og
1 løsning

sp_OAMethod - Databases("CMS").Tables("sysModule").Script(5)

Når jeg udfører:

EXEC sp_OAMethod @object, 'Databases("CMS").Tables("sysModule").Script(5)'

vil jeg gerne have fat i outputtet fra Databases("CMS").Tables("sysModule").Script(5) - hvilket skulle kunne gøres sådan:

EXEC sp_OAMethod @object, 'Databases("CMS").Tables("sysModule").Script(5)', @Output OUTPUT

Men hvad type skal @Output så være? Der bliver returneret en string - men det virker ikke hvis jeg sætter @Output til at være af typen varchar...
Avatar billede jnd Nybegynder
08. august 2003 - 13:54 #1
Lidt flere detaljer tak :)

Så som f.eks. den fejlmedelelse du får og datatypen for den søle du vil returnere fra tabellen sysModule

Din syntax ser rigtig ud.
Avatar billede nielslbeck Nybegynder
08. august 2003 - 13:57 #2
Jeg får ingen fejlmeddelelse... det virker jo på en måde godt nok - jeg får bare ikke fat i outputtet fra kaldet. Jeg kunn jo skrive:

EXEC sp_OAMethod @object, 'Databases("CMS").Tables("sysModule").Script(5, "c:\fil.sql")'

som så ville gemme outputtet i en fil - men jeg vil hellere have det i en variabel, så jeg kan arbejde videre med det :-)

Datatypen er "string" i SQL-DMO. Jeg vil ikke have noget af indholdet fra sysModule - blot den SQL som har genereret tabellen... Der er måske andre måder at få fat i den SQL på?
Avatar billede nielslbeck Nybegynder
08. august 2003 - 13:59 #3
Hjælpen til Script-metoden kan findes her (hvis man har Books Online installeret):

mk:@MSITStore:C:\Program%20Files\Microsoft%20SQL%20Server\80\Tools\Books\sqldmo.chm::/dmoref_m_s_0n1g.htm
Avatar billede nielslbeck Nybegynder
08. august 2003 - 14:04 #4
Troede egentlig jeg kunne benytte sp_helptext til at finde SQL'en, men den virker vist ikke for tabeller? Når jeg udfører den får jeg i hvert fald:

There is no text for object 'sysModule'.
Avatar billede jnd Nybegynder
08. august 2003 - 14:09 #5
Heh, jeg havde faktisk ikke set det var en system procedure.

Men: Som udgangspunkt ser det ikke ud som om det er en output parameter du har der.

Prøv lige det her:
EXEC sp_OAMethod @object,@Output = 'Databases("CMS").Tables("sysModule").Script(5, "c:\fil.sql")' OUTPUT
Avatar billede nielslbeck Nybegynder
08. august 2003 - 14:12 #6
Nu hjælper det jo så ikke meget at sætte OUTPUT på en parameter som ikke kan være OUTPUT...

sp_OAMethod objecttoken,
    methodname
    [ , returnvalue OUTPUT ]
    [ , [ @parametername = ] parameter [ OUTPUT ]
    [ ...n ] ]

(mk:@MSITStore:C:\Program%20Files\Microsoft%20SQL%20Server\80\Tools\Books\tsqlref.chm::/ts_sp_oa-oz_9uzo.htm)
Avatar billede jnd Nybegynder
08. august 2003 - 14:27 #7
Hvis du bare skal bruge sourcen til tabellen og du ikke har adgang til enterprise manageren, kan du jo bare lave et scripting host object. Det har også et COM interface så vidt jeg husker.

Lige et spørgsmål til, er det et SQLServer objekt du har lavet med sp_OACreate eller?
Avatar billede nielslbeck Nybegynder
08. august 2003 - 18:24 #8
Jeg har adgang til Enterprise Manageren, men vil gerne kunne hente sourcen til mine tabeller ud vha en SPROC.

@object laver jeg sådan: EXEC sp_OACreate 'SQLDMO.SQLServer', @object OUT
Avatar billede nielslbeck Nybegynder
19. august 2003 - 11:07 #9
Hmm... så må jeg jo nok desværre droppe det :-(
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