Sessão
02/09/2005
0
Estou fazendo uma aplicação em VB e preciso de criar uma SP no SQL para me retornar o ID do usuário conectado e alguma identificação do terminal que ele está excecutando o aplicativo.
Vi que no Oracle tem o Userenv que tem como parâmetros sessionid e terminal.
E no SQL, é possível controlar a sessão também?
Se puderem me ajudar agradeço muito!
:wink:
Sroque
Posts
03/09/2005
Marcus.magalhaes
para saber qual é a conexão que vc está utilizando, vc pode usar a variável global [b:5c7603a663]@@spid[/b:5c7603a663]
[sql]Select @@spid[/sql] = irá retornar o ID da sua conexão.
para saber qual a máquina que está usando esta conexão vc tem 2 opções. Se tiver direito, faça um select na tabela sysprocesses
[sql]
Declare @var_hostname VarChar(100)
Select @hostname = hostname
From master..sysprocesses (NoLock)
Where spid = @@spid
[/sql]
Ou crie uma tabela temporária e armazene o retorno do [b:5c7603a663]sp_who @@spid[/b:5c7603a663] e depois faça um select na tabela para pegar o hostname.
Espero ter ajudado.
Att,
05/09/2005
Sroque
Muito obrigada pela ajuda, é isso mesmo que eu queria! :lol:
Mas agora estou com outro problema, não consigo executar a SP, dá uma mensagem que não encontro a sp_grupo que criei. Não tenho experiência, com SP, fiz assim:
Tenho uma classe chamada ccjust rno VB para conectar e setar o rs que já testei e funciona.
Public Function conectar()
On Error GoTo erroConectar
conectar = False
Set cn = New adodb.Connection
With cn
.Provider = ´SQLOLEDB.1´
.ConnectionString = ´Network Library=DBMSSOCN; Initial Catalog=teste; Data Source=geral; User ID= sa; Password=sa´
.Open
End With
Public Function Setars(sqlstr As String) As Boolean
Set rs = New adodb.Recordset
With rs
.CursorLocation = adUseClient
.CursorType = adOpenStatic
.LockType = adLockReadOnly
.Open sqlstr, cn
End With
End Function
no form load:
Set strJust = New ccjust
A minha SP de teste é:
CREATE PROCEDURE [sp_grupo]
(@grcodigo_1 [char](6) output,
@grnome_2 [varchar](50))
AS Select [teste].[dbo].[Grupo]
( [grcodigo],
[grnome])
from [teste].[dbo].[Grupo]
where
grcodigo = ´ADM´
GO
No VB em um botão para testar:
Dim comando As New adodb.Command
Set comando.ActiveConnection = strJust.cn
comando.CommandType = adCmdStoredProc
comando.CommandText = ´sp_grupo´
comando.Execute
07/09/2005
Marcus.magalhaes
Vc está conectando no banco em q criou a SP?
Procure não utilizar SP_ como inicial dos nomes de suas procedures, pois sempre que o SQL Server encontra esta inicial, ele primeiro busca a procedure no db master e só depois no db q vc está conectada e isso causa perda de performance.
Dê uma verificada onde vc criou a SP e onde sua aplicação está chamando.
Espero ter ajudado,
Att,
08/09/2005
Sroque
Obrigada Marcus, consegui!
Clique aqui para fazer login e interagir na Comunidade :)