Avatar billede kramerknudsen Nybegynder
24. februar 2005 - 15:54 Der er 7 kommentarer

Kørsel af stored procedure fra Excel

Hej

Jeg vil gerne køre en SP fra Excel. Det specielle ved denne SP er at den skal afvikle en DTS.

CREATE PROCEDURE [dbo].[amrTest] AS
exec master..xp_cmdshell 'dtsrun /S (local) /U Username  /P password /N Test'
GO

Jeg kan godt få lov til at køre SP'en fra SQL Query Analyzer, men når jeg gør det fra VBA får jeg følgende fejlen: "execute permission denied on object 'xp_cmdshell', database 'master', owner".

Hvad gør jeg forkert?

Fra VBA bruges funktionerne:

Function getRS(SQL As String) As ADODB.Recordset
    Dim cnn As String
    cnn = "File Name=" & ThisWorkbook.Path & "\XXX.udl"
    Set getRS = New ADODB.Recordset
    getRS.Open SQL, cnn
End Function

Private Sub checkGetRS()
  Dim rs As New ADODB.Recordset
  Set rs = getRS("amrtest")
  Debug.Print rs.RecordCount
  Set rs = Nothing
End Sub
Avatar billede arne_v Ekspert
24. februar 2005 - 15:57 #1
Man kører da ikke en SP med:

Dim rs As New ADODB.Recordset
  Set rs = getRS("amrtest")
 
gør man ?
Avatar billede arne_v Ekspert
24. februar 2005 - 15:59 #2
Jeg plejer at bruge:

Set cmd = Server.CreateObject("ADODB.Command")
cmd.ActiveConnection = con
cmd.CommandType = adCmdStoredProc
cmd.CommandText = "navn på SP"
cmd.Execute
Avatar billede kramerknudsen Nybegynder
24. februar 2005 - 15:59 #3
Det kan man godt. Jeg har testet med en anden SP, der bare laver en simpel select
Avatar billede arne_v Ekspert
24. februar 2005 - 16:01 #4
Er du på som samme bruger i EM/QA og Excel ?
Avatar billede arne_v Ekspert
24. februar 2005 - 16:02 #5
Returnerer xp_cmdshell et result set ?
Avatar billede kramerknudsen Nybegynder
24. februar 2005 - 16:05 #6
Ja, jeg er på som samme bruger. Og Nej xp_cmdshell returnerer ikke noget result set, men det bliver umiddelbart afviklet alligevel. Jeg har også testet med command varianten. Det giver samme fejl
Avatar billede ldanielsen Nybegynder
24. februar 2005 - 23:25 #7
Jeg ser at du bruger en File dsn i din connection, prøv at bruge en anden connectionstring.

Som denne:
Provider=sqloledb;Network Library=dbmssocn;server=SQLServerNavn;database=databaseNavn;uid=BrugerNavn;pwd=PassWord
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